Dreamland-夢と想いと小さな工夫

自分の中にある想いだったり日々の工夫だったりをすこしずつ書いていこうかなぁって思ってます。

テスト設計者の思ったとおりにテスト実行してもらえないとき

テスト設計からテスト実行までを一人で行っていた人が、テスト設計だけを担当してテスト実行を他の人に任せるようになったときに、テスト設計者の暗黙知が表現できていないなどの理由でテスト実行者が異なる認識でテスト実行することがある、「ここまでみてほしい」と思うところまでみてもらえない、というもどかしさを感じる、ということを経験したことがあるかたはどのくらいいるのでしょうか?

私も初めてこのケースに遭遇したときは「なんでそこまでみないのっ??!」と驚いたり、自分でできたらこんな見落としはしないのに・・・と思ったりしました。。。今でも思うことはありますね(^^;

このようなことが起こると、テスト設計時の狙いが実行時に漏れてしまうため、なるべくテスト設計者とテスト実行者のずれを少なくしたいと思うのですが、その際に「誰でも同じようにできる」を目指してしまうことがあります。特に10年前とかそういう傾向が強かったように思います。しかしながらその結果が嬉しかったかというと、メンテナンス性の悪いテストスクリプト、殺虫剤のパラドクスになりやすいテストスクリプトというものができあがり、テスト実行時に気付いて欲しい他の問題にも目がいかなくなるという問題が起こりました。

これらの現象をロジックブランチにしてみました。
※使い勝手がよいのでastahのアクティビティ図のツールをつかっていますが、アクティビティ図ではなくてロジックブランチです。バナナ型はさすがにないので楕円で代用。
f:id:shiozi:20171016170215p:plain

もし、テスト設計者と実行者が異なる場合、かつ、テストスクリプトに対してテスト実行者が違う解釈をすることを防ぐならば、結果として、誰もが同じようにテスト実行できるテストスクリプトを目指そうとする。その結果として嬉しくないことが起こる。

逆に、もし、テスト設計者と実行者が異なる場合、かつ、テストスクリプトに対してテスト実行者が異なる解釈をすることを許容するならば、結果として、テスト実行者によって実行内容が異なってしまう。こちらのケースではテスト設計者の想定外の不具合を見つけることができるかもしれないけれど、テスト設計者の意図したテストは実行できないことがある。その結果として嬉しくないことが起こる。

この問題については解決法は一つではないと思うし、組織やプロジェクトの背景により対策は変わると思います。
私が考える案として同じくロジックブランチで示してみます。
緑のところが追加した部分。

f:id:shiozi:20171016171035p:plain

私は、人が実行する場合はテスト手順や値に自由度を持たせるほうがよいと思っています。そのほうがテスト実行者の思考がかたまらないのと、テストウェアとしての再利用度が上がると思っているからです。そのかわり、確実に「そのテストは何を確認したいのか?」というテスト設計者の意図を記入しています。あとは、テスト実行者もいろいろ考えて試せると信頼するほうがよいと思います。

そして、考える必要が無いほどのテストスクリプトであれば、できるだけ自動化を目指したほうがよいし、そのようなテストは繰り返し行う可能性のあるテストに絞り込んでいくほうがよいと思っています。

もうひとつ、テストの値や操作方法を入れ替えることが容易にできるような、再利用の仕組みを考えることも有効だと思います。これは自動化であれ手動のままであれできることです。その仕組みをもつテスト管理ツールもありますね。

みなさんの現場ではどうしていますか?それはなぜですか?その結果どうなっていますか?そんなことをこの様に図にしてみることで、「ここはこうしたらよいかもしれない」「ここが変わればよいかもしれない」ということに気付くかもしれません。