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
3
140
境界値分析
WACATE 2024 冬
での発表資料です。
イベント当日はワークが主体でしたが、公開資料としてはワークの問題と解説を割愛しています。
nihonbuson
December 14, 2024
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
品質管理の歴史学 / Quality Management History
nihonbuson
3
180
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
5
2.1k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
1.5k
忠実度という概念と開発手法 / Fidelity
nihonbuson
1
100
WACATE流 勉強会会場の選び方 / WACATE venue
nihonbuson
1
650
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
1.6k
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
5k
JSTQB FL 幻のテスト技法「ユースケーステスト」を学ぶ / Use_case_testing
nihonbuson
5
2.8k
Other Decks in Technology
See All in Technology
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
150
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
390
信頼されるためにやったこと、 やらなかったこと。/What we did to be trusted, What we did not do.
bitkey
PRO
0
2.1k
OPENLOGI Company Profile for engineer
hr01
1
18k
ABWGのRe:Cap!
hm5ug
1
110
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.4k
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
12k
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
140
AWS re:Invent 2024 re:Cap Taipei (for Developer): New Launches that facilitate Developer Workflow and Continuous Innovation
dwchiang
0
150
Cloudflareで実現する AIエージェント ワークフロー基盤
kmd09
0
280
RubyでKubernetesプログラミング
sat
PRO
4
150
チームが毎日小さな変化と適応を続けたら1年間でスケール可能なアジャイルチームができた話 / Building a Scalable Agile Team
kakehashi
2
220
Featured
See All Featured
Facilitating Awesome Meetings
lara
51
6.2k
BBQ
matthewcrist
85
9.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
What's in a price? How to price your products and services
michaelherold
244
12k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Fireside Chat
paigeccino
34
3.1k
Side Projects
sachag
452
42k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
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