Tornando o Ciclo de Vida do Teste de Performance compreensível para todo o time

Misael Jr
TC - Tecnologia e Produtos
7 min readJul 13, 2022

--

Por Misael Jr

Quando o assunto é Teste de Performance, é muito comum que novos praticantes não tenham clareza sobre a sua real definição e aplicabilidade, normalmente definindo-o apenas como “Teste de Carga” e resumindo a sua aplicabilidade fixando uma carga única de usuários (frequentemente sendo um valor aleatório) e verificando o tempo de resposta (por vezes, a média). Além do mais, ocasionalmente, não há um conhecimento sobre a aplicação alvo, sendo o Teste de Performance executado recorrentemente em períodos curtos de tempo ou de maneira aleatória.

Gostaríamos que o Teste de Performance fosse tão simples assim, mas nem tudo na vida é tão simples quanto parece! Certamente, economizaria muito tempo na sua execução e análise dos resultados. No entanto, ele é muito mais do que apenas aplicar uma carga única de usuários e verificar o tempo de resposta. Para se obter resultados que aderem à realidade, é necessária a aplicação de metodologias, processos e atividades às quais devem ser aplicadas de forma estruturada para alcançar seu propósito e resultados concretos.

O Ciclo de Vida do Teste de Performance (PTLC — Performance Testing Life Cycle) define um processo composto por um conjunto de atividades que objetivam guiar o planejamento e a execução do Teste de Performance em aplicações. No entanto, um dos problemas associados à sua implementação está relacionado à compreensão que profissionais de áreas não diretamente envolvidas — porém participantes, como, por exemplo, gerentes de produto — possuem do PTLC. Desse modo, um modelo que vise simplificar o PTLC passa a ser importante e necessário.

Este artigo visa prover uma versão simplificada e de alto nível do PTLC, objetivando tornar a metodologia utilizada e as atividades envolvidas para realizar o teste de performance compreensível ao time envolvido no desenvolvimento do produto.

O que é Teste de Performance?

Teste de Performance é uma investigação técnica que pode ser realizada para determinar ou validar as características da aplicação relacionadas a velocidade, escalabilidade, estabilidade e responsividade. Contudo, para que o Teste de Performance seja realizado de maneira efetiva, agregando valor ao time, é importante seguir uma metodologia que especifique a abordagem que melhor se adeque à aplicação alvo, como definiu Alberto Savoia, Fundador e CTO da Agitator Software Inc., na 1° edição do livro “Performance testing guidance for web applications: patterns & practices”, publicado pela Microsoft em 2007:

“Testing the performance of web applications is easy. It’s easy to design unrealistic scenarios. Easy to collect and measure irrelevant performance data. And, even if you manage to design a sound scenario and collect the right data, it’s easy to use the wrong statistical methods to summarize and present the results.”

O que é pouco discutido?

Um ponto pouco discutido, mas importante, é sobre como tornar o PTLC compreensível a todo o time envolvido na construção da aplicação — desde desenvolvedores e analistas de qualidade até gerentes de produto. Usualmente, o time envolvido diretamente no teste de performance (analistas de qualidade, analistas de infraestrutura, etc.) dispõem de um grau de conhecimento alto relacionado ao processo definido no Teste de Performance. Por outro lado, gerentes de produto, por exemplo, também devem entender minimamente o processo, dado que esses profissionais são responsáveis em definir alguns dos critérios de aceitação necessários para validar se “a aplicação atende à expectativa do usuário”.

Todavia, uma dificuldade é “como tornar o PTLC compreensível e em alto nível a esses profissionais”. Logo, a primeira pergunta que está passando pela sua intelectualidade é: Qual a melhor maneira de se realizar e promover esta dificuldade tão comum em diversos segmentos de tecnologias? Infelizmente, a resposta é: não existe uma bala de prata para resolver este problema cultural. Porém, temos meios de ajustar a cultura da empresa de forma efetiva seguindo algumas ideias iniciais.

O que é o Ciclo de Vida Teste de Performance

Um dos conteúdos mais discutidos no livro “Performance Testing Guidance for Web Applications”, publicado pela Microsoft em 2007, está relacionado às atividades/fases que compõem o Ciclo de Vida do Teste de Performance (PTLC — Performance Testing Life Cycle). Tais atividades são utilizadas para guiar o planejamento e a execução do Teste de Performance em aplicações. Embora o ciclo de vida possa ser ajustado/adaptado de acordo com o paradigma de desenvolvimento utilizado (por exemplo, ágil, iterativo incremental e outros), as sete fases/atividades que integram o PTLC e as principais perguntas respondidas em cada uma delas podem ser visualizadas na imagem abaixo:

Embora o PTLC seja compreensível e didático em prover as principais atividades do Teste de Performance, a quantidade de informações contidas em cada fase pode confundir aqueles que não sejam tão familiarizados com ele. É importante ressaltar que, na prática, o processo definido no Teste de Performance pode não seguir rigorosamente todas as fases ou a ordem entre elas, embora as informações fornecidas por elas sejam, de alguma forma, endereçadas no processo.

