especificações e testes funcionais e de interface web em paralelo usando spock, geb e cucumber-jvm...

Download Especificações e testes funcionais e de interface Web em paralelo usando Spock, Geb e Cucumber-JVM em Sistemas Legados

If you can't read please download the document

Upload: nerdioculos

Post on 16-Apr-2017

913 views

Category:

Software


0 download

TRANSCRIPT

Maurcio Borges Silva @nerdioculosGuilherme de Angeli Ferreira @GuilhermeLemao

Testes funcionais e de interface Web em paralelo, usando Spock, Geb e Cucumber-JVM, para introduo de testes automatizados em ambientes legados

O nome est assim mesmo para que o foco se volte para o que importa, e no pro resto :p

No vamos matar lobisomens

No queremos falar de balas de prata, e se isso acontecer queremos ouvir todo mundo nos xingar

No falaremos sobre testes (apenas)

Falaremos sobre testes, claro. Mas o foco : comportamento, caracterizao e documentao viva.

No falaremos sobre ferramentas (ainda)

Apenas para deixar claro que as ferramentas no so o foco central, porque o foco o mtodo, a prtica, o desejo de cobrir o sistemas com testes vlidos em diversas perspectivas

O que o legado?

Code without tests is bad code. It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don't know if our code is getting better or worse.

Michael Feathers

No livro do Michael Feathers, Working with legacy codes ele fala muito nisso: o cdigo legado o cdigo sem testes. E foi essa a idia central da nossa apresentao: tentar de vrias maneiras cobrir com testes o que existe de legado

Onde est o legado?

Medo da mudana

Desmotivao

Preguia

Entropia++

Tentativas de melhorias desconectadas

Caractersticas de ambientes onde o legado persiste:* medo da mudana* desmotivao* preguia* entropia cada vez mais alta* tentativas de melhorias dispersas, desconectadas, por parte de anlise de negcios, testes, dev, etc

!Comunicao

A comunicao da inteno de um cdigo/aplicao legada muito difcil, porque ningum tem muita certeza do que ele faz. Podemos citar Bridging the communication gap do Adzic

Que que d pr fazer?

Tem que ser aos poucos pr poder medir o valor de cada ao, e no impactar muito na manuteno do grande monstro que o legado

Baby steps

Tem que ser aos poucos pr poder medir o valor de cada ao, e no impactar muito na manuteno do grande monstro que o legado

Ttica de guerrilha

Propomos uma ttica de guerrilha para, a passos curtos, cobrir de testes vlidos um sistema legado. Atacando ao mesmo tempo testes funcionais, de interface dentre outros por diversos flancos

BDD

Foco no comportamento

Linguagem ubqua

Maior expressividade de testes

Critrios de aceitao executveis

Documentao viva

Os flancos

Novos comportamentos

Caracterizao

Correo de bugs

As ferramentas

Cucumber-JVM

Spock

Geb

Cucumber-JVM

Escrito pelo mesmo cara que criou o Cucumber

Escrito em Java

Internacionalizado

Groovy steps

Spock

Groovy!

Blocks

Conceito

Geb

Abstrao do Selenium

Funcionalidades JQuery

PageObject

O que esperar disso tudo (e muito mais)?

Conversao mais ubqua

Maior interao entre times

Testes como parte do cotidiano (t no sangue)

Com quem falamos sobre isso?

@arbocombr: Escrevendo testes unitrios para cdigo legado: Tcnicas de isolamento

@bearded_nerd e @nirev: Evoluindo uma arquitetura legada (http://slides.com/nirev/tdc2014-evoluindo-arquitetura-legada)

Coisas legais para ler

Livros do Adzic: Bridging the communication gap, Specification by Example

http://www.infoq.com/presentations/bdd-cucumber-groovy

http://lizkeogh.com/2013/10/24/bdd-before-the-tools/

http://www.thoughtworks.com/pt/insights/blog/how-bdd-and-feature-injection-can-help-you-be-better

Livro do Dan North: The Rspec Book

Globalcode Open4education