はじめに
Seleniumを開発に取り入れてみてどうだったかを書いていく。
今後の設計・開発で考慮すべきこと等をまとめる。
Seleniumとは?
- Webブラウザを使ったテスト自動化を実現するフレームワーク
- マルチブラウザでのテストが可能
目的
- 機能追加・修正に伴うデグレの防止
- 特定のブラウザでのみ動作しないといった不具合が発生した為、こういった事象をリリース前に確認すること
今回の試みで目指した姿
selenium webDriverを使った、マルチブラウザでテストを実行する。
テストコードは各ユースケースで1つとし、以下のブラウザでサイトの動作を確認する。
また、スマートフォンでも同様にサイトの動作を確認する。
PCブラウザ
- FireFox
- Chrome
- IE11
- MSEdge
スマトーフォン
- Android
- iOS
実施する上での課題
- ブラウザの切替
- 複数のブラウザをテストする為、手動でブラウザを切替るということは避けたかった。
- 社内Proxy
- 開発環境を利用してテストをする為、社内Proxy越しにテストを行うと、毎回Proxyの認証を行う必要があった。seleniumはテストケース終了毎にブラウザが閉じられる為、全てのテストケースで認証が発生してしまう。
感想
- 今回の開発では、seleniumを利用することを前提としてシステム設計を行っていなかったが、統合テストで実施したテストケースの約8割をseleniumで置換えられそう。
- 既にIT・STともに終了した段階で自動テストを適用した為、テストケースのメンテナンスを行う必要が少なかった。
- UIテスト自動化は適用するタイミングが難しい。動作保障は単体テストでやるべき。キャプチャリプレイツールという前提から外れることは避けたほうが無難。
- 感覚としてですが、ITとSTの間にあると良いくらいのイメージ。何をしたいのか?狙いを絞って使わないとメンテナンスコストだけが大きくなってしまうかも。
向き・不向き
利用した方が良い場面
- マルチブラウザ対応を行う場合(ただし、アンチパターンでもある)
- レスポンシブなサイトを開発する場合(PC・スマートフォン両方で検証したい)
避けた方が良い場面
- メンテナンスコストを負担出来ない場合
今後に向けて
- pageObjectパターンの適用 ← 興味有り。次回は是非とも。
- selenium Grid ← 設計を考慮し、分散実行出来るように作ると、テスト時間の短縮や制約から抜け出せることも。
- アンチパターンの調査・学習。実際にseleniumを使おうを思っている場合は、勉強してからが良いでしょう。
参考