SlideShare uma empresa Scribd logo
1 de 20
Calabash-Androidで
 BDDしようぜ!

     2012/08/16
     @patorash
Cucumberとは?
• Ruby製 のBDD用のライブラリ
• BDDとは振る舞い駆動開発の略
• 受け入れテストでよく使われる
• ユーザーストーリーを書いてそれに沿っ
 た実装をするため、仕様の漏れを失く
 せる。
なぜCucumber?



•   日本語でテストが書けるから
• ちなみにCucumberはキュウリのこと
Calabash-Androidとは?

• AndroidアプリでCucumberを使ってテス
 トできるライブラリ

• gemでインストールが可能

• ちなみにCalabashは瓜(ウリ)のこと
インストール方法

•   Android SDKをインストールしとく

•   ANDROID_HOMEという環境変数を
    定義する(Android SDKへのパス)

•   Rubyのインストールをしとく
    (ぐぐってね)

•   gem install calabash-android
初期化

•   (Androidプロジェクトで)calabash-android gen

•   以下のファイル群ができる。
    features/step_definitions/
    features/support/
    features/my_first.feature
    irb_android.sh
features/step_definitions

• ステップ処理を書くところ
• 不明なステップができたらここに書い
  ていく。Rubyで記述する。

• 日本語での対応処理をここに書く
  (後述)
こんな感じ
# coding: utf-8
require 'calabash-android/calabash_steps'

もし /^"(.*?)"ボタンを押す$/ do |text|
 step %{I press the "#{text}" button}
end

ならば /^"(.*?)"と表示されていること$/ do |text|
 step %{I should see "#{text}"}
