Escrevi as seguintes observações sobre a realização de testes eficazes de pré-produção para minha coluna "VOS Corner" no boletim informativo do Stratus User Group de dezembro de 1996. Eles ainda são relevantes hoje, quase 13 anos depois.
Se eu pudesse fazer uma sugestão a nossos clientes (apenas um pedido!), seria para ter certeza de que você realizaria um teste de estresse de novas versões de sua aplicação antes de colocá-las em produção. Estive envolvido recentemente em várias situações em que o cliente implantou uma aplicação que passou em todos os testes funcionais mas falhou logo após ter sido colocada em produção porque não conseguia lidar com a carga de produção.
Como você deve entender, o software pode ser imprevisível e complicado de testar. Saber que um programa funciona a 10 transações por segundo não é o mesmo que saber que ele funciona a 100 transações por segundo. Saber que ele funciona com 10 circuitos virtuais não é o mesmo que saber que ele funciona com 1000 circuitos virtuais. Em cada caso que vi, o programa funcionou bem no laboratório ou ambiente de teste, mas falhou miseravelmente na produção devido a algum defeito de software subjacente ou limite de capacidade. Geralmente, se eu me envolvo, o limite estava dentro do VOS, não da aplicação, mas não importa onde esteja, o efeito é o mesmo em seus clientes. Se você quiser saber se sua aplicação funcionará em produção, você deve testá-la como se estivesse em produção.
Ouvi muitas desculpas ao longo dos anos por que você não pode testar seu software nos mesmos limites que na produção. Eu não acredito em nenhuma delas. Você pode capturar o fluxo de dados e os arquivos de produção para usar em teste. Você pode montar geradores de teste sintéticos para simular entradas boas e ruins. Você pode contornar o código de interface sensível ao dispositivo a fim de alimentar os fluxos de dados de alta velocidade para os servidores. Há muitos truques que você pode fazer para ter 90% de sua aplicação funcionando sem problemas, mesmo que você não consiga 100% dela funcionando em modo teste. Pare de pensar no problema como uma simulação de produção e comece a pensar nele como simplesmente conseguindo executar o máximo possível do seu código, o mais rápido possível. Certifique-se de conduzir seu sistema a 100% de utilização da CPU; é aí que os problemas "interessantes" tendem a aparecer.
Ao exercer seu software de aplicação até seus limites, você também está exercitando o VOS. Você encontrará problemas de capacidade em seu laboratório, não na produção. Você saberá o que e onde estão seus limites de capacidade. Você sairá de sua fase de teste com um grau muito maior de confiança de que sua implantação de aplicação será bem sucedida. Você manterá seu chefe e seus clientes satisfeitos. Essas não são boas razões?