Tópicos técnicos

O que é engenharia de desempenho?

Ilustração de itens de TI com foco em uma lâmpada

Visão geral

A engenharia de desempenho é um teste e monitoramento proativo, contínuo e de ponta a ponta do desempenho de aplicativos. Ela permite a colaboração perfeita entre equipes, ferramentas e processos por meio de ciclos contínuos de feedback. Aqui, não são apenas os testadores que são responsáveis pela garantia de qualidade, mas também os desenvolvedores, os engenheiros de desempenho, os proprietários de produtos e os analistas de negócios.

Ao aproveitar as ferramentas de tamanho adequado que abrangem desde os desenvolvedores até os engenheiros de desempenho, a engenharia de desempenho permite o teste de desempenho shift-left e o monitoramento de desempenho de aplicativos shift-right. É difícil avaliar o quanto a engenharia de desempenho é diferente dos testes de desempenho tradicionais sem entender o que são os testes de desempenho clássicos.

Engenharia de desempenho

Qual é a diferença entre teste de desempenho e engenharia de desempenho?

O teste de desempenho clássico é efetivamente um subconjunto da engenharia de desempenho. Geralmente, ele envolve a execução de uma única rodada de testes de carga como parte do ciclo de garantia de qualidade (QA) pós-desenvolvimento. O teste de desempenho envolve a verificação da velocidade, da confiabilidade, da escalabilidade, da estabilidade, do tempo de resposta e do uso de recursos de um aplicativo sob a carga de trabalho prevista. Antes de abordarmos as diferenças entre a engenharia de desempenho e o teste de desempenho, vamos primeiro dar uma olhada no teste de desempenho isolado e por que ele, por si só, não é mais sustentável.

  • Primeiro, o teste é visto de forma isolada e tratado como uma reflexão tardia que só começa no final do teste funcional.
  • Em segundo lugar, o trabalho em silos causa grandes falhas de comunicação entre as subequipes do projeto e impede a colaboração necessária para entregar um produto de alta qualidade.
  • Em terceiro lugar, quando o teste de desempenho é iniciado, a organização já investiu muito tempo, esforço e recursos financeiros no design, no desenvolvimento e na promoção do aplicativo.
  • Em quarto lugar, o teste de desempenho geralmente é tratado como uma reflexão tardia e não é incluído nos critérios de "concluído" antes do lançamento. Portanto, nesse momento, a empresa precisa do aplicativo em produção com urgência e não espera atrasos. Nesse contexto, o feedback do controle de qualidade acontece tarde demais para ser corrigido completamente antes do lançamento. Inevitavelmente, um grande número de problemas de desempenho chegaria desnecessariamente ao ambiente de produção apenas para que o lançamento permanecesse dentro do cronograma. A correção de um defeito na produção é muito mais cara e prejudicial do que no início do desenvolvimento.
  • Quinto, o teste de desempenho tradicional pode ter sido perfeito para o modelo Waterfall, mas está fora de lugar no mundo atual centrado em DevOps. O DevOps reduz a taxa de falha de novas versões diminuindo o tempo entre o momento em que uma alteração é confirmada no sistema e o momento em que a alteração é colocada em produção. A integração contínua e a entrega contínua (CI/CD) garantem que o software esteja sempre em um estado liberável durante todo o seu ciclo de vida. O DevOps também se concentra no realinhamento da organização para dar suporte à colaboração de ponta a ponta entre as partes interessadas, as funções e as ferramentas. Para atender às demandas de entrega rápida do DevOps, o desenvolvimento de software precisa de uma abordagem de teste de desempenho mais evoluída. Essa nova abordagem é a engenharia de desempenho de software.

