Gerência - Qualidade e Testes

Testes comportamentais: psicologia ou tecnologia?

Com a crescente demanda de testes, passamos a olhar para um novo prisma o que temos chamado de Testes Comportamentais.

por Jones Amaral



Com a crescente demanda de testes, passamos a olhar para um novo prisma o que temos chamado de Testes Comportamentais. Falando assim você pode pensar: "_ desde quando uma aplicação apresenta comportamento diferente para que eu teste isso? - Certamente eu te respondo: a aplicação não se comporta de maneira diferente, mas as pessoas que irão usá-la sim. Cada um usará do seu próprio jeito".

Há algum tempo os testes em software não são bem aceitos, principalmente por desenvolvedores e surpreendentemente por algumas empresas. De um lado as empresas afirmam que é um investimento sem retorno visível e que o tempo gasto para testar uma aplicação, aumentaria o tempo total do projeto. Isso é a última coisa que um cliente quer. Pelo lado dos desenvolvedores, nem sempre há uma relação "amigável" com analistas de testes, pois, segundo eles, os analistas irão auditar os trabalhos e isso pode comprometer a imagem do "bom" desenvolvedor.

Percebe-se, timidamente, que a aceitação dos testes em software estão mudando. Notamos que a cada dia fica mais clara a relevância de testes em software, entretanto com antecipação nos preocupamos com as expectativas dos clientes que são geradas quando se iniciam formalmente processos de teste e qualidade. Estes pontos de apreensão, resumidamente, destacam-se em:
  • O desenvolvedor reduz sua atenção na codificação quando existem processos de testes, em outras palavras, há uma redução inicial da qualidade;
  • Testes automatizados não cobrem problemas óbvios de usabilidade e ergonomia, ou seja, não atendem requisitos do usuário final;
  • Testes de caixa preta (Black Box) não ajudam a identificar o ponto onde ocorre o problema no código fonte e por isso é demorado de ser resolvido, o que geralmente atrasa o desenvolvimento do projeto;
  • O trauma gerado por um erro descoberto em produção é centenas de vezes maior quando existe um processo formal de testes comparado a quando não existe. Sendo assim, o risco de uma área de testes ser cancelada no inicio de suas atividades é crítico.
Com base em todo o cenário descrito, averiguamos na prática que os resultados alcançados quando utilizamos somente testes automatizados e / ou testes de caixa preta não atendem as expectativas dos usuários de negócios da nossa aplicação. Por isso utilizamos testes comportamentais.

Testes comportamentais têm como foco o usuário, ou seja, os testes são aplicados de modo a mostrar como diferentes tipos de usuários preencheriam um formulário. Por exemplo, de que modo esse usuário normalmente irá acessar uma aplicação?

A metodologia de testes comportamentais é composta por três segmentos conceituais. São eles: Testes de verificação, testes de validação e testes de especialização. Esta metodologia de testes não descarta nenhum dos métodos até hoje conhecidos, simplesmente transcende-os valorizando-os.

Iremos apresentar um pouco sobre cada um deles mostrando como aplicamos estes testes visando o comportamento de quem usa essa aplicação a ser testada.

Testes de Usabilidade

A aplicação é usável, intuitiva, simples? _ Nem sempre. Visando essa usabilidade citada testamos a praticidade da aplicação, o caminho que o usuário deverá seguir até conseguir o resultado esperado. Achamos possíveis "pedras" neste caminho, que ora chamaremos de inconsistências e apontaremos isso no que definimos de planilha de inconsistência.

Definição Básica: Assegurar que o produto tem condições de ser usado.

Testes de Especificação

Quando você chega ao Mc Donald´s, por exemplo, e pede pelo número 1 você espera que lhe entreguem um Big Mac. Quando um cliente solicita uma aplicação, ele espera que quando acessar ela pronta, ela irá funcionar da maneira que ele imaginou em sua mente. Visando isso, aplicamos os testes de especificação.

Agora, se um cliente chega ao Mc Donald´s e pede o mesmo número 1 só que sem alface, isso se torna uma nova especificação. Também verificaremos estas regras solicitadas pelo cliente, certamente descritas na documentação da aplicação.

Definição Básica: Assegurar que as especificações foram atendidas.

Este primeiro grupo de testes (usabilidade e especificação) chamaremos de Testes de Verificação.

