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