Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2025-08-27 社内勉強会 ソフトウェアテストの基礎 / Basics of Softw...
Search
Kentaro Abe
August 27, 2025
Programming
0
18
2025-08-27 社内勉強会 ソフトウェアテストの基礎 / Basics of Software Testing
Kentaro Abe
August 27, 2025
Tweet
Share
More Decks by Kentaro Abe
See All by Kentaro Abe
2025-08-06 社内勉強会 Gitを知る頃 / When You First Know Git
abekem
0
51
2025-07-02 社内勉強会 SQLに親しむ / Getting to Know SQL
abekem
0
54
2025-05-28 社内勉強会 SOLID原則ではじめるよりよい設計の第一歩 / The First Step to Better Software Design with SOLID Principles
abekem
0
88
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
46
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
36
SAP Event Meshで始めるイベント・ドリブン・アーキテクチャ / Getting Started with Event-Driven Architecture Using SAP Event Mesh
abekem
0
150
2025-02-27 社内勉強会 オブジェクト指向入門 / Introduction to Object-Oriented
abekem
0
100
Other Decks in Programming
See All in Programming
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
170
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
280
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
AIエージェントのキホンから学ぶ「エージェンティックコーディング」実践入門
masahiro_nishimi
5
460
Fluid Templating in TYPO3 14
s2b
0
130
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
280
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
700
今から始めるClaude Code超入門
448jp
8
8.8k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
430
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
190
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Practical Orchestrator
shlominoach
191
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
For a Future-Friendly Web
brad_frost
182
10k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
320
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
2025/08/27 社内勉強会 Powered by k1LoW/deck 1 ソフトウェアテストの基礎
2 • ソフトウェアテストの役割と価値を理解する • 開発プロセスにおけるテストの位置付けを知る • 代表的なテスト技法を知る 今日のゴール
3 テストって何? • ソフトウェアが要求や設計どおりに動 作し、利用者が期待する品質を満たし ているかを確認・評価すること ソフトウェアの品質特性→ ソフトウェアテスト見積りガイドブック
4 • 仕様を満たしていることを確認するため • リリース後の不具合を減らすため • 開発の効率を上げるため なぜテストが必要か?
5 テストレベルと開発プロセス <何をテストするのか?>
6 • 単体テスト ◦ 個々のクラスやメソッド or単一の機能 が正しく動作するか • 結合テスト(統合テスト) ◦
クラス間or機能間の連携が正しく動作するか • システムテスト ◦ ソフトウェア全体が仕様どおりに動作するか • 受け入れテスト(運用テスト) ◦ ユーザーの観点で、要件が満たされているか確認 テストレベル
7 • 商品の合計金額を計算する関数(単一メソッド) ◦ 100円の商品A×2個、300円の商品B×1個 → 500円になるか ◦ 数量が0個なら0円になるか •
クーポン割引を正しく計算できるか(単一メソッド) • 商品の検索ボタンを押したときに、条件に一致する商品のリストが表示され るか?(単一機能) 単体テストの例( ECサイト)
8 • 商品の検索ボタンを押したときに、条件に一致する商品のリストが表示され るか?(複数クラス) • 「カート画面」から「決済画面」へ遷移したとき、選んだ商品・数量が正しく引 き継がれているか?(複数機能) • 「ログイン機能」と「購入履歴表示機能」が組み合わさったとき、正しいユー ザーの履歴が出るか?(複数機能)
結合テストの例( ECサイト)
9 • 新規ユーザー登録 → ログイン → 商品検索 → カートに入れる →
決済 → 注文確認メールが届く、という一連の流れが問題なく動作するか? • 大量アクセス時にページが遅くならないか?(性能テストの一部) • パスワードを間違えて入力したらロックされるか?(セキュリティテストの一 部) システムテストの例( ECサイト)
10 • 「クレジットカード決済が対応していること」という要件に対して、実際に顧客 がカードを使って支払いし、取引が成立するかを確認する • 「1万円以上購入したら送料無料になる」という仕様を顧客が実際に操作して 試す 受け入れテストの例( ECサイト)
11 V字モデル ソフトウェアテスト見積りガイドブック より V字モデルにも種類がある 中身は重要ではなく、各工程に対応する テストがあることが大事
12 テスト設計 <どのようにテストするのか?>
13 • 理想は全ての可能性をテストすること • 時間・コストの制約があるため、現実的には不可能 → 適切なテストを設計することが重要 網羅性と効率のバランス
14 • ブラックボックステスト ◦ 仕様や要件に基づいて実施するテスト ◦ 実装レベルの知識を必要としない • ホワイトボックステスト ◦
実装レベルの知識に基づいて実施するテスト ◦ ソフトウェアの内部パス、構造、実装など テスト種別
15 ブラックボックステスト • 同値クラステスト • 境界値テスト • デシジョンテーブルテスト • ユースケーステスト
ホワイトボックステスト • 制御フローテスト テスト技法
16 • 結果が同じになる入力のグループ(同値クラス)を特定し、各クラスから代表 的な値を選んでテストする手法 • 例 ◦ 入力値は0~100の整数 ◦ 0~19は未成年、20~100は成人
と返すプログラムを考える ブラックボックステスト 同値クラステスト
17 • 同値クラステストを元に、境界値に注目したテスト • パーティションの最小値と最大値、または最初の値と最後の値を選んでテス トする • -1, 0, 19,
20, 100, 101 ブラックボックステスト 境界値テスト
18 • 可能なすべての条件(入力)と取りうるすべての結果(出力)を表にしてテスト する手法 • 複雑な分岐をテストするのに有効 • 例:ログイン画面 ◦ 条件1:ユーザーIDが正しいか
◦ 条件2:パスワードが正しいか ◦ 結果:ログイン成功 or エラー ブラックボックステスト デシジョンテーブルテスト 条件1 条件2 結果 〇 〇 ログイン成功 〇 × IDエラー × 〇 PWエラー × × IDエラー, PW エラー
19 • 利用者が実際にシステムをどう使うか(ユースケース)をシナリオ化してテス トする手法 • 仕様書や業務フローをもとに、現実的な操作シナリオを作成する • 例:ネットショップでの購入フロー ◦ 商品を検索
→ カートに追加 → 決済 → 注文完了メール受信 ブラックボックステスト ユースケーステスト
20 ブラックボックステスト • 同値クラステスト • 境界値テスト • デシジョンテーブルテスト • ユースケーステスト
ホワイトボックステスト • 制御フローテスト テスト技法(再掲)
21 • 分岐や繰り返しなどの制御フローに基づいてテストする手法 • 網羅基準を定めてテストケースを作成する ◦ 命令網羅(すべての命令を実行する) ◦ 分岐網羅(すべての分岐を実行する) ◦
条件網羅(分岐条件のすべての組み合わせを実行する) # 会員かつ購入金額が1000円超の場合は10%割引 if (member == true && amount > 1000) { discount = 10%; } ホワイトボックステスト 制御フローテスト
22 テストレベル <何をテストするのか> • 単体テスト • 結合テスト(統合テスト) • システムテスト •
受け入れテスト(運用テスト) テスト設計 <どのようにテストするのか> • ブラックボックステスト ◦ 同値クラステスト ◦ 境界値テスト ◦ デシジョンテーブルテスト ◦ ユースケーステスト • ホワイトボックステスト ◦ 制御フローテスト 全体像
23 おまけ: テストによる開発の効率化
24 • 仕様を満たしていることを確認するため • リリース後の不具合を減らすため • 開発の効率を上げるため なぜテストが必要か?(再掲)
25 • テストを自動化して、繰り返し実行できるようにする ◦ 修正するたびにテストを実行し、壊れていないか確認する • 不具合を早期に発見し修正する どうやってテストによって効率を上げる?
26 • QAテスト ◦ システム全体の品質を保証し、要件どおりに動作するかを確認するため に行う ◦ ユーザー視点やビジネス要件に基づき、全体の動作や使い勝手を評価す る ◦
今まで話していたのはこちら • 開発者テスト ◦ 開発者が自身のコードの正確性を確認するために行う ◦ 細かい粒度のテストで、技術的な視点で行われる テストの分類
27 • 和田卓人さんの「質とスピード」を読もう https://speakerdeck.com/twada/quality-and-speed-aws-dev-d ay-2023-tokyo-edition もっと学びたい人
28 • 要件・仕様を満たすことを確認するテスト ◦ テストレベルとVモデル(何をテストするのか) ◦ テスト設計(どのようにテストするのか) • 開発を効率化するためのテスト ◦
自動化されたテストで自信を持って変更する まとめ