ナレッジ
テスト自動化とは?メリット・デメリットや向き不向き、テストを自動化できるツールを紹介
目次
テスト自動化は、効率化などの面で注目されている反面、明確な目的がないと失敗に終わってしまう可能性があります。
本記事では、自動化の目的や効果を明確にし、メリットやデメリット、向き・不向きについて解説していきます。また、テスト実行を自動化するためのツールの特性なども簡単にご紹介します。
テスト自動化とは?
テスト自動化とは、「ソフトウェアを使った、テスト活動の実行や支援」を意味します(ISTQB用語集 - テスト自動化より)。
テストには以下の工程がありますが(図表1)、本記事では、その中の「テスト実行」や、さらに実行結果と期待結果の比較、テスト事前条件の設定、その他のテストコントロールやレポート機能を自動制御することを「テスト自動化」と呼んでいきます。
※テスト設計の自動化については、MBTという手法がありますのでこちらをご参照ください。
近年、アジャイル開発が普及し、テストサイクルにもスピード感が求められるようになってきました。このような状況に対応していくため、テスト自動化は注目されています。
テスト自動化の目的・効果
テスト自動化には多くのメリットがありますが、目的がはっきりしないまま自動化を始めてしまうと失敗に終わる可能性があります。 テスト自動化を成功させ、高い効果を得るためには、目的や解決したい課題を明確にして、優先順位を付けながら取り組むことが大切です。 これらの目的は、自動化の特性を理解した上で決定するとよいでしょう。
<目的・効果の一例>
JSTQBシラバス(Advanced Level Specialist シラバス-テスト自動化エンジニア)より抜粋(※1)
- テストの効率性の向上
- 機能カバレッジの拡大
- テスト実行頻度の向上およびテストサイクルに要する時間の短縮
そのほかにも、以下のようなことが実現できると考えられます(図表2)。
テスト自動化の8原則とは?
テスト自動化の8原則は、テスト自動化研究会(STAR: Software Testing Automation Research Group Jp)によって制定された自動化における原則です。この内容を理解することで、より効果的な自動化を可能にします。
<テスト自動化>
- 手動テストはなくならない
- 手動で行って効果のないテストを自動化しても無駄である
- 自動テストは書いたことしかテストしない
- テスト自動化の効用はコスト削減だけではない
- 自動テストシステムの開発は継続的に行うものである
- 自動化検討はプロジェクトの初期から
- 自動テストで新種のバグが見つかることはまれである
- テスト結果分析という新たなタスクが生まれる
テスト自動化研究会 - テスト自動化の8原則より引用(※2)
テスト自動化のメリット・デメリット
テスト自動化には、さまざまなメリットやデメリットがあります。これらをしっかり理解してテスト自動化に取り組むことで、テスト自動化による目的の達成につなげられます。
自動化のメリット
テストを自動化することで、さまざまな恩恵を受けることができます。ここでは以下の4つをご紹介します。
1.開発サイクルの高速化・リリース頻度の向上
テスト自動化によって、同じテストを繰り返し行うことが容易になります。そのため、あらかじめ準備したテストを、夜間・休日に実行してテスト時間を短縮することも可能です。 また、リリースのタイミングで自動実行が可能なため、不具合の早期発見にもつながります。
2.人為的なミスの軽減
どれだけ注意しても、人の手による作業ミスは発生するものです。 一方、自動テストはプログラムによる自動操作・正誤判断を行うため、人為的なミスを防ぐことが可能です。特に複雑な手順の場合、人による確認や作業は時間がかかり、ミスが発生しやすくなるのに対して、正確にテストを行えます。
3.長期的に見たコスト削減
自動テストは、継続的に繰り返し行うことでコスト削減効果が期待できます。 図表3は、自動テストと手動テストでの累計コストの違いの例を示したものです。
自動テストは、初期コストがかかるものの、導入後の追加コストは徐々に減り、テストサイクルが進むにつれて手動テストよりも累計コストが少なくなっています。ただし、後述するテスト自動化の向き/不向きを理解して取り組まなければ、手動テストに対する累計コストが余計に肥大化してしまうこともあるため、注意が必要です。
4.テストプロセス改善につながる
テストに関するメトリクスを継続的に収集・分析することで、テストプロセスの改善につなげることができます。 自動テストをサポートするツールには、テストの結果を簡単にレポートとして出力してくれるツールもあります。不具合が起きやすい箇所を特定し、原因分析を行うことでテストプロセスやプロダクト品質の改善につながります。
自動化のデメリット
テスト自動化にはメリットだけではなく、デメリットも存在します。導入を検討する上で、以下のことも知っておきましょう。
1.初期導入コストがかかる
自動化によって、長期的なコスト削減が見込めます。しかし、自動化導入初期にはツール導入や学習コストが多く必要になることを忘れてはいけません。 また、既存の手動テストケースを自動化できる粒度で記述し直したり、テストデータが自動化したテストケースに対応できるように修正したりする必要もあるため、注意が必要です。
2.継続的な保守やメンテナンスが必要
自動化で最も重要なのが、保守やメンテナンスの工程です。 自動テストでは、テスト実装したテストケースに対してしかテストができません。そのため、テスト対象の仕様変更や機能追加の際には、既存の自動テストの修正や動作確認をする必要があります。 新バージョンリリースのタイミングで、3カ月前に実行したテストを行おうとしたら全て失敗してしまった、というのは珍しい話ではありません。
また、利用する自動テストツールによっては、継続的に利用料が発生する場合があります。自動化に取り組む前に、利用する自動テストツールの料金プラン等も確認しておきましょう。
3.新規不具合の発見には向かない
自動テストでは、手順や期待値に書かれたことしかテストができないため、新規の不具合発見は期待できません。例えば、期待値外に意図していない表示や動画の乱れなどがあった場合、検知できないことがあります(図表4)。 一方で、人的ミスが起こりにくい、テスト手順に一貫性が出るなど品質の担保は可能です。
テストの自動化には向き不向きがある
全てのテストが自動化可能なわけではありません。自動テストには、向いているテストと向いていないテストがあります。これらの特性を理解することで、テスト自動化の成功率を高めることができます。
自動化に向いているテスト
- 頻繁に繰り返すテスト
- 既存のテストケースを用いて「不具合がないこと」を確認するテスト
- 手順や確認すべきことが明確なテスト
- 作業が複雑で、人的なミスが起こりやすいテスト
上記の通り、繰り返す回数が多く、デグレードが起こっていないことを確認するリグレッション(回帰)テスト、対象の基本的な動作のみを確認するスモークテストでは自動化で高い効果が得られます。また、手順や期待値が明確なテストや、作業が複雑で手順ミスが発生しやすいようなテストも自動化に向いていると言えるでしょう。
自動化に不向きなテスト
- 一度しか実行しないテスト
- 人間にしか判断できないテスト
上記の通り、一度しか実行しないテストは自動テストには向きません。テストを自動化するには初期コストが多くかかるため、たった一度の実行ではその恩恵を十分に受けることはできません。また、人間にしか判断できないような、同時に複数チェックするポイントがあるテストや、状況によって結果が変わるような(Flakyな)テストも自動化に不向きです。例えば、ユーザビリティテストや探索的テストなどは、テストケースが文書化されておらず、かつテストを実行する人間に依存するため、手動で行う必要があります。
自動テストを取り入れる際は、これらのメリット・デメリットや向き・不向きを踏まえて、適切に目的を設定しましょう。
自動化できるテストの種類
テストは「IPAソフトウェアテスト見積ガイドブック」によると、単体テスト、結合テスト、システムテスト、運用テストという4つのテストレベルに分けられています(図表5)。
自動テストはこれらのどのテストレベルでも可能ですが、テストレベルやテストタイプによって、テストの形式や対応可能なツールは異なります。例えば、システムテストや運用テストはE2Eテストとも呼ばれ、ユーザーシナリオとしてテストを作ることが多いです。E2Eテストの自動化ではノーコードツールも広く使われており、より簡単に、効果的に自動化することができます。
※V字モデルの記事はこちらをご参照ください。
テスト自動化関連のツール一覧【有償】
テスト自動化関連の有償ツールはスケジュール実行機能が備わっていたり、公式ガイドやサポートが充実していたりと導入や運用のハードルが低いことが強みです。しかし、プログラミング不要で自動テストを導入できるツールがある一方、サービスの対象が限定されている場合が多く、自由度は低いツールがあります。また、有償ツールの中には、無料でトライアルが可能なものもあります。
以下、有償ツール例です(図表6)。詳細は各公式サイトをご確認ください。
ツール名 | 対象 | 特色 |
---|---|---|
MagicPod | Webアプリ、モバイルアプリ | 処理の記述が自然言語で視認性が良い |
Autify | Webアプリ、モバイルアプリ | キャプチャ&リプレイによるテストケース作成 |
mabl | Webアプリ、モバイルアプリ | APIテストやパフォーマンステストも可能 |
図表6:お薦め有償ツール例
テスト自動化関連のツール一覧【無償】
テスト自動化関連のOSSのツールは、無償で利用できることが強みです。一方で、プログラミング言語の制約がある、セットアップのレベルが高い、十分なサポートがないなど、導入や運用のハードルは高くなります。また、セキュリティ要件への対応が難しいという点にも注意が必要です。
以下、無償ツール例です(図表7)。他ツールと組み合わせて利用するなどのカスタマイズ性は高いため、うまく活用できると高い効果が期待できます。
ツール名 | 対象 | 特色 |
---|---|---|
Selenium | Webアプリ | 幅広いプラットフォーム、プログラミング言語に対応 |
Playwright | Webアプリ | 異なるブラウザ間でのテストが容易 |
Cypress | Webアプリ | JavaScriptで構成されており、実行スピードが速い |
Appium | モバイルアプリ | モバイルアプリに特化したフレームワーク |
AutoIt | デスクトップアプリ | BASICに似た構文のWindows用マクロツール |
Postman | API | APIテストに特化したツール |
図表7:お薦め無償ツール例
特性を理解し、効果的なテスト自動化を目指そう
テスト自動化は、プロジェクト初期から導入し継続することでより高い効果を得られます。さまざまな要因で導入を先送りにするケースも少なくないと思いますが、最も効果を出せるタイミングで自動化を導入し、課題を解決しましょう。
また、自動化は良い面だけではなく注意すべき点もあるとご紹介しました。自動化する目的・解決したい課題を明確にし、最適なツールを選択することで効果的な自動化を可能にします。全てのテストを自動化しようとするのではなく、自動化すべきでないテストを適切に切り分けることも必要です。さらに、本格導入の前には自動化による効果検証を行うことが大切です。
ベリサーブでは自動テストの導入支援や運用支援を行っています。テスト対象に適したツールを選定いたしますので、ぜひご相談ください。
まずは簡単なE2E自動化診断から↓
自動テスト診断|ソフトウェアテスト・第三者検証のベリサーブ
■参考■
(※1)JSTQBシラバス(Advanced Level Specialist シラバス-テスト自動化エンジニア)より抜粋
(※2)テスト自動化研究会 - テスト自動化の8原則より引用(※2)
この記事は面白かったですか?
今後の改善の参考にさせていただきます!