Agora, vamos nos aprofundar nas principais diferenças entre engenharia de desempenho e teste de desempenho.

  • Em primeiro lugar, o teste de desempenho é uma verificação de qualidade do manuseio da carga e da capacidade de resposta do aplicativo. Ele estabelece a capacidade do sistema de suportar uma carga de produção e antecipa os problemas que podem surgir durante condições de carga pesada. A engenharia de desempenho busca projetar o aplicativo desde o início com as métricas de desempenho em mente e facilitar a descoberta de problemas no início do desenvolvimento.
  • Em segundo lugar, o teste de desempenho é um processo de controle de qualidade que geralmente ocorre quando uma rodada de desenvolvimento de software é concluída. A engenharia de desempenho é um processo contínuo que está incorporado em todas as fases do ciclo de desenvolvimento de software, desde o projeto, passando pelo desenvolvimento, até a experiência do usuário final.
  • Terceiro, o teste de desempenho é conduzido pela equipe de controle de qualidade, enquanto a engenharia de desempenho envolve o RND e o controle de qualidade.

Conceitos de engenharia de desempenho

Por meio dos conceitos a seguir, o DevOps e a engenharia de desempenho fornecem resultados consistentes de desempenho de produção, permitindo que os clientes implantem aplicativos de forma eficiente com mais confiança e implementem softwares estáveis e de alto desempenho que atendam às expectativas dos usuários.

Otimização de ponta a ponta

A engenharia de desempenho oferece otimização do sistema de ponta a ponta por meio de um processo contínuo de teste e monitoramento. Isso transfere o desempenho e os testes de carga para o processo de desenvolvimento. Isso é diferente dos testes de desempenho tradicionais, em que os testes eram realizados depois que os testes funcionais eram estabilizados e o código liberado.

Depois que o código é liberado, a engenharia de desempenho rastreia o aplicativo em produção, aproveitando as ferramentas de monitoramento de desempenho de aplicativos (APM).

Equipe multifuncional de partes interessadas no desempenho

A engenharia de desempenho permite a colaboração entre os participantes do projeto, desde os analistas de negócios até os desenvolvedores. Manter altos níveis de desempenho que melhorem a experiência do cliente, acompanhar o ritmo dos negócios e gerenciar o desempenho de ponta a ponta faz com que todos, e não apenas os engenheiros de QA/desempenho, sejam responsáveis pelo desempenho do produto. Veja como.

Centro de excelência em testes

O Centro de Excelência em Testes (CoE) atua como consultor de testes confiável e guardião das práticas recomendadas. O CoE oferece suporte a diferentes unidades de negócios, diferentes métodos de teste (como DevOps e Agile) e tem a flexibilidade de recomendar testes de desempenho e ferramentas de teste, conforme necessário. Para criar modelos de teste melhores e aprimorar a qualidade do teste, o CoE atua como ponto único de consolidação e reutilização de dados de teste gerados e coletados em várias unidades de negócios ao longo do tempo.

Engenheiro de desempenho

O engenheiro de desempenho oferece uma visão holística de todo o código em desenvolvimento para garantir que os critérios de teste de desempenho sejam abrangentes, contemplem o panorama geral e considerem todas as partes distintas do código em desenvolvimento. O engenheiro de desempenho é o principal usuário das ferramentas de teste de desempenho e tem um alto grau de especialização em criar scripts, projetar, executar e analisar resultados de testes. A engenharia de desempenho traz o engenheiro de desempenho para a fase inicial do desenvolvimento, onde ele pode fornecer métricas de desempenho e cenários necessários para que o código seja considerado pronto para lançamento. O envolvimento precoce significa que o engenheiro de desempenho pode garantir que a solução satisfaça as expectativas de desempenho definidas no início do desenvolvimento. Ele também confirma que a arquitetura e o design são consistentes durante todo o desenvolvimento.

Desenvolvedor de software

Os desenvolvedores são especialistas em codificação, mas geralmente não têm experiência em testes funcionais e de desempenho. Eles trabalham em seu ambiente de desenvolvimento integrado (IDE) e tendem a usar suas ferramentas preferidas, com pouca inclinação para aprender novas ferramentas. A engenharia de desempenho desloca os testes de desempenho para a área de responsabilidade do desenvolvedor de software. Com a contribuição do engenheiro de desempenho, os desenvolvedores de software podem executar testes de desempenho enquanto escrevem o código. O desenvolvedor não libera seu código antes que ele passe nos critérios de teste de desempenho.

