テスト実行と再実行に時間がかかる現場
江村氏は「運用作業は多くの工数を必要とし、それが続くとテスト自動化自体が嫌になってしまうこともあるかと思います。そこで、これらの運用課題とその解決策を紹介します」と話し、テスト自動化における運用の課題を解決した3つの事例を紹介した。
最初の事例は「テスト実行と再実行に時間がかかる現場」。顧客へのヒアリングで、「最近、テスト実行に時間がかかることがある」との声があった。具体的にどのような状況で時間がかかるのかを尋ねたところ、「テストが途中で失敗すると、非常に多くの時間を費やしてしまう」とのことだった。
調査したところ、以下の問題が明らかになった。テストケースには、機能1:ユーザー作成、機能2:商品検索、機能3:お気に入り登録、機能4:商品購入という4種の機能テストが含まれており、これらがまとまったテストケースとして自動化スクリプトに組み込まれていた。しかし、開発中のプロジェクトで、機能3のお気に入り登録の部分に不具合が発生し、何度もテストが失敗するという状況が生じていた。
このプロセスを時系列で見ると、1回目のテストでは、機能1・2は成功したものの機能3で失敗した。エンジニアが修正を試み、2回目のテストを実行したが、また失敗。これを繰り返し、4回目のテストでようやくすべてのテストが成功した。
時間がかかる原因は、1つのテストケースに複数のテスト目的が含まれていたことにある。また、成功したテストが何度も繰り返し実行されていたことも時間のロスを招いていた。さらに、特定の機能だけをテストする「サブセットテスト」が実行できない状況にあり、機能4については最後のテストでしか実行されていなかった。
これらの問題の解決策として、1つのテストケースには最低限のテスト目的だけを設定すること、各テストケースが他のテストケースに依存せず、単独で実行できるようにすることを提案した。テストケースを機能ごとに4分割し、順番に実行するようにした。そうすると、機能1・2が成功し、機能3が失敗、機能4が成功となった場合、機能3だけを改修・再テストすれば良いため、全体の実行ボリュームが少なくなる。
江村氏は「ただし、機能3がバスしたあとも、フルリグレッション(すべてのテストを最初からやり通す)を行うことをお勧めします。この事例のまとめとしては、テストケースを小さくし、テストが失敗した場合の運用を考慮することが重要であることが言えます。ただし、テストケースを小さくしすぎると、テストケースの数が膨大になり、管理が難しくなるというデメリットもあるため、バランスを考慮する必要があります」と加えた。