ソフトウェア開発に「テスト自動化」を導入するメリットと成功のポイントとは?

最終更新日時:2022.06.21 (公開日:2022.06.21)
ソフトウェア開発に「テスト自動化」を導入するメリットと成功のポイントとは?

ソフトウェア開発のアジャイル化などが進んで開発スピードが上がり、さらに品質向上の観点からテストを繰り返し実施するケースが増加するにつれ、テストの省力化・効率化を狙った「テスト自動化」への関心や需要が増え続けていると言われています。そこで今回は、テスト自動化の意味やメリット、デメリット、プロセスなどのアウトラインをまとめました。テスト自動化の導入を考えられている方はぜひ、参考にしてみてください。

もくじ
    1. 「テスト自動化」の目的は?
    2. 「テスト自動化」を導入するメリットとデメリット
    3. なぜ、「失敗事例が多い」と言われてしまうのか?
    4. 「テスト自動化」の導入ステップ
    5. 「テスト自動化」導入に成功するためのポイントは?
    6. まとめ:テスト自動化のコストを意識する

1.「テスト自動化」の目的は?

はじめに「テスト自動化」とは何を目的として実施することなのか、資料を見てみることにします。

国際ソフトウェアテスト資格認定委員会(ISTQB:International Software Testing Qualifications Board)が作成した『ISTQB Glossary』という用語集ではテスト自動化を「ソフトウェアを使った、テスト活動の実行や支援」と簡素に説明しています。

次に「ソフトウェア品質知識体系ガイド」(SQuBOK Guide V3/編・SQuBOK策定部会)を見ると、以下のように説明されていました。

「テスト自動化技法とは、テストプロセスの一部または全部を自動化することにより省力化や効率化を図ったり、人間の誤りを排除してテストの質を確保したりするための方法である。」(SQuBOK Guide V3「3.8.2 S-KA:テスト自動化技法」より引用)

テスト自動化の目的は、ソフトウェアテストを自動化することで、テストの省力化・効率化を図り、テストの質を確保することにあります。

2.「テスト自動化」を導入するメリットとデメリット

テスト自動化のメリット

テスト自動化には、以下のようなメリットがあるとされています。

効率化・省力化
・テスト実行速度が向上し、実施回数を増やせる
・夜間、休日など、人間の都合に関わらずテスト実施可能(毎日でも夜間でも実行することが可能)
・手動では不可能または非現実的と考えられる大規模なテストが実行可能(大量のデータを扱うことができる)

コスト面
・テスト実施の工数削減
・手動によるテストよりも運用時に低コストで実施可能なことが多い

テストの質の向上
・テストにおけるヒューマンエラー(人為的ミス)を防止し正確に実施できる
・テストが高速化するので、バグの早期発見が期待できる

このように、テストを省力化・効率化でき、コスト低減、質の向上を図れるのがテスト自動化の大きなメリットです。とくに開発期間が短く、時間が限られているケースや大規模なテストが必要なケースで効果が大きいといわれています。

テスト自動化のデメリット

非常に大きな効果が期待でき、メリットが多いテスト自動化ですが、デメリットがあることも指摘されています。

効率が悪くなる可能性
・事前に設定したケースしか検証できないため、柔軟な不具合検出が難しい
・テスト自動化を行うツールのバージョンアップやプロセスの点検など新たなメンテナンス(保守)運用工程が発生する
・テスト自動化が向かないケースが存在する(すべてを自動化するのは難しい)

コスト面
・初期導入に際しては手動によるテストよりも準備が必要でコストがかかるケースがある (テストスクリプトを作成したり環境構築をしたりするためにコストがかかる)

テスト自動化では、事前に設定した内容しかテストできません。そのため、設定時に考慮漏れがあったりすると、その領域は事実上テストがされないことになります。テストに向かないケースもあります。例えば、実施回数が少ないテストやプロセスが確立できていないテストは自動化には向かないとされていますし、その都度テストケースを作成して行うアドホックテストやテストの設計と実行を並行して行っていく探索的テストは自動化できません。

