Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
16
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
50
2025-07-02 社内勉強会 SQLに親しむ / Getting to Know SQL
abekem
0
51
2025-05-28 社内勉強会 SOLID原則ではじめるよりよい設計の第一歩 / The First Step to Better Software Design with SOLID Principles
abekem
0
72
2025-04-23 社内勉強会 デザインパターン概論 / Overview of Design Patterns
abekem
0
42
2025-03-26 社内勉強会 オブジェクト指向入門 第二部 / Introduction to Object-Oriented Part2
abekem
0
34
SAP Event Meshで始めるイベント・ドリブン・アーキテクチャ / Getting Started with Event-Driven Architecture Using SAP Event Mesh
abekem
0
130
2025-02-27 社内勉強会 オブジェクト指向入門 / Introduction to Object-Oriented
abekem
0
97
Other Decks in Programming
See All in Programming
開発に寄りそう自動テストの実現
goyoki
1
420
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
5
1.3k
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
230
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
2
1.1k
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
5
270
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
470
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
140
Google Antigravity and Vibe Coding: Agentic Development Guide
mickey_kubo
2
130
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
210
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
5
18k
React Native New Architecture 移行実践報告
taminif
1
130
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
580
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
4 Signs Your Business is Dying
shpigford
186
22k
The Invisible Side of Design
smashingmag
302
51k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
RailsConf 2023
tenderlove
30
1.3k
Being A Developer After 40
akosma
91
590k
Music & Morning Musume
bryan
46
7k
Designing for humans not robots
tammielis
254
26k
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モデル(何をテストするのか) ◦ テスト設計(どのようにテストするのか) • 開発を効率化するためのテスト ◦
自動化されたテストで自信を持って変更する まとめ