DevTester

O devtester não existe no teste de desempenho clássico, pois há distinções claras entre os desenvolvedores de software e os engenheiros de desempenho. Com a engenharia de desempenho, o devtester surge como uma parte interessada que conecta a engenharia de desempenho e as equipes de desenvolvedores. Ele preenche a lacuna ao ter habilidades sólidas de codificação e teste, embora não esteja no mesmo nível de especialização que o desenvolvedor e o engenheiro de desempenho. Eles podem executar testes rapidamente e têm muito mais flexibilidade do que os desenvolvedores no uso de diferentes ferramentas, conforme necessário.

Analistas de negócios e engenheiros de aplicativos

Ao deslocar diretamente os testes, a engenharia de desempenho traz analistas de negócios e engenheiros de aplicativos. Isso garante que os requisitos de desempenho dos negócios e dos aplicativos que definem a qualidade da experiência do usuário sejam incorporados aos critérios de desempenho. Essas duas funções monitoram o aplicativo em produção para garantir sempre o melhor desempenho do aplicativo.


Obtenha o parceiro certo de engenharia de desempenho

A engenharia de desempenho está transformando o cenário de desenvolvimento de software, bem como as descrições de cargos de todos os que estão envolvidos nele. E com um número maior de funções envolvidas, a necessidade de ferramentas e tecnologia para otimizar o processo é maior do que nunca. A engenharia de desempenho exige integração e colaboração de ponta a ponta, da direita para a esquerda e da esquerda para a direita, além de insights e análises em tempo real. Os fornecedores tradicionais de testes de desempenho não estão adequadamente equipados para lidar com essa onda de mudanças caóticas. No entanto, a OpenText tem experiência comprovada e soluções tecnológicas para converter o caos dos testes em ordem de engenharia.

OpenText A arquitetura aberta da engenharia de desempenho oferece suporte a testes em qualquer protocolo e tipo de aplicativo em qualquer ambiente de desenvolvimento. Ela permite que as partes interessadas, desde os desenvolvedores até os analistas de negócios, usem várias ferramentas de fornecedores e de código aberto para possibilitar a integração completa de CI/CD em escala. OpenText As integrações de ferramentas oferecem a capacidade de eliminar rapidamente o tempo de espera do desenvolvimento e os testes que retardam o fornecimento de aplicativos. As integrações fazem isso permitindo a criação rápida de simulações realistas de APIs, condições de rede e serviços virtuais. OpenText As soluções de engenharia de desempenho se baseiam na infraestrutura existente no local ou na nuvem e promovem a reutilização de ativos para aproveitar os investimentos existentes. Isso ajuda a dimensionar rapidamente para atender às demandas de testes de desempenho de vários aplicativos em toda a empresa.

Os testes de desempenho tradicionais não começavam até que os testes funcionais estivessem concluídos e não começavam a identificar os defeitos e as causas-raiz até o final dos testes de desempenho. OpenText A engenharia de desempenho envolve a medição contínua de ponta a ponta e a análise de defeitos para identificar a causa-raiz em tempo real, mesmo antes do término do teste de desempenho. Os critérios de desempenho estão incluídos na definição e nos requisitos de "concluído". OpenText A análise em tempo real ajuda o engenheiro de desempenho a fornecer feedback ao desenvolvedor rapidamente, de modo a iniciar a solução de problemas no início do processo de desenvolvimento. O monitoramento sintético e o monitoramento de usuários reais na produção fornecem insights sobre problemas de desempenho que escaparam aos testes e devem ser corrigidos na próxima versão. A captura e a análise do sentimento do usuário final a partir de uma perspectiva de desempenho fornecem um feedback mais específico aos desenvolvedores para otimizar o aplicativo a fim de melhorar o desempenho.

Notas de rodapé