1.Selenium WebDriverの簡単な紹介
みなさん、Seleniumという技術をご存知ですか?
Seleniumとは、Webアプリケーションのテストを自動化するためのフレームワークやライブラリです。Seleniumは、Selenium IDE、Selenium WebDriver、Selenium Grid等、様々な種類がありますが、今回は、Selenium WebDriverについて紹介していきます。このライブラリを使用してプログラミングをすることで、テストしたいWebアプリケーションへのアクセスから、Webブラウザ上のテキスト入力やボタン、リンクのクリック等のような動作を自動で行うことができます。また、元々は、テストを自動化するために作られましたが、Webスクレイピングを行って、Webサイト上のデータの収集をしたり、RPAツールとして利用し、データ入力や定期的なレポート作成を自動化したりできます。
2.Seleniumを使用するメリット・デメリット
2-1.Seleniumを使用するメリット
2-1-1回帰テストの効率化
頻繁に機能改修があるWebアプリケーションでは、機能改修した箇所以外への影響確認(回帰テスト)をする必要があります。開発中でも、テストは全て合格して終わっているが、一部機能を変更したため、その影響確認のため再テストをしなければいけなくなってしまったなんてことはよくある話です。そこで、Seleniumを使用することによって、一度プログラムを書いてしまえば、ワンクリックで、短時間で動作確認できてしまいます。
2-1-2大量データを使用した負荷テスト
私が一番魅力的に感じているメリットかもしれません。最大桁数やデータを大量件登録する等の試験項目の際は、データを作るのがなおのこと大変ですよね?そんなときでも、最大桁数の場合は、プログラム内で、ループ処理を活用して最大桁数データを作成したり、大量件数のデータ登録のテストでも、登録する動作をループで実行すれば、手動で確認するまでもなくテストできます。
2-2.Seleniumを使用するデメリット
2-2-1.自動テストを作るために、学習コストと時間が大幅にかかる
Selenium WebDriverで、自動テストを作るためには、C#などのプログラミング言語の知識はもちろん、CSSセレクタの仕組みや、WebDriverというライブラリの使い方について学習する必要があったり、テストしたい項目の要素を局所的に指定することが難しかったりします。自動テスト自体は早いのですが、自動テストを作るために、十分な学習とプログラム作成時の工夫が必要になります。
2-2-2.UIの頻繁な変更に対して対応が不向き
画面項目が増減したり、画面項目の要素の種類が変わったりした場合、もちろん自動テストのプログラムを修正しなければいけません。この変更が開発中頻繁に依頼されると、メインのプログラムとドキュメントの修正にまた一つ、自動テストのプログラムの修正が加わってしまいます。頻繁に変更される場合、変更対象が一つ増えるだけで、工数超過の原因になりかねません。
3.応用技で、エビデンス管理も楽になる!?
Xunitという単体テストのためのフレームワークがあります。こちらは、バックエンドのロジックが正しく書かれているかどうかをメソッド単位で確認するためのものですが、テスト対象のメソッドにUIテストを行うメソッドを指定することで、検索系画面で出力されている値や登録処理後のDBの値を確認するときに画面の値をスクレイピングして、画面とDBの値をテストメソッド内で突き合わせて確認する自動テストが出来上がります。これにより、テストエクスプローラの実行結果自体がエビデンスとなるので、画面キャプチャのエビデンスを目で細かくみて品質管理をする必要がなくなり、お客様に納品する際も、テストエクスプローラのテストケースが全て合格している様子だけ見せることができれば、画面キャプチャよりも分かりやすいエビデンスとなります。
まとめ
Seleniumを使用するのに適している試験項目は、大量データを使用した負荷テストや複数回テストする可能性の高い画面に対してのテスト等が挙げられます。レイアウトの見た目の確認や1回しか行わないテストには不向きなので、そこは手動で確認する必要があるでしょう。企業によって開発工程の認識は異なると思いますが、開発工程でいえば仕様がある程度固まっていて、負荷テストの試験項目が多い総合テストあたりで使用すると効果的かと思います。