第217回: 「ソフトウェアテストしようぜ」31 CEGTest(1. ペアワイズとの違い 前編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「同時に複数の対策をとる意味」について書きました。前回のポイントは、「同時に複数の対策を実行してよい。できるならそうしたほうがよい」です。
さらに、『孫社長のむちゃぶりをすべて解決してきた~すごいPDCA』という本では、「毎日PDCAを回して、試した手段の効果を数値で評価する」という進め方を推奨していることを紹介しました。
ところで、同時に複数の対策を実行できるかどうかは、仕事の内容によります。本に載っていたセールス活動のように一日に何度もPDCAを回せる仕事もあれば、そうではない仕事もあるからです。ただし、抽象度を上げれば毎日同じことをしている箇所が増えるので、超短期のPDCAを意識して積み上げると良いのかもしれません。(そういうことはしたことがないので想像ですが)
さて、「ソフトウェアテストしようぜ」の連載に戻ります。
今回から始まる新しいお題は“CEGTest”(原因結果グラフ技法の面倒な作業をしてくれるツール)です。WEBアプリケーションなのでインストールの手間もなく、ブラウザからアクセスしたら無償で使える神アプリです。
原因結果グラフというテスト技法は、「聞いたことはあるけど、使ってはいない」という人が多いのではないかと思っています。
『ソフトウェアテスト技法練習帳』にも出てきませんし、『難しそう。デシジョンテーブルで間にあってる』と敬遠されがちなテスト技法です。
話を戻します。
確かに、原因結果グラフは他のテスト技法よりは覚えることが多いです。また、ツールなしで原因結果グラフからデシジョンテーブルをつくるのは大変で面倒な作業です。
さらに、別の開発技術(例えば、ルールベースエンジンなど)を使うことよって、原因結果グラフの適用がはまる個所は減ってきています。
上述のとおり、原因結果グラフを使う場面は減ってきます。しかし、面倒なデシジョンテーブルの生成は、CEGTestというツールがやってくれますし、ルールベースエンジンを使わないケースのほうが多いですから、ソフトウェアエンジニアなら使えるようになっておいたほうが良いと思います。
≡ 原因結果グラフが好き
「一番好きなテスト技法はなに?」と質問されたら「原因結果グラフ」と答えます。ここでは、好きな理由について掘り下げてみます。
■ テストっぽい技法だから好き
好きな理由の1つ目は、一番テストっぽい技法だからです。ちょっと分かりにくいですね。
「自分がそうだったから今の経験不足のプログラマーもそうに違いない」と考えるのはとても失礼なことかもしれません。
でも、逆に、「5個程度のif文によって作られたロジックなら、どんな開発者でも、もれなくダブりなくユニットテストをするだろう」と考えるのは楽観的すぎるように思います。
■ 要件からハイレベル・テストケースをつくれるから好き
原因結果グラフを好きなもう一つの理由は、要件から原因結果グラフをつくることができる点です。
パースペクティブレビューが良いと言われて、要件や仕様から“ハイレベル・テストケース”を書こうとしても、何を書いたら良いか悩むのではないでしょうか。
そんなときに使ってほしいのが原因結果グラフです。
先にCaliber RBTやBender RBTというツールを紹介しましたが、両方のツールについている“RBT”とは、“Reqirements Based Testing”の略です。
初めから「要件を基にしたテスト」という位置付けなので、原因結果グラフは、要件や仕様のパースペクティブレビューにぴったりのテスト技法です。
実際に私が試したときにも要件や仕様の問題検出に役立ちました。
ということで、「原因結果グラフ」好きです。
≡ ペアワイズとの違いについて
原因結果グラフについて知るためには組み合わせテストとの違いを知ることが役に立ちます。
『BenderRBT Test Case Design Product Overview』というプレゼン資料があります。先に紹介したBenderRBTというツールの紹介資料です。
そのなかに技法を比較した表が載っていますので以下に引用します。
表の「Cause-Effect Graphing」が原因結果グラフの列で、「Pair-Wise」がペアワイズの列で技法の特徴の比較となっています。「X」はバッテン(ダメ)の意味ではなく、あてはまるという✅の意味です。
赤文字の行を見ますと、「observability of defects」(欠陥が見つかる)、「test coverage」(テストの網羅性)、「Can support Agile project」(アジャイルプロジェクトに対応可能)なところがセールスポイントのようです。
営業のための資料なので、眉唾なところはあるのですが、原因結果グラフを勉強してみようかなという動機づけになると良いと思って紹介しました。このnoteの連載が終わる頃には答え合わせができることでしょう。
それでは、シンプルな例題をとおして、原因結果グラフとペアワイズテストの違いをみていきましょう。まずは例題です。
まずは、GIHOZのペアワイズテストでつくってみます。
パラメータと値を入力します。
生成すると以下の表ができました。
同じ組み合わせテスト技法の直交表を用いた方法ですと、こんな感じです。1行減っているのはたまたまです。一般的にはペアワイズで作る方が小さな表が出来ます。
原因結果グラフ(CEGTest)でつくるとこうなります。
ペアワイズで生成した表と直交表は、パラメータ名が上にあり、行がテスト条件の組み合わせになっています。ところがデシジョンテーブルは縦横が入れ替わっています。
また、原因結果グラフから生成したデシジョンテーブルのなかをみると、2つの条件を同時にON(True)にした組合せがありません。
これでよいのでしょうか?
(次回へ続く……。)
≡ おわりに
今回は、「CEGTest」のシリーズの初回でした。疑問符で終わるのは反則っぽいですが、上記の情報から理由を考えてみると良い訓練になると思うので“あえて”です。4000文字を超えてしまいましたし。
次回は、今回の続きで、ペアワイズテストと原因結果グラフが生成した表の違いについて考えていきます。