Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A Frank Discussion About iOS BDD
Search
Tim Bugai
May 27, 2014
Technology
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A Frank Discussion About iOS BDD
Tim Bugai
May 27, 2014
More Decks by Tim Bugai
See All by Tim Bugai
Automate All The Things!
tbugai
0
62
RubyMotion
tbugai
0
140
Other Decks in Technology
See All in Technology
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
180
現場のトークンマネジメント
dak2
1
190
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
290
ぼっちではじめた登壇が「51名」「241件」の発信に化けた
subroh0508
1
320
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.6k
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
120
【FinOps】データドリブンな意思決定を目指して
z63d
2
420
徹底討論!ECS vs EKS!
daitak
3
1.7k
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
190
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.1k
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
550
toB プロダクトから見たWAF
tokai235
0
210
Featured
See All Featured
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Exploring anti-patterns in Rails
aemeredith
3
430
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Unsuck your backbone
ammeep
672
58k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How STYLIGHT went responsive
nonsquared
100
6.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
HDC tutorial
michielstock
2
720
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
66
55k
Transcript
collectiveidea.com A Frank Discussion About iOS BDD Tim Bugai collectiveidea.com
@timbugai
collectiveidea.com About Me… • B.S. in C.S. from GVSU •
Software Developer for 5+ years professionally. • Lead iOS Developer at Collective Idea • Woodworker
collectiveidea.com Collective Idea • Ruby on Rails, DevOps, and mobile
development shop • Holland, MI
collectiveidea.com Tenn Pinn Simple bowling average tracker. ! tenpinn.com
collectiveidea.com Dead Man’s Snitch Dead Simple Periodic Process Monitoring !
deadmanssnitch.com
collectiveidea.com Downside Pay attention to your friends… ! downsideapp.com
collectiveidea.com Demo Application
collectiveidea.com HarmonyApp
collectiveidea.com Mockups • Login page
collectiveidea.com Mockups • UICollectionView of a users sites
collectiveidea.com Mockups • UICollectionView of pages for the selected site
collectiveidea.com Harmony API • Application/JSON • RESTfull endpoints • Authentication
collectiveidea.com BDD
collectiveidea.com Framework Options • UISpec • Zucchini • Frank
collectiveidea.com UISpec • Objective-C • [[app.navigationButton.label text:@"Save"] touch]; • Last
updated April, 2013 • iOS 7 support?
collectiveidea.com Zucchini • UIAutomation wrapper • Screen Objects (Coffeescript) •
Ruby DSL
collectiveidea.com Zucchini class BooksScreen extends Screen anchor: -> view.navigationBars()["Books"] constructor:
-> super 'books' extend @elements, 'Edit' : -> view.navigationBars()[0].buttons()["Edit"], 'Add' : -> view.navigationBars()[0].buttons()["Add"] extend @actions, 'Scroll to "([^"]*)"$': (elementName) -> view.tableViews()[0].scrollToElementWithName(elementName)
collectiveidea.com Zucchini Start on the "Books" screen: Take a screenshot
Tap "Add"
collectiveidea.com Frank • Cucumber for iOS • Ruby • Client/Server
architecture • Symbiote
collectiveidea.com Accessibility Labels
collectiveidea.com Setup Frank • gem install frank-cucumber • frank setup
• frank build • frank launch —idiom=ipad
collectiveidea.com First Test Given I launch the app using iOS
7.0 and the iPad simulator And I am on the login page ! When I enter the username “
[email protected]
” And I enter the password “glsec2014” And I touch “Sign In” ! Then I should be on the sites page
collectiveidea.com Step Definitions Given(/^I am on the login page$/) do
check_element_exists “view marked:’username’” end
collectiveidea.com !! Live Code Ahead !!
collectiveidea.com Unit Tests
collectiveidea.com Unit Test Options • XCTest • specta & expecta
• Cedar
collectiveidea.com XCTest • Native to Xcode 5.1 • Replaces SenTest
• XCTAssertEqual, XCTAssertNotEqual, etc
collectiveidea.com Specta & Expecta • RSpec-like Syntax • XCTest •
expect([bar isBar]).to.equal(YES);
collectiveidea.com Cedar • Created by Pivotal Labs • RSpec-like block
syntax • Native mocking ability
collectiveidea.com API Tests • Mock network responses
collectiveidea.com Continuous Integration
collectiveidea.com Travis CI • travis-ci.org
collectiveidea.com travis.yml language: objective-c ! before_install: bundle install script: frank
build && bundle exec cucumber Frank
collectiveidea.com Xcode Test Server • Local Repos • Remote Repos
(remote polling)
collectiveidea.com Questions?
collectiveidea.com Thanks!