丸紅グループのIT基盤を構築した技術力で実現する企業セキュリティ対策。 ソリューションとサービスはこちら

テスト自動化とは?メリットや導入方法、注意点を解説

最近のソフトウェア開発ではスピードが重要です。製品をより速く開発し、市場に出すことが求められています。しかし一方で、開発環境自体もエンジニア不足が深刻化するなど厳しい状況にあります。

そうした中、注目されているのがテスト自動化です。ソフトウェア開発で必要となるさまざまなテストをテスト自動化ツールを用いて自動化することで業務効率が改善し、開発スピードが向上します。

本稿では、テスト自動化とは何か、導入することでどのようなメリットが得られるのか、実際にテスト自動化を導入する際の注意点や、成功させるためのポイントについて解説します。

本記事に関連する資料ダウンロードはこちら >>
INDEX

テスト自動化とは?

テスト自動化とは、各種アプリケーションを含むソフトウェアの開発中や開発後に、動作確認などのテストの一部または全部を、ツールなどを使って自動化することを指します。

一般的にはテストエンジニアが手作業で実施しますが、開発するソフトウェアによっては多人数による大規模なテストが必要となり、膨大な時間と労力を要するケースもあります。

このようなソフトウェアのテストは、開発部門と品質管理部門でそれぞれテスト要領が異なります。開発部門では、各エンジニアが与えられた機能仕様書に基づき、担当部分のコード作成などを実施します。完成したコードは、静的解析ツールを使って正しさをチェックします。開発部門はコードフリーズまでチェックを行い、その後は品質管理部門に委ねられます。

品質管理部門では、開発部門とは異なり、システム全体の一連の動作がテストの対象となります。さらに、ソフトウェアがバージョンアップするたびに、一連のテストを繰り返すことが必須です。

ソフトウェア開発においてテストは多面的に実施されます。一般的には、機能仕様書に基づいてテスト設計し、テスト仕様書にまとめ、テストケースやテストデータを準備してテストを実施します。結果を報告書にまとめて提出するまでの一連の作業が必要となるため、その作業負荷は相当なものになります。

そのため、エンジニアが手作業で行っていたテストをツールで自動化することで、業務効率の改善や時間短縮、エンジニアの負担軽減を図ることが、テスト自動化です。

以下の記事ではテスト自動化でソフトウェアの品質担保とスピーディなリリースを実現する方法について解説しています。

テスト自動化が求められる背景

テスト自動化が求められる背景には主に2つの要因があり、テスト自動化の注目度・関心度が高まっています。

1.開発スピードの迅速化

モバイル機器向けアプリケーションの開発では、競合メーカーとの間で類似製品の開発競争が激化しています。そのため、競合他社より発売が遅れると、商品価値が下がり、開発費が無駄になるリスクがあります。そのため、できるだけテスト期間を短縮し、開発のスピードアップを図る必要があります。そこで、テスト期間を短縮するために必要となるのがテスト自動化です。テスト自動化によって開発エンジニアの負荷が軽減され、テスト結果のフィードバックが早くなることで開発のスピードアップが図れるほか、テスト自動化によって安定したテストが可能になり、品質の向上にもつながります。

2.人材の不足

現在、システムエンジニアなどの人材が不足しており、テストエンジニアも例外ではありません。そのため、貴重なエンジニアをテスト業務よりも開発に投入することが重要です。そのため、自動化によるテストの効率化が急務となっています。

テスト自動化のメリット

テスト自動化を導入する主なメリットは次の3つです。

1.ヒューマンエラーを防げる

基本的に人はミスするものです。エンジニアが人である限り、ミスのリスクをゼロにすることはできません。しかし、テスト自動化では、人の手を介さずにシステマティックにテストが行われるため、ヒューマンエラーのリスクを排除することができます。

2.テストを高速化できる

テスト自動化はツールによって実現され、24時間365日稼働することができます。そのため、1人のエンジニアが1日8時間、6日間かけて行っていたテストを、テスト自動化ツールを24時間稼働させることで、たとえば2日間に短縮することができます。

3.問題点を早期発見できる

テスト自体の高速化は、テストによる問題点の早期発見を可能にします。

