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
4
240
境界値分析
WACATE 2024 冬
での発表資料です。
イベント当日はワークが主体でしたが、公開資料としてはワークの問題と解説を割愛しています。
nihonbuson
December 14, 2024
Tweet
Share
More Decks by nihonbuson
See All by nihonbuson
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.3k
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
2
3k
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.8k
品質管理の歴史学 / Quality Management History
nihonbuson
3
320
振る舞い駆動開発(BDD)における、テスト自動化の前に大切にしていること #stac2024 / BDD formulation
nihonbuson
7
2.8k
品質管理チームのEMとして大事にしていること / QA EM
nihonbuson
0
1.9k
忠実度という概念と開発手法 / Fidelity
nihonbuson
1
120
WACATE流 勉強会会場の選び方 / WACATE venue
nihonbuson
1
670
継続的テストモデルを実現するためにスリーアミーゴスを用いた10Xでのシフトレフトの事例
nihonbuson
3
1.7k
Other Decks in Technology
See All in Technology
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
200
アジャイル開発とスクラム
araihara
0
170
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.4k
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
110
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
Moved to https://speakerdeck.com/toshihue/presales-engineer-career-bridging-tech-biz-ja
toshihue
2
740
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.6k
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
3
1.3k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
970
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
680
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
590
リアルタイム分析データベースで実現する SQLベースのオブザーバビリティ
mikimatsumoto
0
1.4k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
RailsConf 2023
tenderlove
29
1k
KATA
mclloyd
29
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Agile that works and the tools we love
rasmusluckow
328
21k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
Thoughts on Productivity
jonyablonski
69
4.5k
Building Applications with DynamoDB
mza
93
6.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
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