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
第2回 札幌PHP勉強会 LTスライド
Search
Kou
February 02, 2024
66
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第2回 札幌PHP勉強会 LTスライド
Kou
February 02, 2024
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
170
Build your cross-platform service in a week with App Engine
jlugia
234
18k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
430
Between Models and Reality
mayunak
4
350
Odyssey Design
rkendrick25
PRO
2
710
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
210
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Transcript
PHPUnitを使って ブラックボックステスト技法を やってみた 札幌PHP勉強会 Kou 1
自己紹介 2 https://twitter.com/kou_tech_1017
みなさん自動テスト書いていますか? 自動テスト(Automated Test )とは、 開発者がコードに対してテストコードを書くこと 3
わたしは書いていませんでした 4
テスト書かなかった理由 - 自分が書いたコードだから、仕様や挙動は把握しているつもりだった - テストコードを書く時間があれば、別のタスクを進めれる - どんなテストを書けばいいかわからない - 書いたテストが正しいか分からない 5
テスト技法を学ぶことで なんとなく自信がついた 6
テスト技法 ソフトウェアテストのテストケースを作成する技法のこと 次の3つのカテゴリに区別される 1. ホワイトボックステスト技法 2. ブラックボックステスト技法 3. 経験値ベースのテスト技法 https://jstqb.jp/dl/JSTQB-SyllabusFoundation_VersionV40.J01.pdf
7
ホワイトボックステスト技法 ソフトウェアの内部構造、設計、コードに焦点を当てたテストのこと プログラムの内部動作の正確さを確認し、内部経路、コード構造、アルゴリズムなどの コードレベルのエラーを検出 コードのカバレッジを分析 - ステートメントカバレッジ - コードカバレッジ 8
ブラックボックステスト技法 仕様や外部の入出力に焦点を当てたテストのこと 1. 同値分割法 2. 境界値分析 3. デシジョンテーブルテスト 4. 状態遷移テスト
9
経験ベースのテスト技法 テスト担当者の知識・経験・勘をベースにおこなうテストのこと 過去の同じようなシステムで見つかった欠陥や、過去の事例をテストに反映 10
ブラックボックステスト技法を PHPUnitでやってみた 11
同値分割法 (Equivalence Partitioning) テストデータを同等に扱われるパーティションに分け、各パーティションから任意の一つ の値を選んでテストを行うこと 例 ) 注文フォームがあるサイト - 注文日から3日以内であればキャンセル可能
12
パーティションを 区別する 注文日から3日以内であればキャ ンセル可能 1. 注文日より前 2. 注文日から3日以内 3. 注文日から4日以降
13
例) 注文日の翌日はキャンセル成功の テストコード - 注文日 : 2024-01-01 - 入力値 :
2024-01-02 (注文日から3日以内) 14
境界値分析 (Boundary Value Analysis) 同値パーティションの境界に焦点を当てたテスト技法のこと 境界値付近はバグの温床 - 「>」と「>=」で書き間違い - そもそも境界を考慮していない
15
境界値を分析 注文日から3日以内であればキャンセル可能 - 注文日より1日前 - 注文日 - 注文日より1日後 - 注文日より3日後の1日前
- 注文日より3日後 - 注文日より3日後の1日後 16
例) 注文日より3日後は キャンセル成功のテストコード - 注文日 : 2024-01-01 - 入力値 :
2024-01-04 (注文日から3日後) 17
境界値分析があれば、同値分割法は 不要では...🤔? 理論的には境界値テストをちゃんとすれば、 同値分割のテストは必要ない 無駄にテストケースを増やすのは同値分割法をするから 知識ゼロから学ぶソフトウェアテスト 第3版 アジャイル・AI時代の必携教科書 p33 18
ディシジョンテーブル (Decision Table) 入力値の組み合わせと、その期待結果を整理してテストするテスト技法のこと 例 ) 注文金額計算を次の条件の組み合わせで算出する 1. キャンペーン期間中かどうか 2.
限定商品かどうか 3. 大量注文かどうか 19
注文金額計算のディシジョンテーブル 20 注文日の状態 商品名 注文量 注文料金計算 キャンペーン期間中 一般商品 10個未満 基本価格
- キャンペーン割引 キャンペーン期間中 一般商品 10個以上 基本価格 - キャンペーン割引 - 大量注文割引 キャンペーン期間中 限定商品 10個未満 基本価格 - 限定商品割引 - キャンペーン割引 キャンペーン期間中 限定商品 10個以上 基本価格 - 限定商品割引 - キャンペーン割引 - 大量注文割引 キャンペーン期間外 一般商品 10個未満 基本価格 キャンペーン期間外 一般商品 10個以上 基本価格 - 大量注文割引 キャンペーン期間外 限定商品 10個未満 基本価格 - 限定商品割引 キャンペーン期間外 限定商品 10個以上 基本価格 - 限定商品割引 - 大量注文割引
例) 注文金額メソッド 21
キャンペーン期間中かつ、 限定商品かつ、 10個以上注文の場合の テストコード 22
状態遷移テスト (State Transition Testing) ソフトウェアの状態の遷移を整理し、状態遷移を網羅してテストする技法のこと 23 例 ) 注文の状態 -
発送準備 - 発送完了 - キャンセル
24 例 ) 注文キャンセル処理 - 発送準備中以外の状態の状態 から、キャンセル処理する場合 は例外を投げる
注文キャンセル成功時の テストコード 25
まとめ - ブラックボックステスト技法の学習によって、テストケース作成に対する自信がつい た - 「なんとなく」でテストケースを書くアプローチから脱却し、体系的なテスト設計がで きるようになった - ディシジョンテーブルと状態遷移テストを用いた際にテストケースが膨大になる課題 があるため、テストケースの管理と効率化が新たな焦点になりそうと感じた
- ブログの記事 26
ありがとうございました 27