ソフトウェア開発のアジャイル化などが進んで開発スピードが上がり、さらに品質向上の観点からテストを繰り返し実施するケースが増加しています。
それに伴い、テストの省力化・効率化を狙った「テスト自動化」への関心や需要が増え続けていると言われています。
そこで今回は、テスト自動化の目的やメリット・デメリットをご紹介。
また、記事の後半では、テスト自動化導入の失敗事例とポイントを解説していきます。
テスト自動化はメリットも大きいですが、失敗している事例もあります。これから導入を検討されている方は、ぜひ参考にしてみてください。
- もくじ
1.テスト自動化の目的は「テストの効率と質を上げること」
テスト自動化の目的は、テストの省力化・効率化を図り、テストの質を確保することです。
国際ソフトウェアテスト資格認定委員会(ISTQB:International Software Testing Qualifications Board)が作成した『ISTQB Glossary』という用語集では、テスト自動化を「ソフトウェアを使った、テスト活動の実行や支援」と簡素に説明しています。
また、「ソフトウェア品質知識体系ガイド」(SQuBOK Guide V3/編・SQuBOK策定部会)を見ると、以下のように説明されています。
「テスト自動化技法とは、テストプロセスの一部または全部を自動化することにより省力化や効率化を図ったり、人間の誤りを排除してテストの質を確保したりするための方法である。」
(SQuBOK Guide V3「3.8.2 S-KA:テスト自動化技法」より引用)
「ソフトウェアテストを効率良く行い、人為的ミスを減らして質も上げること」がテスト自動化を導入する目的です。
2.テスト自動化を導入するメリット
それでは、テスト自動化の導入にはどんなメリット・デメリットがあるのでしょうか。
まず、テスト自動化のメリットを解説していきます。
2-1 テストの工数を削減できる
手動テストでは、テスト担当者がソフトウェアを操作したり、テスト結果が妥当か判定したりしなければなりません。しかし自動テストを導入すれば、こうした作業の大部分をツールやスクリプトに置き換えることが可能です。
機械的にテストを実施できるため効率的に作業が進み、手動テストと比べて工数の削減、コスト削減につながるでしょう。
また、休日や夜間といったテスト担当者の業務時間外に自動テストを実行できるのもポイントです。
2-2 テストの品質を向上できる
テスト自動化ではテスト自体の品質向上にも効果があります。
人間が行う手動テストでは、人的ミスを完全に防ぐことは困難です。テストケースは基本的に同じものが存在せず、常に適切な判断を行いながら作業しなければなりません。テストの実施手順やテスト結果判定を間違えてしまうことは起こり得ます。
しかし、自動テストであれば人間による判断が必要な作業を大幅に減らすことができ、人的ミスを防ぐことが可能です。
また、効率的なテスト実施により、早期に不具合を見つけることも期待できます。その分修正するスピードも上がるため、ソフトウェア品質の向上にもつながるでしょう。
2-3 テスト担当者の負担を減らせる
テスト自動化はテスト担当者の負担を減らすことができます。
多くの工数を要する手動テストは、開発プロジェクトのスケジュールを圧迫しやすいです。テスト担当者は限られた日程の中で、大量のテストケースを消化しなければなりません。規模の大きなソフトウェアほどテストケース数も増え、負担は増大します。
自動テストであれば細かい手作業が不要となり、テスト担当者の拘束時間を減らせます。
結果として、テスト担当者の負担軽減につながるでしょう。特に、回帰テストのように定型的なテストを自動化できれば、継続的な負担軽減が期待できます。
3.テスト自動化のデメリット
非常に大きな効果が期待でき、メリットが多いテスト自動化ですが、デメリットがあることも把握しておきましょう。
3-1 初期コストがかかる
テスト自動化を導入にするにあたり、ある程度の初期費用が発生します。
手動テストを自動テストに移行する作業は、1日で完了するほど簡単ではありません。テスト自動化にあたって、テスト担当者にはさまざまなタスクが与えられます。
テスト自動化の実施初期には人件費や製品の導入コストなど、多くの費用が発生するでしょう。
コスト管理が正しく行えないと、テスト自動化の実施途中で頓挫するケースもあるため注意が必要です。
3-2 失敗するリスクがある
テスト自動化は、テストの工数やソフトウェア品質向上に役立つ一方で、導入に失敗してしまうケースもあります。
失敗してしまうと、導入にかかった工数やツールの初期費用などが無駄になってしまうため、慎重に行う必要があります。
ただ導入すればよい、なんでも自動化すればよい、というわけではないので、導入する前の事前調査やリスクの把握な度が重要になります。
テスト自動化の失敗については以下の記事もご覧ください。
3-3 運用・メンテナンスが必要
テスト自動化は、導入後に継続運用のためのメンテナンスが必要になります。
なぜなら、ツールのバージョンアップや既存機能の修正・追加などが発生する可能性があるからです。
また、運用を続けていく中でテスト実行が不安定になることもあります。
継続してテスト自動化を運用するためには、定期的なメンテナンスや保守の工数がかかることを把握しておきましょう。
テスト自動化の運用については以下の連載をご覧ください。
4.テスト自動化導入の4つの失敗事例
テスト自動化は「失敗することが多い」と言われることがあります。
過去の失敗事例を見ると、いくつかの共通事項が指摘されていますが、多くは「事前の検討不足」「考慮漏れ」が原因となります。
また、導入を検討したり、導入テストをしたりする段階で、充分な準備・検討がされないまま運用されてしまって結果を出せず、「失敗」とジャッジされてしまう残念なケースが多いです。
この章ではテスト自動化が失敗する4つの原因を解説します。
事例1:調査、検討、考慮不足による失敗
「まず導入して、それから運用方法を考えよう」と勢いでテスト自動化の導入が目的となり、導入にあたっての事前調査や、検討、開発とテスト環境への考慮が足りず、導入直後から破綻してしまうケースがあります。
企業の場合、予算の都合等もあるので導入が先になり、あとから検討する流れが避けられないこともありますが、テスト自動化を実際に実施する前には、綿密な事前準備と計画が必須です。
特に気をつけたいのは、経営層も含めた「認識合わせ」をしておくことです。
テスト自動化への期待値が高まりすぎて、過度な結果・成果が求められてしまうと、せっかく成果を上げても「結果が出ていない」と評価されてしまうことがあります。
また、コスト面で「テスト自動化を導入するとコスト削減につながる」と期待されすぎてしまうと運用チームの"重荷"となってしまうので注意が必要です。
事例2:メンテナンスされずに失敗
せっかくテスト自動化を導入しても、メンテナンスされずにテストスクリプトが実行できなくなったり、陳腐化したりするケースがあります。
運用する人員が確保できていなかったり、運用が属人化していて、異動や退職の結果、ブラックボックス化してしまい放置されたりすることで発生することが多いようです。
テスト自動化を導入したあとの保守運用体制を事前に検討し、用意しておくことが大切です。
事例3:開発ペースに追いつけず失敗
プロジェクトによっては、開発ペースに追いつくことができず破綻してしまうことがあります。
特に、開発ペースが速いプロジェクトや、何でもかんでも自動化しようと手を広げすぎたプロジェクトでは、テストスクリプトの作成が追いつかなくなるので注意しましょう。
テスト自動化を適用する範囲を的確に定め、できるところから確実に自動化していくのがポイントになるでしょう。
事例4:コストが「爆発」して失敗
無計画にテストの自動化を推し進めた結果、初期導入にあたっての準備にコストがかかりすぎてしまって「ストップ」がかかるケースがあります。
テスト自動化は、うまく活用できればコスト削減につながりますが、導入時には初期費用が掛かります。
事前にどのくらいのコストがかかるのか、把握しておくことが必要です。
5.テスト自動化の導入を成功させるポイント
ここまで、テスト自動化のメリット・デメリットと失敗事例のパターン、導入ステップを紹介してきました。
次にテスト自動化導入を成功させるポイントをご紹介します。
5-1 自動化に向いているテストか判断する
テスト自動化には向き不向きがあります。導入の前に充分な調査・検討を行い、対象のテストが自動化に向いているか判断しましょう。
また、この点について『SQuBOK Guide V3』では留意点として以下のように指摘しています。
・テストの性質によって、自動化が向くものと向かないものがあることに留意する。リグレッションテスト(回帰テスト)のように繰り返し実施するものや、性能テストや負荷テストのように手動での実施が困難なものは自動化に向く。一方、ユーザービリティテストのような主観を伴うテストや、一度しか行わないテストは自動化に向かない。
・テストの自動化を計画する際、自動化に要する費用や工数、仕様変更に伴う自動テストのメンテナンスを考慮し、自動化すべき個所と手動で行うべき箇所を判断すると良い。
(SQuBOK Guide V3「3.8.2 S-KA:テスト自動化技法」より引用)
5-2 テスト自動化のコストを意識する
テスト自動化では、導入にあたって初期コストがかかります。
そのため、事前に自動テストと手動テストのコストを的確に比較しておく必要があります。
手動テストとは違い、テストが効率よく自動的に実行できるようになってはじめて成果が出て、そこから少しずつコスト削減につながっていきます。
言い換えると、自動化されたテストを繰り返して、少しずつコストを下げていき、初期導入費用の「元を取る」ために工夫していくことになるのです。
「導入時に計画を立て、継続することが成功の近道となりますので、コストを把握しておくことが重要です。
5-3 「テスト自動化の8原則」を理解しておく
テスト自動化導入を進めるにあたって「テスト自動化の8原則」を事前に理解しておきましょう。
上のSQuBOKでも紹介されていますが、「テスト自動化」の技術領域の定義と啓発を目的とする、日本のテストコミュニティの有志による「テスト自動化研究会(STAR: Software Testing Automation Research Group Jp)」は、テスト自動化で考慮すべきポイントを『テスト自動化の8原則』としてまとめています。
<テスト自動化の8原則>
1.手動テストはなくならない
2.手動でおこなって効果のないテストを自動化しても無駄である
3.自動テストは書いたことしかテストしない
4.テスト自動化の効用はコスト削減だけではない
5.自動テストシステムの開発は継続的におこなうものである
6.自動化検討はプロジェクト初期から
7.自動テストで新種のバグが見つかることは稀である
8.テスト結果分析という新たなタスクが生まれる
(テスト自動化研究会「テスト自動化の8原則」より引用)
下のサイトで「テスト自動化の8原則」の内容が詳しく解説されています。ぜひご参照ください。
まとめ
テスト自動化では費用対効果を考慮しておくことがポイントになると述べましたが、成功のためには自動テストと手動テストのコストを的確に比較しておく必要があります。
導入時に計画を立て、継続することが成功の近道となりますので、コストを把握しておくことが重要です。
テスト自動化では、導入にあたって初期コストがかかります。手動テストと比べたとき、自動化の効果がすぐに確認できるわけではありません。
テストが効率よく自動的に実行できるようになってからはじめて成果が出て、そこから少しずつコスト削減につながっていきます。
言い換えると、自動化されたテストを繰り返して、少しずつコストを下げていき、初期導入費用の「元を取る」ために工夫していくことになるのです。
テスト自動化の成功のカギは"バランス感覚"なのかもしれません。