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
December 14, 2024
Technology
1
54
境界値分析
WACATE 2024 冬
での発表資料です。
イベント当日はワークが主体でしたが、公開資料としてはワークの問題と解説を割愛しています。
nihonbuson
December 14, 2024
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
品質管理の歴史学 / Quality Management History
nihonbuson
1
36
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
5
1.6k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
1k
忠実度という概念と開発手法 / Fidelity
nihonbuson
1
88
WACATE流 勉強会会場の選び方 / WACATE venue
nihonbuson
1
640
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
1.6k
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
4.7k
JSTQB FL 幻のテスト技法「ユースケーステスト」を学ぶ / Use_case_testing
nihonbuson
5
2.6k
テストコードを書き始める前に考えるべきテストの話(2023年版) #cedec2023
nihonbuson
1
3k
Other Decks in Technology
See All in Technology
podman_update_2024-12
orimanabu
1
260
ガバメントクラウドのセキュリティ対策事例について
fujisawaryohei
0
530
アップデート紹介:AWS Data Transfer Terminal
stknohg
PRO
0
180
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
1
160
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
100
Storage Browser for Amazon S3
miu_crescent
1
140
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
2
250
なぜCodeceptJSを選んだか
goataka
0
160
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
3k
Code Review Best Practice
trishagee
65
17k
For a Future-Friendly Web
brad_frost
175
9.4k
Rails Girls Zürich Keynote
gr2m
94
13k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Being A Developer After 40
akosma
87
590k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Visualization
eitanlees
146
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Fireside Chat
paigeccino
34
3.1k
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