OAO

開発とかBTSとかIDEとかスクラムとか 書くかもしれないブログです たぶん

Appium1.9.1でパラレルに実機テスト(iOS)を実行する方法

並列で実機テストを実行したいけどうまく動きません!

という質問が来たので、どうやったら実行できるのか調べてみました。

ちなみにAppiumのマニュアルはこちら。
Setup for Parallel Testing - Appium

まず、SeleniumをGridモードで立ち上げます。

> java -jar selenium-server-standalone-3.141.59.jar -role hub

今回は手元にiPadが2台あるので、2台持っているノードを作っていきます。

  • iPad-1

    • wdaLocalPort:8100
    • webkitDebugProxyPort:27753
  • iPad-2

    • wdaLocalPort:8200
    • webkitDebugProxyPort:27754

ポート番号は空いている任意なものにしてください。

設定ファイル的にはこんな感じになります。

{
  "capabilities":
  [
    {
      "platformName": "iOS",
      "platformVersion": "12.0",
      "deviceName": "iPad-1",
      "browserName": "Safari",
      "language": "ja",
      "maxInstances": 1,
      "platform": "MAC",
      "udid": "<<お手元のデバイスのUDIDに変えてください>>",
      "wdaLocalPort": 8100,
      "webkitDebugProxyPort": 27753
    },
    {
      "platformName": "iOS",
      "platformVersion": "12.0",
      "deviceName": "iPad-2",
      "browserName": "Safari",
      "language": "ja",
      "maxInstances": 1,
      "platform": "MAC",
      "udid": "<<お手元のデバイスのUDIDに変えてください>>",
      "wdaLocalPort": 8200,
      "webkitDebugProxyPort": 27754
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4723/wd/hub",
    "host": "localhost",
    "port": 4723,
    "maxSession": 10,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": "localhost"
  }
}

では立ち上げていきます。

>appium ---no-reset --nodeconfig node-config.json

Selenium GridのConsoleを見に行くと2台認識しているのが見えます。

f:id:inda_re:20181129120638j:plain

サーバー側が立ち上がったらAppiumのテストの実行準備をしましょう。
今回はruby + rspec + appium_libで実行します。

Desired Capabilitiesに wdaLocalPortwebkitDebugProxyPort を設定します。
並列実行する場合には、このDesired Capabilitiesを複数用意して
各ポートがそれぞれのデバイスに向いているようにします。
今回の例ですと、 8100 / 27753 と 8200 / 27754 になります。

require "rubygems"
require "appium_lib"

desired_caps = {
  caps:{
    platformName:  "iOS",
    versionNumber: "10.0",
    deviceName:    "iPad",
    udid:          "<<お手元のデバイスのUDIDに変えてください>>",
    app:           "<<お手元のアプリへのパスに変えてください>>",
    automationName: "XCUITest",
    wdaLocalPort: 8100,
    webkitDebugProxyPort: 27753
  },
  appium_lib: {
    server_url: 'http://localhost:4723/wd/hub',
    wait: 10
  }
}

RSpec.configure { |c|
  c.before(:each) {
    @driver = Appium::Driver.new(desired_caps).start_driver
    @driver.manage.timeouts.implicit_wait = 5
    Appium.promote_appium_methods Object
  }

  c.after(:each) {
    @driver.quit
  }
}

実行すれば、それぞれの端末でテストが動作します。

余談:

Desired Capabilities - Appium

このページ内にwdaLocalPortの話1個も書いていないんだよね。。。
Appium周りはこういうのがよくあってつらい。

アジャイルコーチの道具箱 – 見える化の実例集 のレビューをしました

アジャイルコーチの道具箱 – 見える化の実例集
(Jimmy Janlén著、原田騎郎・吉羽龍太郎・川口恭伸・高江洲睦・佐藤竜也訳)
のレビューをしました。

とてもおもしろい本で、挿絵もユニークです。(ここ大事)

さらっと読める量ではありますが、 1ページ1実例なのでパラパラめくって読む方が良いと思います。
また、一つ一つの実例がよく考えられており、「あ、これおもしろいやってみよう」と思えるものが多く
記載されています。


前回のエントリ(KPTをゲームにする)は、原著に触発されて生まれたものではあるわけですが
オリジナル要素のある新しい見える化を思いついた方は、是非公開していただけると
良いなーと思います。


レビュアーの個人的な感想としては永瀬美穂やばい。

吉羽さんのブログ
www.ryuzee.com


日本語訳はこちらです!
leanpub.com

原著はこちらです!
leanpub.com

KPTをもっとゲームにする方法(キルストリーク方式)

面白くKPTを回す方法を思いついたのでメモ。

KPTフレームワーク自体は特に変更はない。

達成したいこと

  • ゲーム感覚でチーム自身の成長を見える化したい。
  • 星取表とは違い、日常に起きている事を積極的に改善できるようにしたい。
  • 星取表と連携するのも悪いアイデアではないと思うが、関連性が自分では導き出せない。

(補足)キルストリークって何?

  • FPS系のゲームにはキルストリークというのがあります。
    • 敵に倒されないで、連続して敵を倒すと、倒した数に応じてスキルが使える。
    • 倒せば倒すほど効果的なスキルが使えるようになります。
    • これをKに当てはめたものです。

基本ルール

  • チームでKPTに対し以下の目標値を設定する
    • K
      • 何スプリント持続してやれていたら、「意識しなくてもやれる状態」といえるか。
    • T
      • 基本的にKに変化してからやるのが良い気がする。
      • ただし、いつまでにやる等きめたTは下記のペナルティあり方式でやるのも良いかも。
    • P
      • 何度か登場するようなPにつけると良い?(思案中)
  • 目標値は各ふりかえりで見なおしても良い気がするが、基本見直しなしが良い?
    • 目標値の半分成功できなかったら見直すと良いか。
      • 4連続が目標だけど2連続で終わる事が2回連続した等。

持続数の数え方

  • 大きく思いついてるのは下記の方式
    • 連続達成数をカウント
    • 連続達成数をカウント(ペナルティあり)
    • 三振方式

数え方について

  • 連続達成数をカウント

    • Kに振り返り何回分持続できたら、普通にやれるようになったかをカウントできるようにする。
      • チェックでもドットシールでもなんでもok。
    • このKは何回できてる状態を維持できたら、習得できたとみなすかをチームで相談する。
      • 例えば、「ペアプロの新しい相手を探して、週に1時間ペアプロする」というTに対し
      • スプリント中に2回できたら「やれた」とみなす をまず合意する。
      • 次に何スプリント持続したら「意識しなくてもやれているか」を決める。
      • この持続スプリント数は連続でなければならない。
      • たとえば、4スプリント持続したら意識しなくてもやれているよねをチームで合意し
        4スプリント目でやれなかった場合、カウントは0に戻す。
  • 連続達成数をカウント(ペナルティあり)

    • カウントをつけるところは連続達成カウント方式と同じ。
    • 専用ルール
      • できてないとカウントがマイナスされていく。
      • マイナス何ポイントになったら罰ゲーム発動するか決めておく。
        • 例:「週にペアプロを2時間やる」というKに対し
          • 5ポイント連続したら成功
          • -5ポイントに達したら失敗
          • と成功と失敗のゴールを設定する。
          • この場合の罰ゲームはチームに食事をおごる・ケーキを買ってくる等チームに対して行うものが良い。
  • 三振方式

  • たぶんKに設定する?
    • やれてないとチームが思ったスプリントでストライクが1個カウント
    • 3個貯まると、同じフロアの別チームやPOなどご近所さんに食事をおごる・ケーキを買う・ジュースを買う等する。
  • Pに設定して、nスプリント期間中に3回同じPが出てきてほしくないと思う等に設定してもいい気がする。

Keepバーンダウン?(表現は思案中)

  • 達成して自分たちのスキルにしたKeep等にポイントを振っておく(ポイント単位や数字はなんでも良い。グミでもビングミバンサーでもなんでも。)
  • 達成ポイントに応じて、チームがなにか一つご褒美がもらえる等の仕組みを用意する。

WIP制限

  • 欲張ってカウント対象のKを増やすかもしれないが、あまりに多くのKは逆に達成できないのでカウントするKは絞ったほうが良さそう。
  • はじめはチーム人数*0.8くらいがいい?(最適値はわからない)

ここはこの方が良いのでは。ここがダサい等あると思いますが、とりあえず思いついたメモです。

CSPになりました。

CSPになれました。

f:id:inda_re:20151001153436j:plain

伊藤さん(id:hageyahhoo)のCSP申請方法記事を見ながら半年くらい放置してたんですが
たまたま、スクラム道周りでCSP取得者が増えてきたので、波に乗ってみました。

取得方法は伊藤さんのHow to acquire CSP/「認定スクラムプロフェッショナル」の資格を取得する方法 - THE HIRO Saysを参照していただくとして…

手持ちのSEUは大体申請時に使ってしまったので、Regional Scrum Gathering® Tokyo に参加するなどしてまた貯めていかないとですね。

次回の埼玉道場について

おはようございます。

多忙にターボチャージャーが付いて襲われてるいんだれです。
もう一月も終わりかけてますが
次回の埼玉道場は、2月下旬辺りに予定しています。
また、決まり次第告知します。

Windows Server 2012 RC + TFS 評価版のメモ。

メモなんだぜ!

評価目的なのできちんと使用条件を確認してくださいね。

インストールとかはまたあとで。