ti-enxame.com

Carregar metodologia de teste para um cache

Atualmente estou escrevendo um teste de carga para um cache que deve testar como um cache reagirá a solicitações persistentes. Um colega e eu tive opiniões diferentes sobre como esse teste de carga deve ser realizado.

Acredito que um teste de carga deve ser o mais aleatório possível. Deve modelar a carga do mundo real o máximo possível, e o caminho para isso é a randomidade. Então eu criei este teste aleatório da seguinte maneira:

  • Os dados de teste são mantidos em planilhas e são carregados em objetos testRunner na inicialização
    • Os dados do teste são não aleatório
  • O teste de carga executará 10 testRunners aleatórios em encadeamentos individuais ao mesmo tempo
  • O objeto retornado pelo cache será testado para garantir que ele seja sensato, não é totalmente testado [.____]
    • Quaisquer testes que falham serão emitidos no final e cada teste possui um ID exclusivo para encontrar facilmente testes com falha
  • Em intervalos aleatórios, o cache será liberado para modelar a exigência do mundo real do cache sendo apagada a qualquer momento.
  • O teste de carga será executado por um período de tempo configurável

A ideia do meu colega do que um teste de carga deve fazer é:

  • Os dados de teste são mantidos em planilhas e são carregados em objetos do testrunner na inicialização
  • Todos os objetos do testrunner são executados de maneira seqüencial
  • Cada vez que o teste de carga é executado, ele executará os objetos do testrunner na mesma ordem

Qual metodologia você acha que produziria o teste de carga mais confiável?

Eu pessoalmente acho que o teste aleatório produzirá um teste de carga mais confiável, pois modelará o uso do mundo real. Não se sabe que pedidos de ordem entrarão quando isso for liberado para a produção, por isso deve ser testado com esse elemento desconhecido levado em conta. No entanto, a execução de todos os testes na mesma seqüência sempre fará qualquer falha reprodutível, o que é importante durante o teste.

6
Richard

Você tem uma maneira de redefinir os dados quando o teste for executado (se isso for necessário)?

Em caso afirmativo, e em executar o teste não aleatório primeiro - para procurar falhas quando funcionar dessa maneira (e possíveis anomalias causadas pelos próprios dados)? Em seguida, depois de redefinir (se necessário), execute os testes aleatórios para refletir a carga do mundo real.

3
codeyoung

Testes multi-rosca são uma dor. Pode simular um cenário do mundo real, mas só lhe dirá que "há um problema". Você não será capaz de reproduzir o teste e, na maioria das vezes, isso significa que você não poderá encontrar o bug.

O modelo de execução aleatório revelará erros estranhos que não surgem no uso normal - caso contrário, você saberia sobre eles apenas por 'tocando' com o produto. É por isso que a chance de reproduzir o mesmo bug com outra corrida aleatória é muito pequena (a menos que você tenha tempo infinito :)).

0
Victor Hurdugaci