2021.9.30
【第4回】:テスト自動化の適用における課題
システム開発現場におけるアジリティ (機敏性) の重要性は高まりつつあり、今日ではアジャイル開発の適用が拡大しています。短いサイクルで開発が繰り返されるアジャイル開発でネックとなるのが、テスト工程です。
複雑化するシステムのテストを実施するためには、多くのテストケースを作成する必要があります。テスト工数が増大すれば、開発スケジュールへの影響は避けられません。こうしたリスクを低減するために、開発部門やQA部門には「テスト自動化」の適用に向けての取り組みが求められます。
テストには多くの種類が存在し、それぞれ自動化に適した実現方法は変わります。詳しくは、連載第3回の記事をご一読ください。
開発・QA現場向け「テスト自動化」のススメ 【第3回】:自動化可能なテストの種類
テスト自動化の重要性については、多くの開発現場が認識しているのではないでしょうか。しかしテスト自動化には課題が多く、実際の開発現場ではその目的を実現できていないケースがほとんどです。そこで連載第4回となる本記事では、テスト自動化を開発現場に適用する上での課題をご紹介します。
テスト自動化の適用における4つの課題
テスト自動化の適用にあたって、4つの課題が大きな障壁となります。そのため実際には、テスト自動化が適用されていない、または適用しても期待ほどの効果が得られない開発現場がほとんどです。ここでは、テスト自動化の課題について解説します。
課題1:複数の自動化手段を使い分ける負担が大きい
テスト自動化の実現方法として、「エンジニアの人手」「テスト自動化ツールの利用」の2種類があることを、連載第2回でお伝えしました。しかし結合テストや総合テスト、受け入れテストの自動化には、連続的かつ複雑な処理をともないます。エンジニアがプログラミングやテストツールを組み合わせて行う人手による自動化では、こうしたテストの実施に多大な労力を費やすことを免れません。一方で、ほとんどのテスト自動化ツールは、比較的シンプルな単体テストやUIテストなどには不向きであると言われています。
すべてのテストを同一の手段で自動化することは難しいため、実際にはエンジニアによるプログラミングや複数のテストツールを併用することが通例です。人手による自動化にはプログラミングスキルが欠かせず、熟練したエンジニアでも容易ではありません。また併用するテストツールや自動化ツールについても、それぞれの利用方法やテスト範囲を正確に把握する必要があります。
結果として、1つのシステムにおけるテスト自動化には、多大な要員・工数を要することとなります。テスト自動化を適用するために、進行中のプロジェクトを遅延させることはできません。そのため、開発サイクルの短い現代の開発現場では、テスト自動化に十分な要員・工数を確保できないケースがほとんどです。
課題2:テスト自動化適用後も継続的に生じるコスト
システムのバージョンを更新する際には、既存機能に影響がないことを確認する「回帰テスト」が欠かせません。エンジニアが作成したテストプログラムは、回帰テストのたびにメンテナンスするための工数が必要です。
またテスト自動化ツールについても、多くはプログラミング言語によりシステムを動作させるシナリオを記述します。人手による自動化よりは記述量を抑えやすいものの、それなりのメンテナンス工数は避けられません。プログラミングの知識・経験が少ないテスターの場合はもちろん、新しいテスト自動化ツールを利用するための教育コストも生じます。
このように、開発現場ではテスト自動化の導入時だけでなく導入した後も、運用・保守のために継続的なコストがかかります。こうしたコストを抑制することは難しく、テスト自動化を適用したにもかかわらず費用対効果が上がらないケースも少なくありません。
一方、最近注目されるテスト自動化のメリットとして、DevOps開発手法における「継続的インテグレーション (CI) 」の実現が期待されています。すなわちプログラム変更後のテストを自動化することにより、開発者が変更内容をメインラインにマージした後の回帰テストが容易となるのです。これによって分岐バージョンを管理する負担が減り、開発工程からデプロイにいたるまでのプロセスが効率化されます。
その結果、自動化導入後の費用対効果は高まり、継続的なデリバリーへの対応も容易となるでしょう。こうした期待の多いCIを実現する上で、自動化プラットフォーム構築の必要性はますます高まると考えられます。
課題3:非機能テストの自動化が困難
連載第3回でご紹介した「非機能テスト」は、従来はツールを活用しても自動化が困難なテスト領域でした。パフォーマンスやユーザビリティ、セキュリティといったシステムの非機能要件はほとんどの場合、顧客から明示されません。非機能要件の合否を判定する基準は、明確な解答が存在しないため、どうしても曖昧になりやすいのです。
また、特に「ユーザビリティテスト」では、ユーザー体験に基づいて可視性・利用性を評価します。表示のわずかな異常や操作遅延など、繊細な確認項目に対して正確に結果判定することは、従来のほとんどのテスト自動化ツールでは困難です。
ユーザビリティテストを始めとした非機能テストに自動化を適用する際にも、テスト自動化プラットフォーム構築サービス『ADOC Testing Service (ATS) for Eggplant』が有力な選択肢となります。AI (人工知能) を駆使することによりテストケースの自動生成や高精度な結果判定が行える上に、バグの自動抽出なども可能です。
課題4:自動化できないプロセスは手作業となる
テストには計画や設計、環境構築、分析、フィードバックといった様々なプロセスが存在します。しかし多くのテスト自動化ツールは、「テスト実行」領域だけを自動化の対象としています。それ以外のプロセスは結局テスターが手作業で行うこととなるため、開発工程全体の劇的な効率化や品質向上にはつながりません。
テスト計画書やテスト仕様書、テストレポートなどのドキュメント作成には、相当な工数が必要です。特に、テスト仕様書に記載するテストケース数は膨大なものとなります。複雑化する今日のシステムを漏れなくテストする上で、デバイスやOS、ブラウザといった多くの要素を掛け合わせる必要があるためです。
またテスト実行後のテストレポート作成では、テスト品質を担保するためにカバレッジ (網羅性) の可視化が欠かせません。膨大なテストケースの実行結果を手作業で収集・整理することとなり、工数は増大します。たとえテスト実行だけを自動化しても、こうしたプロセスに多大な工数を要するのでは、費用対効果は向上しません。
テスト自動化のための、従来と異なる新しいアプローチとは?
今回は、テスト自動化の適用における4つの課題についてお伝えしました。
開発現場における工数の3、4割以上は、テスト工程で発生すると言われています。テスト自動化が適用されない開発現場では、多大な工数がテストのために費やされ続けます。その結果、人的リソースや開発スケジュールが圧迫され、開発現場のアジリティが失われてしまうのです。
上述の通り、現状のテスト自動化ツールの多くはテスト実行領域など開発サイクルの一部の自動化にとどまり、テストケース作成などにおいて相変わらず人的な工数を費やしています。自動化の目的・目標を明らかにしたうえで、テストケース定義からスクリプトの作成、環境構築、実装、実行、監視、レポーティングとリリース判定まで、開発サイクル全体の自動化を想定した導入を検討しなければなりません。
今回ご紹介したテスト自動化の適用における課題の解決策として、ATS for Eggplantが有力な選択肢となります。モデリングUIツールを駆使して「探索的テスト」を自動化しつつ、AIにより高精度なバグハンティングやテストケースの自動生成、レポーティングを可能にします。次回は、テスト自動化の導入を容易にし、高次元で開発現場のQCDを飛躍的に向上するATS for Eggplantの概要や優位性についてご紹介しますので、ぜひご一読ください。
■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ
- 2021.11.10
- 【第6回】:ATS for Eggplantによるテストプロセスとは