{"id":3598,"date":"2021-05-21T17:51:36","date_gmt":"2021-05-21T17:51:36","guid":{"rendered":"https:\/\/www.cesar.org.br\/painel\/?post_type=insight&#038;p=3598"},"modified":"2026-06-09T15:36:51","modified_gmt":"2026-06-09T18:36:51","slug":"teste-de-performance-o-segredo-esta-no-planejamento","status":"publish","type":"insight","link":"https:\/\/www.cesar.org.br\/painel\/insight\/teste-de-performance-o-segredo-esta-no-planejamento\/","title":{"rendered":"Teste de performance: o segredo est\u00e1 no planejamento"},"content":{"rendered":"<p><strong><a href=\"https:\/\/www.linkedin.com\/in\/f%C3%A1bio-mello-25161489\/\" target=\"_blank\" rel=\"noopener\">F\u00e1bio Correia<\/a>\/Software Test Consultant no CESAR<\/strong><\/p>\n<p>Em tempos de nuvem, escalabilidade e uso massivo da internet, n\u00e3o \u00e9 incomum que uma simples publica\u00e7\u00e3o em uma rede social caia nas gra\u00e7as de usu\u00e1rios e, atrav\u00e9s de um fluxo massivo e quase sempre desordenado, derrube o servidor ou indisponibilize um servi\u00e7o. Olhando um pouco para o trivial, uma consulta simples a um banco de dados mal estruturado pode ocasionar lentid\u00e3o no uso da aplica\u00e7\u00e3o. Mesmo que n\u00e3o haja a concorr\u00eancia nos acessos, \u00e9 s\u00f3 a massa de dados ser minimamente densa e a escalabilidade do servi\u00e7o ser zero para o problema ganhar vida.<\/p>\n<p>Ambos cen\u00e1rios citados, e algumas centenas de outros n\u00e3o ponderados neste par\u00e1grafo, podem ocasionar a pior das situa\u00e7\u00f5es: a perda da confian\u00e7a do usu\u00e1rio pelo impacto da impossibilidade de uso, que geralmente \u00e9 premissa b\u00e1sica em qualquer servi\u00e7o.<\/p>\n<p>Trazendo \u00e0 luz o cen\u00e1rio de redes sociais do primeiro par\u00e1grafo, posso citar um exemplo que tem se tornado corriqueiro para exemplificar o caso: trata-se do \u201cReddit Hug of Death\u201d (O abra\u00e7o da morte do\u00a0<a href=\"http:\/\/www.reddit.com\/\" target=\"_blank\" rel=\"noopener\">Reddit<\/a>\u00a0\u2014 tradu\u00e7\u00e3o literal), que acontece quando um usu\u00e1rio do\u00a0<a href=\"http:\/\/www.reddit.com\/\" target=\"_blank\" rel=\"noopener\">Reddit<\/a>\u00a0faz uma postagem recomendando um site, servi\u00e7o ou publicando uma not\u00edcia espec\u00edfica e essa postagem acaba atingindo a front-page da rede social, gerando uma quantidade de acessos por parte dos usu\u00e1rios t\u00e3o massiva que chega a derrubar o site\/servi\u00e7o referenciado (em grande parte das vezes).<\/p>\n<p>Servidores, aplica\u00e7\u00f5es web, aplica\u00e7\u00f5es mobile, e todo e qualquer cen\u00e1rio do universo computacional que envolve uma troca ativa de bits e bytes atrav\u00e9s da nossa querida internet, se torna suscet\u00edvel a uma sobrecarga, venha ela de um tsunami de usu\u00e1rios sedentos por algo, ou atrav\u00e9s de crackers mal intencionados buscando prejudicar um servidor atrav\u00e9s de um famigerado\u00a0<a href=\"http:\/\/www.digitalattackmap.com\/\" target=\"_blank\" rel=\"noopener\">ataque de nega\u00e7\u00e3o de servi\u00e7o<\/a>\u00a0(cuidado: esse link de mapeamento dos DDoS \u00e9 hipn\u00f3tico!), e pensando nesses cen\u00e1rios eu sempre busco estruturar uma linha de pensamento preventiva, capaz de mensurar atrav\u00e9s de testes de performance, que abrangem testes de carga e estresse, o ponto de quebra dos sistemas testados.<\/p>\n<h2>Come\u00e7ando a fazer as contas<\/h2>\n<p>N\u00f3s, t\u00e3o apegados a requisitos, sempre come\u00e7amos as nossas jornadas em busca do estado de inexist\u00eancia de bugs persistentes com perguntas. Uma vez que nos debru\u00e7amos nas possibilidades e cen\u00e1rios, isso faz ou deve fazer parte da nossa natureza investigativa. Como engenheiro de testes, eu sempre irei buscar insumos, recheando-os com sentimentos e expectativas, para conseguir entregar a melhor experi\u00eancia aos usu\u00e1rios, validando o c\u00f3digo de forma progressiva, esperando que o mesmo n\u00e3o esconda nenhuma surpresa.<\/p>\n<p>Mas o que fazer quando n\u00e3o temos n\u00fameros iniciais ou quando as perspectivas ainda s\u00e3o apenas um conjunto de dados e par\u00e2metros ainda abstratos e pouco tang\u00edveis? Bom, o primeiro passo \u00e9 come\u00e7ar de onde voc\u00ea est\u00e1, com o que voc\u00ea tem, fazendo o que der para fazer, e essa linha de iniciativa se aplica de forma bem eficaz para testes de performance.<\/p>\n<figure id=\"attachment_3599\" aria-describedby=\"caption-attachment-3599\" style=\"width: 489px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3599\" src=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/a154bd64-8d64-076d-1a30-34975c9a1594-300x291.png\" alt=\"\" width=\"489\" height=\"475\" srcset=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/a154bd64-8d64-076d-1a30-34975c9a1594-300x291.png 300w, https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/a154bd64-8d64-076d-1a30-34975c9a1594.png 486w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><figcaption id=\"caption-attachment-3599\" class=\"wp-caption-text\">Voc\u00ea j\u00e1 pensou como a capacidade de carga de uma ponte\/viaduto \u00e9 testada? \u00a9 Copyright Calvin and Hobbes<\/figcaption><\/figure>\n<p>Com alguns dos cen\u00e1rios ventilados, fazemos uma proje\u00e7\u00e3o al\u00e9m do mec\u00e2nico, precisamos considerar comportamentos, especulando as possibilidades e mensurando o movimento de manada, assim como o cracker mal intencionado. \u00c9 uma boa pr\u00e1tica especular abertamente sobre o in\u00edcio da atividade em si, uma vez que, parametrizar, assim como estimar as situa\u00e7\u00f5es de carga, acabam sendo a parte mais dif\u00edcil da atividade.<\/p>\n<p>Considere o que pode acontecer caso os stakeholders forne\u00e7am uma estimativa pouco precisa, subestimando a natureza real das cargas, ou como e por quanto tempo haver\u00e1 picos de acesso, considere tamb\u00e9m que por mais que tenhamos n\u00fameros supostamente exatos, para calcular o impacto deles precisaremos idealmente simul\u00e1-los, nos aproximar dos cen\u00e1rios assim como explodir as possibilidades com proje\u00e7\u00f5es algumas vezes bem afastadas da realidade, podendo assim descobrir pontos de quebra, para que depois de muito tempo exercitando os n\u00fameros e com ajuda de muita infraestrutura,\u00a0<a href=\"https:\/\/githubengineering.com\/ddos-incident-report\/\" target=\"_blank\" rel=\"noopener\">talvez voc\u00ea n\u00e3o precise mais fazer<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3600 alignleft\" src=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/146b4a13-131d-06dc-73db-32c40cae25e9-186x300.png\" alt=\"\" width=\"281\" height=\"453\" srcset=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/146b4a13-131d-06dc-73db-32c40cae25e9-186x300.png 186w, https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/146b4a13-131d-06dc-73db-32c40cae25e9.png 296w\" sizes=\"auto, (max-width: 281px) 100vw, 281px\" \/>Uma vez que a nossa conversa e grande parte da experi\u00eancia se d\u00e1 dentro de um universo normal corporativo, e que n\u00e3o come\u00e7aremos tentando conter uma \u201cGenki Dama\u201d como o pessoal do Akamai fez segurando o GitHub, n\u00f3s devemos nos ater a universos corporativos, de tr\u00e1fego moderado, apostando as fichas e considerando as possibilidades de um grande volume em breves espa\u00e7os de tempo e em determinadas situa\u00e7\u00f5es, como um hot site de promo\u00e7\u00f5es, por exemplo, que ser\u00e1 \u201catacado\u201d em um per\u00edodo espec\u00edfico, ao mesmo tempo, n\u00e3o estaremos livres dos bugs funcionais no aspecto l\u00f3gico como chamadas redundantes, cache desestruturado, e\u00a0<i>otras cositas m\u00e1s<\/i>\u00a0tamb\u00e9m precisam ser consideradas.<\/p>\n<p>J\u00e1 um cen\u00e1rio de fluxo intenso e constante, exige uma dedica\u00e7\u00e3o em n\u00edvel industrial de valida\u00e7\u00e3o, e geralmente a infraestrutura para tal j\u00e1 \u00e9 mensurada de forma escal\u00e1vel tornando os testes de performance como coadjuvantes situacionais, uma vez que voc\u00ea n\u00e3o faz ideia sobre quando um v\u00edrus vai assolar o mundo obrigando tudo e todos a ficarem isolados em suas casas, exercitando cada mil\u00edmetro da camada de infraestrutura de T.I do nosso pequeno e azul planeta.<\/p>\n<p>Dentro de toda diversidade de cen\u00e1rios, uma coisa \u00e9 fato: a performance do sistema e seus testes dependem de uma dedica\u00e7\u00e3o que se d\u00e1 do come\u00e7o ao fim (se \u00e9 que tem um fim, n\u00e9?!) do projeto, e deve envolver n\u00e3o s\u00f3 testadores pontualmente, mas desenvolvedores, respons\u00e1veis pela infraestrutura e tamb\u00e9m os stakeholders.<\/p>\n<p>Quando me pedem para explicar de forma mais clara situa\u00e7\u00f5es de estresse e carga de tiro curto, utilizo um v\u00eddeo bem did\u00e1tico para exemplificar, pois ainda n\u00e3o encontrei um jeito mais humano:<\/p>\n<p><iframe loading=\"lazy\" title=\"Invas\u00e3o no Feir\u00e3o da empresa &quot;Atacad\u00e3o dos Eletros&quot;\" width=\"500\" height=\"375\" src=\"https:\/\/www.youtube.com\/embed\/mBLQr7U_F90?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>Configurando, isolando, medindo, estimando e evoluindo<\/h2>\n<p>Prepare-se para o fim! O segredo est\u00e1 no planejamento, e n\u00e3o tenha medo de ser um pouco apocal\u00edptico, n\u00e3o nesse caso. O primeiro passo a ser considerado para os testes \u00e9 a solu\u00e7\u00e3o de infraestrutura escolhida: vamos de nuvem ou de uma estrutura de servidores anabolizados em algum data-center? Se formos pela primeira, ela ser\u00e1 facilmente escal\u00e1vel, e o limite geralmente costuma ser o seu cart\u00e3o de cr\u00e9dito e sua expertise tecnol\u00f3gica, porque n\u00e3o adianta nada voc\u00ea escalar ao infinito e al\u00e9m com uma arquitetura pouco eficiente e nada preparada para tratar grandes volumes, sejam de dados ou de acessos. J\u00e1 a segunda, costuma ter um investimento inicial robusto e pouca ou nenhuma escalabilidade, podendo ser uma solu\u00e7\u00e3o para uma demanda extremamente espec\u00edfica e linear.<\/p>\n<p>O segundo passo se d\u00e1 atrav\u00e9s da escolha do sistema, aplica\u00e7\u00f5es, arquitetura, quando muitas dessas dependem da aprova\u00e7\u00e3o dos stakeholders pelo impacto direto nos custos do projeto, j\u00e1 no que diz respeito \u00e0 arquitetura, existem situa\u00e7\u00f5es que os requisitos s\u00e3o levados ao p\u00e9 da letra. Um amigo que hoje desenvolve em terras al\u00e9m-mar, sempre trouxe uma l\u00f3gica brincante quando trabalh\u00e1vamos na mesma equipe e eu questionava a performance da aplica\u00e7\u00e3o: \u201cse funciona para 1, funciona para v\u00e1rios, se funcionou pra poucos certamente funcionar\u00e1 para muitos\u201d, n\u00e3o acreditem nesse rapaz.<\/p>\n<figure id=\"attachment_3601\" aria-describedby=\"caption-attachment-3601\" style=\"width: 668px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3601\" src=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/25d75a21-1b7b-7397-42b0-1cf5c7fc3a1f-300x146.png\" alt=\"\" width=\"668\" height=\"325\" srcset=\"https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/25d75a21-1b7b-7397-42b0-1cf5c7fc3a1f-300x146.png 300w, https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/25d75a21-1b7b-7397-42b0-1cf5c7fc3a1f-768x373.png 768w, https:\/\/www.cesar.org.br\/painel\/wp-content\/uploads\/2024\/06\/25d75a21-1b7b-7397-42b0-1cf5c7fc3a1f.png 872w\" sizes=\"auto, (max-width: 668px) 100vw, 668px\" \/><figcaption id=\"caption-attachment-3601\" class=\"wp-caption-text\">Algumas cartas do Test Sphere que abordam situa\u00e7\u00f5es relativas a testes de performance!<\/figcaption><\/figure>\n<p>H\u00e1 outras centenas de fatores que podem influenciar cada uma das escolhas, e \u00e9 por isso que eu sugiro ser um pouco apocal\u00edptico, pois devemos considerar a pouca visibilidade dos stakeholders e escolhas bin\u00e1rias por parte dos desenvolvedores na maioria das vezes.<\/p>\n<div>\n<section class=\"section-content col\">\n<div class=\"container\">\n<div class=\"row row-content\">\n<article class=\"d-flex flex-column w-100\">\n<div class=\"content-article\">\n<article data-author=\"thiago-souza\">Com todas as premissas atendidas e com o sistema em fase de testes, precisamos medir para conquistar. A base das m\u00e9tricas ser\u00e3o os n\u00fameros apontados pelos stakeholders, e no caso de n\u00e3o haver uma estimativa de uso, \u00e9 tamb\u00e9m fun\u00e7\u00e3o dos testes de performance estruturar essa an\u00e1lise relativa ao uso e aos limites da solu\u00e7\u00e3o, afinal, atrav\u00e9s do conhecimento de algo, nascem as estimativas.O que medir? Basicamente, quantidades e a toler\u00e2ncia a elas, idealmente em ambientes isolados para que vari\u00e1veis externas ao sistema n\u00e3o mascarem o bom ou o mau desempenho. As ferramentas mais modernas percorrem sempre caminhos bem lineares em rela\u00e7\u00e3o \u00e0s medi\u00e7\u00f5es, e fornecem relat\u00f3rios das execu\u00e7\u00f5es para uma an\u00e1lise posterior. As m\u00e9tricas mais habituais s\u00e3o:<\/p>\n<ul>\n<li>Consumo dos recursos b\u00e1sicos do sistema \u2014 CPU e RAM;<\/li>\n<li>Tempo de resposta para cada chamada (medido ponto-a-ponto);<\/li>\n<li>Quantidade de requests atendidos por segundo (Throughput);<\/li>\n<li>Tempo para o primeiro byte endere\u00e7ado pelo servidor (TTFB);<\/li>\n<li>Quantidade de conex\u00f5es que falharam (claro que se houver falha!);<\/li>\n<li>Quantidade de requisi\u00e7\u00f5es que falharam (preciso repetir?!);<\/li>\n<\/ul>\n<p>De quebra, anomalias como vazamentos de mem\u00f3ria, problemas de sincroniza\u00e7\u00e3o, corrompimento de dados e uma variedade nada peculiar de comportamentos completamente nocivos ao produto, percept\u00edveis ou n\u00e3o para os usu\u00e1rios.<\/p>\n<h2>A pesada conclus\u00e3o<\/h2>\n<p>Testes de performance e seus subgrupos atingiram um n\u00edvel ainda maior de import\u00e2ncia e relev\u00e2ncia nesses tempos de exerc\u00edcios el\u00e1sticos em termos de tecnologia da informa\u00e7\u00e3o dentro de uma pandemia, \u00e9 extremamente ben\u00e9fico que pratiquemos um pouco da saud\u00e1vel engenharia do caos, t\u00e3o celebrada em servi\u00e7os que est\u00e3o habituados a trabalhar com picos de uso de forma mais rotineira que a maioria dos meros mortais, ent\u00e3o, siga o seu instinto, redobre a valida\u00e7\u00e3o das suas estimativas e considere que esse nicho de n\u00e3o-funcionais s\u00e3o parte essencial da mensura\u00e7\u00e3o de sa\u00fade da sua aplica\u00e7\u00e3o.<\/p>\n<p>Procure entender as m\u00e9tricas coletadas de maneira cient\u00edfica, replique ambientes de produ\u00e7\u00e3o, exploda os limites dos mesmos e nunca se d\u00ea por satisfeito. Quando voc\u00ea estiver exercitando tudo de maneira sistem\u00e1tica, quase na base da mem\u00f3ria muscular, os gargalos dos sistemas testados conversar\u00e3o com voc\u00ea.<\/p>\n<p><i>P.S: Ferramentas, n\u00e9?! N\u00e3o falei sobre elas, e voc\u00ea entrou aqui procurando\u00a0<\/i><a href=\"https:\/\/jmeter.apache.org\/\" target=\"_blank\" rel=\"noopener\"><i>JMeter<\/i><\/a><i>,\u00a0<\/i><a href=\"https:\/\/gatling.io\/\" target=\"_blank\" rel=\"noopener\"><i>Gatling\u00a0<\/i><\/a><i>ou\u00a0<\/i><a href=\"https:\/\/locust.io\/\" target=\"_blank\" rel=\"noopener\"><i>Locust\u00a0<\/i><\/a><i>e eu me mantive na teoria, mas relaxa, um artigo com um pouco sobre cada uma delas vai para o forno em breve, prome<\/i>to.<\/p>\n<h4><strong>Quer saber mais sobre sobre como o CESAR pode te ajudar?\u00a0<\/strong><a href=\"https:\/\/materiais.cesar.org.br\/faleconsultor\" target=\"_blank\" rel=\"noopener\"><b>FALE COM UM CONSULTOR<\/b><\/a><\/h4>\n<\/article>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n<\/section>\n<div class=\"redes-sociais\"><\/div>\n<\/div>\n","protected":false},"featured_media":6964,"template":"","categories":[5],"tags":[],"formato_insights":[16],"class_list":["post-3598","insight","type-insight","status-publish","has-post-thumbnail","hentry","category-tecnologia","formato_insights-artigo"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/insight\/3598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/insight"}],"about":[{"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/types\/insight"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/media\/6964"}],"wp:attachment":[{"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/media?parent=3598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/categories?post=3598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/tags?post=3598"},{"taxonomy":"formato_insights","embeddable":true,"href":"https:\/\/www.cesar.org.br\/painel\/wp-json\/wp\/v2\/formato_insights?post=3598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}