ソフトウェアテストを解き明かす
7分23秒 | テスト品質FE
基本情報技術者試験の頻出テーマを解説した動画コンテンツです。
トランスクリプト(字幕テキスト)
こんにちは。今日のテーマはソフトウェアテストです。 テストっていうとなんかこう、ひたすらボタンをポチポチクリックする作業なんて思ってませんか? でも実はその裏側には、バグをものすごく効率的に見つけ出すための、 ちゃんと考え抜かれた戦略があるんですよ。じゃあ早速、その世界を覗いてみましょう。 ソフトウェアのテストって、本当に考えられる全てのボタンを片っ端から力任せに押していくみたいな作業だと思いますか? いや、もしそうだったらもう時間がいくらあっても足りないですよね。 だからプロの現場では、もっとずっと賢いやり方をしてるんです。 効率的にバグを見つけるためのアプローチ、実はですね、大きく分けて二つの考え方があるんです。それが こちら。ホワイトボックステストとブラックボックステスト。そう、白い箱と黒い箱。 この名前がね、すっごく重要なヒントになってるんですよ。はい、これがその二つの考え方ですね。 左側のホワイトボックステストは、文字通り箱の中身、つまりプログラムのソースコードをがっつり見て、 中の構造がどうなっているかをチェックする方法です。それに対して右側のブラックボックステストは、 箱の中は一切見ません。外側から見て、これをインプットしたらちゃんとあれがアウトプットされるよねっていう、 その機能だけを確認する。そんなイメージです。じゃあ、まずは箱の中身を見る方から行きましょうか。 ホワイトボックステストですね。これの目的は、コードの中に書かれた、まぁ言ってみれば迷路みたいなもんですね。 その全てのルートをちゃんと通れるかっていうのを確認することなんです。要するに、ホワイトボックステストっていうのは、 ソフトウェアの中身、ソースコードをちゃんと分かった上でやるテストなんですね。プログラムって、 もしAだったらこっちの道へ、Bだったらあっちの道へみたいな分岐がたくさんありますよね。 そういうのが全部ちゃんと正しく動くかなっていうのを、しらみつぶしに見ていくわけです。だからこれ、どっちかっていうと開発者さんがやるテストっていう感じですね。 じゃあ、具体的にその箱の中身の何を見るのかっていうと、まずはソースコードそのもの。それからプログラムの構造、 まぁ家の設計図みたいなもんですね。そして、もしこうならあっちみたいな論理的な分岐を全部チェックします。 で、特に大事なのがこれ、コードカバレッジ。これ聞いたことありますかね?簡単にいうと、テストの成績表みたいなもんです。 書かれているコードのうち何パーセントをこのテストで動かせましたかっていう指標なんですね。 だからこの点数が高ければ高いほど、お、ちゃんと隅々までテストできてるねってことになるわけです。さて、じゃあ今度はがらっと視点を変えまして、 外側から見るテスト、ブラックボックステストこれを見ていきましょう。こっちの問いは、ものすごくシンプルですよ。 で、これ、ちゃんとやるべきことやってくれるの?ただそれだけです。 さっきも言った通り、ブラックボックスなんで、中のコードがどうなってるかなんて全く気にしません。 見るのはただ一つ、インプットとアウトプット、それだけです。つまり僕らユーザーと同じ目線で、 仕様書に書いてある通りに動くかなっていうのを確認するテストなんですね。 この考え方、この例えがめちゃくちゃ分かりやすいんですよ。100円玉入れたら、ちゃんとコーラのボタンが光って、 押したらガコンってコーラが出てくる。自販機の中の機械がどうなってるとか全然知らなくてもテストできますよね。 まさしくこれがブラックボックステストの本質なんです。 さあ、ここからが今日の本題と言ってもいいかもしれない、面白いところですよ。プロがどうやって賢くテストしてるのか、 その秘訣を皆さんにだけこっそり教えちゃいます。どうすれば一番少ない手間で、一番たくさんのバグを見つけられるのか、 そのためのとっておきのテクニックです。その名も境界値分析。 これはブラックボックステストのテクニックの一つなんですけど、何をするかっていうと、入力できる値の境界線。 つまりギリギリのところを狙ってテストするんです。じゃあ、なんでそんなところを狙うのか?答えは簡単。 バグっていうのは、なぜかこの境目に潜んでいることがものすごく多いからなんです。 じゃあもっと分かりやすく具体的な例で見ていきましょうか。例えば、あるサイトに登録するのに、 18歳以上っていう条件があったとします。さあ、このシステムをテストする時、どの年齢を試すのが一番効率いいと思います? まぁ0歳から100歳、いやもっと上までいろんな年齢が考えられますけど、その中で、ここだけは絶対にテストしとけって、 一番大事なポイントが二つあるんですよ。さて、それは何歳と何歳だと思いますか?もちろんね、 10歳とか50歳とかを試すのも無駄じゃないです。でももっとやばいバグが潜んでいそうな、もっとクリティカルなポイントがあるんです。 はい、正解の一つ目は17歳です。そう、境界線である18歳のほんの1個手前の値ですね。 なんでかっていうと、プログラマーが「18歳以上」って書くべきところをうっかり間違えて、 「18歳より大きい」って書いちゃうこと、これ本当によくあるんですよ。このたった一つのイコールの付け忘れ、 いわゆるオフバイワンエラーってやつをこの17歳を試すことで一発で見つけられるんです。そしてもう一つの正解は、 もちろん18歳そのもの。まさに境界線ジャストの値です。これもさっきと同じで、より大きいを表す記号と、 以上を表す記号をプログラマーが本当に本当によく間違えるんです。だから、このど真ん中の境界線をテストすることで、 そのミスを確実に見つけられるわけです。つまり、大事なことなのでもう一回言いますけど、バグは境界目に潜んでるんです。 この考え方、めちゃくちゃ応用が利くんです。例えば、1から100までの数字を入力してくださいっていうフォームがあったとします。 この場合、闇雲に50とか77とか入力するんじゃなくて、狙うべきは四つ。まず下限の境界線、つまり1とその1個下の0。 そして上限の境界線、100とその1個上の101。この4点だけをピンポイントでテストする。 これがプロのやり方なんです。効率的でしょ。さあというわけで、今日のポイントをまとめていきましょうか。今日皆さんの頭の中に インストールされた新しいテスト用ツールキット、その一番大事な三つの道具を最後にもう一度確認しておきましょう。 今日の最重要コンセプト、この三つだけは覚えて帰ってくださいね。第一にホワイトボックステスト。 これはプログラムの中身を覗くテスト。第二にブラックボックステスト。これは外から見て機能が合ってるかを確認するテスト。 そして今日の主役、第三の境界値分析。これはバグが潜みやすい境目を狙い撃ちする超効率的なテクニックでした。 さあこれで皆さんはもうバグがどこに隠れているかを知ってしまいました。皆さんが毎日使っているアプリやサイト、 その中で、あなたが最初に探してみたい境界線ってどこですか?もしかしたらECサイトの無料になる金額の境目かもしれない。 SNSの投稿の最大文字数かもしれない。私たちの周りって、実はテストすべき境界で溢れてるんですよ。 ぜひ明日からちょっとだけテストエンジニアの目で世界を見てみてください。きっと面白いはずですよ。
このコンテンツは Web society で視聴・学習できます。