テスト自動化を導入するタイミング

テストの自動化は、ソフトウェアのテストプロセスに欠かせないものとなっており、中小企業および大企業の開発チームでは、バグを早期に発見し、アプリケーションに対するフィードバックを迅速に得るために、何かしらの自動化をおこなっています。テストフレームワークおよびテストツールを使用して、定期的に実行できる安定したテスト自動化をおこなうことができます。

テスト自動化をおこなう上で、最も難しい部分は計画段階です。開発プロジェクトは、自動化に投資するのに適切な時期かどうかを判断する必要があります。 その決定を下すのに役立ついくつかの考慮事項があります。

自動化を導入するタイミングを示す4つの兆候

テスト自動化の導入を進めるのに良い時期であることを示す兆候がいくつかあります。

1. 開発プロセスの後半でバグが見つかる

開発工程の後半でバグが見つかると、かなりの修正コストがかかります。後の工程でバグが見つかるまでに、大部分の機能が開発されているため、バグを修正するのに多くの作業の手戻りが発生する場合があります。

これはよくあるケースですが、理想的な開発サイクルのフローではありません。バグは、要件、設計、あるいは開発段階で埋め込まれています。一部の機能が開発され、テストのためにQAにプッシュされます。テスターはバグを見つけて、そのバグをバグ管理システムなどに登録します。開発者はバグチケットを受け取り、バグを修正してQAにプッシュバックします。最後に、テスターはバグが修正されたことを確認するために再テストをおこない、関連する他のモジュールに影響がなかったことを確認するために探索的テストもおこないます。これはかなりの時間・労力がかかるプロセスであり、チームの生産性を低下させる悪循環に陥っています。

このサイクルを断ち切るには、テスト自動化を使用して開発プロセスの早い段階でバグを検出する必要があります。新しい変更がQAにプッシュされる前後に、自動化された単体テストと統合テストを実施して、新しい機能が既存の機能に影響を及ぼさないことを確認する必要があります。バグを見つけるために積極的なアプローチをおこないます。

2. 多くの手動テストが必要な領域がある

テストの作業量は、アプリケーションの複雑さとともに指数関数的に増加します。 API、データベース、ハードウェアデバイスなどの複数のコンポーネントと相互作用するアプリケーションがあり、IoTの世界では、接続された複数のデバイス間で、データがリアルタイムで流れています。

このような状況から、これらのアプリケーションのテストでは、手動で実施するには多くの時間が必要となる領域があります。

たとえば、フィットネストラッカー(活動量計)を使用している場合、1つのテストシナリオは、モバイルとデスクトップのWebサイト、モバイルネイティブアプリケーション、およびハードウェアデバイスに同じデータが表示されることを確認することです。 テスターはこのテストを手動で実施することができますが、定期的に実施するのは時間がかかります。代わりに、このテストを自動でおこなう方法があれば、手動テストにかける時間を大幅に短縮できるかもしれません。

3. 複数ブラウザー、構成、およびデバイスでテストする必要がある

企業が、特定の環境のみをサポートする必要がある時代は終わりを告げました。

昨今、ユーザーが利用できるデバイス、オペレーティングシステム、Webブラウザーの種類は膨大なものとなっており、これらの環境の組み合わせをテストすることが、テスターには求められます。これらのテストを手動で実施することは困難かつ時間がかかるものであり、リリースサイクルにも影響を与えることになります。

代わりに、テストツールを使用することで、Webブラウザー、デバイス、および構成の複数の組み合わせで同じ一連のテストを実行し、アプリケーションに関する迅速なフィードバックを提供できます。 この作業にテストツールを使用する場合のROIは、手動で実行する場合に比べて高くなります。

4. シームレスなCI / CDパイプラインを実装したい

アジャイル手法に従うことの副産物は、自動化テストを既存のCI / CDパイプラインとシームレスに統合する必要があることです。 新しい機能が既存の機能に影響を及ぼさないことを確認するために、すべてのコードのチェックイン中にテストを実行する必要があります。 また、アプリケーションのさまざまなエンドツーエンドフローが期待どおりに機能していることを確認するために、回帰テストを定期的に実施する必要があります。

自動化について考慮すべきその他の要因

自動化テストを実施する上で、事前に考慮すべきいくつかの質問があります。

  • 自動化で解決できる問題のうち、手動テストでは解決できない問題は何ですか?
  • アプリケーションはどの程度テスト可能ですか?
  • 自動化をおこなうために十分な熟練したリソースがありますか?
  • 自動化を維持するための十分な時間はありますか?
  • プロジェクトのニーズに合うテストフレームワークとテストツールは何ですか?
  • オープンソースに移行して節約されたコストをテストフレームワークの構築に投資しますか?もしくはテストツールを購入して、基礎構築を必要とせずに自動化を始めますか?
  • 自動化をおこなう上で、利害関係者のサポートがありますか?

まとめ

自動化テストは、手動テストを補助するものであり、生産性の要求に対応するために不可欠なものとなっています。しかし、自動化テストの取り組みは急いでおこなうものではありません。自動化を既存の開発およびテストプロセスにいつどこで適合させるかを決定するには、多くの時間を費やす必要があります。自動化に投資する適切な時期を見つけるために、熱心な努力を払う必要があります。

(この記事は、開発元 Ranorex 社 Blog 「When Is the Right Time to Invest in Test Automation?」2019年5月5日の翻訳記事です。)