PLANEJAMENTO DE TESTES- PRATICANDO TESTES ÁGEIS #4

Em teste de software sabemos que é impossível testar exaustivamente uma aplicação, pois cobrir todos os cenários seria muito custoso. A não ser que a aplicação que está sendo testada seja muito simples e com parâmetros de entradas limitados. Nesse caso, devemos calcular o esforço dos testes baseando-se nos riscos e prioridades.

Antes de iniciarmos uma sprint é essencial realizarmos um planejamento das atividades de testes que consiste em:

  • Definir um cronograma de atividades: quais as atividades que devem ser realizadas, as etapas a serem seguidas e a ordem cronológica de execução.
  • Alocação de recursos: quem realiza as atividades e quais ferramentas/técnicas serão utilizadas.
  • Definir marcos de projeto: data de início e fim de cada macro atividade.

Abaixo irei apresentar uma das maneiras para realizar um planejamento de testes:

1. Entenda o Escopo

Entender o escopo da funcionalidade que será testada é fundamental para conseguir levantar os cenários de testes. Quando não entendemos o que precisamos testar há uma grande probabilidade de investirmos mais tempo do que o estimado na execução dos testes. Além disso não conseguimos analisar templates de testes para reuso e novos casos de testes tendem a ficar confusos e incoerentes com o escopo.

Para ajudar a entender melhor o escopo escreva os roteiros de testes utilizando a semântica do BDD (Behavior Driven Development). Como o BDD é orientado ao comportamento do sistema quando escrevemos os roteiros com essa semântica conseguimos estruturar melhor as entradas e saídas dos testes deixando muito mais claro o seu objetivo. Para saber mais sobre a utilização de BDD clique aqui.

2. Mapeie os Cenários de Testes

O mapeamento dos cenários de testes é uma atividade essencial no desenvolvimento de projetos de testes, pois sem um mapeamento você não conhecerá seus objetivos, não saberá aonde deve chegar e não terá certeza se alcançou sua meta.

Após entender o escopo precisamos saber quais as combinações possíveis de cenários que podemos obter da funcionalidade. Para isso o uso de tabelas verdade ajuda muito para chegar em um número aproximado de cenários. Para saber mais sobre a utilização de tabela verdade clique aqui.

3. Priorize os Cenários de Testes

Quando finalizado o levantamento de cenários de testes é de extrema importância priorizarmos os casos. Para isso podemos utilizar as severidades Alta, Média e Baixa muito parecido com o que fazemos em Gestão de Defeitos.

No momento da priorização dos cenários é importante levar em consideração os casos mais críticos para o sistema, como por exemplo, os que podem causar perdas financeiras. Estes classificamos como Alta. Já os cenários pouco usados pelos clientes ou os que não causam perdas financeiras podem ser classificados com as severidades mais baixas.

A priorização irá nos ajudar a direcionar o foco de testes nos cenários mais críticos para o sistema. Somente quando terminamos estes é que passamos para os demais casos com severidades mais baixas. É importante ressaltar que a priorização não deve ser feita por apenas um membro da equipe. O ideal é que seja realizada em conjunto com o Product Owner do projeto e que os demais da equipe também possam contribuir com suas opiniões.

4. Identifique Práticas Ágeis que Ajudem a Diminuir o Tempo e Risco do Projeto

A adoção de práticas ágeis em desenvolvimento de softwares são de suma importância para o sucesso de um projeto. Quanto antes identificamos um bug mais barato ele será, portanto nosso dever é antecipar os possíveis problemas que a funcionalidade pode ter. Para isso podemos fazer uso do Pair Testing, Dev Box Testing, BDD, TDD, entre outras.

5. Defina um Critério de Parada

Podemos ter uma funcionalidade com N entradas e saídas. O tempo do projeto é curto e a exigência é alta. Vamos conseguir testar todas as combinações antes da entrega? Provavelmente a resposta para esta pergunta é não. Então, após identificar e priorizar os casos de testes devemos definir qual será o nosso critério de parada. Então, quando devemos parar de testar?

Não há uma resposta exata para esta pergunta. Isso dependerá da expectativa do cliente em relação a aplicação que será entregue. No entanto, deve estar claro para a equipe o que agregará mais valor para o cliente e então a métrica sairá desse feeling. Sabendo que temos, por exemplo, 100 cenários de testes, sendo 70% com severidade Alta, 15% com severidade Média e 15% com severidade Baixa, a equipe pode entrar num consenso e dizer que o critério de parada dos testes é de 85% dos cenários concluídos com sucesso. Sempre lembrando que os cenários de severidade Alta serão executados primeiro.

Desta maneira, é importante que o Product Owner participe da priorização dos casos, pois ele trará para a equipe a visão do cliente.

6. Monitore o Andamento dos Testes

De nada adianta termos todos os cenários mapeados e priorizados se não monitorarmos o andamento das atividades. Para isso é essencial termos uma ferramenta de gerenciamento das atividades onde seja possível visualizar de forma macro os cenários de testes que estão concluídos, com erro, bloqueados ou pendentes.

É importante também definirmos datas de início e fim para cada atividade. Para ajudar nessa tarefa podemos utilizar, por exemplo, a ferramenta Trello e então definir metas diárias de execução de testes.

Dessa forma temos um maior controle sobre os atrasos e a equipe toda consegue acompanhar o andamento dos testes.

Existem muitas ferramentas no mercado que disponibilizam esse gerenciamento, mas o foco deste post não é falar sobre ferramentas, mas sim sobre a ação de gerenciar.

Conclusão

A arte de testar não é somente executar cenários após a liberação do desenvolvimento. Testar exige planejamento, controle e gerenciamento das atividades. Antes de começarmos um projeto devemos conhecer nossos objetivos para conseguirmos trabalhar sem grandes imprevistos.

Com esses passos não ajudamos somente os membros da equipe de testes, mas também os desenvolvedores que poderão consultar os cenários levantados para testes unitários e automatização, o Product Owner que acompanhará se o objetivo do escopo está sendo alcançado, o Scrum Master  que terá uma visão do todo, etc.

Portanto, é importante tratarmos o processo de testes de nossa empresa como um projeto de qualidade que sempre precisa ser aprimorado para que consigamos entregar mais valor agregado ao cliente.

Por EMANUELLE BERNARDO SPONTON

Formada em Tecnologia e Análise de Desenvolvimento de Sistemas, Certificada em Testes (Foundation Level - CTFL), e-learning em Gestão de Projetos - FGV, cursando Gestão e Estratégia de Empresas - Instituto Unicamp

Postado em: 27 de março de 2017

Confira outros artigos do nosso blog

Falando sobre Teste de Intrusão (ou PenTest)

03 de abril de 2018

Jacqueline Costa

Protractor – Testes automáticos end-to-end para aplicações em Angular

07 de dezembro de 2017

Jacqueline Costa

Testes em Node.js

04 de dezembro de 2017

Alan Cesar Elias

Automatizando Testes de Contrato API REST – Parte 1

30 de novembro de 2017

Monise Costa

Deixe seu comentário