fbpx

Testes Exploratórios como uma abordagem de aprendizagem sobre a qualidade do software

Testes Exploratórios tem o seu destaque no quadrante 3 (Q3) dos Quadrantes de Testes Ágeis por ser uma abordagem que dá suporte ao testador para explorar manualmente uma grande diversidade de objetivos. Todos estes alinhados com o aprendizado sobre a qualidade do software em validação.

 

Quando aplicamos Testes Exploratórios, usualmente, utilizamos o ciclo Planejamento > Test Design > Execução > Análise. Em todas estas fases há bastante aprendizado. Isto faz com que o testador em tempo real  possa entender qual o seu próximo movimento em busca do objetivo da execução.

Quais objetivos podemos alcançar com Testes Exploratórios?

Encontrar defeitos que normalmente não são capturados por outras abordagens (testes scripted, por exemplo) é geralmente a primeira coisa que vem em mente quando pensamos nos objetivos de Testes Exploratórios.

Porém, além dessa missão, há vários outros objetivos que podem ser alcançados através da utilização dessa poderosa abordagem de testes. Veremos a seguir as que considero mais aplicáveis ao dia-a-dia dos projetos.

1. Encontrar fraquezas do software

Quando testamos, além de encontrar defeitos, queremos obter informações sobre a qualidade do software, quais as áreas que são mais instáveis/estáveis, quais são as fraquezas e os riscos associados.

Uma maneira de conseguir isso é executar TEs planejados com base em uma análise de dados sobre o software. Alguns exemplos desses dados:

  • Defeitos escapados
  • Funcionalidades mais utilizadas
  • Histórico de defeitos do software
  • Entrevistas com stakeholders

2. Aprender sobre o software

Muitas vezes nos deparamos com a situação de termos que avaliar softwares de prateleira para integrar com sistemas existentes ou testar novas funcionalidades de um grande sistema que nunca havíamos interagido. Há também momentos em que até conhecemos o software, mas ele ainda está em fases iniciais do desenvolvimento, ou seja, ainda com muita instabilidade de funcionamento, performance, etc.

Em todas essas situações nós teremos que aprender sobre o software. Seja para entender como ele funciona, como ele se integra com outros sistemas, quais suas entradas e saídas ou para encontrar suas principais fraquezas e poder contribuir para a melhoria do mesmo, ainda em estágios iniciais.

3. Aumentar variabilidade

Quando falamos de TE, normalmente lembramos de testes scripted. É normal querer comparar os resultados obtidos por essas abordagens. Mas é preciso lembrar que elas tem objetivos diferentes.

Normalmente os testes scripted são utilizados para confirmar se o software se comporta de acordo como especificado. Escrevemos testes para cada um dos requisitos e os mesmos, geralmente, são repetitivos.

A ideia em TE é poder variar os cenários, ir além dos passos definidos pelos scripts, explorar áreas que não são cobertas pelos mesmos. A variação se dá principalmente pela liberdade de planejar nossos próximos passos, nossas próximas execuções, com base no que acabamos de aprender sobre o software.

O video abaixo mostra, de forma bem divertida, essa diferença e esse poder que TE tem em poder variar cenários e se replanejar praticamente em tempo real.

4. Ser aplicável quando há ciclos curtos de desenvolvimento

Cada vez mais as metodologias e técnicas ágeis são realidade nos diversos projetos de software e sistemas. Com isso, algumas mudanças são sentidas. Uma delas é o uso de iterações com time-box, que levam a ciclos curtos de desenvolvimento – geralmente de 2 a 4 semanas. Quando falamos desses ciclos, temos que entender que ele incorpora todas as atividades de codificação, testes, design, etc. Abaixo temos o exemplo desses ciclos de desenvolvimento utilizando Scrum.

Outra realidade que enfrentamos são as demandas emergenciais em projetos que precisam ser resolvidas rapidamente mas sem comprometer a qualidade.

Em ambas as situações podemos utilizar TE como parte de nossa estratégia de testes. Isso é possível pois ele possui como fundamentos a realização de planejamento, escrita de testes e execução dos mesmos em tempo real. E isso tudo se fortalece quando utilizamos o feedback contínuo que é obtido a partir do próprio teste em execução como entrada para uma nova rodada de planejamento.

5. Adaptável a falta ou mudanças constante de requisitos

Teste Exploratório mostra sua flexibilidade e adaptabilidade também quando nos deparamos com situações em que o software que iremos testar não possui requisitos documentados ou quando os mesmos mudam com frequência.

Na primeira situação, teremos que aprender de alguma forma como o sistema funciona. Podemos realizar entrevistas com stackholders, analisar códigos e, principalmente, aprender com o próprio software. Para isso, poderemos utilizar TE para realizar testes com foco em conhecer o software, aprender os comportamentos dele e, também, poder mapear seus principais módulos e funcionalidades.

Já no segundo caso, a abordagem instrui que usemos um artefato chamado charter. Nele serão definidas a missão da execução bem como as áreas que deverão ser focadas pelo testador. Não teremos passo-a-passo ou um nível de detalhes que resulte em muito tempo de escrita de testes. Assim, quando há mudanças nos requisitos, com TE poderemos rapidamente redefinir as missões e áreas que deverão ser atacadas.

6. Avaliar defeitos

Muitas vezes encontramos defeitos depois de realizar milhares de ações seguidas. E, no momento de relatá-lo, temos que entender o que realmente leva a reprodução do mesmo. Além disso, precisamos avaliar se o defeito é reproduzível a partir de outra tela ou módulo do sistema. Como isso se dá de forma mais aleatória, podemos utilizar TE como base para essas avaliações.

7. Compartilhar conhecimento

Geralmente nossas equipes de testes possuem profissionais com senioridades, conhecimento de negócio, habilidades técnicas e skills comportamentais diferentes. Uma maneira de poder realizar transferência de conhecimento ou mentoring de carreira com os testadores é realizando Teste Exploratório em par. Essa é uma oportunidade em que pessoas seniores podem, por exemplo, ensinar técnicas de extração de cenários a profissionais iniciantes. Outro exemplo é quando precisamos treinar novos membros do time sobre a abordagem de teste exploratório bem como sua aplicação no dia-a-dia.

Especialização em Testes Ágeis (ETA)

Na ETA da CESAR School teremos uma disciplina de 24h dedicada aos Testes Exploratórios. Iremos não só entender a teoria e processo desta abordagem, mas explorar também como colocá-la em prática nos projetos. As inscrições para a turma de Recife já estão abertas. Confere lá! \o/

2 comentários em “Testes Exploratórios como uma abordagem de aprendizagem sobre a qualidade do software”

  1. Parabéns pelo post. Ter a oportunidade de por em prática um “exploratório” deixa o QA ter a chance de traçar seus próprios caminhos e propor novas melhorias que, antes talvez, não fossem possíveis.

Deixe um comentário

O seu endereço de e-mail não será publicado.

Rolar para cima