|
April 19, 2016
|

Testes Automatizados de Software: o que são?

A necessidade de testar software, hoje em dia, cresce cada vez mais. Afinal, os softwares estão cada vez mais complexos e cheios de funcionalidades. Mas você sabe como fazer testes de software?

Neste artigo, faço uma pequena introdução a você leitor, que está se interessando pelo assunto, visto que testes bem feitos implicam em uma melhor qualidade do produto, aumentando a segurança na hora de colocar seu sistema em produção.

Importância

Você já parou para pensar qual é a maior atividade que um desenvolvedor faz? Se você pensou escrever, está redondamente enganado. Basta se lembrar da quantidade de tempo que você mesmo perdeu tentando compreender um código não documentado, ou procurou por um bug em um método com várias linhas, depurando-o.

Se você se identificou com um destes casos, você não está sozinho. Costumo dizer que é fácil escrever código para a máquina e para você mesmo, mas escrever código para uma pessoa entender é bem, bem mais complicado. Eu mesmo às vezes não me lembro do que escrevi ontem, e isso é completamente normal, afinal quando você vai se lembrar da linha 4005 da classe X que está no pacote br.com.tal?

Testes de Software são muito valiosos nessas situações. Se você não lembra do que escreveu ontem, como irá lembrar de uma funcionalidade que foi implementada meses atrás? Pior, e se alguém da sua equipe mexer em um canto do código e quebrar a funcionalidade que você passou um mês fazendo?

Com testes, o desenvolvedor pode mitigar erros desse tipo e muitos outros.

 

Testes

Existem vários tipos de testes, dentre eles: Caixa Branca, Caixa Preta, Teste de Aceitação, Teste Unitário e Teste de Integração. Cada um deles tem suas devidas aplicações e especialidades. Neste artigo, daremos um foco em testes unitários.

Teste Unitário

Teste unitário é um tipo específico de teste que consiste em testar um comportamento específico em um bloco de código. É uma boa prática criar vários testes unitários para vários comportamentos do sistema. Dessa forma, é possível saber se um determinado método foi chamado uma certa quantidade de vezes ou nunca foi chamado.

 

A ideia é você fazer um teste para pedaços pequenos do sistema, usualmente, para os métodos. São 3 passos: em primeiro lugar, você deve escolher um cenário, que é a configuração do comportamento que você vai testar. Em seguida, deve executar o teste e validá-lo.

Por exemplo, imagine um cliente que está em uma loja virtual e clica em um produto para colocar no carrinho de compras. Dessa forma, um pseudocódigo simples poderia ser.

public void deveAdicionarUmProdutoNoCarrinhoDeCompras(){
List carrinho = new ArrayList<Produto>();
Produto produto = new Produto("IPhone 6S");
}

Como você viu, instanciamos um produto e uma lista. Como estamos fazendo um teste, não importa se temos uma classe chamada CarrinhoDeCompras, e se dentro dela tem ou não uma lista. O que importa aqui é o comportamento de adicionar um produto no carrinho.

Execução do cenário: a execução do comportamento. Continuando nosso exemplo temos:

public void deveAdicionarUmProdutoNoCarrinhoDeCompras(){
List carrinho = new ArrayList<Produto>();
Produto produto = new Produto("IPhone 6S");
carrinho.add(produto);
}

Faça algo bem simples, como somente colocar um produto dentro da lista.

Em seguida, temos a validação da execução do nosso cenário. Desta forma, temos:


pubic void deveAdicionarUmProdutoNoCarrinhoDeCompras(){
//Cenário
List carrinho = new ArrayList<Produto>();
Produto produto = new Produto("IPhone 6S");
//Execução
carrinho.add(produto);
//Validação
int quantidadeEsperadaNoCarrinho = 1;
Produto produtoEsperadoNoCarrinho = new Produto("IPhone 6S");
System.out.println(carrinho.size()==quantidadeEsperadaNoCarrinho);
System.out.println(produtoEsperadoNoCarrinho.equals(produto));
}

Os dois println das últimas linhas devem ser ambos true, pois só colocamos 1 produto no carrinho e o produto esperado é o mesmo. Percebe como é simples? Esse exemplo é bem fácil, agora imagina um exemplo com services, controllers, webservices e tudo o mais.

Como podem ver, um teste unitário é bem simples de se fazer. A única coisa que deve ser feita é verificar o resultado do teste, se deu falso ou verdadeiro. A comunidade internacional criou vários frameworks para a execução de testes unitários, e o mais famoso deles é o JUnit, que já está em sua 4° versão. Iremos falar dele em outra oportunidade.

Conclusão

Testes unitários estão a cada dia sendo mais necessários, afinal, você testa seu software sempre não é mesmo? Aposto como pelo menos após o término do desenvolvimento de uma função do seu software, você vai lá e executa para ver se está tudo certo com a funcionalidade.

O único problema disso é que é muito suscetível a erros humanos, afinal é bem fácil você não lembrar de executar um cenário que precisa ser testado, e até mesmo executar um teste mal feito com dados “viciados” e você pensar que a funcionalidade está passando, quando não está.

Por esses motivos, testes de softwares executados pela máquina, e não apenas vistos por você, são mais demandados. Iremos falar depois sobre TDD e BDD, que são formas de trabalhar orientadas a testes. E vamos falar sobre o JUnit e outras ferramentas para nos ajudar a testar. Até logo mais!

Comments

More articles

Afinal, é possível criar app sem saber programação?

November 16, 2018

Como transformar um website em aplicativo?

November 14, 2018

Aplicativos: O que conhecer antes de criar um

November 13, 2018

É possível instalar aplicativos Android no Windows?

November 9, 2018

LEAVE A COMMENT