Mostrando postagens com marcador Automação de testes. Mostrar todas as postagens
Mostrando postagens com marcador Automação de testes. Mostrar todas as postagens

Massa de dados com data fixa: como evitar a quebra dos testes automatizados?

Um dos maiores medos dos testadores/automatizadores é quando um cenário de testes vem com data fixa. Se este teste é executado daqui a um tempo novamente, este cenário irá quebrar pelo simples fato de possuir uma data fixa nas pré-confições do cenário. Por exemplo, tenho testes que utilizam informações de um período de férias do mês anterior, no próximo mês o mês anterior já não será o mesmo, isso provavelmente fará o teste falhar. 

Que alternativa temos para as datas fixas?
Uma alternativa fácil, que também é sujeita a falhas, é "fixar" a data da máquina onde os testes estão executando. Eu acho esta uma prática muito errada, pois a máquina pode alterar o horário para o horário correto no meio da execução dos cenários automatizados. Aí perdemos a execução (Isso já me aconteceu devido à política de máquinas definida no AD aqui na empresa :'( ).
Outra alternativa é ter um mecanismo de "popular" a base através de um script antes de iniciar o teste. Isto permitiria que os dados inseridos fossem dinâmicos. Este script gera uma manutenção alta, pois alterações na base podem fazer com que o script pare de funcionar ou faça algo não esperado.

Existem ferramentas de mercado para inserir massas de dados que serão utilizadas nos testes?
Existe sim meus caros testadores! Uma boa opção é o DBUnit. Ele lê de um arquivo XML os registros e altera na base.

Como funciona quando uma validação precisa ser previsível?
Bom, a previsibilidade dos script pode ser garantida de forma lógica. Por exemplo, Existem cenários de testes para um processo de inserção de nota fiscal, onde o número da nota deve ser igual ao número anterior + 1. Para evitar que ocorram erros futuros quando se adicionar notas indiscriminadamente, adota-se uma validação lógica a qual seja especificada que o número da nota inserida deve ser igual ao número da nota anterior + 1. Dessa forma, ao se adicionar novas notas necessárias para outros cenários futuros não quebrará o teste.
Isso ocorre também no caso de datas exemplificado no início deste post. Repare que a especificação é estática e bem definida para o propósito de ser validado, porém por também ser lógica a implementação dela é que será dinâmica de acordo com a data em que o teste será executado.

Você já se deparou com uma situação assim? Comente como foi a solução!
Até mais! :D