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
68
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
A Modern Web Designer's Workflow
chriscoyier
698
190k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Prompt Engineering for Job Search
mfonobong
0
370
Abbi's Birthday
coloredviolet
3
8.5k
How to build a perfect <img>
jonoalderson
1
5.8k
Code Reviewing Like a Champion
maltzj
528
40k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Product Roadmaps are Hard
iamctodd
55
12k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
380
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
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