テスト自動化の仕組み

テスト自動化の仕組み

ソフトウェアのテストとは、ソフトウェアが仕様書通りに動くかどうかを確かめる作業です。テストの流れは、以下の図にあるように、テストデータを入力し、期待される結果が出力されるかどうかを検証します。

ソフトウェアテストの流れ

前回までは、テスト自動化の基礎について説明をしましたが、今回は、テスト自動化の流れと必要となる操作について説明します。

入力の自動化

パスワードの入力フォームのテストをする場合、文字数や数字、ローマ字などの組み合わせによりテストケースが膨大な量になるため、人が作業すると多大な時間がかかったり、入力ミスをしてしまったりといったことが起こり得るため、テストの精度向上および効率化のためには、データ入力の自動化が非常に重要となります。

“データ入力”と一口にいっても、キーボードやマウスなどのデバイスからの入力もあれば、スマートフォンでのタッチ操作による入力や、ネットワークからの通知、ソフトウェア間での通信などさまざまな種類があるため、どの端末でどのような方法でデータが入力されるのかを考えた上で、入力の自動化を考える必要があります。

入力形式の違いによる、具体的な自動化の手法としては、下記のようなものが挙げられます。

入力形式に対する具体的なケースと自動化の手法

特定の条件下のテストで必要な「セットアップ」「ティアダウン」とは

テストを実施するに当たって、前提条件が必要な場合があります。分かりやすい例で説明すると、例えばゲームで2面に進むには1面をクリアしていなければいけません。2面がテスト対象だとすると、「1面をクリアしているかどうか」が前提条件になります。

このように前提条件が必要なテストの場合、「前提条件をクリアしている」という仮定の下でテストを行う必要があります。テストを行うためにある特定の状態にするのが「セットアップ」と呼ばれる操作です。またテストが終わった後に、ソフトウェアを初期状態に戻す操作を「ティアダウン」と呼びます。

テスト自動化の際には、この「セットアップ」「ティアダウン」の操作も自動化することが必要となります。ただ、テストの都度、この操作を行うのは大変ですが、現在はこの操作を簡便化するために、あらかじめ「セットアップ」「ティアダウン」を行う関数を用意するという方法がよく行われています。

また、ソフトウェアが大規模化、複雑化する中、「セットアップ」「ティアダウン」の処理も複雑化する傾向にありますので、テスト自動化の際には、この部分についても留意する必要があるでしょう。

出力の検証

最終的にソフトウェアが期待した動作をしているかどうかを検証する必要がありますが、出力の検証を自動化するのが、テスト自動化の作業の中で一番難しい部分になります。それは、出力結果が正しいかどうかをツールが自動判別し、検証するのが難しいケースがあるからです。

例えば、スマートフォンゲームを例に挙げてみましょう。敵と戦った結果「自分が勝ったのか、負けたのか」「期待される動作なのか」を検証するには、画面に出力される画像などのさまざまな情報から判断する必要があります。人間であれば目視で簡単に正しい結果なのか、誤った結果なのかを判断できますが、コンピュータが画像だけを手掛かりに判断するのは非常に難しいことです。なぜなら、そこにあるのは単なるピクセルの集合体で、そこに敵がいるのか味方が映っているのかを判別する手段が極めて限られているからです。

この例のように、出力の検証は自動化が難しいケースがたくさんあります。ただ、近年、Webの出力検証については自動化が進んできています。第2回で紹介したSeleniumの「WebDriver」という仕組みにより、直接Webの出力を自動的に検証できるようになりました。また画像や動画などもAIを用いて検証する技術も急速に発展しています。

以上のように、テスト自動化の仕組みの中では、「セットアップ」「入力の生成」「出力の確認」「出力の検証」「ティアダウン」といった操作をそれぞれコンピュータが認識できる形で定義し、適切な順番で実行し、出力と期待する出力結果の比較を行っています。

次回は、テスト自動化のこれからについて、お伝えいたします。

石黒 邦宏
株式会社デジタルハーツ CTO
株式会社SRA、ネットワーク情報サービス株式会社を経て、株式会社デジタル・マジック・ラボで UNIX ソフトウェアの開発、インターネット経路制御の運用に関わり、オープンソースウェアで経路制御を実現する GNU「Zebra」を開発。1999 年 10 月、米国にて IP Infusion を創業。2015年株式会社アプリックスのCTOに就任しBeaconの技術開発・サービス開発に従事。2018年デジタルハーツにCTOとして参画。
テスト自動化に関するお問い合わせ
各種サービスについて、お気軽にご連絡ください。
03-3379-2053
営業時間:平日9:30~18:30
お問い合わせ