Testes de Funcionalidade

Qual é a premissa básica de uma calculadora? Obviamente que calcular. Quando eu digitar 1+1 ela tem que me mostrar o resultado: 2. Qual é a premissa básica da aplicação que você está testando? É esta premissa que iremos validar nos testes de funcionalidade.

Exemplo: Um usuário tem que preencher um formulário. O sistema tem que enviar essas informações para serem armazenadas em um banco de dados e ao mesmo tempo enviar as informações por email para alguém. Não podemos dizer que esta aplicação esta validada se a informação for guardada no banco de dados. E o email? Caso o e-mail não seja enviado, afirmaremos que a aplicação não esta estabilizada.

Definição Básica: Assegurar que o sistema está atendendo suas premissas de negócios.

Testes de Regressão

A aplicação está em seu quinto release, será que tudo aquilo que foi verificado como inconsistência no primeiro ou segundo release continua corrigido? Pegaremos todas as planilhas de inconsistência a partir do primeiro release e checaremos inconsistência por inconsistência para garantir que erros que apareceram no primeiro release não voltarão a acontecer.

Chamaremos isso de teste de regressão. Voltar no tempo e validar tudo que já foi validado. Retrabalho? Perda de tempo? Não! Garantia de que a aplicação irá ser entregue 100% sem reincidências.

Definição Básica: Eliminar reincidência de erros conhecidos e versões posteriores.

Desta forma encerramos o segmento denominado de Testes de validação.

Apresentamos o último grupo de testes da metodologia testes comportamentais, conhecido como Testes de Especialização. Este é o grupo que mais tem haver com o nosso tema, pois é nele que a personalização e a valorização do usuário é mais focada.

Testes de Cenário

"_ Estou utilizando o Internet Explorer 7 e meu estagiário esta utilizando o Mozilla Firefox. A aplicação funciona na minha máquina mas não na dele, por quê isso?" Essa é uma pergunta que acontece ainda muitas vezes. A resposta pode parecer simples: Isso acontece porque a aplicação não foi testada em diversos cenários.

O uso de máquina virtual neste tipo de teste é muito importante, porque o analista de teste pode montar "n" máquinas virtuais com "m" navegadores diferentes e checar como a aplicação se comporta em diferentes ambientes. Afinal cada usuário tem uma configuração diferente em seu personal computer, e, se é pessoal, não podemos esperar que sejam todos iguais.

Definição Básica: Diagnosticar o comportamento do produto sobre determinado cenário.

Testes de Persona

O diretor da empresa que acabara de comprar sua aplicação prefere fazer login através do menu de usuários. Já o analista, prefere fazer login através do formulário que é carregado junto com a página inicial. Cada um percorre um caminho diferente, cada um utiliza a aplicação de uma maneira própria.

Pensando na resolução de conflitos, quais dos usuários acima geram mais risco para nossa aplicação no caso da função de login possuir erros?

Definindo perfis criamos grupos de usuários e escrevemos um documento com estas características de utilização. Neste documento estará descrito como cada grupo de usuários utiliza a aplicação e o modo como utiliza. Assim, quando houver liberação de uma nova versão da aplicação, podemos, por meio do perfil, navegar pelo caminho que o usuário de um determinado perfil percorre a fim de encontrar inconsistências ou vulnerabilidades que o usuário encontraria. Deste modo, personalizamos os testes.

Definição Básica: Atender expectativas direcionadas de "stakeholders".

Porque testes comportamentais

Agora que já sabemos a definição de cada um dos tipos de testes pertencentes a metodologia chamada Testes Comportamentais, entendemos o objetivo dos mesmos: focar nossas atividades no usuário e agregar valor a nossas aplicações.

Nós acreditamos no valor insubstituível do usuário na hora de testar um sistema, simplesmente porque testes comportamentais introduzem valores do usuário no sistema e revelam novos problemas que não são descobertos por testes automatizados.

Referências e informações sobre testes comportamentais podem ser obtidas no site http://www.fcamara.com.br.

Bons testes,

Jones Amaral
Jones Amaral

Jones Amaral - Analista de testes e qualidade da MZ-IR. Aplica testes comportamentais há um ano e é responsável pelo controle de qualidade de 23 sistemas diferentes desenvolvidos internamente na empresa.