← メディア一覧

同値分割と境界値分析

5分11秒 | テスト品質FE

基本情報技術者試験の頻出テーマを解説した動画コンテンツです。

トランスクリプト(字幕テキスト)

こんにちは。今日のテーマはソフトウェアテストを何ていうか、がむしゃらにやるんじゃなくて、賢くやる方法です。 もっと少ないテストでもっとたくさんのバグを見つけ出すためのとっておきの秘密兵器、これを今からご紹介しますね。 さて、いきなりですけど皆さんに質問です。もし0歳から100歳まで入力できる年齢確認システム、 これのテストを頼まれたら、一体どんな数字を試してみますか? もしかしたら、学習者のカイ君みたいにこう考えたかもしれません。「そうですね、0, 1, 2, 3... って順番に100まで全部試してみます!」って。 うん、すごく真面目で丁寧なアプローチですよね。 でも、そのやり方だと本当に日が暮れちゃいますよね。それに、もし入力範囲が100までじゃなくて、 1億までだったらどうします?もう全部試すなんて不可能ですよね。 そう、だからもっと賢い戦略が必要なんです。 そこで登場するのが、この不可能に思えるミッションを解決するための最初の秘密兵器、「同値分割」です。 これを使うと、テストの数を劇的に、しかも安全に減らすことができるんですよ。 同値分割っていうのは、まあ簡単に言うと、データをいくつかのグループに分けるテクニックのことなんです。 ここで大事なのは、「同じグループのメンバーだったら、どれを選んでも同じ結果になるはずだよね」って考えること。 つまり、似たような性質のものをひとまとめにしちゃうわけです。 やることはめちゃくちゃシンプルで、代表選手を1つだけ選んでテストするんです。 例えば「20歳以上はお酒OK」っていうルールだったら、20歳も50歳も80歳も、結果は全部OKになるはずですよね。 だったらわざわざ全部試さなくても、代表して50だけテストすれば十分じゃないかって考えるわけです。 合理的ですよね。 考え方はこんな感じです。入力をNGになるはずのグループとOKになるはずのグループにまず分けるんです。 こうすればそれぞれのグループから代表を1つずつ選ぶだけで済む。つまりテストの回数をものすごく減らせるってことなんですね。 さあ、同値分割だけでもかなり効率的になりましたけど、実はもっと強力な秘密兵器があるんです。 それがこの「境界値分析」。これはですね、最もバグが見つかりやすい場所をピンポイントで狙う、まさに精密なツールなんですよ。 このテクニックの核になる考え方。それがこれです。 バグはグループとグループの境界に潜むのが大好き。 そうなんです。エラーってデータ範囲のど真ん中じゃなくて、その端っこ、ギリギリのところに集中する傾向があるんです。 じゃあ、具体的にどうテストするのか。「20歳以上」っていうルールの境界だったら、この3つの値がものすごく重要になります。 まず境界のすぐ下である19でNGになること。 次に境界値ぴったりの20でOKになること。 そして最後に、境界のすぐ上の21でもちゃんとOKになること。この3点セットで確認するんです。 でも、そもそも何でバグはそんなに境界が好きなんでしょうかね? さあ、ここからが一番面白いところですよ。この謎を解き明かすと、テストに対する見方がガラッと変わるはずです。 バグが境界に集まる最大の理由。それがこれです。プログラマーがよくやっちゃう間違い。 「以上(>=)」のところを「より大きい(>)」みたいな比較演算子の打ち間違い。 たった一文字の違いですけど、これがシステムの動きを大きく変えてしまう、まさにおとし穴なんです。 つまりこれこそが、境界値をテストする本当の意味なんです。 19がNGで20がOK。この2つを確認して、初めてプログラマーが書いた「20歳以上」というルールが本当にその通りに動いているって証明できるわけです。 さて、今日のミッションで手に入れた「賢いテストの秘訣」、これをまとめていきましょう。 今日学んだテクニックは、皆さんのテスト戦略を根本から変える力を持っていますよ。 今日のポイントを振り返りましょう。まず、同値分割。 これは同じ結果になるグループに分けて、代表値だけをテストする効率化の技でしたね。 そして、境界値分析。グループの境目こそがプログラマーのちょっとしたミス、つまりバグの温床になりやすいから、そこを重点的に狙う、ということでした。 最後に、メンターであるアキのこの言葉を覚えておいてください。 「テストの極意は、闇雲に撃つんじゃなくて、バグがいそうな場所をスナイパーのように狙うことだ。」 この考え方が、皆さんのテストをより効果的に、そして何より知的なものに変えてくれるはずです。

このコンテンツは Web society で視聴・学習できます。