Técnicas de Testes para Desenvolvedores #PartiuTestar

O teste de software é de extrema importância para a qualidade do sistema que será entregue ao usuário final. Por isso ele deve ser realizado o quanto antes para que possamos aumentar o nível de qualidade.

Mas isso todos nós já sabemos, certo? O que poucos sabem e que muitos ainda pensam é que o teste de software deve ser aplicado somente pelos testadores. Entretanto, o processo de teste também deve ser aplicado em tempo de desenvolvimento.

Já ouvi muitos comentários como: “Porque vou testar se tem o testador?”

A resposta seria: Porque o teste unitário é de exclusiva responsabilidade do desenvolvedor 😮 😀

Mas existem muitas técnicas de testes no qual algumas são melhor executadas por testadores e outras por desenvolvedores.

Hoje vamos conhecer algumas técnicas de testes que podem e DEVEM ser utilizadas em tempo de desenvolvimento.

Bora lá?

TDD (Test Driven Development)

Técnica, onde primeiro são criados e automatizados os testes para somente depois ser criado o código fonte.
Seu objetivo é obter um código mais conciso e sem dependências, melhorando assim a qualidade do que é entregue ao testador.

Testes de Caixa-Branca

São realizados diretamente no código fonte do sistema. Seu objetivo é garantir que os componentes criados funcionam corretamente de acordo com os requisitos definidos e encontrar erros de lógica de programação.

Exemplos de técnicas de caixa branca, são:

Testes de Unidade

Componente do sistema que pode ser testado isoladamente (exemplos: classes, procedimentos, funções/métodos, etc.)

Testes de Integração

Técnica de teste, onde o objetivo é garantir que todos os componentes já testados isoladamente funcionam, quando integrados.

Testes de Condição Simples

Condição booleana ou expressão relacional, normalmente procedida de um operador NÃO.

Testes de Condição Composta

Validação formada por duas ou mais condições booleanas (E, OU).

Testes de Ciclos (Loops)

Técnica de teste que focaliza exclusivamente a validade de construções de ciclos.

Testes de Causa e Efeito

A técnica de causa-efeito é utilizada, quando é necessário validar várias combinações de entradas no produto. Geralmente utiliza-se tabelas de decisão ou grafos de decisão.

Testes de Partição de Equivalência

Essa técnica é mais comumente utilizada em testes funcionais, porém pode perfeitamente ser aplicada nos testes de desenvolvimento. Nesta técnica, são utilizados para executar, partes representativas do código, onde se espera que pelo menos uma classe de cada partição do mesmo seja executada pelo menos uma vez durante a validação dos testes.

Exemplo: Um campo de entrada (input field) referente ao ano de aniversário aceita valores de 1900 até 2004.

Para aplicarmos a técnica de partição de equivalência e obter cobertura de todas as partições teríamos que dividir os testes em pelo menos 3 casos. Vejamos:

Capture
Figura 1: Partição de Equivalência

1º Inserir um valor menor que 1900, exemplo 1800 (entrada inválida).

2º Inserir um valor que esteja dentro do intervalo de entradas válidas, exemplo, 2001.

3º Inserir um valor maior que 2004, exemplo 2005 (entrada inválida).

Testes de Análise de Valor Limite

Também mais comumente utilizada em testes funcionais é um membro de partição, onde validamos os valores mínimos e máximos de um intervalo de entradas.

Exemplo: Um campo de entrada (input field) referente a idade aceita valores maior igual a 18 anos e menor igual a 60 anos.

Para obtermos cobertura de todas as partições temos que possuir para cada limite um limite inválido e 2 válidos. Vejamos:

Capture2
Figura 2: Análise de Valor Limite

Testes de Regressão

Na era ágil em que vivemos atualmente seria inviável realizarmos testes de regressão manual em tempo de projeto, por isso a importância e necessidade dos testes automatizados. Aqui na MATERA Systems também realizamos automação dos testes unitários que são executados diariamente em um ambiente de integração contínua. Dessa forma estamos garantindo que o desenvolvimento atual não causou novos defeitos nos componentes já automatizados.

E por último, mas com certeza não menos importante o Teste Orientado a Requisitos que são mapeamentos de cenários de testes com base nos requisitos descritos no documento de visão da funcionalidade. Essa técnica garante que o código fonte do produto está validando pelo menos os requisitos já aprovados pelo cliente com o objetivo de minimizar o reporte de erros referente à cenários já previstos na documentação.

É importante ressaltar que todo teste unitário assim como os testes funcionais devem possuir um resultado esperado. De nada adianta executarmos uma linha de comando apenas para verificarmos que a mesma foi executada com ‘sucesso’ ou não. É necessário que o teste esteja preparado para validar o resultado obtido e a partir dele verificar se está correto ou não.

Então é isso galera, hoje conhecemos algumas técnicas de testes que podem ser aplicadas em tempo de desenvolvimento e que irão agregar muito na qualidade dos produtos entregues e no tempo investido na construção e manutenção dos mesmos. 😀

 

#DepoisDessa#PartiuTestar

 

Referências:

http://www.bstqb.org.br/uploads/docs/syllabus_ctfl_2011br.pdf

http://gtsw.blogspot.com.br/2007/12/os-princpios-dos-testes-de-software.html

http://testwarequality.blogspot.com.br/p/tenicas-de-teste.html

http://www.ic.unicamp.br/~ranido/mc626/CaixaPreta2b.pdf

Por EMANUELLE BERNARDO SPONTON

Formada em Tecnologia e Análise de Desenvolvimento de Sistemas, Certificada em Testes (Foundation Level - CTFL), e-learning em Gestão de Projetos - FGV, cursando Gestão e Estratégia de Empresas - Instituto Unicamp

Postado em: 27 de novembro de 2015

Confira outros artigos do nosso blog

Matera participa da 9ª edição do meetup DevTests Campinas

03 de setembro de 2018

Ariane Ferreira Izac

Teste de mutação com PITest

24 de agosto de 2018

Julio Cesar Consolini

Introdução ao Dev-Test Pairing

13 de junho de 2018

Caio Rizolli

Falando sobre Teste de Intrusão (ou PenTest)

03 de abril de 2018

Jacqueline Costa

Deixe seu comentário