Podサービス品質向上ブログ採用情報お問い合わせSeleniumテスト結果を見やすくするツール「Sahagin」を公開しました2015/01/05227145TRIDENTでは、主にSeleniumを活用したテスト自動化支援サービスを提供していますが、実際にSeleniumを利用する上で次のような課題があると感じていました。保守性・柔軟性の観点から、プログラミング言語でスクリプトを書くことをお勧めしたいが、そうなると非プログラマがスクリプトやエラー内容を理解しにくくなる。1ステップごと、もしくはエラー発生時に画面キャプチャを取得し、テスト結果画面から確認できるようにするための作り込みと設定が面倒。この課題を解決し、Seleniumをもっと使いやすいものにするために、SahaginというHTMLレポートツールを作ってオープンソースで公開しました。現在ベータ版ですが、今日はその機能について紹介したいと思います。WebDriverプログラム中で利用するメソッドに日本語で説明文(アノテーション)を付けておくと、そこから読みやすい表形式のテスト結果レポートを生成してくれるツール」です。IDEをはじめ多数ありますが、Sahaginは、プログラミング言語でスクリプトを書く利点である、「柔軟な記述力」と「共通化による保守性の向上」を最大限損わないようにしつつ、テスト結果を読みやすくしている点が特徴です。いうことで早速利用例を見てみましょう。ページオブジェクトパターンを実践しているならWebDriverでスクリプトを書く場合、UI変更時のスクリプト修正の手間を軽減するために「Webページへの操作は、ページごとのクラスを作って1カ所にまとめる」のがお勧めです。これを「ページオブジェクトパターン」といい、この技法は広く利用されています。1このパターンを実践している場合、ページごとの操作をまとめたクラス(「ページクラス」と言います)の各メソッドに@TestDocアノテーションでメソッドの説明を書いておきます。}}テストスクリプト中での画面操作はこのページクラスを介して行います。contact.send();}テストを実行すると、図3のようなHTMLレポートが生成されます。HTMLレポートWebDriverコマンドをそのまま利用しているならクリックやキー入力などの基本操作は、@TestDocアノテーションを記述しなくても勝手に日本語表示してくれます。HTMLレポートテスト用に独自フレームワークを作っているなら「うちは、スクリプトを書きやすくするために独自フレームワークを作ってるんでね」という場合でも心配はいりません。その独自メソッドに@TestDocアノテーションを付ければいいのです。HTMLレポートこれまで使っていたメソッドや継承元クラスもそのまま使えます。既存フレームワークとの組み合わせの容易さもSahaginの特徴の1つです。呼び出したメソッドの先も階層表示テスト中から呼び出しているメソッドの内容は、何段階でも階層表示することができます。共通メソッドの中身も確認でき、スクリプトの内容が把握しやすくなります。画面キャプチャ@TestDocアノテーションが付けられた各ステップの画面キャプチャと、エラー発生時の画面キャプチャは自動的に取得されます。HTMLレポート上では、上下キーで移動しながら、1ステップごとの動作をサクサク確認できます。エラー行ハイライトエラー行は、レポート上で赤色に表示されます。失敗テストのHTMLレポートJenkinsでテスト結果を確認Jenkinsプラグインを入れれば、JUnit形式テストレポート画面から、各テストスクリプトの内容をSahaginで確認できます。Jenkinsテスト結果からSahaginレポートへのリンクJenkinsのテスト結果とSahaginを組み合わせることで、エラーテストの調査がぐっと楽になるはずです。テスト内容の共有も容易になるので、他の開発者やお客様に向けて「今こんなテストが自動化されています!」とアピールしやすくなります。現在の最新バージョンでは、下記の環境に対応しています。WebDriver、FluentLenium、Appium、Selendroid、ios-driverRubyなど他のプログラミング言語への拡張も考慮して設計しているので、今後そちらにも展開していきたいと思っています。Objects」や「4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス」が参考になります。[↩]@TestDocアノテーションがついていないメソッドの内容は階層表示できません。[↩]JUnit3にはSahagin0.6以降、TestNGにはSahagin0.8以降、FluentLeniumにはSahagin0.4以降、Appium・Selendroid・ios-driverにはSahagin0.6以降で対応しています。コメントをキャンセルメールアドレスが公開されることはありません。プライバシー・ポリシ。