Webブラウザのテスト自動化ツールではAutifyやSeleniumなどが代表的ですが、なかでもSeleniumはその多機能性と高いカスタマイズ性から世界中のエンジニアに支持されています。本記事では、Seleniumの基礎知識やコンポーネント、その使い方まで解説していきます。それぞれの特性を理解することでより効率的に自動化テストを行えるようになるのでぜひ今後の参考にしてください。
Seleniumとは
Seleniumとは、Webブラウザの操作を自動化するツール群・ライブラリ群です。UIテスト自動化の先駆けとして2013年5月にリリースされましたが、その原型は2004年に米ThoughtWorks社のJason Huggins氏が開発しました。WebアプリケーションのUIテストやJavaScriptのテストを目的として開発されたSeleniumですが、それだけでなくタスクの自動化やWebサイトのクローリングなど、さまざまな用途に利用されています。Webブラウザの操作をあらかじめ指定しておくことでユーザの代わりに実行してテストします。テスト用のスクリプトは、実際にユーザによるWebブラウザの操作内容を記録して作成できます。主要なプログラミング言語や独自のスクリプト言語で作成可能です。
Seleniumの歴史
2004年 | Jason Huggins氏がSeleniumを開発 Selenium CoreをSelenium RC (Remote Control)に名称変更・オープンソース化 |
2006年 | 笠谷晋也氏がSelenium IDEを開発 |
2007年 | Google社のSimon Stewart氏がWebDriverを開発・GTACにて発表 |
2008年 | Selenium Gridを開発 |
2011年 | Selenium WebDriverに統合 |
2013年 | Selenium Builderをリリース |
Seleniumは2004年にJason Huggins(ジェイソン・ハギンズ)氏によって開発されました。そののちに、同氏がGoogle社に転職したことが関係してるかは言い切れませんが、Google社のSimon Stewart氏がSeleniumの改良を始めます。当時のSeleniumのJavaScriptはテストの実行時にセキュリティ関係のエラーが起きていましたが、Webブラウザの拡張機能やOSネイティブに置き換えることでこの問題を解決する「WebDriver」を開発しました。笠谷真也氏の開発した「Selenium IDE」に「WebDriver」が加わったことでSeleniumの汎用性が一層高まりました。そして2011年7月に「Selenium RC」と「WebDriver」を統合した「Selenium WebDriver」が開発され、さらなる改修を繰り返し、2013年5月にはテスト自動化の先駆けとして本格的にリリースされました。Selenium BuilderはWebDriverのコマンドのみでブラウザ操作の記録・実行できます。
歴史を振り返るとわかるように、Seleniumは優秀なエンジニアのノウハウを集結して開発されました。このように優れたツールであるSeleniumはオープンソースで提供されているため誰でも無料で利用できるのです。
Seleniumの特徴
いくつかあるテスト自動化ツールのなかで、Seleniumにはどのような特徴があるのか見ていきましょう。
オープンソース
Seleniumはオープンソース(Apache License Version 2.0)で提供されているため無料で利用できます。公式のサポートも充実していますが、利用者が多いツールなのでWeb上で質問することで情報を得られるでしょう。
学習コストが低い
Seleniumは操作が理解しやすく、Webブラウザの操作に特化したツールなので学習コストもそれほどかかりません。そのためプログラミング初心者でも比較的簡単に利用できます。また多くのエンジニアに長く利用されているため、インターネット上にはサンプルコードが多く存在します。また、トラブル発生時の情報も豊富にあり、わからないことが出てきても解決できる場合が多いです。このように、Web上や書籍が豊富にあるので学習コストを抑えられるのです。
多くのプラットフォーム・プログラミング言語に対応している
Seleniumは、幅広いプラットフォームやプログラミング言語に対応しているため、多くの環境やケースで利用できます。Seleniumが対応する主なプラットフォームとプログラミング言語は次に示します。そのため一から覚えなくてはいけないことがほとんどありません。
【Seleniumが対応する主なプラットフォーム/プログラミング言語】
OS | Windows・macOS・Linux |
ブラウザ | Google Chrome・Edge・Firefox・Safari・Opera |
プログラミング言語 | Java、JavaScript、Python、Ruby、C# |
幅広くテストを実行できる
Seleniumは豊富なオプションを備えており、UI要素の特定やテストの期待値とアプリケーション動作の比較といった、幅広いテストに活用できます。
テストケースを再利用できる
Seleniumは、テストケースを再利用できます。そのため、一度操作を登録してテストケースを作成してしまえばGoogle検索順位の自動取得や画面のスクリーンショットの自動保存などが簡単に行えるのです。
品質向上・コスト削減
Seleniumはブラウザ操作を自動化するので手動で起こりうる人為的ミスを防止できます。また、テスト時間の短縮や網羅率・品質の向上、コスト削減など、さまざまな面でメリットがあります。
Selenium利用する上での注意点
ブラウザ操作以外は自動化できない
SeleniumはあくまでWebブラウザの操作自動化に特化したツールであるという点で注意が必要です。Webアプリケーション全体をテストする場合は、ほかのツールを利用する必要があるでしょう。コードが複雑・冗長になったり実行結果が不安定になしやすくなるケースがあります。
メンテナンスコストが発生する
UIの変更があるとメンテナンスが必要になるなど、メンテナンスコストが発生することに注意しましょう。
日本語の問い合わせ窓口がない
Seleniumには公式サイトにチャットルームが設けられておりますが日本語での問い合わせ窓口はないので注意が必要です。
Seleniumのコンポーネント
Seleniumは複数のコンポーネントがあり、コンポ―ネントごとに役割が異なります。そのなかでも主要なコンポーネントを紹介します。
現時点でのSeleniumのコンポーネントは、ブラウザ操作を記録・再生する「Selenium IDE」、プログラミング言語を用いてより複雑な操作を行う「Selenium WebDriver」、Selenium WebDriverを複数のOSやブラウザで稼働させる「Selenium Grid」があります。ブラウザ操作を自動化する目的や操作内容に適したコンポーネントを選択しましょう。
Selenium IDE
Selenium IDEはWebブラウザの操作を簡単に記録・再生できるSeleniumスクリプトの統合開発環境で、機能テストの記録や編集、デバッグができます。ブラウザの拡張機能なのでテストケースの作成にプログラミング言語は必要ありません。ただし、複雑な操作はできません。
動作環境
ブラウザ | Google Chrome・Edge・Firefox |
OS | 上記ブラウザアプリが使用可能なOS |
Selenium WebDriver
Selenium WebDriverは、Selenium RCとWebDriverを統合して開発され、2018年以降はW3C推奨になっています。Webブラウザを自動で操作するという面ではSeleniumRCと同じですが、Selenium WebDriverはブラウザの拡張機能やOSの機能を利用してブラウザを操作するためSeleniumRCと違い、セキュリティ面での制限を受けずに済みます。Selenium WebDriverはプログラミングの知識が必要です。主要なブラウザやプログラミング言語をサポートしており、コードを書くことでSelenium IDEよりも複雑な操作ができます。
Selenium RCについて
Selenium RC(Selenium Remote Control)は、Seleniumで作成したテストケースを遠隔で操作するツールです。作成したJavaScriptコードをテストの対象となるWebページに埋め込んでWebブラウザを操作します。Seleniumの主力コンポーネントでしたが、セキュリティ面で欠点があったことでSelenium WebDriverのリリースに伴って非推奨になりました。
動作環境
OS | Windows・macOS・Linux |
ブラウザ | Google Chrome・Edge・Firefox・Safari・Opera・Internet Explorer |
プログラミング言語 | Java、JavaScript、Python、Ruby、C# |
上記の公式でサポートがあるプログラミング言語のほかにもGo、Perl、PHP、R、Haskell、Dart、Pharo Smalltalkなども利用できます。
Selenium Grid
Selenium Gridとは、複数のOSやブラウザでテストを並行して実行できるツールで、WebDriverで作成したテストスクリプトが必要になります。ブラウザとOSの組み合わせごとのテストを行う必要がある場合などに有効です。複数のOS、ブラウザ、バージョンをプールし、Hub経由で並行して同じテストを実行できます。複数の実行環境を一元管理でき、テストにかかる時間も大幅に削減できます。
動作環境
Java11以上のインストール
Seleniumの活用例
Webアプリケーションのテスト
Seleniumは主にWebアプリケーションをテストするのに用いられます。実装には時間がかかりますが、実行時間が短くなる場合が多いです。そのため、繰り返しテストするリグレッションテストやデータを変更して同じテストを複数パターンで実行するデータ駆動テストなどで活用されます。JenkinsやTravis Cl、BambooといったCIツールと組み合わせてデプロイに伴って自動的にテストを実行する、定期的に自動テストを実行するといったこともできます。また、テストに関する情報をメッセージで通知させたり、レポート機能を利用すればテスト結果を見やすくするといったこともできます。このように、ツールの組み合わせで定期的かつ手軽にテストを行い、結果も確認しやすくもできるのです。
クローリング、Webスクレイピング
SeleniumはWebブラウザのテスト自動化ツールとして知られていますが、言ってしまえばWeb上の情報を抽出する「スクレイピング」ができるということです。Web上のデータを収集するクローリングやWeb上の特定のデータを収集するWebスクレイピングに利用でき、手動でデータ収集するよりも効率的に実行できます。CIツールと組み合わせて定期的にデータを自動収集できます。
RPA
Seleniumはテスト自動化以外に、Webブラウザを使用したタスクの自動化をするRPAツールとして用いられることがあります。RPAとは、人がコンピュータで行う作業を、ソフトウェアで自動化することを指します。たとえば、メールの自動送信やWebアプリへの自動ログイン、データの自動作成といったことが挙げられます。
まとめ
SeleniumはWebブラウザの操作を自動化することでWebアプリケーションのテストをサポートするオープンソースツールです。簡単に利用できるうえに幅広いフラットフォームや言語に対応しているため世界中の多くのユーザに利用されています。またオプションも豊富なので目的に合わせて幅広いテストに対応できます。しかしあくまでWebブラウザの操作の自動化に特化したツールであるという点で注意が必要です。またUIの変更があるとメンテナンスが必要になる可能性があるということにも注意しましょう。
ITスキルの習得方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。