Além do TDD

Preview:

DESCRIPTION

Palestra ministrada no 1o. Encontro do Grupo de Testes de Software do Ceará

Citation preview

Além do TDD... Por Leonardo Eloy

Esta é Fernanda. Ela ganha a vida testando software.

Fernanda costuma levantar os detalhas dos requisitos com o Product Owner e traçar o seu roteiro de testes.

Após longas reuniões, Fernanda compreendeu as user stories e criou o seu roteiro de testes.

User Stories Cenários

Realizar baixa de depósito • Realizar baixa (happy day)• Realizar baixa com depósito inválido

Incluir novo cliente no SERASA • Incluir cliente (happy day)• Incluir cliente inativo• Incluir cliente menor de idade

Resolver o conflito Israel-Palestina • Bla bla bla• Ble ble ble

Gustavo, um desenvolvedor esperto, utiliza o roteiro de testes de Fernanda para implementar os requisitos.

Gustavo desenvolve todo o sistema utilizando os cenários que Fernanda projetou. Uma excelente abordagem!

A essência do TDD

Criação de Massa de Testes

Isolar Dependências

Dados na TelaParâmetros do

Método

Validar se houve erro

Assertions

ATDD vs. TDD

Gustavo faz o trabalho dele muito bem, mas Fernanda, ávida testadora, consegue sempre quebrar o sistema

com testes exploratórios.

Após encontrar uma falha, Gustavo cria um novo teste para reproduzir o erro. Somente após isso, ele prossegue

com a correção.

Porém, entrega após entrega, Fernanda ainda consegue quebrar o sistema.

Gustavo andou pesquisando o que está errado neste ciclo.

Ele percebeu que Fernanda costuma entrar com valores aleatórios em diversas campos, fazendo

um grande teste funcional e de integração entre os componentes.

Gustavo percebeu que poderia tentar imitar o comportamento de Fernanda para alguns dos

componentes, replicando os bugs que ela encontrava.

Só que começou a fazer isso de forma automatizada em seus métodos.

Após pesquisar vastamente no Google, Gustavo conheceu 3 técnicas novas de como testar seu sistema.

Testes de Comportamento

Testes de ComportamentoFuncionalidade: Realizar Inscrição em Curso A fim de melhorar minhas capacidades técnicas Como um aluno Eu desejo realizar o cadastro em um curso

Cenário: Realizar Cadastro em Curso Dado que eu esteja página de cadastro de cursos Quando eu preencho "Nome" com "Fulano" E eu preencho "Email" com "blabla@bla.com" E eu seleciono "CSD" em "Curso" E eu seleciono "Transferência" em "Forma de Pagamento" E eu pressiono o botao "Realizar Inscrição" Então eu quero ver "Seu numero de inscricao eh 1!"

Testes de Mutação

Testes de Mutação

if (a == b && a != z) { // algo}

if (a != b || a == z) { // algo}

Testes de Propriedade

Testes de Propriedade

Maior de Idade = (n >= 18)

Limite Percentual = (n >= 0 && n <= 100)

Após explicar tudo isso a Fernanda, ela ficou com uma dúvida.

Se o Gustavo tem a capacidade de automatizar isso tudo em relação ao código, será que é possível fazer estas abordagens

com a interface de forma funcional?

Cuma?

Agora, com novas habilidades, Fernanda participa de grupos de discussão, cursos e eventos mostrando como é

melhor sair um pouco da zona de conforto e ser dona do próprio nariz!

Obrigado!

leonardo.eloy@gotoagile.com.br