Seleniumでの自動テストの運用方法

kossyselenium,ツール,テスト,品質管理

こんにちは。品質管理グループのおおこしです。

今回は品質管理グループで行っている Selenium での自動テストの運用方法について書きます。
Selenium は Web アプリケーションのテストツールです。
セミナーでは導入についてよく聞きますが、現場でどのように運用しているかはあまり例を聞かないため、トライコーンの場合をまとめてみます。

日常的に行うこととして、最新状態の開発環境に対してスモークテストとして Selenium を毎朝実行しています。
毎日実行するのにはすぐに差異を見つけることと、テストデータを積み重ねる目的があります。
レポートを品質管理グループのメーリングリストに届くようにして出勤後に結果を確認しています。

失敗していたテストスイートについては内容を参照し、どのテストケースが失敗したかを確認した上で、再実行して再現確認と再現条件の特定をします。
バグであれば修正依頼をし、開発による変更ならテストケースの修正をします。

失敗するテストケースを放置すると修正が追うのが難しくなり、使われないテストケースになってしまうので早めの対応が大事です。
一般に指標として聞かれるのはケース数であったりレポートにカウントされる判定部分になりますが、トライコーンの開発で重視しているのは画面数です。テストのパターン数を増やすのも大事ですが、現在品質管理グループでは網羅性の向上を優先しています。
また、テストスイートはプロダクトの機能ごとにまとめるようにしています。これによりプロダクト側の機能の追加や修正に際し、機能ごとにテストスイートを作成したり修正していけば良いため、テストケース管理の見通しが良くなっています。

テストスイートおよびテスト対象サーバは setting.properties により切り替えを行えるようにしており、(1) 開発サーバに対しての最新のコードのテスト、(2) 本番サーバに対してのリリース版のコードのテスト、(3) テスト用に外部に提供しているサーバに対してのリリース版のコードのテスト、なども簡単に切り替え可能です。

lrwxrwxrwx 1 kreisel kreisel setting.properties -> setting.properties_lion_Kreisel
-rwxr-xr-x 1 kreisel kreisel setting.properties_apibeta_Kreisel
-rwxr-xr-x 1 kreisel kreisel setting.properties_apitest_Kreisel
-rwxr-xr-x 1 kreisel kreisel setting.properties_dev_Kreisel
-rwxr-xr-x 1 kreisel kreisel setting.properties_honban_Kreisel
-rwxr-xr-x 1 kreisel kreisel setting.properties_lion_Kreisel

このように切り替えが容易なため、日次の実行以外に、メンテナンスを行う際のリグレッションテストにも利用しています。リグレッションテスト時はステージング環境で、リリースするコードに対してテストを実施します。

なお、テストスイート及びそこに含まれるテストケースは Subversion で管理しています。

トライコーンのクライゼルやコトシロなどのプロダクトはバージョンアップを継続的に行う派生開発を行っているため、同じテストを何回も繰り返します。自動テストは作成やメンテナンスの工数はかかりますが、日々実行していることと、確実な結果が出せることで元がとれていると思います。

過去の資産が多いことから現在は Selenium 1 を継続利用していますが、Selenium 2 への移行も進めています。これからもプロダクトの開発に合わせた運用方法を探しながら進めていこうと思います。

kossyselenium,ツール,テスト,品質管理

Posted by ookoshi