残念な自動テスト「あるある」から見えること
今度は手動テストと自動テストの比較をしていこう。自動テストのメリットは人間ではないので疲労がなく、夜間や休日でも、指示通りにテストを実施できるのがメリットだ。
裏返すと、指示がないと自動テストは実施できない。そのためテストの仕様や期待値が明確でないと指示ができないため、自動テストをコード化できないことになる。また人間なら仕様が変更されたら気を利かせて柔軟に対応できるかもしれないが、自動テストではそうはいかない。
さらに自動テストのバッチ処理では不具合があると、そこで止まってしまうことがある。竹花氏は自身の体験として「テストを大量に実施したいので、自動テストをセットしてから退社した。翌朝出勤するころにはテストが終わっていると思いきや、ログを見ると開始直後にエラーで止まっていてがっかりしたことがある」と話していた。あるあるではないだろうか。
人間ではなく機械なので当然ではあるが、自動テストではテスト箇所しか見ない。人間ならテストを実施する過程で、テスト対象ではないデザインやレスポンスの問題に気づくことができる。例えばスクロールがカクついたとか、使いにくさなどだ。
柔軟性に欠けるという点では、他にもある。スケジュールが押し迫っている時に人間なら目的や優先度に応じて取捨選択ができるが、自動テストでは人間のような臨機応変さはない。
こうした点を踏まえて、自動テストに全振りしようとしてもテスト漏れのリスクや柔軟性に欠ける部分もあるため難しいという判断になる。加えて自動テストを構築するコストや自動テストそのものに不具合が混入する可能性も考慮しておく必要がある。
とはいえ全部手動もよくない。竹花氏は「効率を高めるための自動化であることを忘れず、どこを手動で、どこを自動でテストするかを事前に決めておくといいでしょう。小さな自動化でも役に立ちますので、まずはミニマムなところから自動化をはじめるといいと思います」と話す。