こちらはAutomateシリーズのパート5です。パート1、パート2、パート3、パート4も読むことができます。
最近ではWebテストの自動化が非常に一般的になったことで、「Selenium」というツール名自身がWebテストを指すようになり、そのまま同じ意味として使われるようになりました。しかし、SeleniumやWeb自動化テストのスケールアップをするのは、科学というよりむしろ芸術と考えるべきでしょう。前回のブログではAPIテストを取り上げましたが、その際にもテストの新しいレベルがいかに複雑であるかをお話しました。Webの自動化は複数のレベルで構成されています。プロダクトやプロジェクトによっては、WebアプリしかないためWeb自動化テストがそのテストの最終レベルになる場合もあります。他方で、Webviewやウェブコンポーネントをモバイルアプリケーションで使用している場合は、Web自動化テストがインテグレーションレベルのテストのような役割を果たします。
Web自動化テストは、実行するレベルにかかわらず、大きく2つの側面があります。1つはテストスクリプトのメンテナンス、そしてもう1つがブラウザーインフラです。
メンテナンスの問題解決や改善を求めている方は、このブログの過去回でFlakiness(不安定性)の改善方法に関して取り上げているので、基本的な情報はそちらを参照してみてください。ブラウザーのインフラを開始、もしくはメンテナンスしようとしている方にとっては、今回のブログの内容が必ずお役に立つと思います!
ブラウザー群
ブラウザーのインフラを取得する方法は複数あります。まず、ブラウザーと一緒にドッカーイメージの中でテストをパッケージ化する方法がありますが、この場合テストできるのは特定のブラウザーのみに限られてしまいます。また、ドッカーイメージの中で可能性のあるすべてのブラウザーを一つにまとめてしまうこともできますが、その場合、そのドッカーコンテナが非常に重たくなってしまいます。なお、Seleniumからブラウザーベースのイメージを複数のブラウザーに提供することもできますが、インフラを一元的に確認することができません。
そこで、非常に素晴らしいツールをご紹介したいと思います。「Selenoid Configuration Manager」というツールがあるのですが、上記の図の通り、ブラウザーバージョンからテストを切り分けると同時に、様々なブラウザー/バージョンの組み合わせに対応するブラウザー群を設定するのに役立ちます。
例えば、Chromeブラウザーのバージョン84でテストを行う必要がある場合、このConfiguration Managerをそれらのパラメーターで起動すれば、実行するブラウザーへのアクセスを即座に取得することができます。
「一人でできることは多くないが、
皆いっしょにやれば多くのことを成し遂げられる」
ヘレン・ケラー
Webテストを自動化することで、PayPayではスタンドアローン型Webアプリ、WebView、ウェブコンポーネントのバグを見つけやすくなりました。引き続きPayPayでは、アイデアや経験をお持ちのエンジニアを募集しています。フルスタック・テスター(募集情報はこちら)としてぜひ一緒に働きませんか?来月のブログでは次のテストレベルに関する話を取り上げます。