← メディア一覧

プロが狙うバ境界値テストと心理的罠

4分23秒 | テスト品質FE

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

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

もしあなたが0歳から100歳まで入力できる年齢確認システムのテストを任されたら、どうしますか? まさか1から100まで、えっと、全部の数字を試すわけにはいきませんよね。 今回深掘りしていく資料がですね、まさにこうしたテストを効率化するテクニックについてなんですけど、 ただの時短術じゃないんですよ。闇雲に試すんじゃなくて、プログラマーが陥りやすいある種の心理的な罠、 その中心を狙い撃つ方法を一緒に見ていきましょうか。 ええ、その罠を理解するために、まずなぜ全ての数字を試す必要がないのか、というところから見ていきましょう。 はい。多くの入力値って、結局同じ結果になるグループに属してるからなんです。 同じ結果になるグループ、ですか? はい。資料にある「20歳以上はOK」というルールで考えてみましょうか。 例えば25歳と入力しても、50歳とか80歳でも結果は全部OKですよね。 ああ、まあそうですね、確かに。 こういうのをまとめて、専門的には「有効同値クラス」って呼ぶんです。 ほうほう。 で、逆に19歳以下のNGになるグループ。これは「無効同値クラス」というわけです。 なるほど。つまり25歳でテストしてOKなら、理屈の上では85歳でも大丈夫だろうと信頼する感じですね。 まさにおっしゃる通りです。それで、OKグループから1つ、NGグループからも1つ、 代表を選んでテストすれば、かなりの範囲をカバーできると。 ええ、それが同値分割の基本的な考え方でして、これでテストのケースを劇的に減らせるんですよ。 でも、その代表選手の選び方で、何かこう致命的なものを見落としちゃう危険性ってないんですかね? 例えば、たまたま選んだ代表の値では問題が出なかったみたいな。 いや、素晴らしい質問ですね。まさにそこに、先ほど言った罠が存在しているんです。 罠、ですか? ええ。同値分割だけだと、一番危険なバグを見逃してしまう可能性がある。 例えば、もしシステムが「20歳以上」じゃなくて、うっかり「20歳より大きい」とプログラムされていたら、 どうなるでしょう? あ、はい!それだと一番大事な20歳の人がNGになっちゃいますね。 確かに、「以上」と「より大きい」って、言葉だとわずかな違いですけど、プログラムだとこれは天地の差が生まれる。 うわ、これは怖いな。 ええ、そうなんです。プログラマーが最も間違いやすいのが、まさにこういう条件式の境界なんですよね。 境界。 だからこそ、グループの代表値だけじゃなくて、その境界、つまり境界値をピンポイントでテストすることがものすごく重要になります。 なるほど。 この例だったら、19歳、これはNGのはずですよね。それから20歳。これはOKなはず。 そして21歳。これもOKなはず。この3点を集中的にテストするんです。 ほうほう。よくあるECサイトの「5000円以上で送料無料」だったら、4999円、5000円、5001円を試すのが正解 というわけです。 なるほど。グループ全体を漠然と見るんじゃなくて、その国境線を重点的に警備する、みたいなイメージですかね? まさに!その通りです。以前ある教育システムで、あの、 100点満点の学生がなぜか不合格と判定されるっていう、ちょっとお笑いじゃないバグを見たことがあって。 え、それはひどい。 原因は、合格条件が「100点以下」とすべきところを、間違えて「100点未満」ってプログラムしてたっていう、 本当に典型的な境界値のミスでした。 うわ、それはシャレにならないですね。つまりテストの極意っていうのは、 闇雲に数を打つんじゃなくて、スナイパーみたいにプログラマーが陥りやすいミスの境界を正確に狙い撃つことなんですね。 ええ。同値分割で大まかなエリアを特定して、境界値分析で急所を突くと。 へえー、まさにスナイパーです。このテクニックを知らないと、なんだかこうマシンガンを闇雲に乱射するようなもので、 弾薬、つまり時間とコストばかり消費して、肝心のターゲットを逃してしまうんですよね。 いや、よくわかりました。この境界という考え方、なんだかソフトウェアテストだけの話じゃない気もしますね。 あなたが今取り組んでいる仕事や計画の中で、ほんの少しの条件の違いが、 成功と失敗を分けるような境界目って一体どこにあるでしょうか?

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