Seleniumや、その他商用の自動テストツールを使ってテストの自動化をしているとき。実際に画面が動く様子を見たり、デモとしての数ケースの実行の様子を見た方の中にはこうおっしゃる方がいます。
「自動テストってこんな遅いの?」
どうも、「自動」ということばの響きに、目にもとまらぬ速さでぱぱぱぱっと実行が行われるさまをイメージするようなのです。
実際のところ、自動テストと手動でのテストを比べると、確かに手動のほうが速い場合もあります。が、ほんとうに手動テストのほうが速いのでしょうか。
手動テストのほうが速い(速く見える)場合
たとえば、画面表示や処理完了を待って操作を継続するなど待ち時間を含むテストをする場合などは特にそうですが、画面操作全般は慣れた人が手動で行うほうが速いことがそこそこあります。
これは、自動テストが
- 画面上に**が表示されるのを待つ
- *秒待つ
などの処理を含んでいるために起こります。自動テストスクリプトのコードを書いた人が明示的に設定した待機や、自動テストツール側が裏で行っている待機処理などがあるため、人間がテンポよく操作していった場合はそちらのほうが速いです。
熟練テスターさんのスピードを知っている人はそれが普通になっているので、自動テストツールが画面を操作しているさまは「遅い」ように見えることがあります。
トータルすると自動テストのほうが速い場合が多いと考えます
上で書いたように、数ケースの実行など一瞬を切り取った場合は手動のほうがスピードが速い=短時間で終わるように見えることがありますが、私は同じテストケースを実行させるのであれば、一般的に自動テストのほうが速いと考えています。
やはり長時間動作させた場合に、人間は疲れも出ますしトイレにも行きますし、ずっと同じスピードを出すのは不可能です。自動テストであれば疲れることはありませんし、人間が退勤したあとの夜中でも実行することが可能です。また、熟練テスターさんは一瞬で増やすことはできませんが、実行端末は増やせます。
ということで、「自動テストってあんまり速くないじゃん」と思ってしまうのは早計で、トータルで見たときには速い=同じ量のテストなら人より短時間でできる、んですよというのを言いたくなりました。
あとがき
なお、手動テストと自動テスト、単純な実行スピードを比べること自体にはそれほど意味がないなぁ、というのがわたしの考えでもあります。自動テストで実行できるところはなるべく自動にして結果のフィードバックを速く。一方手動でしか出来ないテストも存在するので、人間、特に熟練のテスターさんはそちらに注力が良いですよね。
さらにさらに、画面操作して行うテストをいくら自動化しても、テストのピラミッドでいう上層が厚くなってアイスクリームコーンになっちゃうので、単体テストとかAPIレベルのテストを充実させていきましょうね。
という話が以下の本に書いてあるのでぜひ読みましょう。