Muitas Organizações e seus profissionais têm dificuldade em distinguir as diversas motivações que levam à realização dos testes de software. É claro que todos os testes têm por objetivo a identificação de erros, porém devemos entender que a localização de todo e qualquer tipo de defeito exigirá um esforço muito grande pela equipe de testes. Se não temos tempo nem recursos suficientes para executar todos os procedimentos de testes, devemos planejar uma estratégia onde estabelecemos quais tipos de erros queremos prioritariamente encontrar.
Se avaliarmos uma simples operação de saque, poderemos entender porque é tão importante possuir uma clara compreensão do que estamos realmente querendo testar. Se nosso objetivo for identificar todos cenários de testes desta operação, nosso universo de possibilidades será muito amplo, dificultando os trabalhos de levantamento. Quando isto ocorre, é comum observarmos que os cenários de testes criados são muito dispersivos, pois objetivam identificar toda e qualquer natureza de defeitos. No levantamento abaixo, percebemos que a lista atendem objetivos de testes bem diferenciados: existem testes ligados aos requisitos de negócios, testes relacionados à performance do software, testes relativos à compatibilidade com outros ambientes de execução e até mesmo testes de segurança da aplicação. Ou seja, tudo é importante e tudo deve ser testado.

É muito comum encontrarmos organizações que fazem de tudo um pouco em relação a testes, o que demonstra falhas em relação ao conceito de categorização que esta sendo aplicado, refletindo numa menor qualidade do planejamento da validação do software. Isto acontece porque os profissionais de testes planejam trabalhos de naturezas totalmente diferentes numa única abordagem e levantamento. Misturar categorias de testes (usabilidade, funcionais, carga, performance, contingência) faz com que os trabalhos de levantamento dos cenários sejam superficiais e incompletos, pois perdem qualidade em função da amplitude dos testes que estamos buscando.
Organizando em categorias de testes
Se nosso levantamento focar numa única categoria de testes, poderemos melhor conduzir o processo de testes, possibilitando concentrar nossas energias numa única perspectiva de defeitos a serem identificados. Isso facilita o direcionamento do levantamento e possibilita a realização de reuniões mais rápidas e produtivas. É claro que determinadas categorias com importância reduzida poderão ser planejadas em conjunto, agrupadas num único levantamento, em função da existência de poucos cenários e sua baixa criticidade. Nossa preocupação maior é sempre com as categorias mais complexas e importantes, que exigem um maior esforço e um alto nível de qualidade dos levantamentos. Não podemos deixar que determinadas categorias críticas sejam prejudicadas por outras de menor importância.

Se observarmos este levantamento e compará-lo ao realizado anteriormente conseguiremos demonstrar claramente a vantagem da segmentação destes cenários. Fica óbvio aqui que a categorização dos cenários possibilita organizar melhor todo o planejamento dos testes, facilitando o entendimento de como a área estará conduzindo o esforço de validação do software. Perceba que é mais simples refinar os cenários de testes quando nós o agrupamos em categorias, o que amplia a cobertura dos testes e aumenta a eficiência da detecção de defeitos.
É fundamental entender que cada categoria possui seu ciclo de teste independente, uma vez que suas naturezas são muitas vezes conflitantes, não possibilitando sua coexistência. Um exemplo disto é a realização de testes funcionais e testes de performance ao mesmo tempo. No primeiro teste o fundamental é a existência de uma massa criteriosamente selecionada para que todas as ações sejam avaliadas e comparadas com o comportamento esperado. No segundo teste, o que interessa é a monitoração dos tempos de resposta em relação ao acesso simultâneo de um determinado número de profissionais, sendo necessário estar com um volume de informações compatíveis com o ambiente de produção. Suportar estas 2 atividades simultaneamente significa conciliar interesses totalmente conflitantes.
Priorizando as categorias de testes
Um único sistema poderá ser submetido a várias categorias de testes, cabendo a todas as áreas envolvidas no desenvolvimento do software estabelecerem quais categorias serão aplicadas durante os procedimentos de validação. O critério para estabelecer quais categorias serão executadas deve estar baseado nas características do sistema e dos riscos envolvidos no projeto.
É fundamental compreender que existe uma relação delicada entre custo e benefício dos trabalhos de testes. As categorias de testes mais importantes são aquelas que irão garantir aspectos vitais do software. Outras categorias irão atacar aspectos secundários e bem menos importantes. O fundamental é entender que existe um esforço e custos envolvidos na decisão de empregar ou não uma determinada categoria de testes.
Um instrumento simples a ser utilizado é a priorização das categorias dentro da perspectiva de importância e risco relacionado ao sistema. Todos os esforços dos testes deverão concentrar-se nas categorias de maior prioridade, por serem mais críticas ao software. As outras categorias deverão ser realizadas num segundo momento, caso exista tempo e recursos para tal.
Uma forma eficiente de como estabelecer prioridades nas categorias de testes é idealizar uma tabela onde serão avaliadas as características mais críticas de um software e submetê-las a todas as áreas que estão participando do processo de desenvolvimento desta aplicação. Como existe uma tendência natural das áreas estabelecerem que tudo é altamente crítico, podemos definir que somente três itens poderão receber o mesmo grau de importância, forçando a todas as áreas a melhor avaliar os pesos dados a cada critério definido.

Após a execução do levantamento, estes dados deverão ser compilados e seus resultados apresentados formalmente às áreas, possibilitando que todos comparem com suas impressões individuais e que tenham a oportunidade de discutir determinados pontos de conflito. Também é importante ressaltar a todos que este resultado será empregado como instrumento de priorização dos testes, ou seja, as características que exercem uma maior preocupação com o grupo serão as primeiras a serem realizadas.
Gisele Nasser
Alexandre, sou fã dos seus artigos sobre teste. Parabéns! Você tem algum texto sobre medição para os projetos de testes/processo de teste (identificação das medidas, procedimentos para coleta e análise de dados, objetivos das medições, etc)? Obrigada pela atenção
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.