getting “test”-y · 2011. 7. 17. · ios saturday, july 16, 2011. your ... saturday, july 16,...

55
Getting “Test”-y Test-driven Development & Automated Deployment for iOS Saturday, July 16, 2011

Upload: others

Post on 20-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Getting “Test”-yTest-driven Development & Automated Deployment for

iOS

Saturday, July 16, 2011

Page 2: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Your Humble Speakers

• Jonah Williams - @Zalambar

• Rudy Jahchan - @rudy

Saturday, July 16, 2011

Page 3: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

How do we test?

Saturday, July 16, 2011

Page 4: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

How do we test?

SenTestingKit

GTM

Cedar

KiwiKIF

GHUnit

OCMock

OCHamcrest

Frank

iCuke

Saturday, July 16, 2011

Page 5: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test?

Saturday, July 16, 2011

Page 6: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test?

To make sure our code works(duh!)

Saturday, July 16, 2011

Page 7: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test FIRST?

Saturday, July 16, 2011

Page 8: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test FIRST?

To design our code.

Saturday, July 16, 2011

Page 9: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test FIRST?

To design our code.(duh!)

Saturday, July 16, 2011

Page 10: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Why do we test FIRST?

Saturday, July 16, 2011

Page 11: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

Saturday, July 16, 2011

Page 12: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

Saturday, July 16, 2011

Page 13: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

WHEN

Saturday, July 16, 2011

Page 14: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

WHEN

THEN

Saturday, July 16, 2011

Page 15: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

WHEN

THEN

certain conditions

Saturday, July 16, 2011

Page 16: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

WHEN

THEN

certain conditions

something happens

Saturday, July 16, 2011

Page 17: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Test Structure

GIVEN

WHEN

THEN

certain conditions

something happens

the conditions change (or don’t)

Saturday, July 16, 2011

Page 18: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Unit Testing

Saturday, July 16, 2011

Page 19: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Unit Testing

Saturday, July 16, 2011

Page 20: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Sample Class

Saturday, July 16, 2011

Page 21: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

xUnit Style

Saturday, July 16, 2011

Page 22: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

SenTestingKit

Saturday, July 16, 2011

Page 23: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

OCHamcresthttp://bit.ly/ochamcrest

Saturday, July 16, 2011

Page 24: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Stubbing & Mocking

Saturday, July 16, 2011

Page 25: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

OCMock

http://bit.ly/qktX3H

Saturday, July 16, 2011

Page 26: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

GTMhttp://bit.ly/gtmtest

Saturday, July 16, 2011

Page 27: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

GHUnithttp://gabriel.github.com/gh-unit/

Saturday, July 16, 2011

Page 28: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

BDD

Saturday, July 16, 2011

Page 29: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

BDD

Behavior Driven Design

Saturday, July 16, 2011

Page 30: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

RSpec

http://github.com/rspec/rspec

Saturday, July 16, 2011

Page 31: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

RSpec Book

Saturday, July 16, 2011

Page 32: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Cedar

http://github.com/pivotal/cedar

Saturday, July 16, 2011

Page 33: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Kiwi

http://kiwi-lib.info/

Saturday, July 16, 2011

Page 34: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Integration Tests

Saturday, July 16, 2011

Page 35: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Cucumber

http://cukes.info/

Saturday, July 16, 2011

Page 36: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

iCuke

http://github.com/unboxed/icuke

Saturday, July 16, 2011

Page 37: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

iCuke

http://github.com/unboxed/icuke

Saturday, July 16, 2011

Page 38: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Frank

http://github.com/moredip/Frank

Saturday, July 16, 2011

Page 39: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

KIFhttp://github.com/square/KIF

Saturday, July 16, 2011

Page 40: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

KIF

http://github.com/square/KIF

KeepItFunctional

Saturday, July 16, 2011

Page 41: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

KIF

http://github.com/square/KIF

Saturday, July 16, 2011

Page 42: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Continuous Integration

Saturday, July 16, 2011

Page 43: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Command-Line Builds

Saturday, July 16, 2011

Page 44: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Command-Line Execution

Saturday, July 16, 2011

Page 45: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Bash

http://gist.github.com/949831

➜ ~ ./build.sh...**** Describe WorkspaceAvailable schemesInformation about workspace "My_App":    Schemes:        Ad Hoc        Development**** Set EnvironmentMy_App/My_App/staging-Info.plist -> ~/TeamCity/build-agent-1/work/My_App_staging/My_App/My_App/My_App-Info.plistMy_App/My_App/staging.plist -> My_App/My_App/environment.plistEnvironment set to com.MyCompany.My_App.staging at version 1.0**** Increment Bundle VersionSetting version of project My_App to:     24....**** BuildRunning xcodebuild > xcodebuild_output ......Retrieving build products......**** Package ApplicationCodesign as "iPhone Distribution: MyCompany, LLC", embedding provisioning profile ~/TeamCity/build-agent-1/work/My_App_staging/ad_hoc/My_App_Staging_Ad_Hoc.mobileprovision**** Verify...**** Prepare OTA DistributionGenerating com.MyCompany.My_App.staging.app.plist**** Complete!

Saturday, July 16, 2011

Page 46: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Rake

http://gist.github.com/1017153

Saturday, July 16, 2011

Page 47: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Over The Air Distribution

Saturday, July 16, 2011

Page 48: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

OTA: Roll Your Own<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key><string>software-package</string> <key>url</key><string>$artifacts_url/$project_app.ipa</string> </dict> <dict> <key>kind</key><string>full-size-image</string> <key>needs-shine</key><true/> <key>url</key><string>$artifacts_url/$full_size_image_name</string> </dict> <dict> <key>kind</key><string>display-image</string> <key>needs-shine</key><true/> <key>url</key><string>$artifacts_url/$display_image_name</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>$bundle_identifier</string> <key>bundle-version</key><string>$short_version_string $build_number</string> <key>kind</key><string>software</string> <key>subtitle</key><string>$environment_name</string> <key>title</key><string>$project_app</string> </dict> </dict> </array></dict></plist>

itms-services://?action=download-manifest&url=http://host.example/project_name.acceptance.app.plist

Saturday, July 16, 2011

Page 49: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

OTA: TestFlight

http://testflightapp.com/

Saturday, July 16, 2011

Page 50: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

What’s Missing?

Saturday, July 16, 2011

Page 51: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Factories

Saturday, July 16, 2011

Page 52: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Factories

Saturday, July 16, 2011

Page 53: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Fixtures

Saturday, July 16, 2011

Page 54: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

CoreData Migrations

Saturday, July 16, 2011

Page 55: Getting “Test”-y · 2011. 7. 17. · iOS Saturday, July 16, 2011. Your ... Saturday, July 16, 2011. How do we test? SenTestingKit GTM Cedar Kiwi KIF GHUnit OCMock OCHamcrest Frank

Auto-testingguard integration

https://github.com/guard/guard

Saturday, July 16, 2011