Bug Box » Testes exploratórios – Parte 1
Published on : 11 setembro 11
em: Aprender
Comentários: 4 Comments
Ao pesquisar por "Testes exploratórios", encontramos vária definições que de certa forma, convergem em uma só:
Teste exploratório (Exploratory testing): Técnica de modelagem de teste informal na qual o testador controla ativamente a modelagem dos testes enquanto estes são executados, e utiliza a informação obtida durante o teste para modelar testes novos e melhorados.
(VEENENDAAL, Erik et al. p.66)
Portanto, quando executamos testes exploratórios, estamos criando e executando ao mesmo tempo um teste. Todos que já estiveram no papel de testador, mesmo que inconscientemente, realizou testes exploratórios em algum momento! Geralmente é realizado de maneira tácita ou informal, e de acordo com James Back "poucas pessoas estudam essa abordagem e ela não é muito respeitada na nossa área. Já está na hora de revertermos isso e reconhecermos publicamente a abordagem exploratória pelo o que ela é: pensamento científico em tempo real."
Convencionalmente, os testes são projetados antes da execução, e de acordo com as melhores práticas esta tarefa é realizada assim que os requisitos são aprovados pelo cliente. E se estes requisitos estiverem ambíguos, incompletos ou sofrerem atualizações? A resposta é que isso será refletido nos testes que foram planejados, que por sua vez também serão ambíguos, incompletos e precisarão sofrer atualizações.
No cenário descrito anteriormente, os testes exploratórios poderiam ser utilizados como um complemento, apoiando e garantindo a cobertura dos requisitos instáveis. Portanto, de imediato podemos ver os testes exploratórios como uma abordagem de apoio as técnicas formais de testes. Além desta aplicação, podem ser enumeradas outras, tais como:
Quando não existem requisitos;
Quando existe pouco tempo disponível destinado aos testes;
Falta de conhecimento do aplicativo no qual serão realizados os testes;
Falta de abrangência dos testes convencionais, ou seja, quando a cobertura dos mesmos é insuficiente;
Simulação de defeitos encontrados inesperadamente (não previstos nos testes convencionais);
Busca rápida por defeitos críticos;
Buscar a causa raiz de comportamentos inesperados do software;
Busca por defeitos semelhantes;
Investigação de efeitos colaterais.
Quando se realiza testes exploratórios, geralmente o testador não possui informações sobre o que será e nem como será testado, portanto, ao profissional que realizará esta tarefa, são indispensáveis características como intuição, criatividade e curiosidade para que o resultado desejado seja obtido!
Teste exploratório é, em certo sentido, como dirigir. Além disso, como dirigir, leva algum tempo, treinamento e prática para desenvolver a habilidade.
Existem ainda, estudos com o intuito de formalizar e sistematizar esta técnica, e isso se dá através de esforços no sentido de capturar os passos realizados durante os testes exploratórios a fim de potencializar os seus resultados. Para demonstração, foram apontados dois estudos, um realizado por Lee Copeland e o outro por James Bach:
De acordo com Lee Copeland, o processo de planejamento/execução de testes exploratórios consiste em 5 passos, conforme a imagem e tabela a seguir:
1 – Criação de uma hipótese Um modelo mental representando o funcionamento supostamente correto da área do aplicativo que será testada.
2 – Planejar cenários Planejar um ou mais cenários de teste que possam comprovar se a hipótese é verdadeira.
3 – Testar Aplicar os testes e observar os resultados.
4 – Avaliar resultados Avaliar os resultados contra a hipótese levantada no primeiro passo.
5 – Repetir Repetir esse processo até que a hipótese seja comprovada (ou não).
James Bach também sub-divide a atividade em 5:
1 – Exploração do produto Procurar entender os propósitos e funções do produto, tipos de dados processados e as áreas de instabilidade em potencial. Sua capacidade de exploração é proporcional à esta compreensão. A partir disso, é possível ter até mesmo uma noção do esforço necessário para realizar a tarefa.
2 – Design de teste Determinar "o quê" será testado, com base na observação e avaliação do produto que foram realizados.
3 – Execução de teste Executar os testes que foram identificados, operando o produto e observando o seu comportamento. As informações obtidas devem ser utilizadas para formular hipóteses de como o produto funciona.
4 – Heurística Heurísticas são diretrizes ou regras de ouro que o ajudam a decidir o que fazer.Este procedimento emprega um número de heurísticas que ajudam a decidir o que deve ser testado e como testá-lo.
5 – Resultados de revisão Teste exploratório é um processo orientado a resultados, onde é finalizado no momento em que os resultados que atendam a hipótese criada tenham sido produzidos. As saídas devem ser produzidas de maneira que possam ser revistos (reproduzidos novamente). Todo testador deve estar preparado para explicar qualquer aspecto do seu trabalho para o responsável pela tarefa, e mostrar ao mesmo como o produto atende (ou não) ao resultado esperado.
Session-Based Test Managemen – SBTM
De acordo com o Advanced Level Syllabus Versão 2007br, o gerenciamento de teste baseado em seção (Session-Based Test Managemen – SBTM) é um conceito para gerenciar o teste exploratório. Uma seção é uma unidade básica de trabalho de teste, ininterrupta, e direcionada em um objeto de teste específico com um objetivo específico (o gráfico do teste). Ao final de cada seção, um relatório, chamado comumente de planilha de seção é produzido utilizando as atividades realizadas. O SBTM opera dentro de uma estrutura de processo documentado e produz registros que complementam a documentação de verificação.
Uma seção de teste pode ser dividida em três estágios:
A planilha de seção SBTM consiste do seguinte:
Gráfico de seção;
Nome(s) do testador(es);
Data e hora iniciais;
Decomposição de tarefa (seções);
Anotações de teste;
Ao final de cada seção o gerente de teste preside uma reunião de alinhamento com a equipe. Durante o questionamento o gerente revisa as planilhas de seção, melhora os gráficos, recebe um retorno dos testadores e estima e planeja as próximas seções.
A programação para uma seção de discussão é abreviada por PROOF pelo seguinte:
Podemos então perceber, que o teste exploratório proporciona vários benefícios, e que há alguns anos de esforços no sentido de potencializar o seu uso.
Através deste post podemos conhecer algumas de suas aplicações e como muitas idéias foram organizadas. No próximo post continuarei falando um pouco sobre o assunto, porém com foco em estratégias de exploração, tais como estratégias de questionamento, heurística, fontes e oráculos.
Obrigada e até o próximo post sobre testes exploratórios!
BACH, James. General Functionality and Stability Test Procedure. V1.0, Agosto/1999. Disponível em <http://www.satisfice.com/tools/procedure.pdf>. Acesso em 11 de setembro de 2011.
Brazilian Software Testing Qualifications Board. Certificação em Teste – Advanced Level Syllabus. Versão 2007br. 124p.
CAETANO, Cristiano. Testes Exploratórios de A a Z. In: linhadecodigo.com, Julho/2006. Disponível em <http://www.linhadecodigo.com.br/ArtigoImpressao.aspx?id=1102>. Acesso em 11 de setembro de 2011.
Comissão Internacional para Qualificação de Teste de Software. Certified Tester – Foundation Level Syllabus. Versão 2011br. 77p.
Rational Software Corporation. Conceitos: Teste Exploratório. Disponível em <http://www.wthreex.com/rup/process/workflow/test/co_exptst.htm>. Acesso em 11 de setembro de 2011.
VEENENDAAL, Erik et al. Glossário padrão de termos utilizados em Teste de Software. Versão 2.1br. Glossary Working Party, 2010. 71p.