end
features/***.feature
• テスト内容を書くところ
• ある程度決められたルールで書く
 (例)

• 前提 ログインしていること
• もし 面白いツイートをする
• ならば ふぁぼられること
デモアプリ解説

•   ログインID、パスワー
    ドを入力する。


•   OKなら次の画面へ


•   NGならトーストで
    エラー表示
まずは書く!

• my_first.featureを編集する
 (別にファイル名はなんでもいい)

• まずは好き勝手に日本語で書く!
• こうなるべきだというのを書く!
# language: ja
フィーチャ: ユーザー認証を行う。
 アプリのユーザーとして
                  ユーザーストーリーを記述
 認証を行う。
 なぜならば、ユーザー単位の情報を扱うからだ。

シナリオ: 正常にログインする
 もし ログインIDに"calabash"と入力する
 かつ パスワードに"android"と入力する
 かつ "ログイン"ボタンを押す             シナリオを記述
 かつ ダイアログが閉じるまで待つ
 ならば "SuccessActivity"画面が表示されるまで待つ
 かつ "ログインしました"と表示されていること
テスト実行

• テスト端末に対象アプリをインストール
• calabash-android run bin/calabash-sample.apk
  (引数にapkファイルを指定する)
_人人人人人人人_
  > 当然エラー <
    ̄^Y^Y^Y^Y^Y^ ̄
• stepの定義してないから。
• でも安心!!
• テストの雛形をCucumberが作ってくれ
 る!あとはコピペするだけ!楽チン!
こんなの
もし /^ログインIDに"(.*?)"と入力する$/ do |arg1|
 pending # express the regexp above with the code you wish you had
end

もし /^パスワードに"(.*?)"と入力する$/ do |arg1|
 pending # express the regexp above with the code you wish you had
end




  これをstep_definitions/***_steps.rbにコピペする
ステップの編集
もし /^ログインIDに"(.*?)"と入力する$/ do |loginId|
 step %{I enter "#{loginId}" into "LoginId"}
end

・何をしているか?
contentDescriptionが”LoginId”のEditTextにログインIDを入力している

こんな感じでどんどんステップを書いていく。


ステップ用のコードはgithubに書いてあるからそ
れを参考に日本語で定義し直せばいい。
https://github.com/calabash/calabash-android/blob/master/ruby-gem/lib/calabash-android/
canned_steps.md
実はgistにアップ済み

•   https://gist.github.com/ae31aca10f3152ad8cd0

    ※不完全だし未検証だけど
ということで、
  デモ
所感
• BDDやるにはそこそこ出来上がってる。
• 細かくテスト流すのは時間がかかって
 キツイ。受け入れテストにはよさげ。

• 事前のデータ投入などできないと思う。
 (無理矢理ループしまくるとか?)

• ユニットテストはJUnitで。
お・わ・り

Mais conteúdo relacionado

Mais procurados

今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
Y Watanabe
 

Mais procurados (20)

Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
Good-Bye Swagger
Good-Bye SwaggerGood-Bye Swagger
Good-Bye Swagger
 
Java web application testing
Java web application testingJava web application testing
Java web application testing
 
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
capybara で快適なテスト生活を
capybara で快適なテスト生活をcapybara で快適なテスト生活を
capybara で快適なテスト生活を
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜ライブラリにあらず! 〜Google Closure Toolsの事始め〜
ライブラリにあらず! 〜Google Closure Toolsの事始め〜
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
 
a-blog cms の基本 福岡版
a-blog cms の基本 福岡版a-blog cms の基本 福岡版
a-blog cms の基本 福岡版
 
Gradle布教活動
Gradle布教活動Gradle布教活動
Gradle布教活動
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
 
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
 

Semelhante a Calabashでbddしようぜ

[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
Amazon Web Services Japan
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
tantack
 

Semelhante a Calabashでbddしようぜ (20)

[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
 
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
AWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguroAWS SDK for Go in #jawsmeguro
AWS SDK for Go in #jawsmeguro
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
Casper js エスキュービズム勉強会0718
Casper js エスキュービズム勉強会0718Casper js エスキュービズム勉強会0718
Casper js エスキュービズム勉強会0718
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
Tech fun rails_workshop
Tech fun rails_workshopTech fun rails_workshop
Tech fun rails_workshop
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Application Deployment on AWS
Application Deployment on AWSApplication Deployment on AWS
Application Deployment on AWS
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみたOpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
 
AndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使うAndroidでActiveRecordライクにDBを使う
AndroidでActiveRecordライクにDBを使う
 
Adobe JSX入門
Adobe JSX入門Adobe JSX入門
Adobe JSX入門
 
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
Anchors Aweigh!! - re:Invent報告@re:Port 2016 大阪
 
第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料第1回名古屋Android勉強会Lt用資料
第1回名古屋Android勉強会Lt用資料
 
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
 

Mais de 豊明 尾古

KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみたKotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた
豊明 尾古
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
豊明 尾古
 

Mais de 豊明 尾古 (20)

OSS-DB 取得のススメ
OSS-DB 取得のススメOSS-DB 取得のススメ
OSS-DB 取得のススメ
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について
 
ActiveRecord::Enumのススメ
ActiveRecord::EnumのススメActiveRecord::Enumのススメ
ActiveRecord::Enumのススメ
 
便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips便利なHerokuと active recordの 速度改善tips
便利なHerokuと active recordの 速度改善tips
 
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有するウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
 
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
 
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
 
KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみたKotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 
Kotlinの紹介
Kotlinの紹介Kotlinの紹介
Kotlinの紹介
 
Slimの紹介
Slimの紹介Slimの紹介
Slimの紹介
 
Rubotoを試してみた
Rubotoを試してみたRubotoを試してみた
Rubotoを試してみた
 
Successful git
Successful gitSuccessful git
Successful git
 
アプリ内課金してみた
アプリ内課金してみたアプリ内課金してみた
アプリ内課金してみた
 
Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座
 
Android 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみてAndroid 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみて
 
Gae開発入門
Gae開発入門Gae開発入門
Gae開発入門
 
ABC2011 Winter #jag4
ABC2011 Winter #jag4ABC2011 Winter #jag4
ABC2011 Winter #jag4
 

Último

Último (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Calabashでbddしようぜ

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n