また、テストを自動化すれば「何もしなくて良くなる」わけではないことには注意が必要です。テスト自動化の効果を得るには、繰り返し運用を続けていくことが大切です。そのため保守運用は必須となります。

3.なぜ、「失敗事例が多い」と言われてしまうのか?

テスト自動化は「失敗することが多い」と言われることがあります。過去の失敗事例を見ると、いくつかの共通事項が指摘されていますが、多くは「事前の検討不足」「考慮漏れ」が原因となっているようです。

また、導入を検討したり、導入テストをしたりする段階で、充分な準備・検討がされないまま運用されてしまって結果を出せず、「失敗」とジャッジされてしまう残念なケースが多いとも言われています。

調査、検討、考慮不足による失敗

「まず導入して、それから運用方法を考えよう」と勢いでテスト自動化の導入が目的となり、導入にあたっての事前調査や、検討、開発とテスト環境への考慮が足りず、導入直後から破綻してしまうケースがあります。企業の場合、予算の都合等もあるので導入が先になり、あとから検討する流れが避けられないこともありますが、テスト自動化を実際に実施する前には、綿密な事前準備と計画が必須です。

とくに気をつけたいのは、経営層も含めた「認識合わせ」をしておくことです。テスト自動化への期待値が高まりすぎて、過度な結果・成果が求められてしまうと、せっかく成果を上げても「結果が出ていない」と評価されてしまうことがあります。とくにコスト面で「テスト自動化を導入するとコスト削減につながる」と期待されすぎてしまうと運用チームの"重荷"となってしまうので注意が必要です。

メンテナンスされずに失敗

せっかくテスト自動化を導入しても、メンテナンスされずにテストスクリプトが実行できなくなったり、陳腐化したりするケースがあります。運用する人員が確保できていなかったり、運用が属人化していて、異動や退職の結果、ブラックボックス化してしまい放置されたりすることで発生することが多いようです。テスト自動化を導入したあとの保守運用体制を事前に検討し、用意しておくことが大切です。

開発ペースに追いつけず失敗

開発ペースが速いプロジェクトや、何でもかんでも自動化しようと手を広げすぎたプロジェクトでは、テストスクリプトの作成が開発ペースに追いつかず破綻することがあるようです。テスト自動化を適用する範囲を的確に定め、できるところから確実に自動化していくのがポイントになるでしょう。

コストが「爆発」して失敗

無計画にテストの自動化を推し進めた結果、初期導入にあたっての準備にコストがかかりすぎてしまって「ストップ」がかかるケースがあります。

4.「テスト自動化」の導入ステップ

自動化を導入するにあたっては、大きく4つのステップを踏んでいきます。

(1)事前調査・検証する(フィジビリティスタディ)

事前に、ソフトウェア仕様や開発プロセスの調査を行って、テスト自動化が可能な部分を抽出し、自動化が可能かどうかを検証します。このことを一般的にはフィジビリティスタディと言います。自動化エンジニアが導入前に実施すべきことをまとめた記事がありますので、ご参照ください。

(2)導入の目的を明確化する

テストの自動化によって、どんな成果を上げたいか、何のために行うのかを明確にします。効率化、作業負荷の軽減、コスト削減といった様々な目的の優先度を決め、最初のゴールを設定するような作業になります。

(3)テスト自動化の対象、範囲の決定

(1)と(2)の結果から、「何」の「どの範囲」を自動化するかを決定します。初期導入費用と運用コストを見積もり、損益比較(損益分岐点の算出)をすることで範囲を決めることが多いようです。

(4)手法、ツール類を選定

調査結果を元に、どのようなテスト自動化の手法、ツールを用いるかを選定します。必要があれば実験等も行って具体的に検証します。手法とツールはコストへの影響が大きいので、理想と現実のすり合わせも必要になります。

(5)環境構築・テストケースを作成

