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
Designing for Performance
lara
611
70k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
Docker and Python
trallard
47
4k
Amusing Abliteration
ianozsvald
1
240
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
620
Mobile First: as difficult as doing things right
swwweet
225
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Utilizing Notion as your number one productivity tool
mfonobong
4
490
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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