testes automatizados de software

Post on 28-May-2015

6.751 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Testes Automatizados de Software

Seu software faz realmente o que você quer?

Mauricio Anichemauricio@aniche.com.br

Objetivos

• Por quê testar?

• Como testar?

E o mais importante:

MOTIVAR VOCÊ A TESTAR!

test all the f*cking time...

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.

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!

“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

Erro,

Defeito

Ou Falha?

test all the f*cking time...

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.

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!

Classificação

Caixa branca

Caixa preta

Caixa cinza

Fases de Teste

de unidade

de integração

de sistema

... diferentes tipos de testes, como aceitação, performance, stress, etc.

Testes de Regressão

Testes Manuais

Díficil

Demorado e cansativo

Executado poucas vezes

Cobre poucos casos

Sem documentação

Testes Automatizados

Rodam rápido

Cobrem muitos casos

Segurança na manutenção

Ajudam na documentação

Muitas vantagens...

Eficiência

Segurança

Flexibilidade

Robustez

… etc!

test all the f*cking time...

Você consegue ...

Simular grandes quantidades de dados ou usuários.

Medir o tempo de execução de certas partes do programa.

Encontrar gargalos.

Além disso ...

Você tem segurança em caso de mudanças.

Testes de regressão são executados.

Servem de documentação.

Ajuda a codificar?

Programe sempre pensando na testabilidade do código.

Seu código ganhará em qualidade e flexibilidade!

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!

Reprodutibilidade

test all the f*cking time...

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.

NUnit

Framework para testes de unidade.

Muito simples de usar.

Open source.

www.nunit.org

[TestFixture]

[Test]

using NUnit.Framework;

Criando um teste...

[Ignore]

[SetUp]

[TearDown]

Assert’s

Assert.AreEqual

Assert.Greater

Assert.GreaterOrEqual

Assert.IsTrue

Assert.IsNull

Assert.IsEmpty

Assert.AreSame

...

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));

}

}

Vendo os resultados...

É hora de sujar as mãos!

test all the f*cking time...

Técnicas de Modelagem

Partição de Equivalência

Análise do Valor Limite

Grafo de Causa-Efeito

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.

Testar sai caro?

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

Ferramentas

Testar é legal!

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

“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

TESTE O TEMPO TODO!

Agradecimentos

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

Palestras da Agilcoop.

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.

Dúvidas?mauricio@aniche.com.br

Twitter: @mauricioaniche

top related