Selenium系ツールによるテスト自動化運用の隠れたコスト
はじめに
Seleniumは、ブラウザ操作の自動化のためのフレームワークです。オープンソースであることから世界中で広く利用されており、テスト自動化の草分け的存在ともいえます。近年は、Seleniumをベースに機能追加した形のツール/フレームワークも次々とリリースされており、それらのツールを含めればかなりの数利用されていることが予想されます。
世界中で広く、長く使われているSeleniumは非常に優れたツールではありますが、すべての人や環境に対してベストプラクティスかというとそうではなく、特にテスト自動化の長期的な運用を考えていく上では注意しておくべきことがあります。当記事では、Seleniumを使用するメリット・デメリットに触れながら、テスト自動化を成功させるコツについて解説したいと思います。
※この記事では、「UIテスト」「E2Eテスト」などと呼ばれる、アプリケーションの画面操作をテスト自動化の対象としています。
Selenium系ツールを利用するメリット
スモールステップで始めることができる
Seleniumはオープンソースのフレームワークであるため、だれでも無料で利用でき、気軽にテスト自動化を始められます。Seleniumベースのツールの中には有償のものもありますが、多くの場合初期費用をなしまたは低く抑えることができます。テスト自動化では「小さく始めて徐々に適用範囲を広げていく」という考え方が重要であり、まさにテスト自動化の第一歩に適したツールと言えるでしょう。
様々な環境で利用できる
Webブラウザであれば、Microsoft EdgeやChrome、Safariなど一般的に使われている様々なブラウザに対応している他、macOSやLinux OSでも使用することができます。またテストスクリプトの言語もC#、Java、Python、Rubyなどに対応しており、自分の使い慣れた言語で書けるという点もメリットの1つです。
キャプチャ形式でテスト作成ができる
Selenium IDEを使うことで、テスト作成の際はコードを書かず、実際にテストで実施したい操作をキャプチャする形でシナリオ作成がおこなえます。コードを書くのはハードルが高いという方でも、直感的にテスト作成をおこなうことができます。
テスト自動化以外にも活用できる
ブラウザの自動操作がおこなえるSeleniumは、もともとはテスト自動化を目的に作られたフレームワークですが、RPAのような形で自動操作そのものに使われることも多くあります。社内システムで定型的なデータ登録をする、毎日指定のページをスクレイピングしてデータ収集をおこなうといった決まった操作は、Seleniumを使ってシナリオさえ作ってしまえばその後は自動で操作をおこなってくれます。
Selenium系ツールの隠れたコスト
テストシナリオの編集・修正にはコーディングが必須
Selenium IDEを使うことでテスト作成はコーディングなしで対応できますが、作ったテストを修正したり、拡張したりする際にはコーディングが必要です。Selenium IDEで作ったシナリオをいざ実行すると上手く動かないということはよくありますが、ある程度プログラミングの知識がないと修正がおこなえないため、非エンジニアの方がSelenium系ツールを使って自動化をおこなうのはかなりハードルが高いと言えるでしょう。
テストに必要な処理を自前で作成しなければいけない
単なる操作の自動化であれば、画面が動けばOKという場合もありますが、テスト自動化となると、操作中に金額などの値が正しいかをチェックしたり、処理が終わるまで待機したり、シナリオの中で値を取得して他の入力値に使うといった、より複雑な操作が要求されることも多いです。それらの処理は基本的に自分でコード記述しなければならず、思っていたより工数がかかることもあります。
Webブラウザ以外の操作が自動化できない
SeleniumはあくまでWebブラウザの自動化フレームワークのため、ブラウザ以外は自動化できません。またブラウザ上であっても、JavaScriptで出力するwindow.alert()などのダイアログについては自動化ができません。一方で、E2Eテスト・シナリオテストといったフェーズでは、このようなダイアログ操作や、ファイルのアップロード・ダウンロードでWindows上のエクスプローラーを操作するなど、ブラウザ外の操作が出てくることも多くあります。このようなテストでは、Seleniumは部分的にしか利用できないという点は注意しておく必要があります。
つまづいた時に使えるリソースが少ない
長期的にテスト自動化を進めていく中では、自動化しているアプリケーションの更新はもちろん、ブラウザやOSのアップデートも発生してくるため、今まで動いていたテストが急に動かなくなることも多々あります。Seleniumのようなオープンソースのツールの宿命ではありますが、無償であるため、このような問題が発生した際は基本的に自分で調べて解決する必要があります。もちろんWeb上には公式ドキュメントをはじめ多くの情報は掲載されていますが、日本語の情報は限られている他、古い情報もあり、調査にはそれなりのコストがかかることが予想されます。また担当者が変わった場合など、人が作成したテストコードの解読にも時間がかかります。企業で長く利用していくには、Seleniumがわかる技術者を確保しておく必要があると言えます。
UIテスト/E2Eテスト自動化を成功させるには?
テスト自動化の成功のためには、上記のデメリットに注意しながら、自身の環境・体制にあったツールを選ぶことが必要です。まず大前提として、やりたいテストがブラウザ内のみで完結するのか、JavaScriptダイアログやエクスプローラーなどのWindows操作が含まれるのかという部分はチェックした上でツール選定を行ってください。
ブラウザ内で完結するという場合で、社内にSeleniumに詳しいエンジニアが多い、開発をメイン事業としてやっているなど、公式のサポートに頼らず問題解決できる環境が整っていればSelenium系ツールが最善の選択肢となるでしょう。
一方で、テスト自動化が必要とされるのはそういった場所だけではありません。むしろ受入テストなど、エンジニアがいない/少ない環境で必要となることが多くあります。この場合、非エンジニアが無理にSelenium系ツールでやろうとするのではなく、有償ツールを使ってカスタマーサポートの力を借りた方が、結果的に全体のコストが少なく済むとなる可能性も高いです。
またエンジニアがメインで自動化を担当する場合であっても、自動化に多くの工数は割けないという場合や、担当者が頻繁に変わるといった場合は、テストシナリオの保守が難しくなる可能性が高いSelenium系ツールは避けて、より管理しやすいツールを選択したほうがよいかもしれません。
テスト自動化を始める際は、まずは自動化したいテストの範囲や運用体制を検討した上で、使うツールの評価ポイントとすることをおすすめします。
関連ページ
UIテスト自動化ツール Ranorex は、ブラウザ内の操作はもちろん、JavaScriptダイアログやエクスプローラーなどのWindows操作も自動化できます。また、テスト作成だけでなく編集・修正もGUI上でおこなえるため、プログラミング知識がなくても簡単に利用できます。詳しくは以下のページをご覧ください。