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
境界値分析
Search
nihonbuson
PRO
December 14, 2024
Technology
4
450
境界値分析
WACATE 2024 冬
での発表資料です。
イベント当日はワークが主体でしたが、公開資料としてはワークの問題と解説を割愛しています。
nihonbuson
PRO
December 14, 2024
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
15
2.4k
テストコードにはテストの意図を込めよう(2025年版) #retechtalk / Put the intent of the test 2025
nihonbuson
PRO
17
2.9k
ソフトウェアテスト 最初の一歩 〜テスト設計技法をワークで体験しながら学ぶ〜 #JaSSTTokyo / SoftwareTestingFirstStep
nihonbuson
PRO
6
720
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB #JaSST #JaSSTTokyo / Readable test code
nihonbuson
PRO
14
13k
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
PRO
3
8k
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
PRO
4
3.5k
品質管理の歴史学 / Quality Management History
nihonbuson
PRO
41
14k
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
PRO
7
3.9k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
PRO
0
3.1k
Other Decks in Technology
See All in Technology
20250705 Headlamp: 專注可擴展性的 Kubernetes 用戶界面
pichuang
0
260
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
0
110
Delta airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
deltahelp
0
560
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
120
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
7.7k
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
130
AIの全社活用を推進するための安全なレールを敷いた話
shoheimitani
2
500
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
960
ゼロからはじめる採用広報
yutadayo
3
890
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
1.8k
OSSのSNSツール「Misskey」をさわってみよう(右下ワイプで私のOSCの20年を振り返ります) / 20250705-osc2025-do
akkiesoft
0
160
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
160
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Producing Creativity
orderedlist
PRO
346
40k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Six Lessons from altMBA
skipperchong
28
3.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A better future with KSS
kneath
238
17k
What's in a price? How to price your products and services
michaelherold
246
12k
Transcript
境界値分析 ブロッコリー (@nihonbuson)
テストケースはいくつ? 仕様:8文字以上45文字以下のパスワードは設定できる テストケース:1文字、2文字、3文字、…、100文字 膨大な数の テストケース テストの原則 2. 全数テストは不可能 参考:ISTQBテスト技術者資格制度 Foundation
Level シラバス 日本語版 Version 2023V4.0.J02
境界値分析とは何か? 境界値分析(BVA)は、順序付けられた 同値パーティションの境界上に存在する値を 適切に処理していることをテストするために使用する。 引用:ISTQBテスト技術者資格制度Advanced Level シラバス日本語版 テストアナリスト Version 3.1.1.J03
境界値分析とは何か? 境界値分析(BVA)は、順序付けられた 同値パーティションの境界上に存在する値を 適切に処理していることをテストするために使用する。 引用:ISTQBテスト技術者資格制度Advanced Level シラバス日本語版 テストアナリスト Version 3.1.1.J03
数直線などで 表現できる まずは同値分割を 行って考える
仕様:8文字以上45文字以下のパスワードは設定できる 今回のお題
①数直線で表現する 仕様:8文字以上45文字以下のパスワードは設定できる 8 45
②同値分割をする 仕様:8文字以上45文字以下のパスワードは設定できる 設定できる 文字数 設定できない 文字数 設定できない 文字数 8 45
③仕様で言及がない境界の値を記載する 仕様:8文字以上45文字以下のパスワードは設定できる 設定できる 文字数 設定できない 文字数 設定できない 文字数 8 45
7 46
なぜ境界値分析を使うのか? 「パスワードが8文字以上」の場合、なぜ 7と8をテストするのか? if( x < 7 ){ return “入力したパスワードが短いです”;
}
なぜ境界値分析を使うのか? 「パスワードが8文字以上」の場合、なぜ 7と8をテストするのか? if( x < 7 ){ return “入力したパスワードが短いです”;
} 上記の例で、不等号のミスによる不具合を 発見できるのは、7の時だけ!
カバレッジが100%でもバグは見逃してしまう public boolean judge (int x) { if( x <
7 ){ return false; } else if( x > 46 ){ return false; } return true; } @Test public void test_short_password{ assertThat( judge(5), is(false)); } @Test public void test_long_password{ assertThat( judge(60), is(false)); } @Test public void test_valid_password{ assertThat( judge(15), is(true)); }
カバレッジが100%でもバグは見逃してしまう public boolean judge (int x) { if( x <
7 ){ return false; } else if( x > 46 ){ return false; } return true; } @Test public void test_short_password{ assertThat( judge(5), is(false)); } @Test public void test_long_password{ assertThat( judge(60), is(false)); } @Test public void test_valid_password{ assertThat( judge(15), is(true)); }
カバレッジが100%でもバグは見逃してしまう public boolean judge (int x) { if( x <
7 ){ return false; } else if( x > 46 ){ return false; } return true; } @Test public void test_short_password{ assertThat( judge(5), is(false)); } @Test public void test_long_password{ assertThat( judge(60), is(false)); } @Test public void test_valid_password{ assertThat( judge(15), is(true)); }
カバレッジが100%でもバグは見逃してしまう public boolean judge (int x) { if( x <
7 ){ return false; } else if( x > 46 ){ return false; } return true; } @Test public void test_short_password{ assertThat( judge(5), is(false)); } @Test public void test_long_password{ assertThat( judge(60), is(false)); } @Test public void test_valid_password{ assertThat( judge(15), is(true)); }
カバレッジが100%でもバグは見逃してしまう public boolean judge (int x) { if( x <
7 ){ return false; } else if( x > 46 ){ return false; } return true; } @Test public void test_short_password{ assertThat( judge(5), is(false)); } @Test public void test_long_password{ assertThat( judge(60), is(false)); } @Test public void test_valid_password{ assertThat( judge(15), is(true)); }
仕様:8文字以上45文字以下のパスワードは設定できる ④システム上の境界値も考える 設定 できない 文字数 8 45 7 46 設定できる
文字数 設定 できない 文字数
仕様:8文字以上45文字以下のパスワードは設定できる ④システム上の境界値も考える 設定 できない 文字数 設定 できない 文字数 8 45
7 46 設定できる 文字数 入力 できない 文字数 入力 できない 文字数 0 -1
ワーク1
ワーク1 割愛
境界値分析を 適用する時の 難しさ
自然言語でも境界値分析を使う場合あり 例)20人のクラスで背の順に並んだ時、 前から10人目までは組体操で上に登る人、 前から11人目以降は組体操で下で土台になる人 何らかのルールで順序付けができれば、 数値でなくても境界値分析は適用可能 【運動会】組体操でサボテンをする 子どもたちのイラスト - イラストバンク
自然言語は境界が曖昧 「以上、以下」「から、まで」などの単語に注目 例 • 稼働時間…8:00から22:00まで • 休止時間…22:00から8:00まで 8:00ちょうどや22:00ちょうどは稼働時間?休止時間?
自然言語は境界が曖昧 例.東海道新幹線で名古屋駅から新横浜駅まで乗車した • 東海道新幹線で乗車していた駅は図の通り • 境界値は「岐阜羽島と名古屋」「新横浜と品川」 • このときの「新横浜駅まで」は、新横浜駅を含む
自然言語は境界が曖昧 例.東海道新幹線の“のぞみ”は名古屋駅を出ると 新横浜駅まで停車しません • “こだま”が止まって“のぞみ”が止まらない駅は図の通り • 境界値は「名古屋と三河安城」「小田原と新横浜」 • このときの「新横浜駅まで」は、新横浜駅を含まない
参考:91号: 境界値分析:前編| Kouichi Akiyama
ワーク2
ワーク2 割愛
おわりに
境界値分析のまとめ • 境界値分析は同値パーティションの境界上に 着目する手法 • 順序付けることができれば、自然言語にも適用可能 • 仕様の文章は境界が曖昧であることが多い ◦ 境界値分析によって欠陥を発見できる可能性が高い
おわりに 同値分割、境界値分析を行うことで、 テストケースの選定だけでなく、 仕様の曖昧さの指摘に繋がります。 同値分割、境界値分析に限らず、 テスト設計技法を活用し、議論して、 より良いプロダクト作りを目指しましょう。 テスト設計技法を定着させるためにも、 今回の内容の復習もしましょう。
復習にオススメの書籍 https://bookplus.nikkei.com/atcl/catalog/05/P82510/ https://gihyo.jp/book/2020/978-4-297-11061-1