研究開発

旅行業界を取り巻く様々な環境変化にお客様が対応できるよう、
最新デジタルテクノロジーを活用した研究開発の取り組みや成果をご紹介します。
研究開発
NEW
WEBテスト自動化の試み

初めに

この記事では、テスト自動化ツールの一つとして知られるSeleniumを使ってC#で作成したWebアプリケーションのテストを自動化する手法をご紹介します。少しでも参考になれば幸いです。

 

背景

システム開発においてテストの工程は非常に重要な工程ですが、開発した製品が想定通りに動作するかをチェックする工数は多く、

また、手作業によるチェックになるため、操作ミス等での作業のやり直しも少なくありません。

弊社製品もリビジョンアップごとに、都度決められたチェック項目のテストを実施することで品質を担保していますが、その部分で多くの工数を費やしているのが現状です。

上記の課題について手作業の部分をツールにより自動化することでテスト工程の負担軽減と品質向上との両立を実現するため自動化を試みました。

 

Seleniumとは

Selenium は、 Webアプリケーションのテストを自動化するオープンソースソフトウェアです。

2004 年に ThoughtWorks 社によって Web アプリケーションの UI テストを自動化する目的で開発されました。

C#、Groovy、Java、Perl、PHP、Python、Ruby、Scala 等の複数言語に対応しています。

 

テスト環境について

テストするにあたりSeleniumを使用して自動テスト実行用のプログラムを作成する必要があります。

自動テスト実行用のプログラムはVisual Studio 2022にてC#言語を使用して開発を行っていきたいと思います。

また、自動テスト実行用のプログラムを定期的に実行する必要があるため、CIツールとして「Jenkins」を使用します。

 

テスト環境のイメージ

 

テスト対象のWEBサイトについて

テスト対象のサンプルページとして以下のようなログイン画面を用意しました。

ログイン時に認証不可なパスワードを入力してログインボタンをクリックすると「アカウント情報が不正です。」とアラートメッセージが出力されます。

 

テスト対象のサンプルページ

自動テスト実行用のプログラム作成手順

プロジェクトの作成

Visual Studio 2022でプロジェクトを作成します。

Visual Studioを起動して「ファイル>新規作成>プロジェクト」と選択して、単体テストプロジェクトを作成します。

Seleniumのインストール 

Seleniumの必要なパッケージは NuGet 経由でインストールします。

Selenium.WebDriver と Selenium.Chrome.WebDriver をインストールします。

 

NUnitのインストール

テスト実施するにあたりSeleniumでWEBアプリの自動操作が可能になりますが、テスト結果を出力する必要がありテスト支援ツールであるNUnitもインストールします。

必要なパッケージはNUnit、NUnit.Console、NUnit3TestAdapterになります。

 

テスト実行用のプログラム作成

プロジェクト内にテストロジックをコーディングしていきます。

画面操作を自動で行うLoginクラスとテスト実行を行うUnitTestクラスを作成します。

今回は、ID不正の場合のアラートメッセージのテストとパスワード不正の場合のアラートメッセージの

表示テストを実施します。

 

UnitTest1.cs
Login.cs

Jenkisの設定

JenkinsをWebサイトからダウンロードしてテスト環境にインストールします。
Jenkinsのページ

※インストール後に設定やプロジェクトの作成等行いますが、今回は説明を割愛させていただきます。

プロジェクトのジョブのフローとしては、以下4つのステップが必要になります。

1)ソースコード管理ツールからテスト実行用コードをダウンロードする。

ソースコードの管理


2)テスト実行用コードをコンパイルする。

MSBuildの実行


3)nunit3-consoleコマンドにてテスト実行用コードのテストを実行する。

テストの実行

 

4)3)で出力されたテストレポートを読み込む。

テストレポートの設定


テスト実行

Jenkinsのプロジェクトを実行します。結果として以下のような画面が表示されます。

 

OKの場合
NGの場合

まとめ

このようにSeleniumでテストを自動化することで冗長的なテスト実施の手間を軽減することができます。

また、Jenkinsを使うことによりブラウザ上でテスト結果を確認することができるため、エンジニアではない方でも結果を確認しやすくなり、同時にエビデンス取得も自動化することで結果報告資料等も効率的に作成できるようになります。

課題としては複雑なテストケースを実施する場合はテストコードのプログラミングに手間がかかることが挙げられます。

また、仕様変更が頻発するプロジェクトや工程ではテストコードのメンテナンスが多発することでプログラマー側に負荷が大きくかかることが挙げられます。

プログラマーとテスターにかかる負荷のバランスを考える必要はありますが大きな仕様変更が少ない保守開発の工程ではプログラマー側のテスト負荷は軽減されるため課題による懸念点は少なくなると思います。

WEBアプリケーションの開発を行っているみなさまのプロジェクトでも、SeleniumやJenkinsを効果的に活用してみてはいかがでしょうか?