テストエンジニア時代の悲喜こもごもが今のわたしを作った

ソフトウェアテストシンポジウム「JaSST'15 Niigata」開催レポート(その2)――組合わせテストを作ろう

»

 こんにちは、第3バイオリンです。

 前回からだいぶ間があいてしまいましたが、ソフトウェアテストシンポジウム「JaSST’15 Niigata」開催レポート第2弾です。今回は、ワークショップの様子をお届けします。

■ワークショップ「検出したいバグから考える組合わせテスト技法」

 午前中の基調講演でソフトウェアテストの作り方のお話を聞いたあとは、いよいよワークショップで実践です。

 最初に秋山さんから「バグには『実装のバグ』と『仕様と設計のバグ』があります。If文の分岐ミスやメモリリークといった『実装のバグ』はユニットテストなどでプログラマ本人が見つけるものです。仕様の矛盾や理解不足、設計ミスなどに起因する『仕様と設計のバグ』こちらを見つけることがテストエンジニアの役割であり、本ワークショップが対象とするものです」と説明がありました。

 さて、この「仕様と設計のバグ」ですが、単独の機能よりも2つ、ないしは3つの機能の組合わせ部分で発生することが多いです。単機能のバグは割と見つけやすいものですが、これが2つ以上の機能の組合わせとなると話は違います。わかりやすく関係性がある因子であればまだ注意しやすいものの、直交関係にある(互いに影響を及ぼさない)因子であれば気が付きにくいものです。そもそも、本当に直交関係にあるのかどうかがわからないこともあります。組合わせテストでは、このような直交関係にある、あるいはそのように見える因子の組合わせを狙ってテストできるという利点があります。特に、仕様として想定していなかった組合わせや、多様な動作環境、エラー系の組合わせをテストするのに有効です。

 組合わせテストの第一歩、それはテスト対象の因子と水準を洗い出すことです。因子とは「結果に影響をおよぼず要因」、水準は「因子の取りうる値」です。文章だけで説明するのも面倒なので、皆さんお手持ちのWordを開いて右クリック→「フォント」を選択してください。「スタイル」や「サイズ」など、設定項目がいろいろありますね。各設定項目には「標準/斜体/太字/太字 斜体」といった選択肢があるもの、チェックボックスをON/OFFするもの、いろいろあります。この「スタイル」「サイズ」などの設定項目が因子、各因子で選択できる個々の設定値が水準です。何を因子とするかはテストの内容にもよりますが、まずはGUIから見つけることができるようになるのが大切です。

 組合わせテストは、各因子の水準を組合わせて作ります。水準には正常値と異常値がありますが、基本的には正常値のみを組合わせます。異常値は何と組合わせてもエラーとなるので異常値を含めると組合わせの意味がなくなってしまいます。だから、異常値は異常値だけで別にテストする必要があります。

 さて、水準を組合わせるといっても、ただやみくもに組合わせればいいというものではありません。単純に「因子と水準、全部を組合わせればいいじゃん」と考える人もいるかもしれませんが、因子と水準の数が増えれば、組合わせの数は爆発的に増えてしまいます。限られた時間でテストすることを考えると、すべての組合わせをテストするのはあまりに非現実的です。とはいえ、いくつかの組合わせをピックアップするとしても明確な根拠が必要です。「テストエンジニアの勘でなんとなく」などと言って納得する人はいません。

 すべての組合わせの中から偏りなく、効率的にテストできる組合わせをピックアップするためには方法があります。そのうちのひとつが「HAYST法」です。HAYST法は、秋山さんの所属する富士ゼロックスで確立されたソフトウェアテスト組合わせの手法です。一言でいうと、直交表をベースに組合わせの網羅率を高く保ちつつ、組合わせの数を抑えるためのテスト技法です。

 HAYST法のおおまかな内容は以下の順序です。

  1. 因子を見つける
  2. 因子を有則(仕様に記載されている規則)、無則(仕様に記載されていない規則)に分類する
  3. 無則の因子について水準を洗い出す
  4. 直交表に因子と水準を割り付ける

(HAYST法について詳細を知りたい方は、HAYST法の書籍「ソフトウェアテストHAYST法入門 品質と生産性がアップする直交表の使い方」「事例とツールで学ぶHAYST法―ソフトウェアテストの考え方と上達のポイント」などをご参照ください)

 HAYST法について説明したところで、いよいよ演習がスタートしました。手紙の料金計算システムのGUIを見ながら、HAYST法でテスト項目を作成する演習です。

 ワークショップの間、わたしを含めた実行委員のメンバーが参加者のフォローのためにテーブルを回っていましたが、因子と水準を作成したところで手が止まっていた方が多かったです。アンケートにも「難しかった」「時間が全然足りなかった」というご意見がありました。半日のワークショップで参加者の皆さんにご満足していただくために何ができるか、これは運営の課題として考えていきたいと思います。

 「JaSST'15 Niigata」レポート第2弾はここまでです。次回は最終回、QAタイムと情報交換会の様子をお伝えします。

Comment(0)

コメント

コメントを投稿する