テスト自動化を行うための環境を構築し、テストケースを作成します。このあと、テストスクリプトを作り、実際にテストを実行し、検証と改善を繰り返していくことになります。

5.「テスト自動化」導入に成功するためのポイントは?

『SQuBOK Guide V3』が指摘する留意点

ここまで、テスト自動化のメリット・デメリットと失敗事例のパターン、導入ステップを紹介してきました。テスト自動化導入に成功するポイントは、何より、事前に充分な調査・検討を行い、綿密な計画を立てることです。この点について、『SQuBOK Guide V3』では留意点として以下のように指摘しています。

・テストの性質によって、自動化が向くものと向かないものがあることに留意する。リグレッションテスト(回帰テスト)のように繰り返し実施するものや、性能テストや負荷テストのように手動での実施が困難なものは自動化に向く。一方、ユーザービリティテストのような主観を伴うテストや、一度しか行わないテストは自動化に向かない。
・テストの自動化を計画する際、自動化に要する費用や工数、仕様変更に伴う自動テストのメンテナンスを考慮し、自動化すべき個所と手動で行うべき箇所を判断すると良い(SQuBOK Guide V3「3.8.2 S-KA:テスト自動化技法」より引用)

『テスト自動化の8原則』

上のSQuBOKでも紹介されていますが、「テスト自動化」の技術領域の定義と啓発を目的とする、日本のテストコミュニティの有志による「テスト自動化研究会(STAR: Software Testing Automation Research Group Jp)」は、テスト自動化で考慮すべきポイントを『テスト自動化の8原則』としてまとめています。

<テスト自動化の8原則>
1.手動テストはなくならない
2.手動でおこなって効果のないテストを自動化しても無駄である
3.自動テストは書いたことしかテストしない
4.テスト自動化の効用はコスト削減だけではない
5.自動テストシステムの開発は継続的におこなうものである
6.自動化検討はプロジェクト初期から
7.自動テストで新種のバグが見つかることは稀である
8.テスト結果分析という新たなタスクが生まれる
(テスト自動化研究会「テスト自動化の8原則」より引用)

下のサイトで「テスト自動化の8原則」の内容が詳しく解説されています。ぜひご参照ください。

まとめ:テスト自動化のコストを意識する

これまで何度かテスト自動化では費用対効果を考慮しておくことがポイントになると述べましたが、成功のためには自動テストと手動テストのコストを的確に比較しておく必要があります。導入時に計画を立て、継続することが成功の近道となりますので、コストを把握しておくことが重要です。

テスト自動化では、導入にあたって初期コストがかかります。手動テストと比べたとき、自動化の効果がすぐに確認できるわけではありません。テストが効率よく自動的に実行できるようになってからはじめて成果が出て、そこから少しずつコスト削減につながっていきます。言い換えると、自動化されたテストを繰り返して、少しずつコストを下げていき、初期導入費用の「元を取る」ために工夫していくことになるのです。テスト自動化の成功のカギは"バランス感覚"なのかもしれません。

PR
テスト自動化に革命を! "日本語"で"カンタン"に自動化を可能にする「T-DASH」

image1.png

T-DASHはWebアプリケーションの動作確認・検証をコードを書かずに作成・実行できるテスト自動化ツールです。

日本語でテストケース・テストシナリオを作成できるだけでなく、テストを行う画面や動作の定義、実行結果が一目でわかるダッシュボードなどをブラウザ上で管理・閲覧いただけます。属人化を排除し、ちゃんとテスト設計したテストケースを自動化できる、使い続けることができるテスト自動化ツールとなっています。

執筆者:神田 富士晴

ライター

株式会社アスキー、株式会社光栄、株式会社ビレッジセンター等で書籍・ムック・雑誌の企画・編集、ソフトウエア制作を経験。その後、企業公式サイト運営やコンテンツ制作に10年ほど関わる。現在はライター・マンガ原作者として記事の企画・取材・執筆に取り組んでいる。