SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
PUCELA TESTING DAYS

TESTING EN IOS

J O R G E M A R O T O G A R C Í A ( @ PA T O R O C O )
AGILECYL - 30 NOVIEMBRE 2013
Hola
 Jorge

Maroto García.

 [xxx]-Developer
 +3

años jugando con iOS.

 Fanboy.
DISCLAIMER

• Charla introductoria.
• Presentación CDD


(Coffee Driven Development).

• Playback.
• Tiempo indeterminado.
DISCLAIMER
XCODE. EL IDE.
FRAMEWORKS DE TESTING
• OCUnit (< iOS7)
• XCTest (iOS7)
• GHUnit (https://github.com/gh-unit/gh-unit)
OCUNIT
STAssertTrue(expression, msg, ...)

STAssertEqualObjects(a1, a2, msg, ...)

STAssertEquals(a1, a2, msg, ...)

STAssertEqualsWithAccuracy(a1, a2, msg, ...)

STFail(msg, ...)

STAssertNil(a1, msg, ...)

STAssertNotNil(a1, msg, ...)

STAssertTrueNoThrow(expression, msg, ...)

STAssertFalse(expression, msg, ...)

STAssertFalseNoThrow(expression, msg, ...)

STAssertThrows(expression, msg, ...)

STAssertThrowsSpecific(expression, exception, msg, ...)

STAssertThrowsSpecificNamed(expression, exception, name, msg, ...)

STAssertNoThrow(expression, msg, ...)

STAssertNoThrowSpecific(expression, exception, msg, ...)

STAssertNoThrowSpecificNamed(expression, exception, msg, ...)
XCTEST
XCTFail (format…)

XCTAssertNil (a1, format…)

XCTAssertNotNil (a1, format…)

XCTAssert (a1, format…)

XCTAssertTrue (a1, format…)

XCTAssertFalse (a1, format…)

XCTAssertEqualObjects (a1, a2, format…)

XCTAssertEquals (a1, a2, format…)

XCTAssertEqualsWithAccuracy (a1, a2, accuracy, format…)

XCTAssertThrows (expression, format…)

XCTAssertThrowsSpecific (expression, specificException, format…)

XCTAssertThrowsSpecificNamed (expression, specificException, exceptionName, format…)

XCTAssertNoThrow (expression, format…)

XCTAssertNoThrowSpecific (expression, specificException, format…)

XCTAssertNoThrowSpecificNamed (expression, specificException, exceptionName, format…)
TEST LIFECYCLE
• +(void)setup
• +(void)tearDown
• -(void)setup
• -(void)tearDown
• -(void)test<whatever>
T D D . C A L C U L AT O R 3 0 0 0 .
M I E N T R A S TA N T O E N E L
MUNDO REAL…
CLASES DE UTILIDAD
EJEMPLO REAL: MAPEAR JSON
EJEMPLO REAL: MAPEAR JSON
EJEMPLO REAL: TORPEZA
EJEMPLO REAL: TORPEZA
EJEMPLO REAL: TORPEZA
EJEMPLO REAL: SINGLETON
• API en singleton.
• I de FIRST.
• ¿Cómo inyecto la API en un test?
EJEMPLO REAL: SINGLETON
• API en singleton.
• I de FIRST.
• ¿Cómo inyecto la API en un test?
• Ideaca: usar @property para apuntar a la API y así puedo

‘allocar’ un singleton distinto en cada test.
EJEMPLO REAL: SINGLETON
• API en singleton.
• I de FIRST.
• ¿Cómo inyecto la API en un test?
• Ideaca: usar @property para apuntar a la API y así puedo

‘allocar’ un singleton distinto en cada test.

• Consecuencias: subclasear para testing.
C H A P U ZA
¡AÚN QUEDA ESPERANZA!

https://github.com/jonreid/OCMockito
O C M O C K I T O : I N S TA L A C I Ó N

*Presentación CocoaPods: http://maroto.me/ttzc
O C M O C K I T O : I N S TA L A C I Ó N
OCMOCKITO: EJEMPLOS
OCMOCKITO: EJEMPLOS
O C H A M C R E S T: M AT C H E R S

https://github.com/hamcrest/OCHamcrest

Ejemplo de matchers:
U N PA S I T O M Á S . K I W I .

https://github.com/allending/Kiwi
K I W I : I N S TA L A C I Ó N
KIWI: USO
KIWI: EJEMPLOS
KIWI: EJEMPLOS
KIWI: EJEMPLOS
U I A U T O M AT I O N
DEMO
http://maroto.me/vu7f
MOLANDO

http://vimeo.com/39888743
TESTEANDO MIENTRAS
DUERMES.
T R AV I S
• Gratuito para proyectos open source.
• Integrado con github.
• .travis.yml
https://travis-ci.org/patoroco/JMGFrame
J E N K I N S E S PA R A P O B R E S
OS X SERVER
Tutorial para montar bots: http://maroto.me/vu7h
GRACIAS
twitter: @patoroco
git.jorgemaroto.es
in.jorgemaroto.es
jorgemaroto.es

Mais conteúdo relacionado

Destaque

Destaque (13)

Taller de iniciación a iOS
Taller de iniciación a iOSTaller de iniciación a iOS
Taller de iniciación a iOS
 
Enfermedad de graves basedow
Enfermedad de graves basedowEnfermedad de graves basedow
Enfermedad de graves basedow
 
Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)Synchronizing without internet - Multipeer Connectivity (iOS)
Synchronizing without internet - Multipeer Connectivity (iOS)
 
