testes automatizados de software

42
Testes Automatizados de Software Seu software faz realmente o que você quer? Mauricio Aniche [email protected]

Upload: mauricio-aniche

Post on 28-May-2015

6.749 views

Category:

Technology


4 download

DESCRIPTION

Palestra sobre testes automatizados de software, dada no .NET Architects Day 2009, em 27/06/09.

TRANSCRIPT

Page 1: Testes Automatizados de Software

Testes Automatizados de Software

Seu software faz realmente o que você quer?

Mauricio [email protected]

Page 2: Testes Automatizados de Software

Objetivos

• Por quê testar?

• Como testar?

E o mais importante:

MOTIVAR VOCÊ A TESTAR!

Page 3: Testes Automatizados de Software

test all the f*cking time...

Page 4: Testes Automatizados de Software

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

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

“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

Erro,

Defeito

Ou Falha?

Page 8: Testes Automatizados de Software

test all the f*cking time...

Page 9: Testes Automatizados de Software

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

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

Classificação

Caixa branca

Caixa preta

Caixa cinza

Page 12: Testes Automatizados de Software

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

Testes de Regressão

Page 14: Testes Automatizados de Software

Testes Manuais

Díficil

Demorado e cansativo

Executado poucas vezes

Cobre poucos casos

Sem documentação

Page 15: Testes Automatizados de Software

Testes Automatizados

Rodam rápido

Cobrem muitos casos

Segurança na manutenção

Ajudam na documentação

Page 16: Testes Automatizados de Software

Muitas vantagens...

Eficiência

Segurança

Flexibilidade

Robustez

… etc!

Page 17: Testes Automatizados de Software

test all the f*cking time...

Page 18: Testes Automatizados de Software

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

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

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

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

Reprodutibilidade

Page 23: Testes Automatizados de Software

test all the f*cking time...

Page 24: Testes Automatizados de Software

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

NUnit

Framework para testes de unidade.

Muito simples de usar.

Open source.

www.nunit.org

Page 26: Testes Automatizados de Software

[TestFixture]

[Test]

using NUnit.Framework;

Criando um teste...

[Ignore]

[SetUp]

[TearDown]

Page 27: Testes Automatizados de Software

Assert’s

Assert.AreEqual

Assert.Greater

Assert.GreaterOrEqual

Assert.IsTrue

Assert.IsNull

Assert.IsEmpty

Assert.AreSame

...

Page 28: Testes Automatizados de Software

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

Vendo os resultados...

Page 30: Testes Automatizados de Software

É hora de sujar as mãos!

Page 31: Testes Automatizados de Software

test all the f*cking time...

Page 32: Testes Automatizados de Software

Técnicas de Modelagem

Partição de Equivalência

Análise do Valor Limite

Grafo de Causa-Efeito

Page 33: Testes Automatizados de Software

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

Testar sai caro?

... É mais barato do que não testar!

Page 35: Testes Automatizados de Software

Ferramentas

Page 36: Testes Automatizados de Software

Testar é legal!

Page 37: Testes Automatizados de Software

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

“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

TESTE O TEMPO TODO!

Page 40: Testes Automatizados de Software

Agradecimentos

Bryan Liles, por ter me cedido o uso do TATFT.

Palestras da Agilcoop.

Page 41: Testes Automatizados de Software

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.

Page 42: Testes Automatizados de Software

[email protected]

Twitter: @mauricioaniche