ソフトウェア開発に関わっていると、「毎回同じテストを繰り返してて大変…」「もっと効率的にテストできないかな?」と思うこと、ありませんか? 私も何度そう感じたことか…。
そこで活躍するのが テスト自動化 です!SeleniumやAppiumを使えば、手作業でやっていたテストをスクリプトに任せることができるんです。さらにJenkinsを導入すれば、テストを自動で回し続ける環境も作れます。JMeterを使えば、負荷テストまで自動化可能!
この記事では、私自身が「これを知っておけばよかった!」と思ったポイントをまとめながら、テスト自動化の基礎を紹介します。
1. はじめに
1.1 なんでテスト自動化が必要なの?
手動テストをずっとやっていると、こんな悩みが出てきますよね。
- 同じ操作を毎回繰り返すのが面倒
- ちょっとした変更でテストケースを修正するのが大変
- ヒューマンエラーをなくしたい
- 開発スピードを上げたい
私も以前、何時間もかけて手動でテストをしていたんですが、「これ、自動化できたらめちゃくちゃ楽なのでは…?」と気づいて、テスト自動化を始めました。結果的に、単純な繰り返し作業がなくなって、開発に集中できるようになりました。
2. SeleniumでWebアプリのテストを自動化しよう
2.1 Seleniumって何?
Seleniumは、Webアプリのブラウザ操作を自動化できるツールです。これを使えば、手作業でやっていたボタンのクリックやフォーム入力、ページ遷移なんかをスクリプトで再現できます。
例えば、こんな操作を自動化できます。
- 検索機能のテスト:「検索フォームにキーワードを入力 → 検索結果が正しく表示されるかをチェック」
- ログインテスト:「ユーザー名とパスワードを入力 → ログインボタンを押して、正しいページに遷移するか」
- ショッピングカートの動作確認:「商品をカートに追加 → 合計金額が正しく計算されているかを確認」
2.2 Seleniumの導入手順
Seleniumを動かすには、以下の環境が必要です。
必要な環境 | 詳細 |
---|---|
プログラミング言語 | Python または Java |
Selenium WebDriver | Webブラウザを操作するためのドライバ |
対象ブラウザ | Chrome, Firefox, Edge など |
Pythonなら、こんな感じで簡単にセットアップできます。
pip install selenium
実際に「Googleの検索ボックスにキーワードを入力して検索する」コードを書いてみましょう。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# Chromeブラウザを起動
driver = webdriver.Chrome()
# Googleにアクセス
driver.get("https://www.google.com")
# 検索ボックスを取得し、キーワードを入力
search_box = driver.find_element("name", "q")
search_box.send_keys("Selenium 自動化")
search_box.send_keys(Keys.RETURN)
# 検索結果が表示されるまで待機
driver.implicitly_wait(5)
# ブラウザを閉じる
driver.quit()
このスクリプトを実行すると、Chromeが自動で立ち上がって検索までやってくれます。「おお…!勝手に動いてる!」と感動する瞬間です(笑)。
3. Appiumでモバイルアプリのテストも自動化
3. Appiumでモバイルアプリのテストも自動化
3.1 Appiumってどんなツール?
Appiumは、スマホアプリ(iOS・Android)のUIテストを自動化できるツールです。Seleniumと同じWebDriverを使って動くので、Seleniumに慣れていればAppiumの導入もスムーズです。
3.2 Appiumの導入と基本的なテスト
例えば、以下のようなテストができます。
- ログイン画面のテスト:「アプリを起動 → IDとパスワードを入力 → ログインボタンを押す → ホーム画面に遷移するか確認」
- ボタンの動作チェック:「ボタンをタップしたときに、正しい画面が開くか」
実際のコード例を紹介します。(Python + Appium)
from appium import webdriver
# Appiumサーバーに接続
capabilities = {
"platformName": "Android",
"deviceName": "emulator-5554",
"app": "/path/to/app.apk"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", capabilities)
# ボタンをタップする
button = driver.find_element("id", "com.example.app:id/login_button")
button.click()
# 結果を確認
assert "ホーム" in driver.page_source
# 終了
driver.quit()
これで、ログインボタンをタップする動作が自動化できます。
4. Jenkinsを使ってテストの自動実行を仕組み化
4.1 Jenkinsを使ったCI/CDの流れ
Jenkinsを導入すると、こんな流れで自動テストが実行できます。
- 開発者がGitHubにコードをプッシュ
- Jenkinsが変更を検知
- 自動でSeleniumやAppiumのテストを実行
- 結果をSlackやメールで通知
例えば、Jenkinsのジョブで以下のようなシェルスクリプトを設定すれば、Seleniumのテストを自動実行できます。
#!/bin/bash
cd /path/to/test-scripts
pytest test_selenium.py
これで、毎回手動でテストを実行しなくても、コードの変更に応じて自動でテストが走るようになります。
5. JMeterで負荷テストを自動化
5.1 JMeterを使ってAPIの負荷テスト
例えば、「APIに1000人が同時アクセスしたらどうなるか?」というテストをしたいとします。JMeterなら簡単にシナリオを作成できます。
設定例:
- リクエスト回数:1000回
- 同時接続数:50
- 遅延時間:1秒
JMeterでテストすると、こんなレポートが出てきます。
指標 | 結果 |
---|---|
平均レスポンスタイム | 250ms |
最大レスポンスタイム | 1.2s |
エラーレート | 0.5% |
もし最大レスポンスタイムが3秒以上なら、「サーバーが重いかも?」と判断できます。
6. まとめ
今回は、Selenium・Appium・Jenkins・JMeterを使ったテスト自動化 について紹介しました。
最初は環境構築が大変ですが、一度仕組みを作れば後が楽になります。興味があれば、ぜひ試してみてください。