Prof. Nécio de Lima Veras
http://lattes.cnpq.br/8284657916723590
Testes de software
Nécio de Lima Veras
necio.veras@ifce.edu.br
Leituras recomendadasLeituras recomendadas
“A grande maioria das pessoas já teve alguma experiência
com um software que não funcionou como esperado.
Softwares que não funcionam corretamente podem levar a
muitos problemas, incluindo financeiro, tempo e reputação
das empresas. Podendo, inclusive, chegar a influenciar na
integridade das pessoas” [ISTQB 2011].
TestesTestes
 Podemos associar a qualidade de um software
à quantidade de falhas percebidas no mesmo
 O teste de software ajuda a medir e/ou garantir essa
qualidade
 Níveis de Teste
 Unidade (componente)
 Integração (interface entre componentes)
 Sistema (comportamento)
 Aceitação (apropriado para uso)
TestesTestes
 Modos de Testar
 Manual
 Ex.: Inspeção manual de Código
 Automático
 Ex.: Asserção com JUnit
 No contexto de testes automáticos se sobressaem duas
abordagens:
 TDD (Testing-Driven Development) ou Desenvolvimento
dirigido por testes
 BDD (Behavior-Driven Design) ou Projeto guiado por
comportamento
TestesTestes
 TDD se apoia nos passos:
 Escreva o teste, para a funcionalidade, antes de estar
implementada (os testes irão falhar)
 Escreva o código de modo a fazer os teste passar
 Refatore o código
 Repita o processo
 Um exemplo de TDD
 Testar um método que recebe como parâmetro dois
números retorna a sua soma
TestesTestes
TDDTDD
TDDTDD
 1 – Método retorna inicialmente zero (ainda não escrevemos o teste)
Step by stepStep by step
Step by StepStep by Step
 2– Escrevemos o teste
Step by StepStep by Step
 3 – Rodamos o Teste (vermelho, pois a funcionalidade ainda não está
implementada)
Step by StepStep by Step
 4 – Implementamos o código
Step by StepStep by Step
 5 – Rodamos os testes (agora verdes)
Step by StepStep by Step
 6 – Refatoramos o código e rodamos os testes (devem continuar verdes)
Testes (comportamentais)Testes (comportamentais)
 Sobre BDD podemos fazer as seguintes considerações [Fox
e Patterson 2012]:
 BDD faz perguntas sobre comportamentos antes e durante o
desenvolvimento, visando reduzir falhas na comunicação
dentro do projeto.
 Requisitos são escritos como histórias de usuários. São
criadas descrições simples de como a aplicação deve ser
utilizada.
 BDD se concentra no comportamento da aplicação versus a
implementação da aplicação e os testes são conduzidos
utilizando TDD.
Fluxo padrão do BDDFluxo padrão do BDD
Fluxo padrão do BDDFluxo padrão do BDD
Fluxo padrão do BDDFluxo padrão do BDD
Fluxo padrão do BDDFluxo padrão do BDD
ExemploExemplo
 Uma narrativa simples: uma confirmação de inscrição para
um evento (ENUCOMP) faz o participante concorrer a
um sorteio.
Classe que mapeia a históriaClasse que mapeia a história
Classe que testa tudoClasse que testa tudo
ResultadosResultados
Exercícios (TDD)Exercícios (TDD)
● Use o TDD em Java com Junit para criar
testes unitários automatizados de uma classe
chamada Carro com as seguintes
funcionalidades:
– Ligar / Desligar o motor;
– Aceleração de velocidade;
– Frenagem;
– Buzina (método deve retornar uma String);
– Consumo de combustível.
ReferênciasReferências
● ISTQB. (2011). Certified Tester Foundation
Level Syllabus, version 2011.
● MAGALHÃES, R. et al. Fundamentos de
Engenharia de Software para o
Desenvolvimento de Software como Serviço
através do uso de Metodologias Ágeis. In
Anais da Jornada de Informática do Maranhão
e Escola Regional de Computação dos
Estados do Ceará, Maranhão e Piauí. São
Luís-MA, 2012.

