conhecendo testes explorat+¦rios - parte 2
DESCRIPTION
antiguo sobre testeTRANSCRIPT
36 Engenharia de Software Magazine - Conhecendo os testes exploratórios – Parte 2
Cristiano [email protected]
Consultor sênior de teste de software, com 15 anos de experiência na área de tecno-logia da informação é sócio fundador da Qualister (www.qualister.com.br). Atua na empresa como Diretor Técnico, além de atender clientes em treinamentos, con-sultoria de processos de teste de software, automação de testes funcionais e de per-formance. É certificado CBTS pela ALATS e é autor dos livros “CVS: Controle de Ver-sões e Desenvolvimento Colaborativo de Software” e “Automação e Gerenciamento de Testes: Aumentando a Produtividade com as Principais Soluções Open Source e Gratuitas”.
De que se trata o artigo:Este artigo apresenta o método de gestão de tes-tes exploratórios chamado SBTM (Gerenciamento de Testes Baseado em Sessões). Além disso, são elencadas as principais ferramentas de apoio à execução e gestão de testes exploratórios.
Em que situação o tema é útil:Este artigo destina-se aos desenvolvedores interessados em gerenciar o planejamento e a execução de testes exploratórios sem engessar o lado criativo e a liberdade da exploração.
Resumo:Depois de uma breve introdução, discutiremos uma abordagem baseada em sessões para ge-renciamento deste tipo de teste. Neste con-texto, serão apresentadas questões relacio-nadas à missão, sessão, testador, resultados e ferramentas de apoio utilizadas para apoiar a abordagem considerada.
Conhecendo os testes exploratórios – Parte 2Hora de gerenciar
Teste exploratório é uma aborda-
gem de testes ad hoc que enfati-
za as habilidades do testador em
tomar decisões sobre o que será testado
durante a execução do teste ao invés de
seguir um roteiro previamente plane-
jado. As principais características dos
testes exploratórios são:
• O projeto, execução, interpretação e aprendizado são realizados pela mes-
ma pessoa;
• O projeto, execução, interpretação e aprendizado acontecem juntos, ao in-
vés de serem executados em momentos
diferentes no tempo;
• O testador faz as suas escolhas sobre o que será testado, quando testar e
como testar, ao invés de seguir cega-
mente um roteiro;
• O testador enfoca em revelar novas informações sobre o produto, ao invés
de confirmar coisas já conhecidas so-
bre o produto;
• Tudo o que o testador aprendeu de novo durante o teste, incluindo o
resultado do último teste, serve como
subsídio para decidir o que será testado
a seguir;
• O testador pode usar qualquer tipo de ferramenta automática para apoiar o
seu teste ou decidir não usar nenhuma
ferramenta;
• O testador pode variar diversos aspec-tos durante a execução dos seus testes,
ao invés de repeti-los da mesma forma
continuamente.
Arquitetura e Desenvolvimento
Nesta seção você encontra artigos voltados para diferentes abordagens de apoio ao desenvolvimento de projetos de software
Edição 54 - Engenharia de Software Magazine 37
AGILIDADE
Nos últimos anos o uso de heurísticas tem sido o método
comumente usado para tornar a geração de ideias de testes
exploratórios uma disciplina mais sistemática. Com o objetivo
de facilitar o entendimento e aprendizado das heurísticas,
especialistas de todo mundo utilizam técnicas mnemônicas
para compartilhar suas experiências em larga escala.
No entanto, teste exploratório sempre é associado à ideia de
testes informais, aleatórios, superficiais e desorganizados,
ou seja, os testadores encontram defeitos acidentalmente.
Além disso, os defensores de abordagens de testes tradicio-
nais apontam que a falta de mecanismos gestão é uma das
principais limitações encontradas nos testes exploratórios.
Para eles, o teste exploratório é uma caixa preta, onde não é
possível planejar o escopo do que será testado, acompanhar o
progresso do teste, gerar métricas e indicadores de cobertura,
entre outras restrições.
Estas limitações são conhecidas pela comunidade que defen-
de o uso de testes exploratórios. Quando o teste exploratório é
executado sem nenhum planejamento mínimo, ele é chamado
de teste exploratório freestyle. Esse tipo de teste não se baseia em objetivos claros ou escopo do que será testado e produz
como resultado apenas o registro dos defeitos encontrados
durantes a exploração.
Para compensar estas limitações, muitos especialistas em
testes de software estão propondo diversos métodos para o ge-
renciamento dos testes exploratórios, tais como Thread Based
Test Management, 8 Layer Model, SBTM, SBT Lite, entre outros. Este artigo apresentará a estrutura do método SBTM - Session
Based Test Management (Gerenciamento de testes baseado em
sessões) para a gestão de testes exploratórios.
Gerenciamento de testes baseado em sessõesDentre os métodos de gestão de testes exploratórios existen-
tes, o SBTM (Gerenciamento de testes baseado em sessões) é
de longe o mais conhecido e documentado na literatura. No
artigo “Session-Based Test Management“, Jon Bach, um dos
seus idealizadores, descreve o nascimento do método da se-
guinte forma (tradução livre): “A primeira coisa que notamos
durante nossos esforços de reinventar o gerenciamento de
teste exploratório foi que os testadores faziam diversas coisas
durante o teste que não eram exatamente teste. Neste caso, se
fosse necessário rastrear e controlar apenas o teste, seria neces-
sário diferenciar teste das demais atividades. Em função disso,
nasceu o gerenciamento por sessões. Cada sessão é composta
por um período de tempo ininterrupto e obedece a uma missão
pré-definida, além disso, uma sessão deve produzir resultados
tangíveis e revisáveis”.
De forma complementar, James Bach, irmão de Jon Bach e
também idealizador do SBTM, descreve no artigo “Exploratory Testing Explained” o método de gestão da seguinte forma: “o
gerenciamento de teste baseado em sessões é um método de
gestão projetado para tornar o teste exploratório auditável e
mensurável”. Bach resume as características básicas do método
de gestão baseado em sessões da seguinte forma: “Em uma
sessão de trabalho com um período pré-determinado de tempo,
um testador explora o software para cumprir os objetivos de
uma missão e ao final apresenta os resultados”.
Como podemos notar, em ambos os casos, a estrutura geral
do gerenciamento de testes baseado em sessões contém os
seguintes elementos principais: missão, sessão, testador e resul-
tados. Nos próximos tópicos, vamos analizar detalhadamente
cada um destes elementos e entender quais as vantagens do
gerenciamento de testes baseado em sessões em comparação
com o teste exploratório freestyle.
MissãoA missão determina o objetivo do exploratório de forma su-
cinta, como se fosse um caso de teste resumido. No entanto, a
missão descreve o que deve ser testado (não como o teste deve
ser realizado). Normalmente é descrita na hora da execução
do teste exploratório, no entanto, ela pode ser escolhida dentre
uma lista de missões pré-existentes (repositório de missões).
É importante destacar que as missões não são estáticas. Ao
longo do tempo elas são repriorizadas e aperfeiçoadas (além
disso, novas missões podem ser criadas ao longo do tempo).
Muitas vezes, ao final de uma sessão de teste exploratório,
novas ideias, oportunidades ou problemas encontrados pelo
testador podem ser usados para a criação de novas missões.
Em resumo, uma missão pode ser criada a partir de várias
origens, tais como:
• Reuniões/Conversas com usuários, desenvolvedores, ge-rentes, etc;
• Estórias/Requisitos;• Itens do menu do software;• Defeitos;• Oportunidades percebidas durante uma sessão de teste exploratório;
• Manuais/Regulamentos/Leis;• Softwares concorrentes/similares;• Versões antigas do mesmo software;• Heurísticas;• Brainstorms;• Feeling do testador;• Riscos;• Entre outros.
As missões não devem ser muito específicas (testes explora-
tórios com duração inferior a 45 minutos) ou muito genéricas
(testes exploratórios com duração superior a 2 horas). No que
tange ao formato das missões, não existe um padrão ou con-
senso universal. No entanto, é recomendado que as missões
sejam escritas no seguinte formato:
• Explore (uma estória, funcionalidade, área, risco, etc)• Com (recursos, restrições, heurísticas, táticas, etc)• Para (descobrir informações, obter respostas, atingir um objetivo).
SessãoUma sessão compreende um período ininterrupto de tem-
po com duração de cerca de 1 a 2 horas. Jon Bach, no artigo
38 Engenharia de Software Magazine - Conhecendo os testes exploratórios – Parte 2
“How to Manage and Measure Exploratory Testing”, reco-menda 90 minutos no máximo. Sessões com menos de 45
minutos são classificadas como “Curta”, sessões com 90
minutos são classificadas como “Normal” e sessões com
aproximadamente 2 horas são classificadas como “Longa”.
O foco da sessão de teste exploratório é cumprir o objetivo de uma missão. Idealmente, para cada missão deveria ser
executada apenas uma sessão de teste exploratório. No en-
tanto, podem ocorrer várias sessões de testes exploratórios
para uma única missão.
De forma geral, o que ocorre durante uma sessão é respon-
sabilidade do testador. Além de cumprir o objetivo da missão,
é permitido explorar oportunidades, questões pendentes, ou
qualquer coisa que o testador julgar relevante. Adicionalmen-
te, durante a sessão o testador também investiga e registra
defeitos, assim como configura e prepara o ambiente de tes-
tes. A grosso modo, uma sessão é composta pelas seguintes
atividades:
• Preparação (Setup): Preparação do ambiente de testes, con-
figuração de massa de dados, leitura de manuais, requisitos,
diagramas, etc;
• Especificação (Design): Definição (modelo mental) dos casos
de testes (hipóteses) baseados em heurísticas, ideias, checklists,
riscos, feeling, etc;
• Execução (Execution): Execução propriamente dita do teste
exploratório para demonstrar se as hipóteses/expectativas da
missão foram atendidas (ou não);
• Oportunidades (Opportunities): Tempo gasto em ativida-
des/explorações/investigações que não estão no escopo da
missão;
• Relato de defeitos (Bug investigation/Report): Investigação
e registro de defeitos.
TestadorNa abordagem clássica, os testes exploratórios não são defini-
dos antecipadamente em um plano ou roteiro de testes, eles são
dinamicamente projetados, executados e aprimorados durante
a exploração com base na intuição, julgamento e experiência do
testador. Dessa forma, uma vez dado ao testador uma missão
de testes, é de sua responsabilidade usar os mecanismos e
artifícios necessários para inventar, improvisar e, até mesmo,
aplicar técnicas formais de projeto de casos de testes para
determinar quais hipóteses e experimentos serão executados
para demonstrar se a missão de testes foi atendida (ou não).
O teste exploratório se torna mais interessante e sofisticado quando observado sob a ótica das habilidades do testador. O que torna o teste exploratório tão eficiente e eficaz são as habi-
lidades do testador de ouvir, observar, pensar e relatar rigoro-
samente os testes sem a necessidade de instruções detalhadas.
De maneira complementar, as diversas habilidades que todo
testador deveria ter para realizar testes exploratórios são:
• Navegar/Mapear: Tomar as suas próprias decisões sobre o
que será testado e como será testado. Entender as necessidades
dos clientes, os problemas que deverão ser resolvidos e asse-
gurar aos clientes que o teste está focado nos objetivos;
• Manipular: Fazer e gerenciar o contato com objeto do seu
estudo (o sistema que está sendo testado). Configurar e intera-
gir com o sistema. Projetar experimentos (testes) e estabelecer
procedimentos para o ambiente/laboratório de testes;
• Observar: Levantar dados empíricos sobre o objeto de estudo
(o sistema que está sendo testado). Coletar diferentes tipos de
dados ou dados de diferentes aspectos;
• Modelar: Compor e trabalhar com modelos mentais sobre as
funções que serão exploradas. Identificar dimensões, variáveis
e fatores dinâmicos que são relevantes ao teste;
• Conjeturar: Considerar possibilidades e probabilidades.
Considerar múltiplas explicações para o mesmo fato;
• Questionar: Identificar informações ausentes e elaborar
perguntas de forma a encontrar as informações desejadas;
• Registrar: Preservar informações sobre o processo de tra-
balho, progresso e descobertas. Tomar notas, categorizar e
classificar;
• Relatar: Relatar profissionalmente os resultadas das explo-
rações de forma oral ou escrita;
• Acessível: Acesso a recursos e ferramentas para apoiar a
exploração. Acesso a pessoas que possam ajudar de alguma
forma;
• Focar (re-focar): Gerenciar o escopo, profundidade e natu-
reza da atenção;
• Desviar/Retomar: Permitir o desvio produtivo de um cami-
nho para outros caminhos possíveis com o objetivo de explorar
novas ideias que surjam em determinado momento. Identificar
oportunidades sem perder o foco;
• Refinar: Trabalhar rapidamente da melhor maneira de acor-
do com as circunstâncias. Revisar uma solução posteriormente
de forma a refiná-la, aprimorá-la e corrigi-la;
• Alternar: Alternar entre diferentes atividades ou pers-
pectivas diferentes de forma a permitir um progresso mais
rápido.
Com base no que foi exposto, podemos afirmar que uma par-
cela significativa do sucesso do teste exploratório gerenciado
por sessões depende da experiência, intuição e julgamento
do testador que irá conduzir a exploração. Dessa forma, se o
teste exploratório for conduzido por profissionais experientes,
muitos defeitos importantes serão encontrados rapidamente,
já que é exigido menos planejamento e preparação (em com-
paração com estratégias tradicionais de testes).
ResultadosNo gerenciamento de testes baseado em sessões, cada sessão
de teste exploratório resulta em um conjunto de notas escritas
que pode ser revisado por alguém (um líder de testes, um ge-
rente, o cliente, etc). Esta é uma das características fundamen-
tais que diferenciam esta abordagem de testes exploratórios
em relação ao teste exploratório freestyle. É recomendado que durante o teste exploratório o testador deve registrar
os resultados no relatório da sessão. Este relatório inclui a
descrição da missão, o nome do testador, notas sobre o que
foi testado, o ambiente de testes, arquivos de dados, defeitos
Edição 54 - Engenharia de Software Magazine 39
AGILIDADE
encontrados, incidentes que precisam de investigação, entre
outras informações.
O relatório da sessão deve conter algumas métricas básicas em relação à distribuição do tempo durante a exploração.
Recomenda-se o registro das métricas TBS, que é o acrônimo
para as seguintes métricas:
• (T) Test Execution/Design: Percentual do tempo total gasto
na criação e execução dos testes exploratórios;
• (B) Bug Investigation/Report: Percentual do tempo total
gasto na investigação e relato de defeitos;
• (S) Setup: Percentual do tempo total gasto em prepação (es-
tudo, configuração de hardware/software, outras atividades
não relacionadas ao teste, etc).
No teste exploratório, os testadores são encorajados a investir
parte do seu tempo em investigações de áreas não relacionadas
ao escopo da missão. Este desvio do objetivo da missão é chama-
do de “Oportunidade”. Para fins de registro, é recomendado que seja relatado o tempo gasto em oportunidades (em comparação
ao tempo total gasto na exploração dos objetivos da missão).
Ao final de uma sessão, o testador deverá apresentar o
relatório da sessão e as métricas TBS para o líder de testes.
Esta prestação de contas tem o objetivo de dar visibilidade
em relação ao que foi explorado, os problemas encontrados e
os próximos passos. A reunião de prestação de contas siga a
estrutura descrita pelo acrônimo PROOF:• (P) Past (passado): O que aconteceu durante a sessão?;• (R) Results (resultados): Quais resultados foram obtidos
durante a sessão?;
• (O) Obstacles (obstáculos): Quais obstáculos atrapalharam
a exploração?;
• (O) Outlook (previsão/perspectiva): O que ainda falta fazer?;
• (F) Feelings (sentimentos): Como o testador se sente (em
relação ao teste ou a qualidade do sistema)?
Ferramentas de apoioComo vimos anteriormente, o teste exploratório depende
exclusivamente da criatividade, intuição e julgamento do
testador. Em função disso, o teste exploratório não pode ser
automatizado. No entanto, o testador pode fazer uso de fer-
ramentas para apoiar a gestão do teste exploratório. Ao invés
de usar planilhas ou arquivos, o testador pode utilizar ferra-
mentas especializadas em gestão de testes exploratórios para
descrever as missões, registrar o status das sessões, apontar
métricas, entre outros recursos. Dentre as ferramentas mais
conhecidas, podemos citar:
• SessionCreator: https://sites.google.com/site/sessioncreator/• Session Tester: http://sessiontester.openqa.org/
• Session Based Tester: https://sites.google.com/site/sessionbasedtester/
• Session Web: http://code.google.com/p/sessionweb/
Adicionalmente, o testador pode fazer uso de ferramentas
para registrar as evidências da execução do teste exploratório.
As evidências podem ser capturadas por meio do registro de
comentários, vídeos e imagens. Dentre as ferramentas existen-
tes, podemos destacar as seguintes:
• Rapid Reporter: http://testing.gershon.info/reporter/
• TestExplorer: http://www.testexplorer.com/
• Qtrace: http://www.qasymphony.com/qtrace-features.html • BB TestAssistant: http://www.bbsoftware.co.uk/BBTest Assistant.aspx
• Wink: http://www.debugmode.com/wink/
ConclusãoDesde sua criação há cerca de 10 anos atrás, o teste explo-
ratório vem paulatinamente conquistando espaço dentro
das empresas. No entanto, a carência de métodos de gestão
e ferramentas de apoio sempre foi um entrave para o uso de
testes exploratórios em larga escala.
Neste cenário, o SBTM (Gerenciamento de testes baseado
em sessões) foi um divisor de águas para a comunidade de
testes em função de ser um método de gestão leve e fácil de
aplicar. Além disso, o SBTM permite o controle sem o peso da
burocracia comum a métodos de gestão tradicionais.
Exploratory Testing Explained
http://www.satisfice.com/articles/et-article.pdf
Exploratory Testing in an Agile Context
http://www.agilistry.com/downloads/ETinAgile-agile2011-final.pdf
Exploratory Testing Explained
http://www.satisfice.com/articles/et-article.pdf
Evolving Understanding About Exploratory Testing
http://www.developsense.com/blog/2008/09/evolving-understanding-about/
Bach, James. Bach, Jon. Dynamics of Exploratory Testing
http://www.quardev.com/content/whitepapers/ExploratoryTestingasSport_JonBach_
PNSQC06pdf.pdf
How to Manage and Measure Exploratory Testing
http://www.quardev.com/content/whitepapers/how_measure_exploratory_testing.pdf
Session-Based Test Management
http://www.satisfice.com/articles/sbtm.pdf
CRAIG, R.D., JASKIEL, S. P., “Systematic Software Testing”, Artech House Publishers, Boston, 2002.
PRESSMAN, R. S., “Software Engineering: A Practitioner’s Approach”, McGraw-Hill, 6th ed, Nova
York, NY, 2005.
Links
Dê seu feedback sobre esta edição!
A Engenharia de Software Magazine tem que ser feita ao seu gosto.Para isso, precisamos saber o que você, leitor, acha da revista!Dê seu voto sobre este artigo, através do link:
www.devmedia.com.br/esmag/feedback
Dê
seu Feedback
sobre esta edição