Dev (Back & Front)ARTIGO

Gerenciando dados de teste

Para criar testes funcionais para seus aplicativos de web, você precisa de dados em seu banco de dados. O ponto crucial sobre esse dado de teste é que ele deve ser estável. Caso contrário, os testes não serão deterministas, o que os torna inúteis. Por exemplo, se o teste usa um registro de funcionário com ID = 100 e Nome = “Bob Smith”, é melhor você ter certeza de que Bob Smith com ID 100 está disponível cada vez que você executar o teste.

Como o dado de teste é uma parte crítica do app e pelo fato de ele precisar ser estável, ele realmente deve ser tratado como qualquer artefato de outra fonte (como o código ou esquema de banco de dados). Ele deve estar sob controle de versão e você deve ter uma estratégia de como controlá-lo corretamente.

Escolhendo um formato

Vamos considerar primeiro um aspecto simples, porém importante do gerenciamento de dado de teste: o formato em que você o armazena. Uma vez que bancos de dados podem ser preenchidos de várias maneiras (restaurar a partir de um único arquivo de backup, argumentos INSERT etc.), você tem uma escolha quanto ao formato que você usa para armazenar os dados de teste. Você pode armazenar a representação binária (backup) ou os arquivos de texto correspondentes a cada tabela.

Eu prefiro arquivos de texto porque é mais fácil ver o que mudou. Você pode simplesmente comparar várias versões e encontrar exatamente quais registros foram adicionados a um determinado check-in.

Criando dados de teste

Em seguida, vamos discutir a criação e a atualização de seus dados de teste. Em teoria, a criação de dado de teste é simplesmente uma questão de adicionar registros aos arquivos certos de CSV e verificá-los. Na prática, isso é traiçoeiro por alguns motivos:

  • tabelas podem ter as chaves geradas pelo sistema (colunas IDENTITY)
  • tabelas podem ter referências a outras tabelas (FOREIGN KEYS)

Por isso, é provavelmente melhor gerar os dados diretamente no banco de dados. Muitas vezes, a maneira mais fácil de fazer isso é passando pelo app. Por exemplo, se você precisa de um registro de funcionário, é só usar o aplicativo para criar um.

Há outro aspecto para o qual deve-se ficar atento. Por causa das questões fundamentais que eu mencionei anteriormente, a geração de dados deve ser atômica. Em outras palavras, várias pessoas não podem gerar dados de teste ao mesmo tempo, porque eles podem inadvertidamente gerar registros diferentes com a mesma chave.

Para evitar problemas, você deve ter um processo para garantir que apenas uma pessoa de cada vez possa gerar dados de teste. Se os seus dados de teste estão no controle de versão, você pode verificar os arquivos CSV com um bloqueio exclusivo, atualizá-los, e verificar novamente.

Outra estratégia é usar algum tipo de token para assegurar a exclusividade. Poderia ser tão simples como um brinquedo de pelúcia ou tão chique como um aplicativo online que mostra quem tem o token. Todos os membros da equipe sabem e concordam que só a pessoa que tem o token tem permissão para gerar dados de teste.

Ferramentas

Existem algumas ferramentas disponíveis para gerenciar dados de teste, sendo o Jailer provavelmente o mais popular. Nossa equipe utiliza um grande projeto de código aberta chamado nDump (link github). Ele tanto pode exportar um banco de dados em arquivos CSV, bem como atualizar a partir deles. Ele também funciona bem com a CI (Jenkins, no nosso caso), porque ele pode ser executado a partir da linha de comando.

?

Texto original disponível em http://tatiyants.com/managing-test-data/

Gosta de escrever coisas engraças sobre tecnologia. É criador do JS.js e do movimento MoreSQL, além de inventor do Guilt Driven Development.

Ver perfil