Selenium(セレニウム)はエンジニアの知恵が集められた優秀なツール

ブラウザテストを自動化するツールとしてはAutifySeleniumなどが代表的なものとしてありますが、なぜSeleniumはこんなにも世界のエンジニアに使用されているのでしょうか。まずはその歴史を振り返ってみましょう。

テスト自動化の先駆けとして、2013年5月に登場したSelenium。その原型は、2004年に米ThoughtWorks社に勤務していたJason Huggins氏によって開発されました。

Seleniumの歴史

Selenium→Selenium Core→Selenium RC (Remote Control)→Selenium IDE→ WebDriver→Selenium WebDriver→Selenium Builder

ちょうどその頃、Jason Huggins氏がThoughtWorks社からGoogleに転職、彼がGoogleでSeleniumの話をしたためか、今度はGoogleのSimon Stewart氏がSeleniumの根本的な問題に取り組み始めます。彼はテスト実行時にセキュリティエラーを引き起こしていたSeleniumのJavaScriptを、ブラウザの拡張機能やOSネイティブに置き換えた「WebDriver」を開発。

笠谷真也氏の「Selenium IDE」にSimon Stewart氏の「WebDriver」が加わって、ここで一気にSeleniumの汎用性が高まります。

その後、2011年7月にSelenium RCとWebDriverを統合したSelenium WebDriverが開発され、さらなる改修を繰り返しながら、2013年5月に、Seleniumはテスト自動化のはしりとして本格的にリリースされ、世界の注目を集めました。

※Selenium BuilderはWebDriverのコマンドだけでブラウザ操作の記録・再生できるツールとして追加開発されました。

こうして歴史を振り返ってみると、SeleniumはGoogleの全盛期ともいえる時代に、優秀なエンジニアたちの叡智を集結して作られたということが分かります。Seleniumが人気なのはこういった背景があったのです。

これほど優れたツールなのにも関わらず、Seleniumはオープンソースで提供され、誰でも使えるようなテスト自動化ツールです。ここからはSeleniumを使用する際の具体的なメリットについて話していきます。

テスト自動化Seleniumのメリット

Seleniumは、一般的にブラウザテストを自動化するためのフレームワークとして知られていますが、より具体的に説明すると、SeleniumはWeb上の情報を抽出する「スクレイピング」できるツール、という点で大変優れています。

Seleniumは、操作をレコーディングしてテストケースを作成し、例えば、自動でGoogle検索の検索順位を取得したり、画面をスクリーンショットで保存できます。コーディングができない人でも、テストケースが作れる上に、テストケースは一度作成してしまえば再利用可能です。

Seleniumはまるで人が操作しているかのような動きを自動化するため、手動テストで発生しやすい人為的ミスが防止できます。Seleniumを使ってテストを自動化することで人為的ミスを減らすことだけでなく、テスト時間の短縮、網羅率や品質向上、コスト削減に繋がります。

さらにSeleniumは、以下の通り、対応している環境が充実しています。

開発言語が豊富なので、一から覚えなおす必要がありません。

Seleniumは、無料のテスト自動化ツールとして名が知られているデファクトスタンダードなため、ネット上に情報が豊富です。実際に商用として使用したエンジニアからは、I/O処理がスクリプトに組み込めるコードなのでgit管理ができて便利だったとの声が上がっています。ここまではSeleniumのメリットについてご紹介しましたので、続きましてはSeleniumのデメリットをお話しします。

テスト自動化Seleniumのデメリット

ここまで見てみると、Seleniumは大変便利なテスト自動化ツールに思えます。とはいえ、どの優れたツールにも欠点があり、使い難いと思われるデメリットもあげられます。

Seleniumは、Selenium WebDriverをインストールするだけでテストが自動化できるようになるツールではありません。Selenium WebDriverを設置した後、レコーディングしながら開発を行う必要があります。ここが無料たる所以ともいえる、最初のデメリットです。

Seleniumは、Webブラウザの操作を自動化するのに優れていますが、Webアプリケーションを総じてテストするのに特化したツールとしては物足りない部分があります。テストコードの中には冗長(デッドコード)になるものがでたり、また、非同期処理(複数のタスクを同時に実行する際に反応を待たないで次の処理を実行するやり方)を実行したい場合、コードに待機処理を書く必要があります。属性やidがフロントエンドにないと実行結果が不安定になりやすかったり、また、Selenium経験済みのエンジニアからはロケータの管理が複雑という不満の声も出ています。つまり余計な工数がかかってしまうのです。このような状況の中で、環境を構築したり、都度アップデートを追加していけば、やることが膨大になってしまう可能性が考えられます。

そしてSeleniumには公式サイトにチャットルームが用意されていますが、日本語の問い合わせ窓口がありません。要するに、サポート不足の中、問題が発生しても自力で解決するしか方法がないのです。一見、使い易そうなSeleniumですが、いざ商用として使い始めるにはまだ課題が多いのも事実です。

AutifyならStagingと本番環境、両方ともデプロイ後のE2Eテストが自動化できる

ソフトウェア開発が完了し、一通りのテストをクリアした後でも、本番環境へのデプロイ後のE2Eテストでエラーが出る可能性があります。それを未然に防げるのが「Staging(ステージング)」環境でのテストです。

Stagingとは、システムを公開する前に、本番環境とほぼ同じ状態を作って、動作や表示に問題がないか、最終確認としてのE2Eテストを実施することをいいます。一通りのテストと本番環境でのテストの間にStagingを用意することで、開発環境で見つけられなかったミスを発見でき、本番環境でのリリース後に問題が発生するリスクを大幅に削減できます。

AutifyならStagingと本番環境を両方とも、デプロイ後のE2Eテストが自動化できる上に、複数のアサーションを実行し、テスト中に問題が起きた場合はAIが自動で一つ前のリビジョンにロールバックします。

AutifyはStagingと本番環境のデプロイ直後からAIが自動で監視

Autifyは、Stagingと本番環境の両方とも、デプロイ後のE2Eテストが自動化できますが、実は自動化できるのはテスト時だけではありません。AutifyはCI/CDと連携しているため、デプロイ直後からリリース後も継続して、AIが自動で監視をスタートします。修正したはずのバグなどが復活していないか、ソフトウェアのバージョンアップなどにより互換性の問題が起きていないか、リグレッションテストを実行し、問題があった場合は次のステップに進む前に知らせます。

本番リリース前に追加の手動検証が必要になったとしても、確認が必要な箇所のほとんどをAutifyがカバーするため、手動で検証する量を劇的に減らすことができます。AutifyならスケジューリングされたE2Eテストによって、AIが定期的に本番環境を先回りして検証することで、担当者が気が付く前に問題を発見できるメリットが得られます。

【関連記事】急速に普及したテスト自動化、E2Eテストはノーコードで業務効率化UP

Autifyは加えて、メールテスト、iOS、Androidにも対応し、企業ごとに固定IPが振られるので、セキュリティー面も万全です。そしてAutifyには以下の通り、サポート窓口が細かく用意されています。

自動化したテストが失敗した時の窓口が用意されており、テスト結果の画面をスクリーンショットで送れば、診断してもらえるのはかなり嬉しいサポート機能です。
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。