Seleniumのテスト結果レポートをもっとおしゃれに


今日は、JUnitなどから実行したSeleniumテスト結果を、Allure Frameworkというオープンソースのレポートツールを使っておしゃれに表示する方法を、そのインストール手順とともにご紹介します。


Allure Frameworkとは

Allure Frameworkは、JUnit、RSpec、PHPUnit、Cucumberなど様々なテストフレームワークのテスト実行結果を、リッチなHTML形式のレポートで確認できるフレームワークです。

こんなレポートや、



こんなレポート、



こんなレポートが出力できます。



Seleniumを使わないユニットテストにも利用できます。レポートをJenkins上で表示することも可能です。

Allure Frameworkのデモページ(Allure FrameWork Webサイトの「Demo Report」)では、生成されたHTMLレポートを実際に触ることができます(先ほどの画面ショットもデモページのものです)。JavaScriptを活用した動きのある画面で、非常に作り込まれています。

Allure Frameworkの開発は、ロシアの検索・ポータルサイト大手Yandexのエンジニアが中心となって進められています。Allure Frameworkの名前は日本ではまだほとんど聞きませんが、海外ではSeleniumカンファレンス 2014Elemental Selenium※1で取り上げられ、少しずつ認知されて来ているのではないかと思います。

インストール(Eclipse + JUnit4 + Maven)

それでは、早速インストールしてみましょう。今回は、Eclipse + JUnit4 + Mavenの例で説明します。

他のテストフレームワークでのインストール手順はこちらが参考になりますが、筆者が少し調査した範囲でも、「JUnit3で利用するには自前で処理を実装する必要がある」 ※2「Antは未対応」 ※3「GradleはJUnit未対応、TestNGであれば対応」※4 などかなり制約がありました。今回のMavenでのインストールもけっこう苦戦したので、まだ荒削りな部分が色々ありそうです。

EclipseのMavenのバージョンの確認

Allure Frameworkを使う場合、Mavenのバージョンを3.1.1以上にする必要があります。Eclipseにデフォルトで入っているMavenを使うと意外にバージョンが古いことがあるので、ここは確認が必要です。Windows PC + Eclipseの場合、以下の手順を実施してください。

  • 「ウィンドウ > 設定 > Maven > インストール」から、Eclipseで利用しているMavenのバージョンを確認します。
  • バージョンが3.1.1未満の場合は、コマンドライン用のMavenをPCにインストールし、Eclipseの「ウィンドウ > 設定 > Maven > インストール」の「追加」ボタンから、インストールしたMavenのインストールディレクトリ(binやlibなどを含むディレクトリ)を指定します(図1)。

図1 EclipseのMavenインストール設定

図1 EclipseのMavenインストール設定


pom.xmlの設定

続いて、pom.xmlを図2のように設定します。Allure Frameworkは、テストフレームワークごとの埋め込みロジック(Adapter)と、HTMLレポートの生成ロジック(Report)から構成されており、pom.xmlでも対応する2種類のライブラリを指定しています。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2005/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>seleniumDemo</groupId>
  <artifactId>seleniumDemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
  </properties>  
  <dependencies>

    <!-- dependency for Adapter -->
    <dependency>
      <groupId>ru.yandex.qatools.allure</groupId>
      <artifactId>allure-junit-adaptor</artifactId>
      <version>1.4.4</version>
    </dependency>
    <!-- dependency for Adapter -->

  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>

      <!-- unit test run setting for Adapter -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.14</version>
        <configuration>
          <testFailureIgnore>false</testFailureIgnore>
          <argLine>
            -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/1.8.3/aspectjweaver-1.8.3.jar
          </argLine>
          <properties>
            <property>
              <name>listener</name>
              <value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
            </property>
          </properties>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.3</version>
          </dependency>
        </dependencies>
      </plugin>
      <!-- unit test run setting for Adapter -->

    </plugins>
  </build>

  <!-- Setting for Report -->  
  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
      <plugin>
        <groupId>ru.yandex.qatools.allure</groupId>
        <artifactId>allure-maven-plugin</artifactId>
        <version>2.0</version>
        <configuration>
          <reportVersion>1.4.4</reportVersion>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
  <!-- Setting for Report -->  

