検索
連載

今、あらためて考えるテスト自動化【第3回】KeyConductors

今までは、テスト自動化の基礎について説明をしたが、第3回では、テストを自動化するに当って、工程やツールの操作について説明したい。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

テスト自動化の仕組み

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

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

1. 入力の自動化

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

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

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

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

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

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

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

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

3. 出力の検証

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

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

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

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

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

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る