Webアプリのテストは、苦労の多い工程です。特に、ブラウザを手作業で操作する人力のテストでは多くの時間がかかり、操作や確認のミスも起きやすくなります。テスト工程の効率性や正確性を高めるためには、テスト自動化が重要です。
Webアプリのテストを自動化するうえで、世界的に利用されているツールが「Selenium(セレニウム)」です。本稿では、Seleniumの基礎知識から導入手順、直面しやすい課題まで解説します。効率的な自動化のポイントも紹介するため、ぜひ参考にしてください。
- もくじ
1. テスト自動化ツール・Seleniumとは
Seleniumとは、Webアプリのテストを自動化するためのテストフレームワーク(テストの枠組み)です。「Google Chrome」や「Firefox」といった主要なブラウザ操作に対応しています。
Seleniumを使えば、ブラウザ上で行う操作や表示の確認を自動化できます。たとえば、Webページ上にあるボタンの押下や、フォームへの入力といった操作が可能です。また、「Web上に特定のテキストが表示されているか」といった判定機能も備えています。
無料で利用でき、幅広い自動化のニーズに対応できるため、世界的に人気の高いテストフレームワークです。
2. Seleniumの主な種類
Seleniumにはいくつかの種類があり、チームの状況や目的に合わせて選べるのが魅力です。ここでは、Seleniumの主な2種類をご紹介します。
①Selenium WebDriver
「Selenium WebDriver」は、コードによるブラウザ操作の自動化を支援するツールです。プログラミング言語で書かれたコードを、ブラウザが理解できる命令に変換することで、操作を可能にします。テストコードとブラウザの「通訳者」のイメージです。
下記のように、幅広いプログラミング言語・ブラウザに対応しているため、Webアプリに合わせた柔軟なテスト自動化が可能です。ただし、使用するためにはプログラミングの知識が求められます。
| 主な対応言語 | 主な対応ブラウザ |
|---|---|
|
|
本記事の以降では、このSelenium WebDriverに焦点を当てて解説していきます。
②Selenium IDE
「Selenium IDE」は、ブラウザの拡張機能としてインストールする形式のツールです。手作業でのブラウザ操作を記録し、その操作を再生することで、自動化を可能にします。記録した内容は専用画面で調整でき、クリック回数の変更といった軽い修正も行えます。
プログラミングが不要なため、経験の浅いテスト担当者でも自動化しやすいのが強みです。ただし、テストの複雑な制御は難しく、Selenium WebDriverほどの柔軟性はありません。たとえば、細かい条件に応じた操作の切り替えやタイミングの制御は難しいです。
本格的なテスト自動化にはSelenium WebDriverが適していますが、簡易的な動作確認や学習用途であれば十分役立つでしょう。
3. Seleniumによるテスト自動化のメリット
Seleniumでテストを自動化するメリットは、主に次の3つです。
- テスト実行を効率化できる
- テスト品質の向上を図れる
- コストを抑えて導入できる
メリット①テスト実行を効率化できる
Seleniumを使うと、手間のかかるテスト実行を効率化できます。手動テストでは、担当者がテストケースに沿って操作や確認を行うため、件数が増えるほど負担が大きくなります。再テストが必要な場面では、特に工数が膨らみやすいのが難点です。
しかしSeleniumを使えば、ブラウザの操作や確認作業をプログラムが代行してくれます。手順が多いテストケースでも短時間で実行でき、効率が高まります。また、既存機能の動作を確認する「回帰テスト」を繰り返し自動化できる点も大きなメリットです。
メリット②テスト品質の向上を図れる
Seleniumを使うと、テスト品質の向上を図れます。人間が長時間のテストを行うと集中力が切れ、手順の間違いや見落としなどのミスが発生しがちです。
その点、Seleniumで作成したプログラムは、決められた手順を何度でも正確に繰り返し実行できます。実行手順のばらつきを防ぎ、テスト結果を安定させることが可能です。
また、結果の判定に役立つSeleniumの機能を活用することで、実行結果を機械的に判定できます。不確実な目視確認に依存せずに済み、テスト結果の正確性を高められるでしょう。
メリット③コストを抑えて導入できる
高度なテスト自動化ツールを導入する場合、多額の費用が発生します。その点、Seleniumであればコストを抑えて導入することが可能です。
Seleniumはオープンソース(内部コードが公開されているソフトウェア)であり、自由に利用・改変が認められています。そのため、商用ツールのようなライセンス費用がかかりません。
また、世界中に多くのSeleniumユーザーがいるため、インターネット上に豊富な情報があります。学習や問題対応がスムーズに行いやすく、教育・運用コストの抑制にもつながります。
4. Selenium WebDriverでテスト自動化する基本ステップ
ここからは、Selenium WebDriverでテスト自動化する際の基本的な流れを4ステップでご紹介します。
- ステップ①インストール・環境構築(初回のみ)
- ステップ②テストシナリオの作成
- ステップ③テストコードの記述
- ステップ④テストコードの実行・結果確認
ステップ①インストール・環境構築(初回のみ)
まずは、Selenium WebDriverでテストを実行するための環境を構築しましょう。初回のみ、次の2つをインストールする必要があります。
- 使用する言語用のSeleniumライブラリ
- 使用するブラウザ用のドライバー
Seleniumライブラリは、ブラウザ操作を自動化するための本体です。導入方法は言語ごとに異なるため、公式サイトの手順に沿ってインストールしましょう。
ブラウザのドライバーは、Selenium WebDriverがブラウザに命令を伝えるための仲介役です。たとえば、Google Chromeのブラウザ操作を自動化するためには「ChromeDriver」が必要となります。使用するブラウザに合わせたドライバーをインストールしましょう。
ステップ②テストシナリオの作成
次に、テストシナリオを作成しましょう。これは、テストの観点や前提条件を整理し、具体的な操作手順に落とし込む作業です。また、どのような表示や動作を合格とするのか、期待結果も明確に定義します。
たとえば、正しい認証情報でのログイン操作を検証するシナリオでは、「ログイン画面を開く」「IDとパスワードを入力する」といった操作手順、「トップ画面が表示されること」といった期待結果が考えられます。
テストシナリオに不備があると、必要な検証が漏れたり、狙いと異なるテストになったりします。テストコードを書く前に、手抜かりなくシナリオを練っておきましょう。
ステップ③テストコードの記述
続いて、テストシナリオに沿ってテストコードを記述しましょう。Seleniumのブラウザ操作や結果判定の機能を活用し、選定したプログラミング言語で手順を自動化します。
ブラウザを起動して操作を行い、実際の表示が期待結果と一致するかを検証する、という流れが基本です。ただし、プログラミング言語によって具体的な記述方法は変わります。
参考までに、Pythonで「金額を入力し、税込価格が表示されるか」を検証するシンプルなテストコードの例をご紹介します。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # ブラウザを起動
# Webページを開く
driver.get("http://example.com/calculator")
# IDがprice_inputの入力欄に1000を入力
driver.find_element(By.ID, "price_input").send_keys("1000")
# IDがtotal_outputの要素に1100が表示されているか確認
assert "1100" in driver.find_element(By.ID, "total_output").text
driver.quit() # ブラウザを終了
Webページ上の入力欄に1000を入力し、その結果が税込価格(1100)と一致するかを検証する、という一連の流れをSelenium WebDriverで自動化しています。
ステップ④テストコードの実行・結果確認
記述したテストコードを実行し、結果を確認しましょう。Selenium WebDriverのテストコードは、各プログラミング言語の標準的な方法で実行可能です。たとえば、Pythonのテストコードであれば、Pythonファイルをコマンドラインから実行できます。
実行すると、ブラウザ操作が実際に行われ、検証結果が出力されます。期待結果と一致しないテストケースがないか確認し、問題があれば原因調査・修正を行いましょう。テストコード自体に不備があれば、画面の読み込み待ち時間を変更するなど調整が必要です。
5. Seleniumによるテスト自動化の課題
Seleniumによるテスト自動化にあたっては、主に3つの課題があります。こうした課題を理解したうえで導入を検討しましょう。
課題①プログラミングの専門知識やスキルが必要
Selenium WebDriverを用いたテスト自動化には、プログラミングの専門知識やスキルが欠かせません。採用する言語の文法や書き方は把握していることが前提です。プログラミング経験が少ない場合、正確なテストコードを記述することは難しいでしょう。
プログラミングの知識が不要なSelenium IDEは扱いやすいものの、柔軟な自動化には向いていません。プログラミングに詳しい人材が少ない環境では、Selenium WebDriverにより幅広いテストを自動化するまでに時間がかかる点が課題です。
課題②テストコードのメンテナンスが大変
Webアプリでは、デザインや機能が頻繁に更新されるケースが少なくありません。しかし、画面の構成や配置が変わると、これまで動いていたテストコードがエラーになるケースが多々あります。そのため、継続的にメンテナンスを行わなければなりません。
アジャイル開発のようにスピード感のあるプロジェクトでは、開発サイクルのたびにテストコードの修正作業が発生しがちです。結果として、かえって工数が増える事態も起こり得ます。
課題③WebのUIテスト以外には非対応
Seleniumは、ブラウザの操作に特化したテストフレームワークであり、WebアプリのUIテスト以外には対応できません。パソコン向けのデスクトップアプリや、モバイルアプリなどのテスト自動化では、別のツールを検討する必要があります。
Web領域以外にもテスト対象がある場合は、Seleniumと別の自動化ツールを併用することになります。その結果、複数ツールの管理が必要となり、運用が複雑化しがちです。
6. 効率よくテスト自動化を実現するには
Seleniumは無料で使えるのが魅力です。一方で、自動化の範囲はWebアプリに限定され、柔軟なテスト自動化にはプログラミングスキルが求められます。継続的なメンテナンスの負担も考慮すると、自社だけで安定した運用を続けることは簡単ではありません。
効率よくテスト自動化を実現したい場合は、外部の専門家によるサポートの活用が有効な手段です。なかでも弊社では、テスト自動化の導入から運用までをトータルで支援するテスト自動化支援サービスを提供しています。
最大の特長は、テスト自動化ツール「T-DASH」に採用している独自の手法を活かし、メンテナンス性の高い構成を整えられる点です。T-DASHは、日本語で書いたテストケースから自動化スクリプトを生成できるという従来にない仕組みを備えています。
プログラミングスキルがなくてもテスト自動化を実現でき、メンテナンスの負担も大幅に軽減できます。無料トライアルも実施していますので、ぜひ一度お試しください。
T-DASHはWebアプリケーションの動作確認・検証をコードを書かずカンタンに作成・実行できるテスト自動化ツールです。
初期設定からテストの実行まで、T-DASHのすべての機能でコードを書く必要はありません。そのため開発を担当していない非エンジニアの方でも手軽にご利用いただけます。
他のテストツールを導入している企業さま、まだ自動化ツールを試してみたことがない企業さまもこの機会にT-DASHにぜひ触れてみてください。
7. まとめ
Seleniumは、Webアプリのブラウザ操作を自動化できるテストフレームワークです。無料で導入でき、テストの効率性や品質の向上に役立ちます。しかし、導入には一定のプログラミングスキルが必要であり、継続的なメンテナンスも求められます。
自動化を成功させるためには、自動化の範囲を見極め、運用しやすい体制を構築することが大切です。テスト自動化に取り組む際は、本稿の内容をぜひ参考にしてください。


