Slide 1

Slide 1 text

testing, automatización y otros SECRETOS contra el dolor de cabeza

Slide 2

Slide 2 text

> el CHARLISTA

Slide 3

Slide 3 text

@janogonzalez

Slide 4

Slide 4 text

HopIn

Slide 5

Slide 5 text

@dynlangchile

Slide 6

Slide 6 text

> EL PROBLEMA

Slide 7

Slide 7 text

CH CH CH CHANGES

Slide 8

Slide 8 text

CAMBIO constante

Slide 9

Slide 9 text

CASTILLOS DE NAIPES

Slide 10

Slide 10 text

muchas tareas MANUALES

Slide 11

Slide 11 text

muchas tareas RUTINARIAS

Slide 12

Slide 12 text

propenso a ERRORES

Slide 13

Slide 13 text

SEÑALES DE HUMO

Slide 14

Slide 14 text

FEEDBACK TARDÍO

Slide 15

Slide 15 text

DOLOR DE CABEZA

Slide 16

Slide 16 text

PREVENIR ES MEJOR QUE CURAR

Slide 17

Slide 17 text

> CÓDIGO

Slide 18

Slide 18 text

APRENDE y USA LAS CONVECIONES

Slide 19

Slide 19 text

Ruby

Slide 20

Slide 20 text

Python

Slide 21

Slide 21 text

PHP

Slide 22

Slide 22 text

Java

Slide 23

Slide 23 text

> WTFM

Slide 24

Slide 24 text

Siempre CREA UN README

Slide 25

Slide 25 text

instrucciones para INSTALAR

Slide 26

Slide 26 text

UN EJEMPLO VALE MIL PALABRAS

Slide 27

Slide 27 text

DOCUMENTA CLASES y MÉTODOS

Slide 28

Slide 28 text

> BUILD

Slide 29

Slide 29 text

EL BUILD DEBE SER AUTOMÁTICO

Slide 30

Slide 30 text

make / rake / ant / etc...

Slide 31

Slide 31 text

> SCM

Slide 32

Slide 32 text

git

Slide 33

Slide 33 text

hg

Slide 34

Slide 34 text

svn

Slide 35

Slide 35 text

VERSIONA TODO

Slide 36

Slide 36 text

$ git init

Slide 37

Slide 37 text

$ git add README

Slide 38

Slide 38 text

$ git commit -m “Initial commit”

Slide 39

Slide 39 text

CREA COMMITS ATÓMICOS

Slide 40

Slide 40 text

$ git log --oneline 0e48171 Add password recovery to login page 7b11d9b Create login page 69c32e9 Create project structure b543a0c Initial commit

Slide 41

Slide 41 text

usa buenos mensajes

Slide 42

Slide 42 text

$ git commit -m “Changes” ¡MAL!

Slide 43

Slide 43 text

$ git commit -m “Add password recovery in login” BIEN

Slide 44

Slide 44 text

$ git commit -m “CLOSE [84712] Add password recovery in login” BIEN

Slide 45

Slide 45 text

USA bien LOS BRANCHES

Slide 46

Slide 46 text

$ git checkout -b password- recovery

Slide 47

Slide 47 text

$ git checkout -b wip-password- recovery

Slide 48

Slide 48 text

BRANCH PRINCIPAL DEPLOYABLE

Slide 49

Slide 49 text

USA LOS TAGS

Slide 50

Slide 50 text

$ git tag 1.0.0 -m “Initial release”

Slide 51

Slide 51 text

COMMIT EN FORMA TEMPRANA

Slide 52

Slide 52 text

PUSH EN FORMA TEMPRANA

Slide 53

Slide 53 text

> DEPENDENCIAS

Slide 54

Slide 54 text

MANEJO EN FORMA DECLARARTIVa

Slide 55

Slide 55 text

comportamiento predecible

Slide 56

Slide 56 text

... org.hibernate hibernate-annotations org.hibernate hibernate ... Maven

Slide 57

Slide 57 text

$ mvn clean install Maven

Slide 58

Slide 58 text

source 'https://rubygems.org' gem 'sinatra' gem 'json' gem 'sequel_pg', require: 'sequel' gem 'koala' gem 'redis' gem 'mini_magick' gem 'aws-sdk' group :test do gem 'rack-test' end Bundler

Slide 59

Slide 59 text

$ bundle install Bundler

Slide 60

Slide 60 text

{ "require": { "monolog/monolog": "1.2.*" } } Composer

Slide 61

Slide 61 text

$ php composer.phar install Composer

Slide 62

Slide 62 text

> configuración

Slide 63

Slide 63 text

DATOS POR AMBIENTE

Slide 64

Slide 64 text

SEPARADO DEL ENTREGABLE

Slide 65

Slide 65 text

> TESTING

Slide 66

Slide 66 text

JUNIT / RSPEC / MOCHA / etc...

Slide 67

Slide 67 text

existen dos estrategias

Slide 68

Slide 68 text

UNITARIO / ACEPTACIÓN

Slide 69

Slide 69 text

PROBAR COMPONENTE AISLADO Unitario

Slide 70

Slide 70 text

CENTRADO en PROBAR UN FEATURE Aceptación

Slide 71

Slide 71 text

independiente

Slide 72

Slide 72 text

repetible

Slide 73

Slide 73 text

automatizado

Slide 74

Slide 74 text

> CI

Slide 75

Slide 75 text

Jenkins

Slide 76

Slide 76 text

CC

Slide 77

Slide 77 text

Travis

Slide 78

Slide 78 text

CREANDO BUILDS automáticos

Slide 79

Slide 79 text

Bajar código Compilar Ejecutar Pruebas Ejecutar Métricas Entregable

Slide 80

Slide 80 text

> DEPLOYMENT

Slide 81

Slide 81 text

cap

Slide 82

Slide 82 text

fab

Slide 83

Slide 83 text

CREANDO deploys automáticos

Slide 84

Slide 84 text

$ cap staging deploy cap

Slide 85

Slide 85 text

$ cap staging deploy:rollback cap

Slide 86

Slide 86 text

$ cap -s tag=1.0.0 production deploy cap

Slide 87

Slide 87 text

> Más ALLá

Slide 88

Slide 88 text

LEVANTAR AMBIENTES AUTOMÁTICAMENTE

Slide 89

Slide 89 text

> EJEMPLOS

Slide 90

Slide 90 text

> CONCLUSIONES

Slide 91

Slide 91 text

ACEPTA EL CAMBIO

Slide 92

Slide 92 text

AUTOMATIZA TODO LO QUe PUEDAS

Slide 93

Slide 93 text

OBTEN FEEDBACK TEMPRANO

Slide 94

Slide 94 text

Y SIEMPRE MEJORA

Slide 95

Slide 95 text

> ¡GRACIAS!

Slide 96

Slide 96 text

http://upload.wikimedia.org/wikipedia/commons/2/21/David_Bowie_Chile.jpg http://upload.wikimedia.org/wikipedia/commons/0/01/Card_castle6.JPG http://upload.wikimedia.org/wikipedia/commons/1/1c/Frederic_Remington_smoke_signal.jpg http://upload.wikimedia.org/wikipedia/commons/a/ad/Migraine.jpg