quinta-feira, 18 de novembro de 2010

Entre a execução manual e a automática

Automação de testes é o uso de aplicações de software, scripts e/ou outros aplicativos de modo a  controlar a execução dos testes. Estes permitem a comparação dos resultados reais com os resultados previstos. Normalmente  usa-se  a automação de testes com o objectivo de automatizar um processo manual já existente de modo a eliminar que tarefas repetitivas e aborrecidas sejam feitas por humanos. 

Testes com execuções Manuais

O Tester tem a necessidade de executar todas as etapas do teste de modo manual e informar o sistema do resultado obtido. Existem várias ferramentas para gestão de testes que incluem uma interface gráfico que permite aligeirar a tarefa de cada utilizador.

Algumas vantagens de efectuar testes manuais são:

  • O teste manual é preferível para produtos com ciclos de vida curtos.
  • O teste manual é preferível para os produtos que possuem interfaces gráficas que mudam constantemente.
  • Requerem menos tempo e dinheiro para começar o teste manual produtivo, i.e., têm um retorno mais rápido.
  • A automação não consegue substituir a intuição e o raciocínio humano.
  • Com um teste automatizado não é possível mudar de rumo no meio de um teste para examinar algo que anteriormente não haviam sido considerado, ou um qualquer pormenor estranho que não faz parte do plano original.

Testes Automáticos

Existem inúmeros modos se implementar inúmeros testes automatizados. Para tal é necessário que a ferramenta de gestão de testes seja compatível com os próprios testes. Para isso, as ferramentas de gestão de testes podem propor estruturas de automação de propriedades ou APIs para interface com terceiros. De modo a que o utilizador consiga cumprir o objectivo pretendido.

Benefícios da Automação de Testes

  • Fiabilidade – O teste efectua exactamente a mesma operação cada vez que é executado.
  • Velocidade – Sendo o processo automático não é necessária a presença humana para a sua execução, pelo que esta pode ser desviada para outras tarefas acelerando assim o processo. Além disso ferramentas automáticas tendem a executar mais rapidamente do que humanos.
  • Reutilização – O teste pode ser utilizado inúmeras vezes entre diferentes versões do software.
  • Melhor Qualidade do Software – Como é possível correr mais testes com o mesmo conjunto de recurso o que irá levar a um aumento da cobertura do software e a uma consequente melhoria da qualidade do software.

Contras da Automação de Testes

Embora a automação de testes traga muitas vantagens, a mesma também possui um conjunto de desvantagens. Algumas das desvantagens são:

  • È necessária bastante proficiência para se criar scripts automatizados, pois estes por norma exigem bons conhecimentos de programação assim como do domínio da aplicação.
  • A correcção do script de teste é algo também bastante importante e que pode ser uma fonte de dores de cabeça. Com a automação começam a surgir problemas de termos testes falhados não porque o comportamento da aplicação está incorrecto mas porque o script foi mal codificado. Por outro lado também podemos ter situações de falsos positivos. Automatizar é na prática escrever código para ser executado que está, obviamente, sujeito a erros tal como o código desenvolvido e alvo de testes.
  • Testes a interfaces gráficos podem se tornar bastante caros. Porque uma pequena mudança no interface da aplicação irá obrigar à correcção do script de teste.
  • A gestão de dados de testes torna-se complexa quando se possui um modelo de dados em “constante movimento”.

Linhas de Guia para a construção de testes automatizados

Cada requisito especificado é passível de ser automatizado. Idealmente todos os testes poderiam ser automatizados. Seria muito bom ter sempre tudo automatizado, mas infelizmente a automação é processo lento e complexo e pondo, para cada caso, em cima da mesa a relação custo/benefício de automatizar um caso de teste rapidamente chegamos à conclusão que existem inúmeros testes que ficam muito mais caros se forem automatizados do que corridos manualmente. Isto porque a automação desse caso pode ser complexa ou demorada, ou porque apenas precisamos de correr o teste uma vez, ou ainda porque o interface da aplicação vai sofrer alterações na distribuição seguinte. Sendo assim deixo alguns critérios para ajudar a escolher de forma mais adequada quais os testes a automatizar.

As seguintes áreas devem ser automatizados em primeiro lugar:

  • Tarefas repetitivas e redundantes que são aborrecidas e que tendem a causar erros humanos com facilidade.
  • Partes mais estáveis da aplicação. Não vale a pena automatizar partes que sabemos que vão ser modificadas um pouco depois.
  • Funcionalidades mais críticas. Estando estas funcionalidades automatizadas é possível correr estes testes mais vezes.

A criação de testes automatizados deve seguir, sempre que possível, o seguinte conjunto de critérios:

  • Conciso – Deve ser o mais simples quanto possível e não mais simples.
  • Auto-Verificação – Efectua a verificação dos seus próprios resultados de teste sem a necessidade de intervenção humana.
  • Repetitivo - O teste têm de poder ser executado várias vezes.
  • Robusto – Várias execuções do mesmo teste devem devolver o mesmo resultado, desde que as condições do software se mantêm as mesmas.
  • Claro – Cada instrução do script deve ter um objectivo fácil de entender.
  • Específico – Cada teste deve efectuar uma verificação a uma funcionalidade específica do software.
  • Independente - Cada teste deve correr individualmente ou como parte de uma suite mais alargada com uma ordem de execução arbitrária.
  • Sustentável - Os testes devem ser fáceis de compreender, de modificar e melhorar.
  • Rastreáveis – Deve ser possível ligar cada teste aos requisito e ao código coberto.

Alguns critérios para decidir se um teste deve ou não ser automatizado:

  • Quantidade de vezes que se pretende executar o teste.
  • Complexidade necessário para automatizar o teste.
  • Importância da função alvo de teste.

Observações:

  • Se a empresa ou instituição nunca teve qualquer tipo de processo de testes até ao momento, não será recomendável partir logo para a automação. Os resultados obtidos provavelmente não iram ser os melhores o que pode levar a frustrações e a conclusões erradas de que um processo de testes não trás vantagens.

Bom, até à próxima.

Sem comentários:

Enviar um comentário