Gostaria de expandir no recente blog de Paul "Seu teste de pré-produção é eficaz? Paul cobriu a utilização da CPU e caminhos de código, mas há outro aspecto muito importante de muitas aplicações - a utilização da rede. Muitas aplicações são testadas em um ambiente LAN com latências na faixa de sub-milissegundo e largura de banda de pelo menos 100 mbps. Elas são então implementadas para serem usadas em uma WAN com largura de banda menor e com latências muito mais altas. Os resultados podem ser um desastre.
Enquanto os testes em um ambiente LAN descobrirão a maioria dos bugs relacionados à rede, pode haver bugs relacionados a pacotes descartados ou segmentação inesperada (o TCP NÃO manterá seus limites de mensagem) que é menos provável que você veja em um ambiente LAN. Também é muito menos provável que você note um projeto menos que ótimo em um ambiente LAN rápido do que em um ambiente WAN lento. Portanto, é muito importante testar qualquer aplicação baseada em rede sob o pior ambiente de rede previsto, baixa largura de banda, altas latências e não se esqueça das taxas de perda de pacotes.
Há duas maneiras de se fazer isso.
A primeira é utilizar o ambiente real. Colocar o servidor (ou cliente) em um host na rede e ver como ele funciona. Isto tem a vantagem de utilizar a infra-estrutura real. A desvantagem é que você não tem controle sobre o ambiente, algo que é crítico quando você está tentando duplicar um problema ou testar uma correção de bug.
O segundo é o uso de um simulador WAN. Existem apenas hardware e software, simuladores comerciais e de código aberto (gratuitos). A vantagem aqui é que você tem controle total sobre a latência, taxas de queda de pacotes e outros parâmetros de rede, e não precisa envolver outros grupos (ou seja, colocar seu software no sistema de outra pessoa). A desvantagem é o custo e uma curva de aprendizado. Mesmo que você use software livre, você tem que fornecer um sistema (normalmente algum sabor de Unix) para executá-lo e aprender como usá-lo. Há vários anos escrevi um tutorial sobre o Dummynet. Na época, ele era um dos poucos simuladores gratuitos disponíveis. Agora há muitos mais, basta ir ao Google "wan simulator".
Com base em minha experiência de analisar problemas de desempenho e falhas na aplicação, acredito que este tipo de teste irá mais do que pagar por si mesmo, reduzindo as interrupções de produção devido a bugs e aumentando o desempenho tanto da aplicação quanto de seus usuários.