テスト自動化の保守:定期的に実行して、自動テストが成功する状態を保つ
4番目のポイントは、テスト自動化の保守フェーズについてである。
「テスト自動化のよくある問題として、作りっぱなしで、いざ使おうと思ったら動かないという現象があります。テストを一生懸命やらなきゃいけない時期があっても、一段落して、次のバージョンアップ開発が終わってからそう思ったら全然動かない。これは本当によくあるんです」
このような現象が起こる原因は、テストケースやスクリプト・自動化の環境・実際のテスト環境などに齟齬があるためだ。また、自動テストが失敗したら間に合わせで修正して、何とか動くようにするため、自動テストなのに時間がかかってしまうことも少なくない。
テストする環境をきちんとメンテナンスして、定期的に実行して自動テストが成功する状態を保つ。つまり、自動テストの保守の負債をため込まないことが重要になると江添氏は説いた。
事例から学ぶ、テスト自動化における成功と失敗の分かれ道
5番目のポイントとして、テスト自動化の実例を紹介して、テスト自動化における成功と失敗の分かれ道を解説した。
「テストのコストを削減するには、繰り返し利用が見込まれる部分の自動化が重要です。同じ操作を繰り返すテストケースなのか、何度も実施するテストなのか、きちんと精査した上で、効果的なところから進めていくことが大切です」
ここで意識する必要があるのは、自動テストを一回やるだけで元が取れることは、ほとんどないと江添氏は説明した。何回か繰り返すと、実行時間が短縮されて、その繰り返しの積み重ねによってメリットが出てくる。
そして、テスト自動化が効果を発揮しなかった事例を1つ紹介した。
この例は、大規模システムのマイグレーションで、機能テストを自動化することで、現行システムと新規システムを比較するコストを削減すると共に、人的ミスによるテスト誤りの防止を目的としていた。そのために、約20万ものテストケースを自動化した。その結果、テスト期間内にすべての確認を終了でき、ローンチ後もユーザー不具合は一切発生しなかった。
「このようにプロジェクトとしては成功したのですが、テストの自動化としては失敗事例としています。20万件ものテストケースを自動化したために、コピースクリプトが大量に発生しており、保守性が低くて再利用が難しくなっていたからです」
せっかく導入したのに再利用ができないため、ROIは20%程度にとどまった。
続いて、テスト自動化の成功事例を紹介した。こちらは、膨大な組み合わせ数のチャットボット用FAQを最小のテストシナリオで自動化して回答品質を向上させた。チャットボットであったため、同じ操作を反復することが多くなっており、スクリプト2本と4400パターンのテストデータを用意して、実装コスト4人日で自動化を実現したのだ。
その結果、1回のテスト実行でROIは100%となった。チャットボットを修正した時も、同じテストを使い回すことができ、非常に大きなコストメリットが得られたのだ。
では、テスト自動化の失敗と成功の分かれ道は、どこにあったのだろうか。
「失敗と成功の定義にはいろいろな観点が考えられます。テスト自動化を継続する場合のコストで見ていくと、同じ操作を繰り返すテストの自動化が非常に効果的だといえます」
開発チームにおいてテストの自動化は重要性が高いという認識が広がっているが、なんとなくテスト自動化を始めて、継続の難しさを感じているエンジニアやPMにとって、大いに参考になったのではないだろうか。
テスト自動化を継続していくことは決して簡単なことではないが、あらかじめ自動テスト環境を保守する工数を計画に盛り込むことが大切になる。システムの運用を安定的に続けるにはコストがかかるが、自動テストの維持もそのための重要な要因になると、あらためて感じたセッションだった。