レポート

進化するSeleniumとテスト自動化 ―「第3回日本Seleniumユーザーコミュニティ勉強会」レポート

この記事を読むのに必要な時間:およそ 10 分

Azureを使って手軽にブラウザテストをはじめよう(小島直也氏)

小島直也氏からは,ブラウザテストの自動化を進めるにあたって直面した問題と解決策が発表されました。

小島直也氏

小島直也氏

はじめに

テストを実行し,画面のスクリーンショットをコピー&ペーストして証跡を残す手作業は,どうしてもモチベーションが下がってしまいます。しかし,自動化をすれば,定期的に実行するだけでよく,証跡も自動でレポートされるので,生産性が上がります。

テストの自動化に取り組んだ理由

私たちは以下の理由からテストの自動化に取り組むことにしました。

  • 同一のマニュアルテストを繰り返すのは非効率だと感じていた
  • デプロイの頻度が高い時期には終わったばかりのテストを繰り返すこともあった
  • 自動化スキルがあれば効率化できると考えた

ブラウザテストの自動化のはじめ方

まずは動くテストスクリプトを書くところから始めました。しかし,作法がわからないので,以下のサイトなどを参考にしました。

ToolsQA

ToolsQAはチュートリアル形式でテストの自動化を解説してくれている英語のサイトで,とても参考になります。

Stack Overflow

Stack Overflowは困っているときに相談すると,詳しい人が解説してくれているサイトで,こちらも英語で書かれています。大体の問題はここで解決します。

日本Seleniumユーザー会の談話会やSlack

Slack上で行われる日本Seleniumユーザーコミュニティの談話会などにも積極的に参加し,実際に現場で使っているエンジニアの方とセッションするのもとても有益でした。

自動化で直面した課題と解決策

自動化を進めるにあたり,以下のような課題に直面しました。

  • 遷移先のポップアップ画面IDを取得できない
  • テスト対象の画面が表示される前にテストが進んでしまう
  • スクショを撮るコードをテスト毎に書いてしまったので大変だった
  • ロケータをIDで指定していたら同じページで同じIDが出てきて困った
  • 1つのテストケースを1クラスに実装するべきか悩んだ
  • データ駆動でアプリの機能を実行するように実装するべきか悩んだ
  • データ駆動でアプリの機能を更に詳細に実行するように実装するか
  • 前のテストの失敗によって次のテストが実行されない
  • 結合テストはスパゲッティテストにあたるか
  • 開発言語に何を選択するか
  • テスト実行中はブラウザに画面を専有されてしまう

特に最後の問題が本題になります。この問題を解決するために,自分のPCを使用していないときに流してみましたが,テストが失敗していて翌日やり直すことになりました。そこで,Azure VMでテストを実行してみることにしました。

実践的な自動テストに仕上げるためにやったこと

自分のテストフレームワークを作りました。

  • テストデータの読み込み処理
    →TestNGのDataProvider機能を使い,テストデータを読み込む処理をテストと分離しました。
  • 任意のブラウザでのテスト実行
    →プロパティファイルで実行ブラウザを切り替えられるようにしました。
  • Web Elementが表示されるまでのテストの待機処理
  • スクリーンショット取得処理
  • ロガー

この結果,テストを追加するときに手を加える個所を,以下の3ヵ所に限定しました。

  • Page Object
  • アプリケーション機能定義部
  • アプリケーション機能実装部

Azureで作ったSelenium Grid

UbuntuをSeleniumのハブ,Windows Server 2008をノードとして,IEを動かすという仕組みをAzureで作りました。

Selenium談話会やSlackでたくさんの方に色々と教えていただいてきました。誠にありがとうございました。本日の話が一助となれば幸いです。

Azureを使って手軽にブラウザテストの自動化をはじめよう

Gebに実践入門するために(PoohSunny氏)

『Selenium実践入門』にもレビュアーとして携わっていたPoohSunny氏からは,今話題のGebについてのセッションがありました。

PoohSunny氏

PoohSunny氏

Gebについて

Gebは最近有名になってきたGroovy製のSeleniumラッパーです。普通に書くと長くなってしまうコードも簡潔にできるのが特徴です。前回の勉強会で玉川紘子さんが発表されたスライドが非常に良いのでぜひご一読をおすすめします。

脱・独自改造! GebでWebDriverをもっとシンプルに

こういう資料を見てよさそうだと思って導入しようとしても,いくつかつまずきポイントがあります。今日はそのポイントと対処法をご説明します。

環境を構築して動かすまでが遠い

Gebでドキュメントを見てみると,だいたいGradleを使っている例が多いです。GradleはGroovyの動的言語っぽさが濃く,Groovyをやったことのない人にとっては習得コストが高いです。

解決策として,Gebの公式サンプルを使うと良いです。すぐ動きますので,このサンプルに継ぎ足していって動作を見ていくのが良いのではないでしょうか。Gradle版のほか,Maven版Cucumber JVM版もあります。

また,試しに使うときはテストとプロジェクションでプロジェクトを分けるのがいいかもしれません。以前JavaのコードをGroovyコンパイラでコンパイルしたらうまくいかなかったことがありますので,Geb用のプロジェクトを立ててあげることをおすすめします。

表記が独特で戸惑う

Groovyの力でオブジェクトの隠蔽が行われているので,表記が独特です。最初は訳がわからないと思います。

解決策としては,IDEにサポートしてもらうならば,型を明示して挙げると補完が利きます。IntelliJ IDEAだとより賢くて,補完機能が優秀になっています。IntelliJ IDEAをお使いの方にはGebを強くお勧めします。Gebにはお勧めポイントがたくさんあるのですが,たとえば,テストに応じて自動でキャプチャを取得してくれるGebReportingSpecという機能もあり,なかなか便利です。

どう書いたらいいか迷う

Gebはさまざまな書き方ができるため,どう書いたらいいかわからなくなってしまうことがあります。また,ドキュメントも英語ということで若干敷居が高いです。

解決策としては,以下のような方法があります。

著者プロフィール

河原田政典(かわらだまさのり)

株式会社ベリサーブ所属。ソフトウェア開発に携わってきた経験を活かしてテスト自動化を担当。現在まさにSeleniumを扱っている。書店の技術書コーナーが大好きで,「読んだ=役立てられる」とは限らないと自戒しつつも蔵書は増える一方。本棚がいつ満杯になるか心配する日々を過ごしている。

コメント

コメントの記入