conhecendo testes explorat+¦rios - parte 2

4
36 Engenharia de Software Magazine - Conhecendo os testes exploratórios – Parte 2 Cristiano Caetano [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 2 Hora de gerenciar T este 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 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

Upload: cesar-roberto-pamplona-filho

Post on 12-Dec-2015

216 views

Category:

Documents


0 download

DESCRIPTION

antiguo sobre teste

TRANSCRIPT

Page 1: Conhecendo testes explorat+¦rios - parte 2

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

Page 2: Conhecendo testes explorat+¦rios - parte 2

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

Page 3: Conhecendo testes explorat+¦rios - parte 2

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

Page 4: Conhecendo testes explorat+¦rios - parte 2

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

seu Feedback

sobre esta edição