Teste de software

  • 1.
    Prof. Nécio deLima Veras http://lattes.cnpq.br/8284657916723590 Testes de software Nécio de Lima Veras necio.veras@ifce.edu.br
  • 2.
  • 3.
    “A grande maioriadas pessoas já teve alguma experiência com um software que não funcionou como esperado. Softwares que não funcionam corretamente podem levar a muitos problemas, incluindo financeiro, tempo e reputação das empresas. Podendo, inclusive, chegar a influenciar na integridade das pessoas” [ISTQB 2011]. TestesTestes
  • 4.
     Podemos associara qualidade de um software à quantidade de falhas percebidas no mesmo  O teste de software ajuda a medir e/ou garantir essa qualidade  Níveis de Teste  Unidade (componente)  Integração (interface entre componentes)  Sistema (comportamento)  Aceitação (apropriado para uso) TestesTestes
  • 5.
     Modos deTestar  Manual  Ex.: Inspeção manual de Código  Automático  Ex.: Asserção com JUnit  No contexto de testes automáticos se sobressaem duas abordagens:  TDD (Testing-Driven Development) ou Desenvolvimento dirigido por testes  BDD (Behavior-Driven Design) ou Projeto guiado por comportamento TestesTestes
  • 6.
     TDD seapoia nos passos:  Escreva o teste, para a funcionalidade, antes de estar implementada (os testes irão falhar)  Escreva o código de modo a fazer os teste passar  Refatore o código  Repita o processo  Um exemplo de TDD  Testar um método que recebe como parâmetro dois números retorna a sua soma TestesTestes
  • 7.
  • 8.
  • 9.
     1 –Método retorna inicialmente zero (ainda não escrevemos o teste) Step by stepStep by step
  • 10.
    Step by StepStepby Step  2– Escrevemos o teste
  • 11.
    Step by StepStepby Step  3 – Rodamos o Teste (vermelho, pois a funcionalidade ainda não está implementada)
  • 12.
    Step by StepStepby Step  4 – Implementamos o código
  • 13.
    Step by StepStepby Step  5 – Rodamos os testes (agora verdes)
  • 14.
    Step by StepStepby Step  6 – Refatoramos o código e rodamos os testes (devem continuar verdes)
  • 15.
    Testes (comportamentais)Testes (comportamentais) Sobre BDD podemos fazer as seguintes considerações [Fox e Patterson 2012]:  BDD faz perguntas sobre comportamentos antes e durante o desenvolvimento, visando reduzir falhas na comunicação dentro do projeto.  Requisitos são escritos como histórias de usuários. São criadas descrições simples de como a aplicação deve ser utilizada.  BDD se concentra no comportamento da aplicação versus a implementação da aplicação e os testes são conduzidos utilizando TDD.
  • 16.
    Fluxo padrão doBDDFluxo padrão do BDD
  • 17.
    Fluxo padrão doBDDFluxo padrão do BDD
  • 18.
    Fluxo padrão doBDDFluxo padrão do BDD
  • 19.
    Fluxo padrão doBDDFluxo padrão do BDD
  • 20.
    ExemploExemplo  Uma narrativasimples: uma confirmação de inscrição para um evento (ENUCOMP) faz o participante concorrer a um sorteio.
  • 21.
    Classe que mapeiaa históriaClasse que mapeia a história
  • 22.
    Classe que testatudoClasse que testa tudo
  • 23.
  • 24.
    Exercícios (TDD)Exercícios (TDD) ●Use o TDD em Java com Junit para criar testes unitários automatizados de uma classe chamada Carro com as seguintes funcionalidades: – Ligar / Desligar o motor; – Aceleração de velocidade; – Frenagem; – Buzina (método deve retornar uma String); – Consumo de combustível.
  • 25.
    ReferênciasReferências ● ISTQB. (2011).Certified Tester Foundation Level Syllabus, version 2011. ● MAGALHÃES, R. et al. Fundamentos de Engenharia de Software para o Desenvolvimento de Software como Serviço através do uso de Metodologias Ágeis. In Anais da Jornada de Informática do Maranhão e Escola Regional de Computação dos Estados do Ceará, Maranhão e Piauí. São Luís-MA, 2012.