第192回: 「ソフトウェアテストしようぜ」9 CDプレイヤー(2. テスト分析の中編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「CDプレイヤー」のテスト分析の前編を書きました。
内容は、「テスト対象を分解してテストアイテムを識別する」まででした。
前回はテストアイテムを時間軸で並べ直して優先度をつけながらグルーピングするといったこともしました。
開発者よりもテスターの方が商品やサービスについて詳しいということがよくあります。
もちろん人によるのですが、開発者は自分が担当したモジュールについては、隅から隅まで何を聞かれても深く答えられるものです。ところが担当したモジュール以外は「知らない」と言われることがあります。
“仕様書を読み込むことが嫌なので知らない”というよりも、“知ってしまうと余計な口出しをしたくなるのが分かっているので遠ざけている”感じがします。
一方で、テスターは、テストのためにシステム全体を理解する必要があります。また、お客様との接点があることが多いので、開発者ほど深い話はできないかもしれませんが、全体的にお客様や営業職の人よりは商品やサービスの仕様に詳しくなります。
特に、前回の「テスト対象を分解してテストアイテムを見つける」活動を実施すると、テスト対象を隅から隅まで網羅的に把握しますので詳しくなります。
今回の「テスト分析中編」では、「見つけたテストアイテムを評価(テスト)する方法」を考えます。具体的には、
個々のテストアイテムからテスト条件を見つける
テストアイテムのグループ間の関係からテスト条件を見つける
の2つの話を書きます。
……と思ったのですが、1だけで長文になってしまったので、2は次回に回します。
すみません。🙇♂️
≡ 個々のテストアイテムからテスト条件を見つける
まずは、「個々のテストアイテムからテスト条件を見つける」方法です。
「個々のテストアイテムからテスト条件を見つける」とは、前回作成したフィーチャーツリーの末端のノードに焦点を当てたテスト条件を見つけることです。
前回つくったフィーチャーツリーを再掲します。
一番上にある末端ノードは「電源オン・オフ」というテストアイテムです。例として、この「電源オン・オフ」から「テスト条件」を見つけてみます。
「テスト条件」とは、ISTQBの用語集によると、以下の通りです。
簡単に言えば、「テストによって確認できるもの/こと」がテスト条件です。
■ 電源オン・オフによって確認できるもの
電源が切れている状態で電源(OnOff)ボタンを押したときに起こること
1. 電源オフする直前の状態に復帰する?
(ラジオを聴いているときに電源オフした状態で、電源(OnOff)ボタンを押したらラジオが鳴っても違和感はないかも。CDは違和感がありそう。)
2. 購入直後(工場出荷状態)のときには、ラジオ局のプリセットを促す?
3. 電源コンセントの抜き差しで電源オフ状態になっているときに電源オンしても同じ動作になる?電源が入っている状態で電源(OnOff)ボタンを押したときに起こること
4. 電源が切れるか(どの状態でボタンを押すか、アラーム鳴動中はスヌーズ機能となるため別のテストで行う)
5. “起動中”や“シャットダウン中”や“CD読込中”などの状態遷移中に電源(OnOff)ボタンを押しても電源が切れるか
6. 聴いていたCDは自動的にイジェクトされるか
電源(OnOff)ボタンの押し方
7. ボタンを押したときにリモコンから信号が発信するのか、押したボタンを離したときか
8. ボタンを押し続けるとどうなるのか
こんな感じでしょうか。
「電源オン・オフからテスト条件を見つける方法」ではなく、「(一般的な)個々のテストアイテムからテスト条件を見つける方法」を知りたいんだと怒ってしまった人がいるかもしれません。
そんな方法は世の中にありません。
“NGT/VSTeP”や“ゆもつよメソッド”や“FV表と6W2Hツリー”をつくったら見つかるのでは?と思われた人もいると思います。
確かに上に書いたメソッドを使うと、「MECEを確認することによって見つけたテスト条件のバリエーションに気が付く」ことや「一般的なテスト条件のモデルからテストアイテムに対するテスト条件を見つける」ことはできると思います。また、それは有効なプラクティスだと思います。
でも、「テスト条件はテスト対象のテストアイテムごとに必死になって頭を絞ってひねり出すもの」です。今回の「電源オン・オフ」というテストアイテムでも、「テスト対象は、CDプレイヤーで、操作はリモコンによるものしかなくて、ボタンは1つのボタンに複数の機能を割り当てていて、一般家庭で普通の人が扱う」といった、特有のこみ入った前提でテスト条件を見つけることが大切です。そうしませんと、意味のないテストをたくさんしなければならなくなるからです。
なお、テストの前提まで明らかにしたいときには、6W2H(When, Where, Who, What, Why, Whom, How to, How much)をつくります。6W2Hについては、以前facebookに書いたものを下記にコピペしましたので興味のある方はご覧ください。
ビジュアルな資料としては、JaSST東北の方の資料がとても分かりやすいのでお勧めです。(書籍では、『事例とツールで学ぶHAYST法』に書きましたが、JaSST東北の資料の方が良いです)
話は、「テスト条件はテスト対象のテストアイテムごとに必死になって頭を絞ってひねり出すもの」に戻ります。
こうして、ひねり出したテスト条件は次のテストでも使えそうな気がします。そこで、多くの組織では見つけたテスト条件をテストノウハウとして記録し学習しています。例えば、以下のツリーは、ASTER主催のテストセミナーで2020年あたりから私がテスト条件をまとめるときのスケルトン(骨格)として紹介しているものです。
上のツリーを使ってテストアイテムからテスト条件を見つけるときには、
テスト条件を見つけようとしているテストアイテムがピンク色の10種類のテスト観点のどれに当てはまるか調べる
その下にぶら下がっている末端のノードをコピペする
そのノードに記載の事項から「テスト条件」を見つける
です。
例えば、「CSVァイル書き出し」というテストアイテムのテスト条件を見つけようとしていたら「8. ファイル」に着目し、深掘りしていきます。上の図の赤い線で示しました。「コンテンツ」→「文字コード」→「UTF-8」→「BOM」→「有り」と。(ここだけ深いのは、ここだけノードを展開しているからです。全部を展開してしまうと画面に収まりません)
で、「CSVァイル書き出し」というテストアイテムに対して、「文字コードがUTF-8で、BOMが有り」のテスト条件を見つけます。
このように書くと、技術伝承もできて、とても良い方法のように思えます。ところが、やってみるとすぐにわかるのですが、上の図ですら50個も超えるノードがあります。隠れているものを数えたら、ノード数は千のオーダーになります。しかも、つくった人しかわからないものになりがちです。MECEに分けたと言っても人によって分類箇所は異なります。つくった人ですらしばらくすると「どこに置いたっけ?」「何をテストする気だったんだっけ?」となります。(私はなりました)
ということで、つくる過程は楽しいですし、つくる過程で自分の記憶の整理が出来るので時間の無駄ではないのですが、つくったものを標準として横展開するにはもう一工夫が必要です。
方向はあっていると思いますが、実用のためには、AIによるアシストシステムがほしいです。
≡ おわりに
今回は、「CDプレイヤー」の「テストアイテムからテスト条件」を見つける作業の片方の、
個々のテストアイテムからテスト条件を見つける
についてでした。巷で優秀と言われるテスターの頭の中にはこのようなツリーが存在し、しかも、その情報を最新になるように、更新し続けているのだと思っています。
次回は「テストアイテムのグループ間の関係(ユーザーストーリーマッピングのようなもの)からテスト条件を見つける」方法について、書く予定です。