Versão simplificada

Visando simplificar o PTLC em um contexto prático, segue abaixo uma versão simplificada do PTLC a partir de um processo Business Process Model and Notation (BPMN) .

Como ilustrado na imagem acima, nós dividimos o processo geral em apenas três grandes etapas: (i) Planejamento; (ii) Projeto e Implementação; e (iii) Execução e Análise.

Na etapa de planejamento, primeiramente, é realizada uma análise do ambiente de teste para certificar que o mesmo encontra-se apto em termos de configurações de hardware, software e rede, e o quão próximo ele é — em termos de configuração — do ambiente de produção. Em seguida, ainda na etapa de planejamento, são definidos os critérios de aceitação de performance a partir de duas principais fontes: (i) dados de produção, especialmente no caso de uma nova versão de uma aplicação já existente; e/ou (ii) perspectivas do usuário, especialmente no caso de uma nova aplicação. Desse modo, nesta etapa, é crucial você conhecer o seu ambiente de teste e a sua aplicação.

Na fase de Projeto e Implementação, são definidas as seguintes informações: (i) possíveis cenários de teste; (ii) carga a ser utilizada; (iii) métricas de performance a serem coletadas; (iv) dados de teste necessários. Em seguida, é realizada uma certificação da configuração do ambiente de teste em termos de recursos disponíveis, definição da ferramenta de geração de carga (JMeter, K6, Locust, Loadrunner, etc) e ferramentas de monitoramentos que serão utilizadas (New Relic, Datadog, Grafana, etc.). Por fim, o script de teste é implementado de acordo com o que foi planejado nas etapas anteriores.

Na última etapa, Execução e Análise, o script de teste é executado e os dados fornecidos (tempo de resposta, throughput, taxa de erros, etc.) pela ferramenta de carga utilizada, assim como os dados fornecidos pelas ferramentas de monitoramento são coletados. Por fim, uma análise minuciosa é realizada para verificar se algum dos critérios de aceitação definidos não foram alcançados. Caso isso ocorra, melhorias são realizadas e o teste é executado novamente. Este processo é repetido até que todos os critérios de aceitação definidos sejam atingidos.

Apesar da estrutura simplificada, existe um cuidado muito grande com os artefatos que irão sustentar a aplicação do PTLC, assim como seu planejamento adequado, uma vez que este processo está diretamente relacionado ao ciclo de vida da Engenharia de Software, visando assim garantir a qualidade e confiabilidade do software em questão. Com o advento das evoluções tecnológicas, os tipos de software podem variar entre: aplicativos móveis, serviços web, serviços cloud, app de grade entre outros; os quais devem ser organizados e observados de acordo com a arquitetura de solução desenvolvida.

Além disso, a aplicação do PTLC visa solucionar questões de otimização, buscando maximizar a utilização de recursos, e diminuir o consumo de monitoramento contínuo (logs, traces, entre outros), através de uma boa definição de limites e alertas gerados a partir da análise e reportes gerados na fase de execução e análise.

Conclusão

O seguinte artigo teve como objetivo prover uma versão simplificada do PTLC, que é uma metodologia que agrega as principais fases/etapas que devem ser planejadas e executadas no processo de Teste de Performance. Normalmente, a metodologia proposta para planejar e executar o Teste de Performance em uma aplicação alvo, é compreensível ao time envolvido diretamente no processo (analista de qualidade, analista de infraestrutura, etc.), mas pouco ou nada compreensível a outros profissionais que também participam ou deveriam participar do processo, tais como gerentes de produto.

Portanto, a versão simplificada proposta objetiva tornar o PTLC compreensível e em alto nível a esses profissionais que, embora participem do processo de planejamento do Teste de Performance, muitas vezes não compreendem as etapas necessárias para executar o Teste de Performance. Uma vez que essa metodologia é compreensível a todo o time envolvido na aplicação, isso colabora para que o Teste de Performance agregue mais valor ao time.

Referências

MEIER, J. et al. Performance testing guidance for web applications: patterns & practices. Microsoft press, 2007.

Eu sou o Misael Jr, Engenheiro de Qualidade do TC, M.Sc e Doutorando em Ciências da Computação e Matemática Computacional pela Universidade de São Paulo (USP). Tenho experiência e atuo principalmente nos seguintes temas: teste de software, automatização de teste, teste de API Rest, Performance de aplicações e teste de segurança em aplicativos Android.

Já o TC é uma das plataformas mais inovadoras e tecnológicas de educação financeira, análise de dados e inteligência de mercado do Brasil. Com mais de 560 mil membros cadastrados, o TC tem a missão de democratizar o acesso a informações do mercado de capitais, conectando e promovendo networking entre milhares de investidores brasileiros. O aplicativo TC pode ser baixado gratuitamente na App Store e no Google Play. Para mais informações, acesse www.tc.com.br.

--

--

Misael Jr
TC - Tecnologia e Produtos

Engenheiro de Qualidade no TC, M.Sc e PhD Candidate focado em Software Testing na USP.