テスト自動化ツールの中には、網羅テストに対応しているものもあります。通常のテストでは、テストシナリオ自体は決まったルートをテストするだけですが、網羅テストではシナリオ化されたルート以外で発生した問題点も検出できるため、問題点の早期発見につながることがあります。

テスト自動化を導入する際の注意点

開発、品質管理業務の効率化や製品の品質向上に有効なテスト自動化ですが、導入にあたっては注意すべき点もあります。

手動テストに比べて初期段階で費用がかかる

テスト自動化の導入には、一定の初期費用がかかります。たとえば、熟練したテストエンジニアのバグ発見ノウハウを自動テストに置き換えたい場合、プログラムで実現できるのか、スクリプトで実現すべきなのか、熟練エンジニアと同じスピードで操作できるのかといった問題を考慮しながら、初期設定する必要があります。場合によっては、最初のテストが完了するまでにかなりの労力が必要となり、人件費という形で初期費用がかさむこともあります。

長期にわたり保守運用が必要

自動化ツール自体は、実際の操作をレコードし、それに基づいてスクリプトを書き上げるという手順を踏みます。そのため、多数のスクリプトを作成した場合、それらを整理・最適化するなど、メンテナンスが不可欠となります。

たとえば、Web系アプリケーションの場合、XPath(XML Path Language)機能を使ってテスト自動化を行いますが、バージョンアップなどでパスが変わる可能性があるため、バージョンごとにメンテナンスして、スクリプトやシナリオを管理する必要があります。このようなメンテナンスにかかる費用や労力を考慮することが重要です。

テスト自動化導入の初期段階で適切に対応することで、その後のメンテナンス費用を削減できる場合もあり、初期投資とメンテナンス費用のバランスを見ることが重要です。つまり、初期投資、ランニングコスト、労力負担を算出し、その都度手作業でテストを実施した場合とテスト自動化を実施した場合の費用対効果を比較する必要があります。

シナリオ通りにしかテストできない

基本的に、テスト自動化ツールはシナリオに沿ってテストします。そのため、デメリットは、シナリオに沿ったテストしかできないことです。しかし、前述したように、テスト自動化ツールの中には網羅的なテストができるものもあり、そのようなツールを選ぶことでこの問題を解決することができます。

費用が膨大になる可能性がある

たとえば、初期段階で作成したテストシナリオが、その後も何度も使えるのであれば、自動化によるコストメリットは大きくなります。しかし、意に反して途中で頻繁にテストシナリオを作り直すことになれば、テストシナリオの見直しにかかる費用と労力を長期間負担することになり、結果的に費用が膨大になるリスクがあります。

テスト自動化に向いているテスト

テスト自動化は、同じテストが何度も繰り返される場合に向いています。たとえば、回帰テストのようなテストでは、自動化のメリットが大きくなります。

また、操作そのものをツールに任せるため、テスト自動化の導入によりヒューマンエラーを排除することができます。そのため、ヒューマンエラーを排除する必要があるテストに向いています。

テスト自動化に向いていないテスト

基本的に、前述の「向いているテスト」の反対が「向いていないテスト」となります。

たとえば、実施回数が少ないテストや開発の過程で開発部門が実施するテストが該当します。担当エンジニアが自分で作った機能を、一度だけテストして動作を確認するようなケースです。

また、物理的な治具を使用するテストにも向いていません。たとえば、クレジットカードの抜き差しにカードリーダーの使用を想定したテストなどです。このような物理的操作を伴うテストには向いていません。

テスト自動化の導入方法

テスト自動化を成功させるためには、以下の手順に沿って最適なツールを選択することが重要です。

1.目的を決める

まず、テスト自動化に何を期待しているのかといった、テスト自動化の目的を明確にすることが重要です。

たとえば、テスト期間を短縮することでソフトウェア開発をスピードアップしたいのか、繰り返し実施されるテストを自動化することでコスト削減を実現したいのかといった目的の明確化です。

2.対象や範囲を決める

テスト自動化を導入する目的が明確になったら、次はその目的に照らして、どのテストを自動化すべきか、その対象と範囲を明確にします。

