テスト技術者が育つテスト設計手法とは

みなさん、こんにちは。
ここまでお付き合いいただいて、ソフトウェアの不具合による品質事故が企業にとっては命取りになること、そうならないためにテストを十分に行って品質を担保することが重要なこと、またさらにはテストをするには、ただやみくもに操作するのではなく、何をどのような条件で確認するかを設計して「テストケース」を作っておかなければならないこともご理解いただけたことでしょう。 しかし、そう言うのは簡単ですが「テストケースってどう作ればよいのだろう?」「何かワザとかテクニックがあるのだろうか?」と疑問を持たれるのもうなずけます。 そこで今回は、テスト設計に必要となるワザやテクニック(=テスト設計手法)をどのように身に付けたらよいのかについてお話ししたいと思います。

テスト設計は敷居が高い

いきなりテスト設計をやれと言われて、何をどうしていいのかわからず悩んだ経験をお持ちの方は多いのではないでしょうか。そのプログラムを作った人ならば「何ができるか」を知っていますから、「何ができなければならないか」というテスト項目は挙げられるでしょう。また、テストオペレータの経験がある人ならば今までにやったテストケースをもとにして、ある程度のことはできるかもしれません。 しかし、そういう経験すらない人にとっては、本を読んでもググってもテストケースが書けないのは仕方のないことであり、できることといえば表示確認レベルだったり動作確認レベルだったりするのが関の山です。

ある若手のケース

お恥ずかしい次第ですが、弊社の若手社員のお話です。ある音楽配信サイトの課金処理を作成し、テストすることになりました。そこでテスト設計のレビューを依頼されたのですが、聞いてびっくりでした。「毎月15日以前に申し込みの場合は当月課金、16日以降は翌月課金する。」という仕様に対して、なんと1日から31日まで1日ずつ全ての日をテストしようとしていたのです! 確かに全部の日付に対してテストすれば間違いはありませんが、最大31回だからいいようなものの、1年分だったら最大366回やらなければならないことになりますし、もし日単位でなく時間単位や分単位・秒単位だったら膨大な数になって、とてもやってられません。 このような場合は通常、『同値分割・境界値分析』という手法を用いて1日~15日と16日~31日の2つの同じ結果となるグループに分け(これを同値分割といいます)、それらの境界とその1つ外側の値でテストするというのが定石となっています。つまり15日と16日の2ケースだけやればよいのです!(14日のケースもやるという考え方もあります。) こういうことを知っているかどうかが「有効で質が高く無駄のないテスト」ができるかどうかの重要なカギになるのです。

技法がいっぱいありすぎて

書籍やネットの記事を調べると、「~~テスト」「××分析」「○○法」なる言葉がそれはそれはたくさん出てきます。困ったことに、微妙に言い回しの異なるものもあって混乱させられます。これではどれを使えばよいのかわからないし、とても覚えきれるものではありません。技法を使いこなせない そしてその説明もたるや、ビギナーにはとっつきにくいものが多く、使い方や組み合わせ方がわからないことも大きな問題です。たいていは「こういうものがあります。それはこういう理屈です。」のように列挙され紹介されているケースが多いため、定義や仕組みはわかるけれど、それをどう現実に適用すればよいのかでつまずいてしまうのです。

教育ポイント① 数ある技法を整理する

テスト技法は数多くありますが、いくつかの分類(条件の特定、条件の組合せ、状態の遷移、シナリオ…etc)とそのバリエーションから成っています。おおまかな特長を理解し、向き不向きや利点・欠点がわかっていることが重要です。

教育ポイント② 基本を押さえればOK

研究者ではないのですから、全部を深く理解する必要はありません。さしあたり自分が使うものさえ理解していればよいのです。とはいえ、上述の例に挙げた同値分割・境界値分析のように、基礎の基礎としてこれだけは覚えておくべきというものは決まっています。たいていのことは基礎的な手法の応用であったり組み合わせでできるものです。

そこで、私たちは新人エンジニアなど経験の浅い人材をテスト設計のできる技術者として育成する教育内容についてご説明するための簡単な資料を作成しました。 ご興味がおありの方は<こちら>からダウンロードしてください。少しでもお役に立つことができれば幸いです。

ご愛読、ありがとうございました。

最近の記事

  • 関連記事
  • おすすめ記事
PAGE TOP