テスト自動化について
テスト自動化(Test Automation)は、ソフトウェア開発プロセスの一部として、テスト作業を自動化することを指します。従来の手動テストに比べて、テストケースの実行、結果の検証、テストデータの準備など、さまざまなテスト関連のタスクを自動化することで、効率性と品質の向上を図ります。
テスト自動化のメリット
テスト自動化は、ソフトウェアの品質を確保するために重要な役割を果たします。以下に、テスト自動化の主な利点をいくつか挙げます。
効率性の向上: テスト自動化により、テストケースを素早く繰り返し実行することが可能となります。手動で行う場合に比べてテストの実行時間が短縮され、効率性が向上します。
網羅性の向上: テスト自動化では、大量のテストケースを作成し、網羅的に実行することができます。手動でテストケースを繰り返し実行する場合に比べて漏れやヒューマンエラーが減り、より網羅的なテストが可能となります。
早期のバグ検出: テスト自動化は、開発プロセスの早い段階から実施することができます。バグを早期に検出し、修正することで、ソフトウェアの品質向上と開発コストの削減につながります。
再利用性の向上: テスト自動化では、作成したテストスクリプトやテストデータを再利用することができます。これにより、将来のバージョンや機能のテストにも効果的に活用することができます。
一般的に、テスト自動化は専用のテスト自動化ツールやフレームワークを使用して行われます。これらのツールやフレームワークは、テストケースの作成、実行、結果の検証などの自動化をサポートします。プログラミング言語やスクリプト言語を使用して、テストスクリプトを作成し、テストの自動化を実現します。
テストスクリプトとは
テストスクリプト(Test script)は、ソフトウェアのテストを自動化するために使用されるスクリプトやコードのことを指します。テストスクリプトは、テストケースを実行し、期待される結果と実際の結果を比較してテスト結果を判定するための手順や指示を含んでいます。テストスクリプトは通常、テスト自動化ツールやフレームワークによって使用される特定の言語で書かれます。プログラミング言語にはさまざまな選択肢がありますが、一般的にはテスト自動化ツールに組み込まれているスクリプト言語やスクリプト化されたインターフェースを使用することが多いです。具体的な例としては、SeleniumやRobot Frameworkなどがあります。
テストスクリプトは、以下のような要素で構成されることがあります。
- テストケースのセットアップ(Setup): テストの実行に必要な初期条件や環境を設定します。たとえば、データベースの接続やテストデータの準備などが含まれます。
- アクションの実行: テスト対象のソフトウェアやアプリケーション上で、特定のアクションや操作を実行します。たとえば、ボタンのクリック、入力の送信、ページの遷移などが含まれます。
- データの入力と出力: テストスクリプトは、テストデータを使用してテストを実行し、結果を取得します。入力データの準備やフォーマットの検証、出力結果の比較などが含まれます。
- アサーション(Assertion): テストスクリプトは、期待される結果と実際の結果を比較するアサーションステップを含みます。テストの合格または不合格を判定するために、条件や予想される結果を検証します。
- クリーンアップ(Cleanup): テストの実行後、テスト環境やデータのクリーンアップを行います。テストが終了した後に、ソフトウェアやシステムを元の状態に戻すための手順が含まれます。
テストスクリプトの例
次は、テスト自動化を実現できるテストスクリプトの実例で、テストスクリプトをどのように書くかを解説します。
もし、Pythonと Seleniumを組み合わせて利用することで、1つのページをテストします。テストの目的は、そのページ上の検索ボックスが正確に動作できるかどうかを検証することになります。そこで次のようにコーディングすることができます:
# 必要なライブラリーを導入
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# ブラウザの設定
browser = webdriver.Firefox() # Firefoxブラウザ
# browser = webdriver.Chrome() # Chromeブラウザ
# テストのウェブサイトを開く
browser.get("http://www.example.com")
# テストステップの設定
search_box = browser.find_element_by_name("q")
search_box.send_keys("Hello World")
search_box.send_keys(Keys.RETURN)
# テスト結果の検証(アサーション)
assert "No results found." not in browser.page_source
# ブラウザを閉じる
browser.close()
以上のようなコードは、同じなテスト目的なら何回でも繰り返し実行可能なので、実際に自動化のテストスクリプトになります。
Apidogはテストスクリプトを完璧にサポート
APIテストの自動化は、テストスクリプトによって実現されることができます。が、テストスクリプトを完璧にサポートできるAPIテストツールを選択する必要があります。Apidogには、テスト自動化の機能が備えて、そのUIも日本語されたので、本文では、Apidogを利用して、このような操作をやり遂げる手順を紹介します。
リクエストの作成
Apidogは、前処理と後処理操作をサポートするので、それを使ってリクエストを作成すると、前/後処理の「カスタムScript」を利用して、テストスクリプトをカスタマイズすることができます。

Apidogのデフォルトスクリプトの言語は、JavaScriptです。
カスタムスクリプトの作成
ここで自分でコードを入力することもできますし、Apidogが提供してくれるスクリプトを使用することもできます。

例えば:
// ステータスコードが200であるかどうかを検証
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
// bodyにString型が含まれるかどうかを検証
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
// Body jsonの検証
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
// body のString型の検証
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
// bodyを編集
pm.response.setBody({});
// headerにはcontent-typeが含まれるかどうかを検証
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
// 応答時間が200ms以内であるかどうかを顕彰
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// postリクエストが成功かどうかを検証
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
ここで検証(アサーション)の条件を複数設定することもできます。

例えば:ステータスコードが200、応答時間が200m秒未満といった2つの条件を設定します。

ApidogでAPIテストの自動化を実現する方法
Apidogは、APIのリクエストをグループ化にして、リクエストを一括送信してレスポンスを検証することにより、APIテストの自動化を簡単に実現することもできるので、作業時間と手間を大幅に節約できます。
ステップ⒈ プロジェクトを選択して、左側メニューから「自動テスト 」を選択して、「+」ボタンをクリックして、「新規テストケース」を選択します。

ステップ⒉ここで新規テストケースの各項目を設定して、「確認」ボタンを押します。

ステップ⒊ テストのステップを追加します。APIのテストケースから、APIからインポートすることもできますし、カスタムRequestを追加することもできます。また、必要に応じて、グループ、繰り返し、条件分岐、待ち時間などの項目を設定することも可能です。

ステップ⒋ 右側のメニューでテストの設定項目を自分のニーズに応じてカスタマイズすることができます。

ステップ⒌ 設定が終わると、「実行」ボタンをクリックして、テストを開始します。テストプロセスが設定したテストステップを順番に行い、テストプロセスが終わると、詳細のテストレポートが生成され、各リクエストの詳細情報も確認できます。