Arterial blood gases
Arterial blood gasesArterial blood gases
Arterial blood gases
 
Sensormedics HIGH FREQUENCY VENTILATOR
Sensormedics HIGH FREQUENCY VENTILATORSensormedics HIGH FREQUENCY VENTILATOR
Sensormedics HIGH FREQUENCY VENTILATOR
 
Platone
PlatonePlatone
Platone
 
Asthma medications
Asthma medicationsAsthma medications
Asthma medications
 
Allelieh sma
Allelieh smaAllelieh sma
Allelieh sma
 
Gerak dengan Analisis Vektor
Gerak dengan Analisis VektorGerak dengan Analisis Vektor
Gerak dengan Analisis Vektor
 
Nutritional therapy in children with in born errors of metabolism
Nutritional therapy in children with in born errors of metabolismNutritional therapy in children with in born errors of metabolism
Nutritional therapy in children with in born errors of metabolism
 
spinal muscular atrophy sma by allelieh
spinal muscular atrophy sma by alleliehspinal muscular atrophy sma by allelieh
spinal muscular atrophy sma by allelieh
 
Adenoamigdalitis aguda y crónica
Adenoamigdalitis aguda y crónicaAdenoamigdalitis aguda y crónica
Adenoamigdalitis aguda y crónica
 
Making Money From Financial Markets 2017 Vince Stanzione
Making Money From Financial Markets 2017 Vince StanzioneMaking Money From Financial Markets 2017 Vince Stanzione
Making Money From Financial Markets 2017 Vince Stanzione
 

Semelhante a Testing en iOS - AgileCyL - Pucela Testing Days 2013

Lanzamiento Java 7 UPIICSA 2011 Grails Showcase
Lanzamiento Java 7 UPIICSA 2011 Grails ShowcaseLanzamiento Java 7 UPIICSA 2011 Grails Showcase
Lanzamiento Java 7 UPIICSA 2011 Grails Showcase
Domingo Suarez Torres
 
Desarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2DDesarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2D
creagamers
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket
 

Semelhante a Testing en iOS - AgileCyL - Pucela Testing Days 2013 (20)

101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
101 Panel Tech Days - Spock: O por qué deberías utilizarlo para testear tu có...
 
Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014Pycon es 17 noviembre 2014
Pycon es 17 noviembre 2014
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Android swissknife
Android swissknifeAndroid swissknife
Android swissknife
 
REPLs
REPLsREPLs
REPLs
 
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
Write gradle plugins  escribir y publicar tus plugins de gradle  made easy_Write gradle plugins  escribir y publicar tus plugins de gradle  made easy_
Write gradle plugins escribir y publicar tus plugins de gradle made easy_
 
Charla básica 1
Charla básica 1Charla básica 1
Charla básica 1
 
Spock
SpockSpock
Spock
 
Primera App - Laboratorio Android
Primera App - Laboratorio AndroidPrimera App - Laboratorio Android
Primera App - Laboratorio Android
 
Lanzamiento Java 7 UPIICSA 2011 Grails Showcase
Lanzamiento Java 7 UPIICSA 2011 Grails ShowcaseLanzamiento Java 7 UPIICSA 2011 Grails Showcase
Lanzamiento Java 7 UPIICSA 2011 Grails Showcase
 
Asciidoctor para Dev(Ops)
Asciidoctor para Dev(Ops)Asciidoctor para Dev(Ops)
Asciidoctor para Dev(Ops)
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 
1455363182 s.a.-robotica-jugando-con-el-trompo
1455363182 s.a.-robotica-jugando-con-el-trompo1455363182 s.a.-robotica-jugando-con-el-trompo
1455363182 s.a.-robotica-jugando-con-el-trompo
 
Desarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2DDesarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2D
 
Android Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivityAndroid Tips & Tricks - Boosting your productivity
Android Tips & Tricks - Boosting your productivity
 
Segundo laboratorio de Android
Segundo laboratorio de AndroidSegundo laboratorio de Android
Segundo laboratorio de Android
 
Tech Meetup: How to solve 2 common problems in Android & iOS
Tech Meetup: How to solve 2 common problems in Android & iOSTech Meetup: How to solve 2 common problems in Android & iOS
Tech Meetup: How to solve 2 common problems in Android & iOS
 
Taller II Coreis Python 13112009
Taller II Coreis Python 13112009Taller II Coreis Python 13112009
Taller II Coreis Python 13112009
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Tests en Java con Groovy y Spock
Tests en Java con Groovy y SpockTests en Java con Groovy y Spock
Tests en Java con Groovy y Spock
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Testing en iOS - AgileCyL - Pucela Testing Days 2013