テストオートメーションは魔法の薬では無い!諸刃の剣になりえると知っておくべき
私はテストエンジニアとして、かれこれ15年ほど働いていますが
テストオートメーションの意義をわかっていない企業というより、現場責任者が多い
私の考えを書きます。
そして、今後テストオートメーションに手を出そうとしているテスターの人たちの参考になれば幸いです。
テストオードメーションがあたかも、いままでマニュアルで人がやっていたテスト作業を簡単に置き換えるれるように考えている責任者の人がとっても多い!
これはとっても単純で馬鹿です。
でも、そう簡単では無いですよと彼らを説得するのは難しい、
なぜなら
彼らの机上の空論がそう旨いこと行かないと証明するのにとっても時間がかかるから
それと、やってみないとわからないということ
私は、これまでのキャリアの中で、何度か現場責任者の思いつきでテストオートメーションプロジェクトに関わって来たのですが
成功したと思えるものには出会ったことはありません
私がこれまで担当してきた製品が家電製品だということも関係しているかもしれません
テストオートメーションに使っていたシステムもその製品に向いていなかったのかもしれません
我々が使ったいたテストオートメーションシステムは
一つ一つの作業をスクリプト記述して、そのコマンドをテストターゲット機器に送ってその機器を操作するまたはロボットアームを設置して、それでテストターゲット機器操作し、画面の写真を撮り
結果を予め用意してある正解写真と比較してテスト結果をゲットするというものでした。
まず、テストオートメーションに向いてるテストとそうでないテストがあるということを知っておくべき
テストオートメーションに向いてるテストは
・同じことを繰り返すテスト
同じボタンを数時間押し続けるてハングやリセットが起きないかを確認するテストなんかはオートメーションするべきでしょう
・本当に単純なテスト
これは、GUIやHMIで確認するテストではなく、ソフト内部での数値のやり取りを確認するテスト
例えば、単純にこの数値を送ったら、この数値が帰ってくるというような確認を行うテストです。
オートメーションに向いてい無いテスト
・人がやる単純なテスト
人がやるととっても単純なテストでも、それをスクリプトに起こして機械にやらせるとなると、結構たいへんなのです。
このボタンを押して、次にの画面に出た表示を確認というテストでも、
機械にやらせるとなると、いろいろなことを考慮して、スクリプトを記述しておかなくてはなりません
人がやると1分やそこらでできるテストに
数十時間かけてオートメーションするはめになったりします。
これって、本当に効率的?
そのテストを、何百回も数千回も回す必要があるようなプロジェクトなら価値はあるかもしれませんが
そうでも無いのであれば、人がやる方が効率的です。
・複雑なテスト
これはおわかりいただけると思いますが
前提条件だったりが複雑なテストはオートメーションするべきではありません
人がやればなにかうまく行かなかったとしてもその場でそれに応じて修正できますが
機械はそれができません、指定された動きしかしない
オートメーションすることの弊害
我々が使ったいたようなシステムでテストオートメーションした際に大きな問題だったのは
まず、スクリプト組んでいる時に、すでにそのテストをマニュアルでやってしまっているということ
結局、スクリプトを組む際に実機を動かしながらやっていきますから
その時に何度もそのテストをやっているんですよね。
これって、無駄じゃないですか?
これはかなり時間を食われていました
後、追加の画面遷移が追加されたたりすると最悪
人がやっていた受け入れテストのオートメーションは最悪
私が担当したプロジェクトで、
「受け入れテストをオートメーションして夜中に流してしまえば、次の日の朝結果が見れていいやん!」
と馬鹿なCTOが言い出してえらい目にあったことがあります。
150ほどのテストケースを5人がかりで数ヶ月かけてスクリプトを組んでオートメーション(この時点で、激しい工数の無駄!)
それで、このテストケースを夜中に流してみると、軒並みテストケースがNG
前提条件の異なるテストを順番に流してい行くと、えらいことになるのです。
そのため、テスト結果が本当にあっているか確認するのに半日を要し
効率的なんて言える状況では全く無かったのです。
逆に無駄な工数を無駄なことをしただけに終わりました。
一人専属のテスターを雇って、受け入れテストをやらしておくほうが、完全に効率的で、テスト結果も信頼できるものでした。
受け入れテストをオートメーションしようと考えているあなた
きちんと考えておいたほうが良いですよ。
思いつきでやったら現場が大変な思いをすることになります。
テストオートメーションする際に注意点
まず、オートメーションは魔法の薬では無いと知っておくこと、
やり方や製品によっては諸刃の剣になりえます。
きちんとオートメーションに適したテストケースかどうかを見極められる人を管理者に置くこと
何でもかんでもオートメーションしよと考えるのは危険です。
私の経験から、家電製品や車載インフォテイメントシステムでのシステムテストレベルのテストオートメーションは今のツールでは辞めておいたほうが良いというのが感想です
無駄に工数を消費するだけで終わってしまう可能性があります。