my journey through rspec

36
My Jour ney Through Carmen Diaz Echauri [email protected] @cucurucho

Upload: cdechauri

Post on 17-Jan-2015

914 views

Category:

Technology


1 download

DESCRIPTION

Charla presentada en RubyConf Uruguay 2010. Experiencia escribiendo pruebas con Rspec, siendo el Ingles el segundo idioma.

TRANSCRIPT

Page 1: My journey through Rspec

My Journey Through

Carmen Diaz Echauri [email protected] @cucurucho

Page 2: My journey through Rspec

Who I am? / Quien Soy?

CARMEN

Page 3: My journey through Rspec

" Wow, I'm really nervous. “

Page 4: My journey through Rspec

I am humbled by the number of people, the energy and brilliant ideas that are going to be coming out South America over the next few years. I'm humbled by the fact that even though I am here to share some of my experience, that I could never come close to the experience and collective brilliance that is in this room and conference today.

And I'm in awe of how far our community of developers have come. So before I begin I want to thank you for being here and I'm honored to have this opportunity.

Page 5: My journey through Rspec

Culture / Cultura

Seymour Papert

Es la Cultura, no la Tecnología, la que trae el Cambio.

Page 6: My journey through Rspec

Agil Practices / Practicas Ágiles

Ciertas prácticas utilizadas en ciertas metodologías ágiles que implican código de calidad son:

programación en parejas, pruebas unitarias, desarrollo de la historias conducidas, pruebas de aceptación, la comunicación con el cliente y refactorización constante…. Y MAS! AGIL IS COOL

Hardware adecuado

Equipos reducidos

Practica 100 % ? ? ? ehhh

Diferentes proyectos & tecnologias

Page 7: My journey through Rspec

First Steps / Primeros pasos

⇒ Understanding other’s code/ Entender el código de otros.

Ensalada de codigo

Page 8: My journey through Rspec

First Steps / Primeros pasos

⇒ Understanding other’s code/ Entender el código de otros.

⇒ Code review/ Revisiones de código

⇒ Pair Programing/ Programación en pares.

Page 9: My journey through Rspec

Test First / Pruebas Primero Cuantas veces han escrito pruebas como?

Page 10: My journey through Rspec

Test First / Pruebas Primero Dia 1

Controladores

probando la vista

Page 11: My journey through Rspec

Todo se resume en el comportamiento

Las primeras frases a las que fui expuesta fueron:

  You should wait a few months before starting work

Y mi Favorita:

  You should wear glasses, jeans and t-shirt to look like a programmer.

  You must stay at home and wait until your English gets better.

Page 12: My journey through Rspec

Tiempo / Timing independencia en ciertas situaciones

comportamiento esperado

contexto controlado

Page 13: My journey through Rspec

Sintaxis

  Escribir pruebas sin necesidad de tener un dominio absoluto del Ingles.

miObjeto.should == ‘algo’ miObjeto debe ser igual a ‘algo’

miObjeto.should do ‘algo’ miObjeto debe hacer ‘algo’

Page 14: My journey through Rspec

Simple lectura ….   no es necesario entender la sintaxis RSpec para poder utilizar

Rspec

  Rspec es fácil de leer y entender (aun con un ingles básico)

  definición de requisitos de alto nivel de manera concisa y rápida

  Rspec proporciona una separación de las pruebas de otros elementos existentes en un MVC.

Page 15: My journey through Rspec

Testing en Capas

* Grafico preparado por RubyFocus http://www.rubyfocus.biz

Page 16: My journey through Rspec

Expectaciones

Existen dos métodos para chequear expectaciones: should() & should_not().

should respond_to() should be_nil -> funciona ademas con ? Metodo predicar Should be_valid Should not be_nil, should_not be_valid should eql, == -> compara valores Should equal, === ->compara objetos

Y MAS ……..

Y matchers……

Page 17: My journey through Rspec

Predicate Matcher

En Ruby un método predicate es un método que termina en “?”y retorna una expresión booleana.

mystring.empty?.should == true

mystring.should be_empty

Page 18: My journey through Rspec

Las expectaciones van escritas dentro de la “cosa Descripta” y en un contexto definido

Estructura

before

Page 19: My journey through Rspec

Mi súper diccionario

 Context: Contexto descripto

 Describe: Describir “algo”

  It <comportamiento> : comportamiento esperado de la cosa descripta

  Should: deberia

  Should not: no deberia

Así que una razón para usar Rspec es su Claridad

La clave esta conocer las palabras “mágicas” que describan el comportamiento deseado en pocos pasos.

Page 20: My journey through Rspec

Prueba escrita por un niño Test First Teaching al REVES ;-)

Page 21: My journey through Rspec

Algunos Tips

Page 22: My journey through Rspec

Variables de Instancias & Let Tips

Page 23: My journey through Rspec

Tips

Page 24: My journey through Rspec

Let

  Te muestra quienes son los jugadores o involucrados.

  Retorna una evaluacion ‘lazy’

 Descarta el before block.

Tips

Page 25: My journey through Rspec

Subject & it

Sujeto implicito

Tips

Page 26: My journey through Rspec

Subject & it

Sujeto implicito

Tips

Page 27: My journey through Rspec

Subject & it

Definir el subjeto

Tips

Page 28: My journey through Rspec

Its => Posesivo…

Tips

Page 29: My journey through Rspec

Simple output -Simple lectura Tips

Page 30: My journey through Rspec

Changes Tips

Page 31: My journey through Rspec

Expect

Util para expectaciones de ActiveRecords!

Tips

Page 32: My journey through Rspec

Shoulda

versus

Tips

Page 33: My journey through Rspec

Shoulda Rspec generara una clara descripción

Requiere gem shoulda

validate_format_of, validate_presence_of, ……

Tips

Page 34: My journey through Rspec

Again!

 Context: Contexto descripto

 Describe: Describir “algo”

  It <comportamiento> : comportamiento esperado de la cosa descripta

  Should: deberia

  Should not: no deberia

La clave esta conocer las palabras “mágicas” que describan el comportamiento deseado en pocos pasos.

Page 35: My journey through Rspec

  Hoy en Dia. El Código se lee mas de lo que se escribe

Page 36: My journey through Rspec

Gracias! - Thanks Cool People: YOU A huge thanks goes out to:

My mentors & work team & for helping out with challenges and site coding!

Inspirada por