ATS|テスト自動化

2021.8.23

開発・QA現場向け「テスト自動化」のススメ 【第1回】:テスト自動化の定義とメリット

アジャイル開発などの普及により、今日の開発現場における開発サイクルは短くなりつつあります。それにともない、システムのテストに十分な工数・要員を確保できないケースも増えています。その一方でシステムは高機能化・複雑化を続けており、少ないテスト工数で高いテスト成果を上げることは困難です。

こうした開発現場の状況を打開するためには、「テスト自動化」の実現が重要課題といえます。しかし、テスト自動化の進め方や自動化可能なテストの種類など、その詳細に関して情報を必要とする方も多いのではないでしょうか。

そこでADOC TESLABブログではテスト自動化について、連載で順次解説します。第1回となる本記事では、テスト自動化の定義やメリットに関してご紹介します。

テスト自動化とは

「テスト自動化」とは、従来テスターが手作業で実施していたテストプロセスを、ツールやプログラムにより実現する取り組みを指します。一般に使われるテスト自動化の意味は、「テスト実行の自動化」を指すケースがほとんどです。計画や設計、実行、結果チェック、進捗管理、レポート、フィードバックといったテストプロセス全体については自動化の難易度が高く、多くの場合手作業で行われます。

テスト自動化の実現には、既存のソフトウェア (テスト自動化ツールやフレームワークなど) を利用することが通例です。テスト自動化ツールによって自動化の方法や範囲は異なるため、開発現場の方針に合ったツールを選定する必要があります。通常は、複数のツールやフレームワークを組み合わせて利用します。

開発現場によっては、独自に作成したテストプログラムによりテスト自動化するケースもあります。テストプログラムの作成は、専任のテスト自動化エンジニアがテスト仕様書をもとに行うのが一般的です。ただし、テストケース実行のみをプログラムにより自動化し、テスト結果の判定は手作業で行うケースも少なくありません。

また一口に「テスト」と言っても、機能テストや負荷テスト、ユーザビリティテストなど、その種類は多種多様です。テストの目的や種類によって自動化の実現方法は変わってきますが、詳細は次回以降で解説します。

テスト自動化による3つのメリット

冒頭にも述べたとおり、テスト自動化によりさまざまな「効率化」を実現することは現代の開発現場にとって重要課題です。その理由ともいえるテスト自動化のメリットは、主に3つ存在します。

メリット1:テスト実行における工数削減

今日の複雑なシステムからバグを漏れなく検出するためには、膨大なテストケースの実施が必要です。テストケースの実施順序などを考慮しないと冗長な手順が多く発生し、手作業では多大な工数が割かれることは避けられません。スキルの高いテスターでも、手作業によるテスト実行の効率化には限度があります。
テスト自動化による最大のメリットは、テスト実行で発生する工数を大幅に削減できる点です。ツールやプログラムによるテスト実行は、手作業の場合と比べてはるかに高速で行われます。大量のテストケースであっても少ない工数でテストを完了でき、短い開発サイクルに対応できます。また、テスト実行に費やす工数を削減できるため、テスターの人的リソースを新規開発に割り当てることも可能です。

メリット2:テスト品質の向上

テスターの手作業によるテスト実行では、ヒューマンエラーの発生をゼロにはできません。システムが複雑であればあるほどテスト手順も複雑となり、想定通りにテストが実行されないケースも発生しやすくなります。またテスト結果についても、表示の細かいずれが発生するケースなどもあり、テスターが全て正確に判定することは困難です。
結果としてバグが検出されず残存してしまうばかりか、バグの誤検出により現場に混乱が生じるリスクさえ考えられます。このような事態を防ぎテスト品質を向上することも、テスト自動化のメリットです。テスト自動化ツールなどを活用すれば、複雑なテスト手順でも機械的に実行・結果判定できます。結果として、人手で行うことによる「うっかりミス」や「テスト操作の誤り」などのヒューマンエラーを防止可能です。また自動化にともなうテスト範囲や量の拡大は、不具合の市場への流出阻止に貢献します。
さらに、『ADOC Testing Service (ATS) for Eggplant』などのAIによるテスト自動化実装サービスであれば、テスト実行時にテスト設計も並行する「探索的テスト」を実現可能です。その結果、バグの発生リスクが高いテストケースを自動生成でき、テスターでは見逃しかねないバグも検出できます。探索的テストについて詳しくは、次の連載記事をご覧ください。

今こそ求められる探索的テストとは? 【第1回】:探索的テストの基礎知識

メリット3:時間的制約に縛られず、柔軟なテスト実行が可能

テスターによる手作業でのテスト実行は、当然ながらテスターの稼働時間にしか行えません。テスターがテストに着手できない時間は、テストプロセスが完全に停止することとなります。また、テスターがシステム開発も兼任するようなケースでは、テスト実行によって開発プロセスに悪影響が生じる恐れもあります。
テスト自動化すれば、テスターの時間的制約に縛られることなく柔軟なテスト実行が可能です。深夜などにテスト自動化シナリオを実行させておくことで、人的リソースを浪費せずにテストプロセスを進められます。開発プロセスへの影響も軽減でき、開発チーム全体の生産性低下を防止できます。
自動化にともなうテストの増加と品質向上により、早期に問題把握や開発部門へのフィードバックが可能です。これにより開発者の「安心」が担保され、新規の開発作業に集中できます。このようにテスト自動化環境の構築は、不具合や問題点の早期発見による開発業務全体のリードタイム短縮をもたらし、同時にコストを抑えつつソフトウェア品質の保証範囲の拡大を実現します。

テスト自動化の現状と、その実現方法とは?

今回は、テスト自動化の定義やメリットについて解説しました。JSTQB (日本ソフトウェアテスト資格認定委員会) によると「テスト自動化」の定義は本来、下記のように「テスト活動全般」を対象としています。

  テスト自動化 (test automation) : ソフトウェアを使って、テストマネジメント、テスト設計、テスト実行、結果チェックなどのテスト活動の実行や支援をすること。
  引用元:ソフトウェアテスト標準用語集

それにもかかわらず、現時点では特定の対象や環境下でのテストプロセスにおける「テスト実行の自動化」のみを主に対象としているツールや導入サービスがほとんどです。開発やテストマネジメント方法の多様化・複雑化に対応するためには、テストサイクル全体の効率化と生産性向上をサポートする機能が求められます。

テスト工数の削減やテスト品質の向上といったメリットは、今日の開発現場にとって非常に大きいものです。しかしながら、従来のアプローチでは遅々としてテスト自動化の導入が進まず、そのメリットが得られていないのも事実。テスト自動化を実現するにあたっては、下記の事項についても把握する必要があります。

 ・テスト自動化の実現方法
 ・自動化可能なテストの種類
 ・テスト自動化の実現における課題
 ・上記課題に対する解決策

第2回以降では、これらに関して順番にご紹介します。次回はテスト自動化の実現方法について解説しますので、ぜひお読みください。

テスト自動化の実現には、AI技術にモデルベーステストの手法を取り入れた探索的テスト自動化実装サービス『ATS for Eggplant』が有力な選択肢となります。ATS for Eggplantには他のテスト自動化ツールと比べて多くの優位性が存在しますが、この詳細についても連載の後半でしっかり述べたいと考えています。

■ ADOC Testing Service for Eggplantの概要へ
■ ADOC Testing Service for Eggplantの資料請求へ

  • 2021.8.23
  • 開発・QA現場向け「テスト自動化」のススメ 【第1回】:テスト自動化の定義とメリット