Turnip+Appiumで使ってキーワード駆動のシナリオテストが実施できそうね

Genymotionの制御用引数がAppiumにプルリクされている所をみて、AppiumのOSSとしての成長加速時期がき始めているのかなと感じる最近です。Appium 0.17.3の次のリリースで含まれるのでしょうか。Androidの検証基盤としても本格的な立ち位置になりそう。

今日はStory Testでお世話になるであろうData / Keyword Driven Testingを少しおさらい。

データやUI操作、検証すべき値を表形式で与えることでテストシナリオを記述・実施していくテストの形式をKeyword Driven Testing(ざっくらぱんですみません)といいます。詳しく知りたい方は、TABOKなどをお読みください。(積んどく消費したら読もう・・・)
Data driven: http://en.wikipedia.org/wiki/Data-driven_testing
Keyword driven: http://en.wikipedia.org/wiki/Keyword-driven_testing

利点は、表形式で表現することができるので、Specificaiton by Exampleのような形で開発の支援とビジネス面での検証ができることでしょうか。また、これはこの表形式で表現できる簡単な操作が連続して行われる場合、可読性上がるのではないかなと思います。

例: スマホアプリで、”xxをタップする”というような簡単な表現でシナリオのステップを実施できるストーリー

また、この形式のテストはAppium + Tuenipの組み合わせで比較的簡単に回帰テストの一部へと自動化可能ですね。

以下に具体的な例を1つ示します。
これ、パッと思い浮かぶと思うのですが、WikiやMarkdownで出力を行える変換スクリプトを用意すれば、容易にドキュメントとしても使えそうですよね。Table使ってますし。
Wikiでの管理は FitNesse を連想しますが、管理イメージはそんな感じ。
markdownなので、githubなんかでも管理できるであろうことが今時な感じでしょうか。

.featureファイルの例

Feature: Webページから任意の文字列で検索できる

Scenario: googleにアクセスし、特定の言葉を入力して検索する
  Given test with 'iphone'
  When I do action as the following steps:
    | Target | Action |
    | https://google.com | go_site |
    | ゆき| input_field |
    | |submit |
  Then display search page ?
  Then save screenshot '1'

_steps.rbの例

step 'I do action as the following steps:' do |table|
  table.hashes.each do |hash|
  case hash['Action']
  when 'go_site' then
    @driver.get hash['Target']
  when 'input_field' then
    @driver.find_element(:id, 'lst-ib').send_keys(hash['Target'])
  when 'submit' then
    @driver.find_element(:id, 'tsf').submit
  end
end

職場でも試してみようかな。。。
実験台になってくれるプロジェクトが必要になりますけど、、、

Advertisements

One thought on “Turnip+Appiumで使ってキーワード駆動のシナリオテストが実施できそうね

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s