第249回: 「ALTAのテキストをつくろう」12 (テスト設計 テストケースの設計 中編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は「テスト設計のプロセス」の「テストケースの設計」の前編として、「テストケースの構成要素」について書きました。
前回の復習は以下で模擬試験問題の確認を通して行います。
今回はJSTQBのALTAシラバスの「1.4 テスト設計」のうちの「1.4.2 テストケースの設計」の中編(期待結果)について書きます。
≡ 前回の復習
以下は前回出題したJSTQB ALTAの模擬試験問題を𝕏にポストした結果です。
投票の結果、3が64.9%と最も多く、正解も3です。
回答数が少なめで、正答率がまずまずなのは、ALTAを学習したことがある人には簡単だけれど、そうでない人には難しい問題ということでしょうか。
2番目に多かった、
ですが、ALTAのシラバスでは、
と明確に「観測可能」と書いてあります。
テストは合否を判定する行動です。全てのテストケースは、合否を判断できるように書いていなければなりません。
これは、今回のテーマである「期待結果」につながる話なのですが、テストの合否はテストした結果(実際の結果:actual result)と期待していた結果(期待結果:expected result)を比較することで行います。今回のキャッチイメージはそのことを表現しています。
「実際のテスト結果」と「期待結果」を比較して、両者が同じなら合格、違っていたら不合格というわけです。
さて、比較をするためには、テストした結果(実際の結果)が観測できる必要があります。観測できなければ期待結果と比較するものがないためです。
以下は、ISTQBの用語集で両者を引いた結果です。
以上で復習は終わりです。
≡ 期待結果
今回のテーマです。
期待結果の概略と使い方はFLの範囲の話ですし、上に書いたとおりです。ALTAのシラバスには、もう少し詳しい話が書いてあります。
■ テストオラクル
ISTQBが日本にやってきたのは2005年のことです。
当時、「テストオラクルってなんだろう?」と話題となりました。「テストオラクル」という用語を仕事で使っている人が一人もいなかったからです。
当時のISTQBの定義は、今より詳しく書かれていました。
「うーん。ピンとこないなあ」とみんな思いました。「期待結果のソース」ということで、「期待結果を生成するツール」を思い浮かべてみたものの、最後に「コードであってはならない」とあり、その前の具体例にも「期待結果を生成するツール」がなかったからです。
最終的には、「コードであってはならない」の意味はテスト対象のソースコードに書いてあることを期待結果にしてはならないということだろう(何故なら、テスト対象の欠陥を見つけるためにテスト対象そのものを期待結果にしたらみんな合格してしまうから)という話に落ち着いたように思います。
現在の用語集は、
と前半だけのシンプルなものになっています。「期待結果は何をもとにしてつくったか。期待結果の元(=ソース、源、発生源や情報源)」のことをテストオラクルと呼びます。
ですからマイヤーズの三角形問題でテストケースの期待結果に「正三角形という出力がでる」と書いてあったら、「仕様と有識者の知見」がテストオラクルでしょう。
上のコラムっぽいものを書いていて思い出したのですが、テストの自動化でもテスト結果の準備が大変ですよね。テストオラクルをどうするか悩みました。
■ 期待結果
テストオラクルが何かわかったところで、ALTAシラバスに書いてある期待結果作成時の注意事項を箇条書きで整理します。
① 可能な限り、自動化されたテストオラクルを見つけるか作成する
② 期待結果は、画面上の出力だけではない
(データの変化および環境的な事後条件も考慮する)
③ 仕様書などのテストベースに期待値が載っていない場合は、専門家の知見もしくは、専門情報にアクセスして期待結果を識別する
④ 複雑な応答の複合的な相互作用により、期待結果の定義が困難になるときには、自動化されたテストオラクルが必須となる
⑤ アジャイルソフトウェア開発では、テストオラクルはプロダクトオーナーかもしれない
説明が必要なものは④くらいでしょうか?
④では、原因結果グラフやそこからデシジョンテーブルをつくるCEGTestツールがテストオラクルにあたります。
≡ JSTQB ALTA試験対策
いつものことですが、まず、テスト設計の「学習の目的」を確認します。
今回の範囲(1.4.2)については、TA-1.4.2を問う問題とします。K4なので、「分析」という深いレベルで使いこなせることを確認するテストとなります。
答えは次回に書きます。
≡ おわりに
今回は、「期待結果」の話題でした。
テストケースの作成ではどのようなテストを行うのか、すなわち、動作前の条件、状態のセット、入力値に注目が集まります。ところが実際のテストでは意外と、「どう動くのが正しいの??」と迷うことがあります。
ひどい現場では「(期待結果が満足に書かれずに)テスターがおかしいと思ったら報告して」と丸投げされる事があります。「私の判断をテストオラクルとして良いのですね?」と質問してみましょう。
それから、複雑な金融計算のソフトウェアの期待値を生成するテストオラクルをつくることは難しいです。また、法律の改正などの外的な要因によって期待値が変わることがあります。
今回、ALTAテキストの追記はありません。1.4.2についてはまとめて書きます。
次回は「1.4.2 テストケースの設計」の続きです。後編として、「テスト設計時の注意事項」について書きたいと思っています。