desmistificando testes de software

33
Desmistificando Testes de Software 10/11/2013 Rodrigo Dumont 1

Upload: rodrigo-dumont

Post on 11-Jun-2015

318 views

Category:

Documents


5 download

DESCRIPTION

Apresentação feita em 10 de outubro de 2013 na PUC-Rio, Rio de Janeiro, Brasil. Aborda as diferentes formas de testes de software e como elas se aplicam no desenvolvimento do dia a dia. O objetivo é fazer com que conceitos antes abstratos e acadêmicos sejam compreendidos em contextos mais próximos da realidade dos desenvolvedores.

TRANSCRIPT

Desmistificando

Testes de Software

10/11/2013Rodrigo Dumont 1

Sobre mim

Rodrigo Dumont

Engenheiro de Software

Trabalho na VTEX

rodrigodumont.com

rdumont

10/11/2013Rodrigo Dumont 2

10/11/2013Rodrigo Dumont 3

Seu sistema tem testes

automatizados?

10/11/2013Rodrigo Dumont 4

Claro!Em poucos passos você garante que tudo está

funcionando

10/11/2013Rodrigo Dumont 5

Criar um site no servidor Web

apontadndo para a

aplicação

1.

10/11/2013Rodrigo Dumont 6

Criar o banco de dados de

acordo com o esquema na

pasta docs

2.

10/11/2013Rodrigo Dumont 7

Abrir o projeto na IDE

3.

10/11/2013Rodrigo Dumont 8

Tentar executar os testes

4.

10/11/2013Rodrigo Dumont 9

Passar duas horas

encontrando o que foi

configurado errado

5.

10/11/2013Rodrigo Dumont 10

Executar os testes

novamente

6.

10/11/2013Rodrigo Dumont 11

Perceber que ainda faltou

instalar um componente

7.

10/11/2013Rodrigo Dumont 12

8

10/11/2013Rodrigo Dumont 13

O que eu realmente queria

$ cd locadora

$ jake test

.....

--> success!

10/11/2013Rodrigo Dumont 14

Motivação

Se testes forem difíceis:

Eu não vou testar tanto

Não vou saber saber se algo quebrou

Feedback demorado

… ou pior: código em produção com erros

10/11/2013Rodrigo Dumont 15

A velha questão do custo

10/11/2013Rodrigo Dumont 16

projeto desenvolvimento integração entrega

$$

cu

sto

Testes automatizados devem:

Ter pré-requisitos sucintos

Ser facilmente executáveis

Ser legíveis

Ter resultado legível

10/11/2013Rodrigo Dumont 17

Estrutura de um teste

10/11/2013Rodrigo Dumont 18

Pré-condição

Teste

Pós-condição

Contexto

Ação

Verificação

Arrumar

Agir

Afirmar

Conhecem isso?

== Inicializar valores=declararparm baralho1 int 1=declararparm baralho2 int 2=declararparm AsOur int 0=declararparm DoisOur int 1=declararparm TresOur int 2=declararparm QuatroOur int 3

== Comparar naipes=compararnaipe baralho2 AsOur CincoOur NpIgual=compararnaipe baralho2 AsPau SeisCop NpDifer

== Comparar valores=compararvalor baralho2 TresPau TresOur VlIgual=compararvalor baralho2 AsPau SeisCop VlDifer

10/11/2013Rodrigo Dumont 19

Contexto

Ação

Verificação

Testes unitários

São muito rápidos ( < 30s)

Testam unidades de

código isoladamente

Parte do processo de Test-

Driven Development

10/11/2013Rodrigo Dumont 20

FuncionalidadeOK OK OK

OK OK OK FAIL OK

OK OK OK OK OK

OK FAIL OK OK OK

Exemplo de teste unitário

10/11/2013Rodrigo Dumont 21

Frameworks de testes

unitários

10/11/2013Rodrigo Dumont 22

JavaScript

Qunit

Mocha

Jasmine

.NET

NUnit

MSTest

xUnit.Net

Python

unittest

Java

JUnit

Testes de integração

São rápidos ( < 2min)

Testam a integração dos

componentes em cada

funcionalidade

Costuma integrar o

processo de Behaviour-

Driven Development

10/11/2013Rodrigo Dumont 23

Funcionalidade

OK ? ? ?

? ? ? ? ?

? ? ? ? ?

? ? ? ? ?

Behaviour Driven

Development

Artigo publicado por Dan North em 2006

Introducing BDD

Inspirou o projeto Cucumber

E, portanto, a linguagem Gherkin

“Acceptance criteria should be executable”

“Critérios de aceitação devem ser executáveis”

Dan North

Exemplo de especificação

executável

10/11/2013Rodrigo Dumont 25

specflow

Gherkin suporta vários

idiomas

Inglês

Feature: Sum

Scenario: Add two numbers

Given I have entered 50 into the calculator

And I have entered 70 into the calculator

When I press add

Then the result should be 120 on the screen

Gherkin suporta vários

idiomas

Português

Funcionalidade: Sum

Cenário: Somar dois números

Dado que escrevi 50 na calculadora

E que escrevi 70 na calculadora

Quando pressionar o botão de somar

Então o resultado na tela deverá ser 120

Gherkin suporta vários

idiomas

LOLCAT

OH HAI: Sum

MUSHUN: Add two numbers

I CAN HAZ entered 50 into the calculator

AN entered 70 into the calculator

WEN I press add

DEN the result should be 120 on the screen

Testes de Sistema

Geralmente são manuais

Podem ser automatizados

Testam interações completas

10/11/2013Rodrigo Dumont 29

Testando interfaces gráficas

Testes naturalmente frágeis

Selenium Web Driver

10/11/2013Rodrigo Dumont 30

Recapitulando

Execute o tempo todo os testes unitários! Eles devem:

Ser muito rápidos

Ser uito fáceis de executar

Ter grande cobertura do seu código

Não suba nada sem executar os testes de integração

Eles não devem demorar

Devem apontar problemas não cobertos pelos testes unitários

Observe atentamente os resultados dos testes de Sistema

Se houver falhas, volte à versão anterior

10/11/2013Rodrigo Dumont 31

Obrigado!

10/11/2013Rodrigo Dumont 32

Referências

The Art of Unit Testing

Ray Osherove

List of unit testing frameworks

(http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks)

Introducing BDD | Dan North (http://dannorth.net/introducing-bdd/)

Cucumber – Making BDD fun (http://cukes.info/)

Gherkin – Tool Support

(https://github.com/cucumber/gherkin/wiki/Tool-Support)

Selenium – Web Browser Automation (http://www.seleniumhq.org/)

10/11/2013Rodrigo Dumont 33