testes automatizados de software
DESCRIPTION
Palestra sobre testes automatizados de software, dada no .NET Architects Day 2009, em 27/06/09.TRANSCRIPT
![Page 1: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/1.jpg)
Testes Automatizados de Software
Seu software faz realmente o que você quer?
Mauricio [email protected]
![Page 2: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/2.jpg)
Objetivos
• Por quê testar?
• Como testar?
E o mais importante:
MOTIVAR VOCÊ A TESTAR!
![Page 3: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/3.jpg)
test all the f*cking time...
![Page 4: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/4.jpg)
Por quê testar?
Prejuízos de aproximadamente $59.5 bilhões na economia dos EUA (Fonte: NIST/2002)
É impossível garantir que o software funcione corretamente, sem erros.
PORQUE SIM!
O cliente não comprou software que falha.
![Page 5: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/5.jpg)
E por que as pessoas não testam?
Porque demora!
Meu projeto está atrasado!
Porque sou programador, e programador não testa!
Compilou, tá funcionando!
Tá pronto... Só falta testar!
![Page 6: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/6.jpg)
“Inspecionar para prevenir defeitos é bom; Inspecionar para encontrar defeitos
é desperdício.”Shigeo Shingo
Revisões de código
Análises Formais
Testes automatizados!
Versões alfa & beta
![Page 7: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/7.jpg)
Erro,
Defeito
Ou Falha?
![Page 8: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/8.jpg)
test all the f*cking time...
![Page 9: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/9.jpg)
Anatomia de um bug
Usuário executou um pedaço de código não testado.
A ordem em que o usuário executou as ações foram diferentes da ordem em que foi testado.
O usuário informou uma combinação de valores de entrada não testados.
O ambiente do usuário não foi simulado.
![Page 10: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/10.jpg)
Observando seu sistema...
Os usuários enxergam o sistema a partir do exterior...
Os testadores espiam um pouco por debaixo dos panos...
Os desenvolvedores veem tudo...
E você precisa considerar todos esses pontos de vista!
![Page 11: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/11.jpg)
Classificação
Caixa branca
Caixa preta
Caixa cinza
![Page 12: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/12.jpg)
Fases de Teste
de unidade
de integração
de sistema
... diferentes tipos de testes, como aceitação, performance, stress, etc.
![Page 13: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/13.jpg)
Testes de Regressão
![Page 14: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/14.jpg)
Testes Manuais
Díficil
Demorado e cansativo
Executado poucas vezes
Cobre poucos casos
Sem documentação
![Page 15: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/15.jpg)
Testes Automatizados
Rodam rápido
Cobrem muitos casos
Segurança na manutenção
Ajudam na documentação
![Page 16: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/16.jpg)
Muitas vantagens...
Eficiência
Segurança
Flexibilidade
Robustez
… etc!
![Page 17: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/17.jpg)
test all the f*cking time...
![Page 18: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/18.jpg)
Você consegue ...
Simular grandes quantidades de dados ou usuários.
Medir o tempo de execução de certas partes do programa.
Encontrar gargalos.
![Page 19: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/19.jpg)
Além disso ...
Você tem segurança em caso de mudanças.
Testes de regressão são executados.
Servem de documentação.
![Page 20: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/20.jpg)
Ajuda a codificar?
Programe sempre pensando na testabilidade do código.
Seu código ganhará em qualidade e flexibilidade!
![Page 21: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/21.jpg)
Facilidade de Manutenção
Você pode refatorar sem medo.
Adição de novas funcionalidades sem medo de danificar outras partes do sistema.
Chega de NÃO ENCOSTA NO QUE ESTÁ FUNCIONANDO!
![Page 22: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/22.jpg)
Reprodutibilidade
![Page 23: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/23.jpg)
test all the f*cking time...
![Page 24: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/24.jpg)
Primeiros passos
Código dos testes devem ser simples.
Podem conter erros.
Devem fazer parte da manutenção.
Não devem exigir intervenção humana.
Devem ser independentes.
![Page 25: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/25.jpg)
NUnit
Framework para testes de unidade.
Muito simples de usar.
Open source.
www.nunit.org
![Page 26: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/26.jpg)
[TestFixture]
[Test]
using NUnit.Framework;
Criando um teste...
[Ignore]
[SetUp]
[TearDown]
![Page 27: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/27.jpg)
Assert’s
Assert.AreEqual
Assert.Greater
Assert.GreaterOrEqual
Assert.IsTrue
Assert.IsNull
Assert.IsEmpty
Assert.AreSame
...
![Page 28: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/28.jpg)
Exemplopublic class Calculadora {
public int soma(int a, int b) {
return a + b;
}
public int subtracao(int a, int b) {
return a - b;
}
}
using NUnit.Framework;
[TestFixture]
public class CalculadoraTest {
[Test]
public void TestaSomaSimples() {
Calculadora c = new Calculadora();
Assert.AreEqual(3, c.soma(1,2));
}
[Test]
Public void TestaSubtracaoSimples() {
Calculadora c = new Calculadora();
Assert.AreEqual(5,c.subtracao(6,1));
}
}
![Page 29: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/29.jpg)
Vendo os resultados...
![Page 30: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/30.jpg)
É hora de sujar as mãos!
![Page 31: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/31.jpg)
test all the f*cking time...
![Page 32: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/32.jpg)
Técnicas de Modelagem
Partição de Equivalência
Análise do Valor Limite
Grafo de Causa-Efeito
![Page 33: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/33.jpg)
Mock Objects
Simulam objetos reais.
Úteis quando temos objetos que são difíceis de criar, reproduzir, lerdos, que ainda não existem, etc.
Você pode setar expectativas desse objeto.
![Page 34: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/34.jpg)
Testar sai caro?
... É mais barato do que não testar!
![Page 35: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/35.jpg)
Ferramentas
![Page 36: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/36.jpg)
Testar é legal!
![Page 37: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/37.jpg)
Célebre citação...
"The idea of "unit tests" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about. Nothing needs to be "mocked up"."
Donald Knuth
![Page 38: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/38.jpg)
“Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead.” Martin Fowler.
“Any program feature without an automated test simply does not exist.”
Kent Beck.
"Program testing can be used to show the presence of bugs, but never to show their absence."
Edsger W. Dijkstra
Citações
![Page 39: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/39.jpg)
TESTE O TEMPO TODO!
![Page 40: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/40.jpg)
Agradecimentos
Bryan Liles, por ter me cedido o uso do TATFT.
Palestras da Agilcoop.
![Page 41: Testes Automatizados de Software](https://reader036.vdocuments.mx/reader036/viewer/2022081417/55668d32d8b42a78708b4579/html5/thumbnails/41.jpg)
Bibliografia
•Delamaro, et. al. Introdução ao teste de software. Campus. 2007.•Pressman, R.S. “Software Engineering : A Practitioner's Approach”, ed. McGraw-Hill, Science/Engineering/Math, 2006.•Teles, V.M. “Extreme Programming: Aprenda como encantar seus usuários desenvolvendo software com agilidade e alta qualidade”, ed. Novatec, 2004.•Whittaker, J.A. “What Is Software Testing? And Why Is It So Hard? ”. IEEE Software, Jan/Fev 2000, p. 70-79.•Vincenzi, M.R.; Maldonado, J. C.; Delamaro, M. E.; Spoto E. S.; Wong, W. E.•“Software Baseado em Componentes: Uma Revisão sobre Teste”, in: “Desenvolvimento Baseado em Componentes: Conceitos e Técnicas”. ed. Ciência Moderna, 2005.•Myers, Glenford J. The Art of Software Testing. Ed. Wiley, 2004.