Pergunta

Atualmente estou fazendo desempenho e testes de carga de um sistema de muitas camadas complexo investigar o efeito de diferentes mudanças, mas eu estou tendo problemas para manter o controle de tudo:

  • Existem muitas cópias de diferentes montagens
    • montagens Orignally liberados
    • hotfixes lançado oficialmente
    • Assembléias que eu construí contendo mais correções adicionais
    • Assembléias que eu construção já contendo o registo de diagnóstico adicional ou rastreamento
  • Existem muitos remendos base de dados , alguns dos conjuntos acima dependem certas manchas da base de dados a ser aplicada
  • existe Muitos níveis de log diferentes , em diferentes camadas (logging Aplicação, as estatísticas de desempenho de aplicativos, o SQL Server profiling)
  • Há muitos cenários diferentes , às vezes é útil para testar apenas 1 cenário, outras vezes eu preciso de combinações de testes de diferentes cenários.
  • Load pode ser dividida em várias máquinas ou apenas uma única máquina
  • Os dados presentes no banco de dados pode mudar , por exemplo alguns testes pode ser feito com dados gerados, e, posteriormente, com os dados obtidos a partir de um sistema vivo.
  • Há uma enorme quantidade de dados de desempenho potenciais para ser recolhidas após cada teste , por exemplo:
    • Muitos tipos diferentes de registro de aplicação específica
    • traços SQL Profiler
    • eventos regista
    • DMVs
    • contadores de desempenho
  • O banco de dados (s) são vários Gb de tamanho backups assim onde eu teria usado para reverter a um estado anterior que tendem a aplicar alterações a qualquer banco de dados está presente após o último teste, fazendo-me a faixa rapidamente solta das coisas.

I recolher o máximo de informação possível sobre cada teste que eu faço (o cenário testado, o que os patches são aplicados os dados que estão no banco de dados), mas eu ainda me vejo tendo que repetir ensaios devido a resultados inconsistentes. Por exemplo, eu apenas fiz um teste que eu acreditava ser uma cópia exata de um teste Corri há alguns meses, porém com dados atualizados no banco de dados. Eu sei para um fato que os novos dados devem causar uma degregation desempenho, no entanto, os resultados mostram o oposto!

Ao mesmo tempo eu me encontro sepdning quantidades desproporcionais de tempo de gravação esses todos esses detalhes.

Uma coisa que eu considerada estava usando scripting para automatizar a coleta de dados de desempenho etc ..., mas eu não tinha certeza esta era tal uma boa idéia - não só é o tempo gasto desenvolver scripts em vez de testar, mas erros em meus scripts poderia causar-me a perder o controle das coisas ainda mais rápido.

Eu sou após alguns conselhos / dicas sobre a melhor forma de gerenciar o ambiente de teste, em particular, como encontrar um equilíbrio entre a coleta tudo e realmente obter algum teste feito com o risco de perder algo importante ?

Foi útil?

Solução

Scripting a cobrança da parâmetros de teste + ambiente é uma idéia muito boa para check-out. Se você está testando em vários dias, e o script leva um dia, é tempo bem gasto. Se depois de um dia você vê-lo não vai terminar em breve, reavaliar e possivelmente parar de perseguir neste sentido.

Mas você deve isso a si mesmo para experimentá-lo.

Outras dicas

Eu tenderia a concordar com @orip, scripting pelo menos parte de sua carga de trabalho é susceptível de poupar tempo. Você pode considerar tomar um momento para perguntar o que as tarefas são mais demoradas, em termos do seu trabalho e como receptivo são eles para automação? Scripts são especialmente bons em coletar e resumir dados - muito melhor, em seguida, as pessoas, normalmente. Se os dados de desempenho requer muita interpretação de sua parte, você pode ter problemas.

Uma vantagem para scripting algumas dessas tarefas é que você pode, em seguida, vê-los em ao lado da fonte / patches / filiais e você pode achar que você beneficiar de estrutura organizacional de sua complexidade sistemas ao invés de lutar para persegui-lo como você faz agora .

Se você pode sair com testes apenas com um conjunto algumas configurações que irão manter a simples administração. Ele também pode torná-lo mais fácil de colocar um em cada uma das várias máquinas virtuais que podem ser rapidamente redistribuídos para dar linhas de base limpas.

Se você precisa realmente a complexidade que descrevem Eu recomendo a construção de um banco de dados simples para que você possa consultar os resultados multivariados que você tem. Ter uma coluna para cada um dos fatores importantes será a permitir que você consulta no para perguntas como "o que testar configuração teve a menor variação na latência?" e "qual o teste de banco de dados permitiu a criação da maioria dos bugs?". Eu uso sqlite3 (provavelmente através do invólucro de Python ou o plug-in Firefox) para este tipo de coleção leve, porque mantém a manutenção sobrecarga relativamente baixo e permite-lhe evitar perturbar o sistema em teste muito longe, mesmo se você precisa para ser executado em a mesma caixa.

Scripting os testes irá torná-los mais rápido para executar e resultados permitem ser recolhidas de forma já ordenada, mas parece que seu sistema pode ser muito complexo para fazer este fácil de fazer.

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