Diretriz: Programando Testes Automatizados
Esta diretriz discute formas de estruturar, gravar, inserir dados, executar e tratar erros em testes automatizados.
Relacionamentos
Descrição Principal

Introdução

Embora a programação de testes automatizados deva contribuir com o esforço de teste como um todo, geralmente não realiza todo esforço de teste. De fato, ambientes de teste que são baseados em uma abordagem de total automação terminam gastando mais tempo em automação de teste do que testando. Antes de você começar a desenvolver scripts de teste automatizado, considere se é mais eficiente executar testes manuais. Alguns aspectos de uma aplicação são testados com mais eficiência manualmente (por exemplo, teste pela interface gráfica para o usuário versus teste pela manipulação de dados). Se você decidir programar scripts de teste automatizados, examine quais aspectos da criação de script de teste podem ser automatizados e comece a projetar seus scripts.

Projete seus testes automatizados

Sem algum nível de design de seus testes automatizados, introduzir automação em seu esforço de teste pode levar a mais problemas do que resolvê-los. Você deve considerar o desenvolvimento dos seus testes automatizados de acordo com um ciclo de vida com requisitos, design, implementação e teste da automação dos testes. Esta abordagem pode ser formal ou informal dependendo das necessidades de seu projeto. Efetuando o design da programação de seus testes automatizados, você pode evitar gastar tempo programando testes errados, re-trabalhando testes programados, decifrando diferentes estilos de codificação na programação dos testes, etc.

Scripts gravados versus programados

Ainda que existam benefícios claros em gravar scripts (por exemplo, a facilidade de criação ou a capacidade de testadores novatos aprenderem a linguagem de programação de script), os scripts gravados também apresentam seus próprios problemas. As desvantagens de executar scripts gravados são bem conhecidas. Eles são fáceis de criar, mas muito difíceis de atualizar. Problemas com a confiabilidade do script, dados embutidos no código ou mudanças na aplicação a ser testada gerando a necessidade de recriá-los estão bem documentadas. Por outro lado, programar scripts pode apresentar muitas dificuldades: eles são difíceis de criar para um testador novato, eles podem requerer tempo e esforço consideráveis para serem desenvolvidos, e podem ser difíceis de depurar. A maior parte das ferramentas de teste torna estas dificuldades menos problemáticas fornecendo ao testador funcionalidades de suporte a programação de script, tais como formas de estabelecer listas de alvos de teste, formas sistemáticas de definir pontos de verificação, selecionar datapools, construir comandos no script (por exemplo, comando de sleeper), comentar e documentar o script. Outra grande vantagem, que frequentemente passa despercebida, do uso das ferramentas de teste para atenuar estes riscos é a habilidade de adicionar um script existente na forma de fazer correções em um script existente, testar novas características de um alvo de teste ou na aplicação sob teste, ou continuar uma gravação depois de uma interrupção.

Scripts de testes funcionais e de desempenho

Quando discutimos automação de scripts de testes, é importante distinguir entre testes funcionais e de desempenho. A maior parte das discussões sobre programação de scripts de testes automatizados foca no teste da funcionalidade de uma aplicação. Isto não é incorreto, já que muitos testes automatizados focam testes funcionais. A programação de scripts de testes de desempenho, entretanto, possui características únicas. A automatização de testes de desempenho fornece a habilidade de programaticamente selecionar cargas de trabalho adicionando grupos de usuários para testar a carga sobre uso em grupo, definindo comportamento de tempo para pensar, executando testes aleatórios ou a uma taxa definida, ou definindo a duração de uma execução. A automação de testes de desempenho também permite que você crie e mantenha agendamentos para seus testes.

Testando scripts de teste

Quando estiver testando seus scripts de testes, verifique se você está testando scripts de teste gravados ou programados. Para scripts gravados, boa parte do trabalho de depuração do script consiste em erros que são introduzidos devido a mudanças no alvo de teste ou no ambiente de teste. Quando você executa um script de teste gravado, considere o alvo de teste do script. Algumas ferramentas de automação de teste capturam esta informação como parte do script de teste. Depurar um script de testes gravado consiste muito em determinar se mudanças feitas no alvo de teste criaram condições de erro no script. Em geral, há duas categorias principais a serem examinadas neste caso: mudanças na Interface de Usuário e nos dados sensíveis da sessão de testes (por exemplo, dado com data atual). Na maioria dos casos, discrepâncias entre a gravação e a execução causam erros em seus scripts de teste gravados.

Testar scripts de testes programados envolve muitas das mesmas técnicas de depuração que você aplica para depurar uma aplicação. Considere tanto a lógica de controle de fluxo como os aspectos de dados do seu script. Ferramentas de testes automatizados fornecem IDEs para depuração de scripts assim como funcionalidades para tratamento de datapool que facilitam este tipo de testes. Duramente a execução de scripts de testes, um teste que usa um datapool pode substituir valores nos testes programados com dados de teste variados que estão armazenados no datapool.