Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第2回 札幌PHP勉強会 LTスライド
Search
Kou
February 02, 2024
77
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
Google's AI Overviews - The New Search
badams
0
1.6k
Into the Great Unknown - MozCon
thekraken
41
2.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Abbi's Birthday
coloredviolet
4
10k
Balancing Empowerment & Direction
lara
6
1.3k
Marketing to machines
jonoalderson
1
5.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1k
Optimising Largest Contentful Paint
csswizardry
37
4k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
890
Raft: Consensus for Rubyists
vanstee
142
7.7k
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