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
110
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
64
RubyMotion
tbugai
0
150
Other Decks in Technology
See All in Technology
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
250
Genie Codeハンズオン応用編
taka_aki
0
130
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
5
2k
自宅NWにISR4331を導入してみた話
okaits
0
110
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
100
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
350
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
250
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
280
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
130
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
2
520
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
650
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Designing for humans not robots
tammielis
254
26k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
How to make the Groovebox
asonas
2
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
870
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Faster Mobile Websites
deanohume
310
32k
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!