たとえば、自動化を導入する目的が「テスト期間の短縮」であれば、対象は時間がかかっているテストとなります。

3.使用するツールを決める

目的と、対象や範囲が決まったら、次の段階は適切なテスト自動化ツールを選択することです。

このとき、開発部門と品質管理部門のどちらが自動化ツールのメインユーザーかによって、選択すべきツールが異なる可能性があることに注意してください。

たとえば、開発部門が中心であれば、当該ツールを使用するための仕組みをソフトウェアのコードに埋め込んで使用できるタイプのツールを選択することで、開発エンジニアが開発で使用するソフトウェア言語の範囲内に仕組みを埋め込むことができるため、利便性が向上するというメリットがあります。

テスト自動化の成功ポイント

テスト自動化を成功に導く3つのポイントを以下に挙げます。

1.テスト自動化を理解して、最適なツールを選定

前述の通り、テスト自動化を適切に機能させるためには、テスト自動化の目的、対象や範囲を正しく理解し、最適なツールを選択することが必要であり、これがテスト自動化を成功させるカギとなります。

2.自動化すべきテストを見極める

明確化された目的を達成するために、どのテストを自動化するかを正確に見極めることも、重要な成功ポイントとなります。

テストを自動化するためにどのようなツールが必要かについては、開発するソフトウェアを考慮して最適なものを選ぶ必要があります。「できるはず」という視点でツールを選び、テスト自動化を始めると、うまく機能せず、いつまでたっても終わらない作業になってしまう危険性があります。また、いきなりすべてのテストを自動化しようとするのは避けるべきです。初期投資の問題もありますが、一度にすべてを自動化しようとすると、後戻りが多くなり、途中で不具合が発生した場合の復旧が困難になります。

このような事態を避けるために、成功のカギは、ひとつひとつ順を追って自動化を成功させ、その積み上げの中で、エビデンスを取りながら進めていくことです。

3.テストが終わるまでが開発

ウォーターフォール型開発の場合、品質管理部門にコードが引き渡された時点で、開発部門は自分たちの仕事が終わったと判断して開発エンジニアの一部をリリースし、別の開発プロジェクトに異動させることがあります。品質管理部門は全体のテストを行い、不具合が見つかれば開発部門にフィードバックし、開発部門は必要に応じて修正を加えます。ただし、一部のエンジニアをリリースした結果、人材が不足し、実装までの作業時間が長くなっては本末転倒です。

クラウドサービスの普及を背景に、アジャイル開発では、できるだけ早く製品を市場に投入することが時間的に優先され、何かあればその都度修正することが散見されます。そのような修正を減らすためにも、適切なテストを実施し、開発担当とテスターが一体となって製品の品質に責任を持つことがますます重要になってきています。関係者全員でこのような意識を持つことが、テスト自動化だけでなく、ソフトウェア開発プロジェクトを成功に導くカギといえます。

テスト自動化をAI技術で実現「Eggplant」

丸紅情報システムズでは、テスト自動化ツールとして「Eggplant」を提供しています。Eggplantは、AI技術を用いた探索的テスト自動化ツール「Eggplant DAI」と、アプリケーションなどを実際に操作するための「Eggplant Functional」(Eggplant DAIの機能の一部)で構成されています。Eggplant DAIは網羅テストに対応しており、オールペア方式で高いカバレッジを実現します。

また、Eggplant DAIのAIは、テスト中に発生したエラーを学習します。その学習データをもとに、同じようなエラーが発生するリスクのある類似箇所を選択し、該当する動作を優先した操作ルートを自動生成し、優先実行するバグハンティング機能を有しています。

バグハンティング機能 イメージ
バグハンティング機能 イメージ

さらに、Eggplant Functionalは、画像認識によるSUT(System Under Test)を可能にし、Windows、MacOSX、Linux、Android、iOSなどの端末に対して、VNCおよびRDPによるリモート操作を可能にします。

これらの代表的な機能に加え、Eggplant は、幅広いテスト自動化をサポートするさまざまな機能を提供しています。

Eggplant お役立ち資料

Eggplantのカタログ、国内事例をダウンロードいただけます。

INDEX