</project>

なお、Report用プラグインのrepotVersionの値がAdapterのバージョンに一致していないと、うまく動作しないことがあるので注意が必要です。pom.xmlに記載したバージョン番号は、2014年11月26日時点で動作確認がとれた最新のバージョン番号の組み合わせを記載しています。

実行

pom.xmlを作成したら、以下の手順でMavenのビルドを実行します。

  1. ゴールを「test」にしてビルドを実行すると、target/allure-results以下にHTMLレポートの元となるXMLファイルが生成されます。
  2. 続いてゴールを「site」にしてビルドを実行すると、デフォルトではtarget/site/allure-maven-plugin以下にレポートのindex.htmlが生成されます。

ビルドの際には、「実行の構成」にてMaven ランタイムのバージョンが3.1.1以上であることを確認してください。

トラブルシューティング

筆者が遭遇したトラブルをご紹介します。

Q:  レポート生成中に「No implementation for org.eclipse.aether.RepositorySystem was bound.」というエラーが発生する。

A: Mavenのバージョンが3.1.1より古い可能性が高いです。

Q: レポート生成中に「An attribute node (version) cannot be created after the children of the containing element」というエラーが発生する。

A: AdapterとReportのライブラリのバージョン番号が一致していない可能性が高いです。

Q: レポートのindex.htmlをChromeやIEで開くと「Your report seems to be broken!」というエラーが発生する。

A: セキュリティ上の問題からうまく動作しないようです。後述のJenkinsからレポートを確認する方法なら、ChromeやIEでも開けます。

Q: テストが1つも実行されない。

A: Mavenでテストを実行する場合、テストファイル名はデフォルトでは「Test*.java」「*Test.java」「*TestCase.java」のいずれかにする必要があります※5。基本的なことですが念のため。

Jenkinsとの連携

続いて、Maven + Jenkins上でHTMLレポートを出力・確認する手順です。pom.xmlは先ほどのものをそのまま使用します。Reportの設定部分については、pom.xmlを使わずJenkinsのプラグインを利用するので、不要な場合は削除しても構いません。

Allure Jenkins Pluginのインストール

Jenkins画面の、「Jenkinsの管理 > プラグインの管理 > 利用可能」から「Allure Jenkins Plugin」を選択してインストールします。

ジョブの設定

続いて、ジョブ設定にて、以下の処理を追加します。

  • 「ビルド」に「Mavenの呼び出し」を追加し、ゴールに「test」を指定します。
  • 「ビルド後の処理」に「Allure Report Generation」を追加し、「Report Version」を「Custom」にし「1.4.4」を指定します。(図3)

図3 Allure Report Generationの設定

図3 Allure Report Generationの設定


実行

設定が完了したらジョブを実行します。ジョブが完了すると、ビルド結果の画面に「Allure Report」へのリンクが表示されます。(図4)


図4 Allure Reportへのリンク

図4 Allure Reportへのリンク


Allure Frameworkには他にも色々機能があるので、また今後も紹介していきたいと思います。

ちなみに、この記事はSelenium Advent Calendar 2014の1日目の記事です。Selenium Advent Calendar 2014は、まだまだ参加者募集中です!

注釈・出典


関連記事

この記事のハッシュタグ から関連する記事を表示しています。
図7 Eclipse上で見たディレクトリ構成

Seleniumテスト結果を見やすくするツール「Sahagin」を公開しました - Part 2

Seleniumテスト結果を見やすくするツール「Sahagin」を公開しました

Seleniumテスト結果を見やすくするツール「Sahagin」を公開しました

テスト自動化とSeleniumのコミュニティがどのように日本に普及したか

テスト自動化とSeleniumのコミュニティがどのように日本に普及したか

CircleCIクラウド環境でSeleniumテストを実行する

CircleCIクラウド環境でSeleniumテストを実行する

企業向けSelenium自動テスト講座を公開しました

企業向けSelenium自動テスト講座を公開しました

図1 SahaginによるFluentLeniumテスト結果レポート

FluentLeniumでJavaのSeleniumスクリプトをシンプルに - 後編

最新記事

人気の記事

アーカイブ

タグ