狠狠撸

狠狠撸Share a Scribd company logo
Appiumのテスト結果レポートを
Sahaginで作ってみる
2015.03.19
伊藤 望(TRIDENT)
自己紹介
? 伊藤 望
? 会社
? 株式会社TRIDENT 代表取締役
? テスト自動化の支援を行うベンチャー
? www.trident-qa.com (ブログあり)
? コミュニティ
? 「日本Seleniumユーザーコミュニティ」主宰
? テスト自動化研究会
本日のトピック
1. Appium
2. Sahagin
3. Appium + Sahagin
4. その他モバイルテストツール
5. はまったこと
1. Appium
? モバイル向け自動テストツール
? Seleniumと同じようなコマンド体系
? iOS & Android
? スマホ & タブレット
? エミュレータ & 実機
? ブラウザ & ハイブリッド & ネイティブ
2. Sahagin
? Selenium WebDriverテスト結果のHTMLレポー
トツール
? 今のところJavaのみ対応
? オープンソース
? http://blog.trident-qa.com/2015/01/sahagin-
first-release-1/
Sahagin Selenium 検索
2. Sahagin
できること①
? Seleniumのテストコードから、日本語 + 画面
キャプチャのレポートを自動生成
2. Sahagin
できること①
? こんなSeleniumテストスクリプトから
@Test
public void 問い合わせが成功すること() {
driver.get("http://www-demo.trident-qa.com/contact/");
driver.findElement(
By.name("your-name")).sendKeys("テストユーザー");
driver.findElement(
By.name("your-email")).sendKeys("***@***.com");
driver.findElement(
By.name("your-organization")).sendKeys("TRIDENT");
driver.findElement(
By.name("your-subject")).sendKeys("テスト");
driver.findElement(
By.name("your-message")).sendKeys("テスト送信です");
driver.findElement(
By.cssSelector("input.wpcf7-submit")).click();
2. Sahagin
できること①
? こんなテストレポートが生成されます
2. Sahagin
できること①
? 表示切替で、テストコードの内容も見られます
2. Sahagin
できること①
? SeleniumのコマンドやAssertコマンドを自動的
に日本語に変換
driver.findElement(
By.name("your-name")).sendKeys("テストユーザー")
要素「name = your-name」に「テストユーザー」を入力
assertThat(driver.getTitle(), is("検索結果"))
「ページタイトル」が「検索結果」に等しいことをチェック
2. Sahagin
できること②
? 自分で定義した独自のメソッドも日本語化
2. Sahagin
できること②
? 問い合わせ画面ヘの処理をまとめたContactPage
クラス
public class ContactPage {
public void setName(String name) {
driver.findElement(
By.name("your-name")).sendKeys(name);
}
public void setMail(String email) {
driver.findElement(
By.name("your-email")).sendKeys(email);
}
……
2. Sahagin
できること②
? ContactPageクラスを利用したテスト
@Test
public void 問い合わせが成功すること() {
driver.get("http://www-demo.trident-qa.com/contact/");
ContactPage contact = new ContactPage(driver);
contact.setName("テストユーザー");
contact.setMail("***@***.com");
contact.setOrganization("TRIDENT");
contact.setSubject("テスト");
contact.setMessage("テスト送信です");
contact.send();
}
2. Sahagin
できること②
? ContactPageクラスに@TestDocで説明を追加すると、
@Page("問い合わせページ")
public class ContactPage {
@TestDoc("名前に「{name}」をセットする")
public void setName(String name) {
driver.findElement(
By.name("your-name")).sendKeys(name);
}
@TestDoc("メールアドレスに「{email}」をセットする")
public void setMail(String email) {
driver.findElement(
By.name("your-email")).sendKeys(email);
}
2. Sahagin
できること②
? こんなテストレポートが生成されます
2. Sahagin
できること②
? メソッドの中身も階層表示で開けます
2. Sahagin
想定している使い方
? 開発?テストチームで実施しているSeleniumテスト
の内容を、
? 上司にアピール!
? お客様にアピール!
? テストに興味ない隣の席の人にアピール!
? 他人が作成したテスト内容が把握しやすい
? テスト失敗時のエラー調査が効率的に
? 不具合を起こした人に、何がどう失敗しているか説明し
やすい
? Appiumのスクリプトもレポートにできます
? レポートはJenkins上でも確認できます
3. Appium + Sahagin
? iOSネイティブアプリのテスト
? Appiumテストは、Jenkinsから実行
3. Appium + Sahagin
デモ
? Jenkins Sahaginプラグインをインストール
? テストの前後にappiumサーバーの起動?終了処理
? シェルスクリプトでバックグラウンドプロセスとして起動し
ようとしたが、うまくいかなかった
? Javaテストコードの初期処理で、テスト実行前にAppium
サーバーを起動
3. Appium + Sahagin
Jenkinsの設定
3. Appium + Sahagin
色々な組み合わせ
? iOS(ネイティブアプリ) + Sahagin
? Android(ブラウザ、タブレット) + Sahagin
3. Appium + Sahagin
色々な組み合わせ
3. Appium + Sahagin
色々な組み合わせ
? Android(ネイティブアプリ) + Sahagin
? デモで使用したコード
? https://github.com/SahaginOrg/sample-code
? パスがベタ書き等、雑なサンプルなので注意
? サンプルレポート
? http://sahaginorg.github.io/sample-report/
? ブラウザから見られます(Safari以外)
3. Appium + Sahagin
サンプル
4. その他モバイルテストツール
Selendroid
? Selendroid(ブラウザ) + Sahagin
4. その他モバイルテストツール
? ios-driver
? XCode6に未対応
? XCode5もSNAPSHOT版でしか対応していない
? たぶんSahaginで動くが未検証
? Robotium、Espresso
? JUnitランナー起動時にJVMに引数を渡せない(たぶん)
? 大変そうなので、今回は対応見送り
5. はまったこと
? Androidエミュレータ上のブラウザで画面キャプチャ
が取れない
? chromeDriverの問題っぽい
? https://groups.google.com/forum/#!topic/appium-
discuss/FvXnwzx9bK0
? キャプチャ処理の前後で”NATIVE_APP”にコンテキストを
変更すれば動く
? Sahaginのバージョンアップで対応予定
5. はまったこと
? XCode6.2で、シミュレータのSafariが動かない
? iOS8のシミュレータ:
? ウェブサイトにHTTP接続できない(HTTPSはできる)
? XCode再インストールで直るといいな..
? https://groups.google.com/forum/?hl=en#!topic/seleniumjp/5gbQzvxuMa4
? iOS7のシミュレータ:
? XCode6.2のinstrumentのバグで、下位バージョンのシミュ
レータが動かせない
? https://github.com/appium/appium/issues/4708#issuecomment-82410338
5. はまったこと
? Appiumの画面キャプチャ取得が遅すぎる
? 全ステップの画面キャプチャをとらないオプションをつける
(Sahaginのバージョンアップで対応予定)
? シミュレータに関しては、デスクトップ上のウィンドウの画
面キャプチャを取るのもありかも
5. はまったこと
? Jenkinsをルートユーザーで起動していると..
? Jenkinsビルド中からappiumサーバーを起動するときにエ
ラーになる(appiumサーバーはsudoで起動できない)
Sahagin
? 現在も開発継続中
? Geb & Spock対応
? HTMLレポートのカスタマイズ機能
? フィードバックもお待ちしてます
ご清聴ありがとうございました

More Related Content

础辫辫颈耻尘のテスト结果レホ?ートを蝉补丑补驳颈苍て?作ってみる