Pergunta

Eu estou introduzindo testes de integração automatizada para uma aplicação madura que até agora só foi testado manualmente.

O aplicativo é baseado em Windows e fala com um banco de dados MySQL.

O que é a melhor maneira (incluindo detalhes de quaisquer ferramentas recomendadas) para manter testes independentes uns dos outros em termos das transações de banco de dados que irá ocorrer?

(Modificações a fonte app para este fim específico não são uma opção.)

Foi útil?

Solução

Como você está verificando os resultados?

Se você precisar consultar o DB (e parece que você provavelmente fazer) para resultados, em seguida, estou de acordo com Kris K, só que eu iria se esforçar para reconstruir o DB depois de cada caso de teste, não apenas cada suite.

Isso ajuda a evitar perigosa testes interagindo

Quanto às ferramentas, eu recomendaria CppUnit . Você não está realmente fazendo testes de unidade, mas não deve importa como o quadro xUnit deve dar-lhe a configuração e estrutura desmontagem você precisa configurar automaticamente a sua teste de fixação

Obviamente, isso pode resultar em testes de funcionamento lento, dependendo do tamanho do banco de dados, a população etc. Você pode ser capaz de montar / desmontar bancos de dados em vez de cair / reconstrução.

Se você estiver interessado em mais pesquisas, consulte a xUnit teste . É um belo livro e um bom site para este tipo de coisa.

E obrigado para automatizar:)

Nick

Outras dicas

Você pode despejar / restaurar o banco de dados para cada conjunto de testes, etc. Uma vez que você estiver automatizando isso, pode ser algo na funcionalidade de configuração / teardown.

I usado para restaurar o banco de dados na função de configuração da classe de teste de unidade de banco de dados relacionados. Desta forma, assegurou-se que cada teste é executado sob as mesmas condições.

Você pode considerar para preparar o conteúdo do banco de dados especial para os testes, ou seja, com menos dados do que a versão de produção atual (para manter a tempos de restauração razoável).

O melhor ambiente para tais testes, creio eu, é VMWare ou outro equivalente. Configure o seu banco de dados, log de transações e assim por diante, em seguida, gravar todo o lote - banco de dados, bem como de configuração. Então, para re-teste, recarregue a imagem e banco de dados e pontapé de saída os testes. Isso ainda requer manutenção dos testes como as mudanças no sistema, mas pelo menos os ensaios são repetíveis, que é um dos seus maiores desafios em testes de integração.

Para a automação de testes, muitas pessoas usam Perl, mas descobrimos que os programas Perl crescer como Topsy e tornar-se complicado. O uso de Python como uma linguagem de script (que executar testes em C ++) vale a pena se você está tentando construir uma série de testes estruturados.

Como @ Kris K. diz despejo e restaurar o banco de dados entre cada teste provavelmente será o caminho a percorrer.

Uma vez que você está olhando para fazer o teste externo para o App gostaria de olhar para construir a estrutura de testes em uma linguagem onde você pode tirar proveito de melhores ferramentas de teste.

Se você construiu o framework de testes em Java você poderia tirar proveito de JUnit e, potencialmente, até mesmo algo como < a href = "http://fitnesse.org/" rel = "nofollow noreferrer"> FitNesse .

Não pense que só porque o aplicativo em teste é C ++ isso significa que você está preso usando C ++ para o seu teste automatizado.

Por favor, tente AnyDbTest, eu acho que é a própria ferramenta que você encontrar. ( www.anydbtest.com ).

características:

  • 1.Writing caso de teste com XML, não Java / C ++ / C # código / VB. Não precisa dessas ferramentas de programação caros.

  • 2.Supports todos os bancos de dados populares, como Oracle / SQL Server / My SQL

  • 3.So muitos tipos de afirmação suportado, como StrictEqual, SetEqual, IsSupersetOf, sobreposições e RecordCountEqual etc. Além disso, a maioria das afirmações pode prefixar lógica não operador.

  • 4.Allows usando uma planilha Excel / XML como a fonte dos dados para os testes. Como você sabe, planilha Excel é criar facilmente / editar e manter os dados de teste.

  • 5.Supports sandbox modelo de teste, se um teste será feito na caixa de areia, todas as operações de banco de dados em cada DB será revertida significa qualquer alteração será desfeita.

  • 6.Allows realizando dados bombear a partir de uma base de dados / na base de dados do Excel alvo para testar a inicialização e a finalização fase. Esta é a maneira fácil de preparar os dados de teste para o teste.

  • 7.Unique teste cross-diferente do tipo do banco de dados, o que significa direcionar e conjunto de resultados de referência pode vir de duas bases de dados, mesmo se é SQL Server, outra é Oracle.

  • comparação estilo 8.Set para registros. AnyDbTest vai dizer o que é a interseção, ou os excedentes ou ausência entre os sets de gravação.

  • comparação estilo 9.Sequential para registros ou valores escalares. Isso significa que o conjunto de dois resultados serão comparados em sua seqüência original.

  • 10.Allow ao conjunto de resultados de exportação da instrução SQL em arquivo XML / Excel.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top