As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
GAMEOPS05-BP01 Escolha o estágio, a arquitetura e a estrutura de teste de carga certos para atingir seus objetivos
A abordagem para testar a carga de um jogo pode variar significativamente dependendo de muitos fatores, incluindo o estágio do processo de desenvolvimento em que ele é executado, a arquitetura do próprio sistema gerador de carga e a escolha da estrutura de teste de carga. O momento em que ela é conduzida, seja nas fases iniciais, durante os sprints iterativos, antes da implantação na produção ou após a implantação, moldará as metas e o foco dos esforços de teste. Diferentes projetos de infraestrutura de geração de carga têm seus próprios prós e contras, e a seleção da estrutura de teste de carga influencia muito os recursos, a facilidade de uso e as integrações disponíveis para o processo de teste. Ao alinhar cuidadosamente esses elementos, as equipes de desenvolvimento podem adaptar a abordagem de teste de carga às características exclusivas do jogo, extrair os insights de desempenho mais valiosos e proporcionar uma experiência tranquila para seus jogadores.
Nível de risco exposto se esta prática recomendada não for estabelecida: Alto
Orientação para implementação
Teste de carga em diferentes estágios de desenvolvimento
A realização de testes exploratórios de carga no início das fases de desenvolvimento pode validar a arquitetura subjacente do sistema. Isso ajuda os desenvolvedores a tomarem decisões informadas sobre a infraestrutura, o design do banco de dados e a topologia da rede do jogo antes que um extenso trabalho de implementação seja concluído. Os testes de carga identificam riscos e criam uma linha de base de desempenho, potencialmente minimizando a necessidade de retrabalho dispendioso e dívidas técnicas mais tarde no ciclo de vida do desenvolvimento. Eles também podem promover uma compreensão compartilhada dos requisitos de desempenho do jogo entre a equipe, levando a uma melhor colaboração e tomada de decisões. Em última análise, o teste de carga durante as fases iniciais cria uma base sólida para um jogo de alto desempenho, escalável e resiliente, ajudando a aprimorar a experiência geral do jogador.
No final de cada sprint ou iteração, o teste de carga pode avaliar o impacto no desempenho dos novos recursos, correções de bugs e outras mudanças introduzidas no ciclo mais recente. Essa abordagem direcionada permite que as equipes de desenvolvimento identifiquem rapidamente as regressões ou degradações de desempenho introduzidas pelas atualizações mais recentes, permitindo que resolvam esses problemas antes que eles se propaguem mais adiante e mantendo um nível consistente de qualidade e desempenho.
Antes da implantação na produção, testes de carga robustos ajudam as equipes a validar a capacidade do sistema de lidar com as condições de tráfego e carga previstas no mundo real. Eles podem descobrir gargalos de escalabilidade ou restrições de recursos na infraestrutura de produção e oferecer a oportunidade de otimizar o desempenho do jogo, criando uma experiência de usuário suave e responsiva desde o primeiro dia. Os insights obtidos com os testes de carga de pré-lançamento podem mitigar os riscos do dia do lançamento e informar o planejamento contínuo da capacidade, que estabelece a base para a sustentabilidade e a escalabilidade de longo prazo do jogo.
O teste de carga de um jogo que já está em produção permite que as equipes monitorem o desempenho do jogo e identifiquem regressões ou degradações de desempenho que possam ocorrer ao longo do tempo. Isso permite que eles resolvam os problemas de forma proativa antes que eles afetem a experiência do jogador e afetem negativamente a retenção de usuários. Além disso, o teste de carga na produção valida a eficácia dos esforços de otimização de desempenho ou do dimensionamento da infraestrutura que foi implementado. Esse processo fornece uma experiência de jogo de alta qualidade, responsiva e escalável para os jogadores, mesmo à medida que o jogo evolui e amadurece.
Arquiteturas geradoras de carga
O design da arquitetura de geração de carga para testes de carga de jogos pode assumir várias formas, cada uma com seu próprio conjunto de vantagens e considerações.
No nível mais básico, as EC2 instâncias autogerenciadas da Amazon
Para uma abordagem mais escalável e orquestrada, você pode usar clusters Kubernetes do Amazon EKS
Como alternativa, a natureza sem servidor do AWS Fargate
Você também pode usar AWS Lambda
Os estúdios que desejam usar uma solução pré-construída podem usar o Distributed Load Testing on. AWS Essa solução usa o Amazon ECS on AWS Fargate para implantar contêineres que podem executar simulações de dezenas de milhares de usuários conectados. Você pode usar isso para iniciar rapidamente sua infraestrutura de teste de carga no estilo IAC usando AWS CloudFormation.
Estruturas de teste de carga
Não há duas estruturas de teste de carga construídas da mesma forma. Alguns têm interfaces gráficas intuitivas para criação de testes, enquanto outros são totalmente baseados em linha de comando. Uma ferramenta pode ser flexível e eficiente, mas exigir tempo e esforço para ser configurada e gerenciada, e outra pode ser sem servidor, mas limitada nos testes que pode criar e executar. Alguns gostam de grandes comunidades e muitos tutoriais, embora não tenham sido comprovados em campo, contrastando fortemente com outros que podem ser testados em produção, mas carecem de suporte ou documentação da comunidade. Escolha a estrutura que atinja o equilíbrio certo para você e sua equipe. Algumas opções populares são:
-
Apache JMeter
: estrutura popular de teste de carga de código aberto baseada em Java devido ao seu conjunto robusto de recursos e facilidade de uso. Sua capacidade de simular cenários complexos de usuário, uma ampla variedade de protocolos suportados, relatórios abrangentes e histórico comprovado são JMeter uma escolha confiável para testes de carga. -
Locust
: estrutura de teste de carga moderna e distribuída construída em uma arquitetura orientada a eventos, tornando-a eficiente e eficiente em termos de recursos. Os testes são escritos em Python, permitindo cenários de teste flexíveis que aproveitam milhares de poderosas bibliotecas de terceiros, enquanto permanecem amigáveis e simples de ler. -
Grafana K6
: poderosa estrutura de teste de carga que combina facilidade de uso com recursos avançados. Seu suporte para geração de carga distribuída, scripts flexíveis e integração perfeita com o Grafana para visualização de dados tornam o Grafana K6 uma escolha atraente. -
Gatling
: estrutura de teste de carga de código aberto conhecida por seu desempenho e escalabilidade. Sua linguagem específica de domínio (DSL) baseada em Scala permite que os desenvolvedores criem scripts de teste de carga concisos e fáceis de manter, e seus robustos recursos de geração de relatórios e análises fornecem informações detalhadas do sistema em teste.
Etapas de implementação
-
Estágios de teste de carga: realize testes de carga em vários estágios de desenvolvimento (desenvolvimento inicial, sprints, pré-produção e pós-implantação) para validar o desempenho do sistema e identificar problemas.
-
Arquiteturas de geração de carga: escolha as arquiteturas de geração de carga apropriadas (EKSEC2, Fargate ou Lambda) com base nas necessidades de escalabilidade, nas preferências de gerenciamento e nos requisitos de teste específicos.
-
Estruturas de teste de carga: selecione uma estrutura de teste de carga (como Locust JMeter, Grafana K6 ou Gatling) que equilibre facilidade de uso, desempenho, flexibilidade e suporte da comunidade para atender às necessidades da sua equipe.