<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zezologs&#187; Performance</title>
	<atom:link href="http://www.zezologs.org/blog/category/performance/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zezologs.org/blog</link>
	<description>teste de software, prevenção de erros, automação</description>
	<lastBuildDate>Thu, 08 Sep 2011 12:49:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ferramentas de Teste: JMeter (2)</title>
		<link>http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/</link>
		<comments>http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 12:46:28 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Ferramentas de Teste]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/?p=470</guid>
		<description><![CDATA[<p>Alguns leitores do blog e do <a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">post</a> me questionam sobre qual o critério usamos para determinar que uma aplicação WEB está reprovada nos testes de performance &#8230; outra coisa que me perguntam é como o analisar os resultados.</p>
<p>Então olha só&#8230;</p>
<p><strong>1) Qual o critério usamos para determinar que uma aplicação WEB está &#8220;reprovada&#8221; nos testes de performance?</strong></p>
<p></p>
<p>Falei <a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">aqui </a>sobre como elicitar o requisito não-funcional de performance. Definir este requisito <strong>não</strong> é uma atividade que cabe a nós que estamos desenvolvendo/testando o produto, e sim ao owner do produto &#8230; o cliente.</p>
<p>O que <strong>podemos</strong> e <strong>devemos</strong> fazer, pois na maioria dos casos somos nós (equipe) que definimos a arquitetura do produto, é ajudar o owner a desenvolver este requisito não-funcional, com questionamentos.</p>
<p>Estes questionamentos ajudam a criar este requisito, e também ajudam a equipe de desenvolvimento a desenvolver um produto que atenda a este requisito. E sabe o que já aconteceu? Já tivemos que adaptar a arquitetura e até a <strong>trocar de tecnologia</strong>, porque quando o cliente leu os questionamentos &#8230; ele pensou, e repensou, e quando ele repensa&#8230; <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Isso é importante, importante para o produto, importante para você! Estude a arquitetura, faça um questionário e mande para o owner do produto.</p>
<p>Uma falha muito comum, e infelizmente, algumas vezes recorrente, é a não definição deste requisito, não é muito difícil prever onde isso vai acabar, concordam? conforme minhas últimas linhas acima, dá para resumir &#8230; um produto que não presta! <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>2) Como o analisar os resultados?</strong></p>
<p>A forma mais didática que achei foi assim</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2011/09/performance_01.png" rel="lightbox"><img class="alignnone size-medium wp-image-471" title="performance_01" src="http://www.zezologs.org/wp-content/uploads/2011/09/performance_01-237x300.png" alt="" width="237" height="300" /></a></p>
<p>Este teste foi executado de forma distribuída, um jmeter master e duas escravas, 4 horas de execução. Lá em Throuput, olha a oscilação, isso tá certo?, eu acho que não! melhor seria assim</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2011/09/performance_02.png" rel="lightbox"><img class="alignnone size-medium wp-image-472" title="performance_02" src="http://www.zezologs.org/wp-content/uploads/2011/09/performance_02-300x140.png" alt="" width="300" height="140" /></a></p>
<p>concordam?</p>
<p>Sim, isso é um COPY + PASTE do &#8220;Relatório Agregado&#8221;.</p>
<p>E a taxa de erro? Essa taxa de erro ai &#8230; humpf!</p>
<p>Se ficou alguma dúvida &#8230; me perguntem, se eu não souber responder algum leitor blog responde <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/">terça-feira, setembro 13, 2011</a>, joao batista comentou: Cara já sou aluno, já aprendi bastante com vc. só mais uma duvida de iniciante mesmo, como faço para compartilhar as maquinas usando jmeter, para executar os teste.</li><br><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/">quarta-feira, setembro 14, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: http://jakarta.apache.org/jmeter/usermanual/jmeter_distributed_testing_step_by_step.pdf</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/questionamentos-sobre-o-testlink-1/" rel="bookmark" title="Permanent Link: Questionamentos sobre o Testlink (#1)">Questionamentos sobre o Testlink (#1)</a></li><li><a href="http://www.zezologs.org/blog/iii-ebts-aberta-submisses-de-artigos/" rel="bookmark" title="Permanent Link: III EBTS Aberta Submiss&otilde;es de Artigos">III EBTS Aberta Submiss&otilde;es de Artigos</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-csunit/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com csUnit">Testes Unit&aacute;rios com csUnit</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>Alguns leitores do blog e do <a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">post</a> me questionam sobre qual o critério usamos para determinar que uma aplicação WEB está reprovada nos testes de performance &#8230; outra coisa que me perguntam é como o analisar os resultados.</p>
<p>Então olha só&#8230;</p>
<p><strong>1) Qual o critério usamos para determinar que uma aplicação WEB está &#8220;reprovada&#8221; nos testes de performance?</strong></p>
<p></p>
<p>Falei <a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">aqui </a>sobre como elicitar o requisito não-funcional de performance. Definir este requisito <strong>não</strong> é uma atividade que cabe a nós que estamos desenvolvendo/testando o produto, e sim ao owner do produto &#8230; o cliente.</p>
<p>O que <strong>podemos</strong> e <strong>devemos</strong> fazer, pois na maioria dos casos somos nós (equipe) que definimos a arquitetura do produto, é ajudar o owner a desenvolver este requisito não-funcional, com questionamentos.</p>
<p>Estes questionamentos ajudam a criar este requisito, e também ajudam a equipe de desenvolvimento a desenvolver um produto que atenda a este requisito. E sabe o que já aconteceu? Já tivemos que adaptar a arquitetura e até a <strong>trocar de tecnologia</strong>, porque quando o cliente leu os questionamentos &#8230; ele pensou, e repensou, e quando ele repensa&#8230; <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Isso é importante, importante para o produto, importante para você! Estude a arquitetura, faça um questionário e mande para o owner do produto.</p>
<p>Uma falha muito comum, e infelizmente, algumas vezes recorrente, é a não definição deste requisito, não é muito difícil prever onde isso vai acabar, concordam? conforme minhas últimas linhas acima, dá para resumir &#8230; um produto que não presta! <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>2) Como o analisar os resultados?</strong></p>
<p>A forma mais didática que achei foi assim</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2011/09/performance_01.png" rel="lightbox"><img class="alignnone size-medium wp-image-471" title="performance_01" src="http://www.zezologs.org/wp-content/uploads/2011/09/performance_01-237x300.png" alt="" width="237" height="300" /></a></p>
<p>Este teste foi executado de forma distribuída, um jmeter master e duas escravas, 4 horas de execução. Lá em Throuput, olha a oscilação, isso tá certo?, eu acho que não! melhor seria assim</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2011/09/performance_02.png" rel="lightbox"><img class="alignnone size-medium wp-image-472" title="performance_02" src="http://www.zezologs.org/wp-content/uploads/2011/09/performance_02-300x140.png" alt="" width="300" height="140" /></a></p>
<p>concordam?</p>
<p>Sim, isso é um COPY + PASTE do &#8220;Relatório Agregado&#8221;.</p>
<p>E a taxa de erro? Essa taxa de erro ai &#8230; humpf!</p>
<p>Se ficou alguma dúvida &#8230; me perguntem, se eu não souber responder algum leitor blog responde <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/">terça-feira, setembro 13, 2011</a>, joao batista comentou: Cara já sou aluno, já aprendi bastante com vc. só mais uma duvida de iniciante mesmo, como faço para compartilhar as maquinas usando jmeter, para executar os teste.</li><br><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/">quarta-feira, setembro 14, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: http://jakarta.apache.org/jmeter/usermanual/jmeter_distributed_testing_step_by_step.pdf</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/questionamentos-sobre-o-testlink-1/" rel="bookmark" title="Permanent Link: Questionamentos sobre o Testlink (#1)">Questionamentos sobre o Testlink (#1)</a></li><li><a href="http://www.zezologs.org/blog/iii-ebts-aberta-submisses-de-artigos/" rel="bookmark" title="Permanent Link: III EBTS Aberta Submiss&otilde;es de Artigos">III EBTS Aberta Submiss&otilde;es de Artigos</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-csunit/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com csUnit">Testes Unit&aacute;rios com csUnit</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dicas JMeter: &#8216;Once Only Controller&#8217;</title>
		<link>http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/</link>
		<comments>http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 16:51:25 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Teste de Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/</guid>
		<description><![CDATA[<p>Quando executamos um teste de performance, carga ou stress em alguma aplicação WEB usando JMeter, devemos ter bastante cuidado para que o script confeccionado para a realização do teste não afete os resultados, isso é um pensamento bastante óbvio que devemos ter em mente antes de executarmos um teste desta natureza.</p>
<p>É natural, que ao escrevermos o nosso primeiro script no JMeter, WebLoad, WAST, ou qualquer outra ferramenta, essa preocupação não esteja na lista de prioridades, pois estamos preocupados em ver o script funcionado&#8230;mas quando falamos em testar performance de aplicações, precisamos sim ter um cuidado muito especial com a performance do seu próprio script, por uma razão obvia: <strong>Seu script pode estar &#8216;retardando&#8217; ainda mais a aplicação</strong>.</p>
<p>É importante entendermos que seu script deverá conter uma rotina lógica, sensata e real.</p>
<p></p>
<p>Quando planejamos testar a vazão/throughput de uma tela de cadastro, por exemplo, não faz sentido termos requisições que logam no sistema sendo executadas a cada thread, isso é um exemplo claro, de que o seu script irá afetar <strong>SIM </strong>o resultado do seu teste! tornando-o <strong>NÃO CONFIÁVEL.</strong></p>
<p>Pois bem, a dica aqui é bem simples, no JMeter existe um &#8216;Logic Controller&#8217; chamado &#8216;Once Only Controller&#8217;, como próprio nome sugere, &#8216;Controlador Apenas Uma Vez&#8217;.</p>
<p>Incluindo uma thread nesse controller, fará com que sua requisição seja executada apenas no início do seu script, ele deverá ficar desta forma:</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/09/image.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/09/image-thumb.png" alt="image" width="240" height="171" /></a></p>
<p>Observe que tenho 3 requisições dentro do meu &#8216;Once Only Controller&#8217; isso fará com que eles sejam executados apenas no início do script, como mostra umagem abaixo.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/09/image1.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/09/image-thumb1.png" alt="image" width="240" height="171" /></a></p>
<p>È isso, devemos ter alguns cuidados com o nosso script, pois ele pode afetar o resultado dos testes, e práticas bastante simples como esta acima mencionada, nos evita alguns problemas.</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/">terça-feira, agosto 11, 2009</a>, Paula comentou: Bom dia,

Gostaria de saber como crio ou configuro o Jmeter para realizar teste de stress, criei o script que tem várias telas de cadastro, e queria simular o máximo de usuários logados e fazendo esses cadastros, mas não consegui entender qual recurso eu uso no Jmeter, vc poderia me ajudar?</li><br><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/">quinta-feira, agosto 13, 2009</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Paula, 

Olha no post http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/ ?</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/estimando-esforo-de-automao/" rel="bookmark" title="Permanent Link: Estimando Esforço de Automação">Estimando Esforço de Automação</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li><li><a href="http://www.zezologs.org/blog/forum-no-ar/" rel="bookmark" title="Permanent Link: Forum no ar!">Forum no ar!</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-dicas-iniciais/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios Dicas Iniciais">Testes Unit&aacute;rios Dicas Iniciais</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>Quando executamos um teste de performance, carga ou stress em alguma aplicação WEB usando JMeter, devemos ter bastante cuidado para que o script confeccionado para a realização do teste não afete os resultados, isso é um pensamento bastante óbvio que devemos ter em mente antes de executarmos um teste desta natureza.</p>
<p>É natural, que ao escrevermos o nosso primeiro script no JMeter, WebLoad, WAST, ou qualquer outra ferramenta, essa preocupação não esteja na lista de prioridades, pois estamos preocupados em ver o script funcionado&#8230;mas quando falamos em testar performance de aplicações, precisamos sim ter um cuidado muito especial com a performance do seu próprio script, por uma razão obvia: <strong>Seu script pode estar &#8216;retardando&#8217; ainda mais a aplicação</strong>.</p>
<p>É importante entendermos que seu script deverá conter uma rotina lógica, sensata e real.</p>
<p></p>
<p>Quando planejamos testar a vazão/throughput de uma tela de cadastro, por exemplo, não faz sentido termos requisições que logam no sistema sendo executadas a cada thread, isso é um exemplo claro, de que o seu script irá afetar <strong>SIM </strong>o resultado do seu teste! tornando-o <strong>NÃO CONFIÁVEL.</strong></p>
<p>Pois bem, a dica aqui é bem simples, no JMeter existe um &#8216;Logic Controller&#8217; chamado &#8216;Once Only Controller&#8217;, como próprio nome sugere, &#8216;Controlador Apenas Uma Vez&#8217;.</p>
<p>Incluindo uma thread nesse controller, fará com que sua requisição seja executada apenas no início do seu script, ele deverá ficar desta forma:</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/09/image.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/09/image-thumb.png" alt="image" width="240" height="171" /></a></p>
<p>Observe que tenho 3 requisições dentro do meu &#8216;Once Only Controller&#8217; isso fará com que eles sejam executados apenas no início do script, como mostra umagem abaixo.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/09/image1.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/09/image-thumb1.png" alt="image" width="240" height="171" /></a></p>
<p>È isso, devemos ter alguns cuidados com o nosso script, pois ele pode afetar o resultado dos testes, e práticas bastante simples como esta acima mencionada, nos evita alguns problemas.</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/">terça-feira, agosto 11, 2009</a>, Paula comentou: Bom dia,

Gostaria de saber como crio ou configuro o Jmeter para realizar teste de stress, criei o script que tem várias telas de cadastro, e queria simular o máximo de usuários logados e fazendo esses cadastros, mas não consegui entender qual recurso eu uso no Jmeter, vc poderia me ajudar?</li><br><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/">quinta-feira, agosto 13, 2009</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Paula, 

Olha no post http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/ ?</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/estimando-esforo-de-automao/" rel="bookmark" title="Permanent Link: Estimando Esforço de Automação">Estimando Esforço de Automação</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li><li><a href="http://www.zezologs.org/blog/forum-no-ar/" rel="bookmark" title="Permanent Link: Forum no ar!">Forum no ar!</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-dicas-iniciais/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios Dicas Iniciais">Testes Unit&aacute;rios Dicas Iniciais</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Definindo Requisito-Não Funcional de Performance</title>
		<link>http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/</link>
		<comments>http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 12:18:39 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/?p=316</guid>
		<description><![CDATA[<p>A definição do requisito não funcional de performance é uma atividade muito particular de cada projeto de desenvolvimento, assim sendo, as preocupações variam muito de projeto em projeto. No entanto, algumas preocupações podem ser muito similares dependendo da natureza, tipo e plataforma em que a aplicação é desenvolvida.</p>
<p>Irei postar aqui uma lista com algumas preguntas que podem ajudar muito aqueles que necerssitam definir este requisito não-funcional, as perguntas a seguir não são &#8220;<em>leis</em>&#8221; e sim um guia inicial para a definição deste requisito, este questionário deverá mudar bastante contendo informações específicas do seu projeto.</p>
<p>Com isto em mente vamos ao questionário:</p>
<p></p>
<p>1.    Qual a quantidade de requisições simultâneas nos horários de pico?<br />
2.    Qual a quantidade de requisições por segundo será demandada aos nossos serviços?<br />
3.   Qual o tempo de resposta médio esperado?<br />
4.    Quantos usuários logado no sistema a aplicação deverá suportar?<br />
5.    Qual a importância dos testes de performance no escopo do projeto?<br />
6.    Quais os cenários mais críticos envolvendo performance dentro da aplicação?<br />
7.    Qual o volume médio de transações diárias? e qual o pico de demanda?<br />
8.    Qual a taxa de crescimento de usuários prevista?<br />
9.    Qual o tamanho médio em bytes destas transações?<br />
10.    Qual a velocidade dos links que proverão acesso a aplicação?<br />
11.   Quais as preocupações relacionadas a performance já existem?<br />
12.    Qual a taxa de crescimento (estimativa) da base de dados.<br />
13.    Existe necessidade de execução em cluster (aplicação rodando em varias instâncias).<br />
14    Qual a configuração utilizada no servidor que hospedará a aplicação?<br />
14.1    Quais fabricantes?<br />
14.2    Quantos processadores têm cada servidor? caso haja mais de um.<br />
14.3    Quando de memória RAM?<br />
14.4    Qual o cache utilizado?<br />
14.5    Como é implementada a segurança dos servidores?<br />
14.6    Existe algum cluster instalado?<br />
15.    Existe alguma solução para balanceamento de carga adotada?<br />
Se sim:<br />
15.1    Qual plataforma?<br />
15.2    Qual arquitetura?<br />
15.3    Qual o mecanismo de controle de seção?<br />
15.4    O balanceamento é feito por hardware ou software?</p>
<p>Qualquer dúvida é só comentar!</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">sexta-feira, setembro 12, 2008</a>, <a href='http://sembugs.blogspot.com' rel='external nofollow' class='url'>Elias Nogueira</a> comentou: Eudes, 
Parabens! Muito bom esse questionário!!!
Aproveitando, posso atualizar o documento de Questionário de Teste de Performance com estes teus pontos também?

Abraço!</li><br><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">sexta-feira, setembro 12, 2008</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Opa Elias,

Pode sim cara, fica a vontade!

Abraço.</li><br><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/' rel='external nofollow' class='url'>Ferramentas de Teste: JMeter (2) | zezologs</a> comentou: [...] aqui sobre como elicitar o requisito não-funcional de performance. Definir este requisito não é uma [...]</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/" rel="bookmark" title="Permanent Link: .NET e Contadores de Performance">.NET e Contadores de Performance</a></li><li><a href="http://www.zezologs.org/blog/testes-instveis-do-selenium/" rel="bookmark" title="Permanent Link: Testes Instáveis do Selenium">Testes Instáveis do Selenium</a></li><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>A definição do requisito não funcional de performance é uma atividade muito particular de cada projeto de desenvolvimento, assim sendo, as preocupações variam muito de projeto em projeto. No entanto, algumas preocupações podem ser muito similares dependendo da natureza, tipo e plataforma em que a aplicação é desenvolvida.</p>
<p>Irei postar aqui uma lista com algumas preguntas que podem ajudar muito aqueles que necerssitam definir este requisito não-funcional, as perguntas a seguir não são &#8220;<em>leis</em>&#8221; e sim um guia inicial para a definição deste requisito, este questionário deverá mudar bastante contendo informações específicas do seu projeto.</p>
<p>Com isto em mente vamos ao questionário:</p>
<p></p>
<p>1.    Qual a quantidade de requisições simultâneas nos horários de pico?<br />
2.    Qual a quantidade de requisições por segundo será demandada aos nossos serviços?<br />
3.   Qual o tempo de resposta médio esperado?<br />
4.    Quantos usuários logado no sistema a aplicação deverá suportar?<br />
5.    Qual a importância dos testes de performance no escopo do projeto?<br />
6.    Quais os cenários mais críticos envolvendo performance dentro da aplicação?<br />
7.    Qual o volume médio de transações diárias? e qual o pico de demanda?<br />
8.    Qual a taxa de crescimento de usuários prevista?<br />
9.    Qual o tamanho médio em bytes destas transações?<br />
10.    Qual a velocidade dos links que proverão acesso a aplicação?<br />
11.   Quais as preocupações relacionadas a performance já existem?<br />
12.    Qual a taxa de crescimento (estimativa) da base de dados.<br />
13.    Existe necessidade de execução em cluster (aplicação rodando em varias instâncias).<br />
14    Qual a configuração utilizada no servidor que hospedará a aplicação?<br />
14.1    Quais fabricantes?<br />
14.2    Quantos processadores têm cada servidor? caso haja mais de um.<br />
14.3    Quando de memória RAM?<br />
14.4    Qual o cache utilizado?<br />
14.5    Como é implementada a segurança dos servidores?<br />
14.6    Existe algum cluster instalado?<br />
15.    Existe alguma solução para balanceamento de carga adotada?<br />
Se sim:<br />
15.1    Qual plataforma?<br />
15.2    Qual arquitetura?<br />
15.3    Qual o mecanismo de controle de seção?<br />
15.4    O balanceamento é feito por hardware ou software?</p>
<p>Qualquer dúvida é só comentar!</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">sexta-feira, setembro 12, 2008</a>, <a href='http://sembugs.blogspot.com' rel='external nofollow' class='url'>Elias Nogueira</a> comentou: Eudes, 
Parabens! Muito bom esse questionário!!!
Aproveitando, posso atualizar o documento de Questionário de Teste de Performance com estes teus pontos também?

Abraço!</li><br><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">sexta-feira, setembro 12, 2008</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Opa Elias,

Pode sim cara, fica a vontade!

Abraço.</li><br><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/' rel='external nofollow' class='url'>Ferramentas de Teste: JMeter (2) | zezologs</a> comentou: [...] aqui sobre como elicitar o requisito não-funcional de performance. Definir este requisito não é uma [...]</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/" rel="bookmark" title="Permanent Link: .NET e Contadores de Performance">.NET e Contadores de Performance</a></li><li><a href="http://www.zezologs.org/blog/testes-instveis-do-selenium/" rel="bookmark" title="Permanent Link: Testes Instáveis do Selenium">Testes Instáveis do Selenium</a></li><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>14 Regras B&#225;sicas Para Aplica&#231;&#245;es WEB</title>
		<link>http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/</link>
		<comments>http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 23:57:04 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Aplicações WEB]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/?p=312</guid>
		<description><![CDATA[<p>Recebi uma indicação de <a href="http://www.linkedin.com/pub/3/28a/143">Saulo Dourado</a>, designer gráfico do <a href="http://www.cesar.org.br/">CESAR</a>, de um livro chamado &#8220;<a href="http://www.livrariacultura.com.br/scripts/cultura/resenha/resenha.asp?nitem=2127241&amp;sid=89816811810814716578802174&amp;k5=268E07DC&amp;uid=">High Performance Web Sites</a>&#8221; que contém uma lista de 14 &#8220;regras&#8221; para o desenvolvimento de frontends eficientes, estas mesmas 14 regras são usadas no YSlow, que abordei em &#8220;<a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/">Dicas: Firebug e YSlow</a>&#8220;.</p>
<p>O autor do livro e do YSlow é <a href="http://stevesouders.com/">Steve Sounders</a> um guru na arte e ciência de performance em aplicações WEB.</p>
<p>As 14 regras são:</p>
<p></p>
<p><strong>Regra 1: Minimize HTTP Requests</strong></p>
<p>Problema) 80-90% do tempo navegando em uma página WEB é gasto em requisições HTTP, requisições estas que envolvem Imagens, Scripts, CSS, Flash que são referenciados no HTML.</p>
<p>Solução 01) Use <a href="http://en.wikipedia.org/wiki/Image_map">Image Maps</a></p>
<p>Imagem Maps é uma técnica que mapeia uma imagem, ao invés de carragar cada imagem individualmente como fazemos de costume, criamos uma imagem unica e mapeamos cada parte da imagem via javascript.</p>
<p>Exemplos: <a title="http://stevesouders.com/examples/imagemap.php" href="http://stevesouders.com/examples/imagemap.php">http://stevesouders.com/examples/imagemap.php</a>, <a title="http://en.wikipedia.org/wiki/Image_map" href="http://en.wikipedia.org/wiki/Image_map">http://en.wikipedia.org/wiki/Image_map</a></p>
<p>Solução 02) Similar ao Image Maps só que com CSS</p>
<p>Exemplo: <a title="http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/" href="http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/">http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/</a></p>
<p><strong>Regra 2: Use CDN´s (Content Delivery Network)</strong></p>
<p>Assim como descrito na 1º Regra &#8220;<strong>80-90% do tempo navegando em uma página WEB é gasto em requisições HTTP.</strong>&#8221;</p>
<p>CDN´s são servidores que hospedam conteúdo estático em servidores separados da sua aplicação, ou em caso de portais de grande porte, este conteúdo não somente é de conteúdo estático, como tambem de todo o conteúdo do site, que seria distribuído baseado na região de onde a requisições foi feita.</p>
<p><strong>Regra 3: Use &#8220;</strong><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"><strong>Expires Header</strong></a><strong>&#8220;</strong></p>
<p>Problema) Browsers usam cache para reduzir a quantidade de HTTP requests.</p>
<p>Solução) &#8220;Expires Headers&#8221; fala por quanto tempo um componente deve ser armazenado em cache.</p>
<p><strong>Regra 4: Utilize Gzip</strong></p>
<p>Problema) Excesso de HTTP Requests, causado pelos componetes de uma aplicação (imagens, css, etc)</p>
<p>Solução) Comprima seus arquivos usando gzip. A maioria dos browsers disponíveis no mercado suportam compressão de aquivos via o &#8216;Accept-Encoding&#8217;.</p>
<p>Gzip é o mais popular e eficiente método de compressão atualmente.</p>
<p>Exemplos) <a title="http://www.weberdev.com/get_example-3993.html" href="http://www.weberdev.com/get_example-3993.html">http://www.weberdev.com/get_example-3993.html</a></p>
<p><strong>Regra 5: Mova CSS para o topo</strong></p>
<p>Problema) CSS no final provoca demora no carregamento da página.</p>
<p>Solução) Esta prática, acredito que todos fazem a contento, pelo menos desde que comecei a trabalhar com WEB costumo por os CSS no topo, mas para aqueles que o inserem no final da página, vai ai o alerta, isso afeta o carregamento de suas páginas, a explicação é bastante óbvia, quando o browser recebe uma solicitação, ele procura primeiro quais elementos gráficos carregar para depois carregar o conteúdo da página, tornando o CSS no final um equívoco.</p>
<p><strong>Regra 6: Mova scripts para baixo</strong></p>
<p>Ao contrário do CSS, os scripts em sua maioria devem ser movidos para o final da pagina, deixando os scripts no &lt;HEAD&gt; podem afetar o carregamento gradual da página, movendo os scripts para final, permite a paralelização do download do conteúdo do site.</p>
<p><strong>Regra 7: Evite expressões em CSS</strong></p>
<p>Muitos utilizam expressões em CSS para definir um background-color que mudem dinamicamente, a cada hora, isso é um exemplo de uso desnecessário de expressões em CSS, neste caso, isto poderia estar em um script em javascript, php, C#, etc&#8230; .</p>
<p><strong>Regra 8: &#8216;Inlined&#8217; JavaScript e CSS </strong></p>
<p>Não consegui uma tradução para esta regra, mas irei explicar do que se trata.</p>
<p>&#8216;Inline&#8217; Javasctipt e CSS diz respeito a incluir os CSS e o Javascript inteiro na página ao invés de deixa-los em arquivos externos, como fazemos de costume.</p>
<p><strong>Regra 9: Minimize Domínios</strong></p>
<p>Algumas aplicações precisam fazer verificações de DNS, tente reduzir isso ao máximo.</p>
<p><strong>Regra 10: Minimize JavaScript</strong></p>
<p>Trata-se de uma boa prática em relação a confecção de CSS. Esta boa prática diz respeito a nomenclatura usada nos elementos.</p>
<p>Reduzir ao máximo o nome dos elementos, ou seja, fazer um refactoring no CSS.</p>
<p><strong>Regra 11: Evite Redirecionamentos</strong></p>
<p>Redirecimentos são usados para rotear uma URL para outra URL, está prática, por motivos claros reduzem o tempo de carregamento das páginas.</p>
<p><strong>Regra 12: Remova Scritps Duplicados</strong></p>
<p>Da mesma forma que temos que fazer refactoring periódicos, no código de nossas aplicações, devemos fazer refactoring  tambem no código do nosso front-end.</p>
<p>Muitas vezes esquecemos que o front-end tambem tem código <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Regra 13: Desabilite ETags</strong></p>
<p>ETags é um mecanismo que webservers e browsers usam para determinar se o componente do cache do browser combina com com o que está no servidor.</p>
<p>O problema com ETags é qu eles são tipicamente construidos usando atributos que os tornam únicos para o servidor que hospeda o site, logo eles nunca vão combinar com o cache do browser.</p>
<p><strong>Regra 14: Cache AJAX</strong></p>
<p>Como a própria regra fala, permita que o AJAX utilize o cache so seu browser</p>
<p>Todos os exemplos acima estão muito bem organizados <a href="http://stevesouders.com/examples/rule-min-http.php">aqui</a>, o autor destas regras é o <a href="http://stevesouders.com/">Steve Sounders</a>, eu apenas traduzi para o português algumas partes importantes das 14 regras.</p>
<p>Estas regras, não se aplicam em todos os casos, mas é importante termos a consciência de que elas existem e que a não adoção de muitas destas regras, implicará em redução da performance de sua aplicação.</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">sexta-feira, agosto 15, 2008</a>, <a href='http://www.via6.com/topico.php?tid=210901' rel='external nofollow' class='url'>Eudes via Rec6</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB | ...zezologs...</strong>

Lista de 14 regras a serem utilizadas em projetos de desenvolvimento de aplicações WEB. ...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">domingo, agosto 17, 2008</a>, <a href='http://dihitt.com.br/story/14-regras-basicas-para-aplicacoes-web-' rel='external nofollow' class='url'>eudescosta no diHITT</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB ...</strong>

Lista de 14 regras definidas por Steve Sounders, a serem utilizadas em projetos de desenvolvimento de aplicações WEB visando a melhoria da performance do produto final. ...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">domingo, agosto 17, 2008</a>, <a href='http://www.digga.com.br/story.php?id=19' rel='external nofollow' class='url'>www.digga.com.br</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB...</strong>

Recebi uma indicação de Saulo Dourado, designer gráfico do CESAR, de um livro chamado “High Performance Web Sites” que contém uma lista de 14 “regras” para o desenvolvimento de frontends eficientes, estas mesmas 14 regras são usadas no YSl...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">quarta-feira, agosto 20, 2008</a>, Silvio Blauth comentou: ≈up≈</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">terça-feira, outubro 28, 2008</a>, Claudio comentou: ≈up≈ Valeu!! Muito bom!</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">quarta-feira, junho 1, 2011</a>, Antonio carlos comentou: ≈up≈</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/" rel="bookmark" title="Permanent Link: Definindo Requisito-Não Funcional de Performance">Definindo Requisito-Não Funcional de Performance</a></li><li><a href="http://www.zezologs.org/blog/top-10-vulnerabilidades-em-aplicaes-web/" rel="bookmark" title="Permanent Link: Top 10 vulnerabilidades em aplicações web">Top 10 vulnerabilidades em aplicações web</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-testes-selenium/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: Selenium">Ferramentas de Teste: Selenium</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>Recebi uma indicação de <a href="http://www.linkedin.com/pub/3/28a/143">Saulo Dourado</a>, designer gráfico do <a href="http://www.cesar.org.br/">CESAR</a>, de um livro chamado &#8220;<a href="http://www.livrariacultura.com.br/scripts/cultura/resenha/resenha.asp?nitem=2127241&amp;sid=89816811810814716578802174&amp;k5=268E07DC&amp;uid=">High Performance Web Sites</a>&#8221; que contém uma lista de 14 &#8220;regras&#8221; para o desenvolvimento de frontends eficientes, estas mesmas 14 regras são usadas no YSlow, que abordei em &#8220;<a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/">Dicas: Firebug e YSlow</a>&#8220;.</p>
<p>O autor do livro e do YSlow é <a href="http://stevesouders.com/">Steve Sounders</a> um guru na arte e ciência de performance em aplicações WEB.</p>
<p>As 14 regras são:</p>
<p></p>
<p><strong>Regra 1: Minimize HTTP Requests</strong></p>
<p>Problema) 80-90% do tempo navegando em uma página WEB é gasto em requisições HTTP, requisições estas que envolvem Imagens, Scripts, CSS, Flash que são referenciados no HTML.</p>
<p>Solução 01) Use <a href="http://en.wikipedia.org/wiki/Image_map">Image Maps</a></p>
<p>Imagem Maps é uma técnica que mapeia uma imagem, ao invés de carragar cada imagem individualmente como fazemos de costume, criamos uma imagem unica e mapeamos cada parte da imagem via javascript.</p>
<p>Exemplos: <a title="http://stevesouders.com/examples/imagemap.php" href="http://stevesouders.com/examples/imagemap.php">http://stevesouders.com/examples/imagemap.php</a>, <a title="http://en.wikipedia.org/wiki/Image_map" href="http://en.wikipedia.org/wiki/Image_map">http://en.wikipedia.org/wiki/Image_map</a></p>
<p>Solução 02) Similar ao Image Maps só que com CSS</p>
<p>Exemplo: <a title="http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/" href="http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/">http://css-tricks.com/css-sprites-what-they-are-why-theyre-cool-and-how-to-use-them/</a></p>
<p><strong>Regra 2: Use CDN´s (Content Delivery Network)</strong></p>
<p>Assim como descrito na 1º Regra &#8220;<strong>80-90% do tempo navegando em uma página WEB é gasto em requisições HTTP.</strong>&#8221;</p>
<p>CDN´s são servidores que hospedam conteúdo estático em servidores separados da sua aplicação, ou em caso de portais de grande porte, este conteúdo não somente é de conteúdo estático, como tambem de todo o conteúdo do site, que seria distribuído baseado na região de onde a requisições foi feita.</p>
<p><strong>Regra 3: Use &#8220;</strong><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"><strong>Expires Header</strong></a><strong>&#8220;</strong></p>
<p>Problema) Browsers usam cache para reduzir a quantidade de HTTP requests.</p>
<p>Solução) &#8220;Expires Headers&#8221; fala por quanto tempo um componente deve ser armazenado em cache.</p>
<p><strong>Regra 4: Utilize Gzip</strong></p>
<p>Problema) Excesso de HTTP Requests, causado pelos componetes de uma aplicação (imagens, css, etc)</p>
<p>Solução) Comprima seus arquivos usando gzip. A maioria dos browsers disponíveis no mercado suportam compressão de aquivos via o &#8216;Accept-Encoding&#8217;.</p>
<p>Gzip é o mais popular e eficiente método de compressão atualmente.</p>
<p>Exemplos) <a title="http://www.weberdev.com/get_example-3993.html" href="http://www.weberdev.com/get_example-3993.html">http://www.weberdev.com/get_example-3993.html</a></p>
<p><strong>Regra 5: Mova CSS para o topo</strong></p>
<p>Problema) CSS no final provoca demora no carregamento da página.</p>
<p>Solução) Esta prática, acredito que todos fazem a contento, pelo menos desde que comecei a trabalhar com WEB costumo por os CSS no topo, mas para aqueles que o inserem no final da página, vai ai o alerta, isso afeta o carregamento de suas páginas, a explicação é bastante óbvia, quando o browser recebe uma solicitação, ele procura primeiro quais elementos gráficos carregar para depois carregar o conteúdo da página, tornando o CSS no final um equívoco.</p>
<p><strong>Regra 6: Mova scripts para baixo</strong></p>
<p>Ao contrário do CSS, os scripts em sua maioria devem ser movidos para o final da pagina, deixando os scripts no &lt;HEAD&gt; podem afetar o carregamento gradual da página, movendo os scripts para final, permite a paralelização do download do conteúdo do site.</p>
<p><strong>Regra 7: Evite expressões em CSS</strong></p>
<p>Muitos utilizam expressões em CSS para definir um background-color que mudem dinamicamente, a cada hora, isso é um exemplo de uso desnecessário de expressões em CSS, neste caso, isto poderia estar em um script em javascript, php, C#, etc&#8230; .</p>
<p><strong>Regra 8: &#8216;Inlined&#8217; JavaScript e CSS </strong></p>
<p>Não consegui uma tradução para esta regra, mas irei explicar do que se trata.</p>
<p>&#8216;Inline&#8217; Javasctipt e CSS diz respeito a incluir os CSS e o Javascript inteiro na página ao invés de deixa-los em arquivos externos, como fazemos de costume.</p>
<p><strong>Regra 9: Minimize Domínios</strong></p>
<p>Algumas aplicações precisam fazer verificações de DNS, tente reduzir isso ao máximo.</p>
<p><strong>Regra 10: Minimize JavaScript</strong></p>
<p>Trata-se de uma boa prática em relação a confecção de CSS. Esta boa prática diz respeito a nomenclatura usada nos elementos.</p>
<p>Reduzir ao máximo o nome dos elementos, ou seja, fazer um refactoring no CSS.</p>
<p><strong>Regra 11: Evite Redirecionamentos</strong></p>
<p>Redirecimentos são usados para rotear uma URL para outra URL, está prática, por motivos claros reduzem o tempo de carregamento das páginas.</p>
<p><strong>Regra 12: Remova Scritps Duplicados</strong></p>
<p>Da mesma forma que temos que fazer refactoring periódicos, no código de nossas aplicações, devemos fazer refactoring  tambem no código do nosso front-end.</p>
<p>Muitas vezes esquecemos que o front-end tambem tem código <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Regra 13: Desabilite ETags</strong></p>
<p>ETags é um mecanismo que webservers e browsers usam para determinar se o componente do cache do browser combina com com o que está no servidor.</p>
<p>O problema com ETags é qu eles são tipicamente construidos usando atributos que os tornam únicos para o servidor que hospeda o site, logo eles nunca vão combinar com o cache do browser.</p>
<p><strong>Regra 14: Cache AJAX</strong></p>
<p>Como a própria regra fala, permita que o AJAX utilize o cache so seu browser</p>
<p>Todos os exemplos acima estão muito bem organizados <a href="http://stevesouders.com/examples/rule-min-http.php">aqui</a>, o autor destas regras é o <a href="http://stevesouders.com/">Steve Sounders</a>, eu apenas traduzi para o português algumas partes importantes das 14 regras.</p>
<p>Estas regras, não se aplicam em todos os casos, mas é importante termos a consciência de que elas existem e que a não adoção de muitas destas regras, implicará em redução da performance de sua aplicação.</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">sexta-feira, agosto 15, 2008</a>, <a href='http://www.via6.com/topico.php?tid=210901' rel='external nofollow' class='url'>Eudes via Rec6</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB | ...zezologs...</strong>

Lista de 14 regras a serem utilizadas em projetos de desenvolvimento de aplicações WEB. ...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">domingo, agosto 17, 2008</a>, <a href='http://dihitt.com.br/story/14-regras-basicas-para-aplicacoes-web-' rel='external nofollow' class='url'>eudescosta no diHITT</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB ...</strong>

Lista de 14 regras definidas por Steve Sounders, a serem utilizadas em projetos de desenvolvimento de aplicações WEB visando a melhoria da performance do produto final. ...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">domingo, agosto 17, 2008</a>, <a href='http://www.digga.com.br/story.php?id=19' rel='external nofollow' class='url'>www.digga.com.br</a> comentou: <strong>14 Regras Básicas Para Aplicações WEB...</strong>

Recebi uma indicação de Saulo Dourado, designer gráfico do CESAR, de um livro chamado “High Performance Web Sites” que contém uma lista de 14 “regras” para o desenvolvimento de frontends eficientes, estas mesmas 14 regras são usadas no YSl...</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">quarta-feira, agosto 20, 2008</a>, Silvio Blauth comentou: ≈up≈</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">terça-feira, outubro 28, 2008</a>, Claudio comentou: ≈up≈ Valeu!! Muito bom!</li><br><li><a href="http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/">quarta-feira, junho 1, 2011</a>, Antonio carlos comentou: ≈up≈</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/" rel="bookmark" title="Permanent Link: Definindo Requisito-Não Funcional de Performance">Definindo Requisito-Não Funcional de Performance</a></li><li><a href="http://www.zezologs.org/blog/top-10-vulnerabilidades-em-aplicaes-web/" rel="bookmark" title="Permanent Link: Top 10 vulnerabilidades em aplicações web">Top 10 vulnerabilidades em aplicações web</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-testes-selenium/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: Selenium">Ferramentas de Teste: Selenium</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/14-regras-bsicas-para-aplicaes-web/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ferramentas de Teste: JMeter</title>
		<link>http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/</link>
		<comments>http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 02:54:10 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Ferramentas de Teste]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[jmeter]]></category>
		<category><![CDATA[Teste de Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/</guid>
		<description><![CDATA[<p>Vou falar agora um pouco sobre o <a href="http://jakarta.apache.org/jmeter/">jmeter</a>, uma ferramenta do grupo <a href="http://www.apache.org">apache</a>, para a realização de testes de performance, carga e stress. Apesar de ser este o foco do jmeter (testes de performance, carga e stress) ele também pode ser utilizado para realizar testes em webservices, banco de dados e também automatizar alguns teste funcionais, seu uso, alias, é bastante amplo. Lógico que existem ferramentas que desempenham o mesmo papel que o Jmeter como o caso <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e2c0585a-062a-439e-a67d-75a89aa36495&amp;displaylang=en">WAST (Web Application Stress Test)</a>, <a href="http://www.webload.org/ ">WebLoad</a> mas vamos aborar jmeter neste momento.</p>
<p>Irei mostar a seguir, o Jmeter em sua operação mais básica e nos posts decorrentes irei aprofundando na sua aplicação.</p>
<p>Quem vê o Jmeter pela primeira vez não deve se sentir muito confortável devido a sua relativa falta de intuitividade, mas isso logo passa depois que você entende sua estrutura, que pelo que vocês irão ver, é bem simples.</p>
<p></p>
<p>Creio que a melhor forma de entender a estrutura de elementos da árvore do Jmeter é mostrando logo de início um script do Jmeter todo pronto, pois assim fica mais prático. Irei portanto, usar como exemplo um script que escrevi para alguns testes de performance e stress, são scripts simples que mostram como é fácil usar esta ferramenta.</p>
<p>Antes, irei mostrar onde se encontram os elementos que serão utilizados no exemplo que irei dar, veja na imagem abaixo como chegar neles.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image6.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb6.png" alt="image" width="240" height="158" /></a></p>
<p>Bem agora vamos para o script com os elementos que utilizei.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image7.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb7.png" alt="image" width="199" height="240" /></a></p>
<p>Vamos lá, na ordem:</p>
<p><strong>1.</strong> Inserindo História &#8211; Thread Group (<strong>Add &gt; New &gt; Thread Group</strong>)</p>
<p>Este é o começo de qualquer script (ou plano de teste, se preferir) no jmeter, este elemento inicia seu script, todos os outros elementos que serão interpretados pelo jmeter devem ficar obrigatoriamente abaixo deste thread group, você pode, se preferir, organizar seu script em vários thread groups sem problemas. É aqui no Thread Group que você irá indicar número de conexões simultâneas, Ramp-up e Tempo de Execução.</p>
<p><strong>2. </strong>HTTP Request Defaults (<strong>Thread Group &gt; Add &gt; Config Element &gt; HTTP Request Defaults</strong>)</p>
<p>Aqui você define o padrão de seus requests HTTP, este elemento basicamente gerência os HTTP requests que essa thread está prestes a fazer.</p>
<p>O que basicamente deve estar preenchido neste elemento é o campo <strong>Server Name or IP.</strong></p>
<p><strong>3.</strong> HTTP Cookie Manager (<strong>Thread Group &gt; Add &gt; Config Element &gt; HTTP Cookie Manager</strong>)</p>
<p>Suporte a Cookies, você pode remover este elemento, mas recomendo deixar. Este elemento garante que cada Thread vai receber seu próprio cookie.</p>
<p><strong>4.</strong> CSV Data Set Config (<strong>Thread Group &gt; Add &gt; Config Element &gt; CSV Data Set Config</strong>)</p>
<p>Esta aqui é uma facilidade do jmeter, em telas de login ou qualquer tela que você tenha que passar dados para o browser, você pode usar este elemento, ele funciona da seguinte forma.</p>
<p>Você preenche arquivo .csv com os parâmetros que você vai querer passar, conforme imagem abaixo</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image8.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb8.png" alt="image" width="137" height="66" /></a></p>
<p>Salve e depois volte ao elemento CSV Data Set Config e informe respectivamente nome para os valores acima <em>admin</em> e <em>1234</em>, conforme imagem abaixo</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image9.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb9.png" alt="image" width="240" height="23" /></a></p>
<p>Neste momento, ao rodar o script o jmeter vai vincular <em>USER=admin</em> e <em>PASS=1234</em>, e você pode chamar estes valores em qualquer lugar do script assim: <em>${USER}</em> e <em>${PASS}.</em></p>
<p>No caso deste script irei utilizar estes valores no campo abaixo.</p>
<p><strong>5.</strong> /redes2/login.do</p>
<p>Aqui é onde começa a interação com o browser, ou seja, onde as requisições são efetivamente realizadas, existe uma forma bem fácil de conseguir estas informações, usando uma funcionalidade chamada <strong>HTTP Proxy Server.</strong></p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image10.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb10.png" alt="image" width="240" height="56" /></a></p>
<p>Com o <strong>HTTP Proxy Server </strong>você pode gravar ações no browser e o jmeter irá gravando tudo pra você, basta que você informe nas configurações de seu browser a porta 8080 (você pode alterar para qualquer porta disponível no seu pc) e pressionar PLAY</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image11.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb11.png" alt="image" width="219" height="41" /></a></p>
<p>Pronto, feito isso, o jmeter deverá lhe poupar de realizar manualmente estes passos.</p>
<p>Como mencionado no tópico 5) irei usar os valores <em>${USER}</em> e <em>${PASS}</em> aqui.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image12.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb12.png" alt="image" width="240" height="44" /></a></p>
<p><strong>6.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>7.</strong> /redes2/viewHome.do</p>
<p>Mais um request gravado pelo <strong>HTTP Proxy Server </strong></p>
<p><strong>8.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>9.</strong> /iredes2/confirmCreateNarrative.do</p>
<p>Mais um request gravado pelo <strong>HTTP Proxy Server </strong></p>
<p><strong>10.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>11.</strong> Counter &#8211; (<strong>Thread Group &gt; Add &gt; Pre Processors &gt; Counter</strong>)</p>
<p>Esta aqui é outra facilidade do jmeter, quando existe a necessidade de se incluir vários registros sequencialmente no banco, a melhor forma de se fazer isso é via estes Counters, ele vai basicamente incrementar em +1 (isto no entanto é configurável)</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image13.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb13.png" alt="image" width="240" height="214" /></a></p>
<p>No caso acima ele vai começar com 1 incrementar de 1 em 1 até 100 e o nome de referência é H, ou seja, onde você quiser utilizar este counter, basta chamar<em> ${H}</em> onde queres incrementar, veja imagem abaixo.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image14.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb14.png" alt="image" width="240" height="61" /></a></p>
<p><strong>12.</strong> View Results in Table &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; View Results in Table</strong>)</p>
<p>Bem aqui é a parte dos relatórios, este relatório exibirá os seguintes valores</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image15.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb15.png" alt="image" width="240" height="10" /></a></p>
<p><strong>13.</strong> View Results Tree &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; View Results Tree</strong>)</p>
<p>Os resultados estão vazios, mas ele lista aqui todos os requests e alem disso aqui você tambem pode renderizar o HTML e ver exatamente o que este request fez, ótimo para debugar caso ocorra algum problema.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image16.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb16.png" alt="image" width="225" height="240" /></a></p>
<p><strong>14.</strong> Graph Results &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; Graph Results</strong>)</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image17.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb17.png" alt="image" width="240" height="157" /></a></p>
<p><strong>15.</strong> Save Responses to a file &#8211; (<strong>Thread Group &gt; Add &gt; Post Processors &gt; Save Resonses to a file</strong>)</p>
<p>Salva requisições em um arquivo</p>
<p><strong>16.</strong> Generate Summary Results &#8211; (<strong>Thread Group &gt; Add &gt; Post Processors &gt; Generate Summary Results</strong>)</p>
<p>Salva um sumário em um arquivo</p>
<p>Você pode organizar tudo em várias threads desta forma</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image18.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb18.png" alt="image" width="240" height="226" /></a></p>
<p>E antes de finalizar esta parte que é a mais importante</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image19.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb19.png" alt="image" width="235" height="163" /></a></p>
<p>Estas são as propriedade de uma Thread, você deve informar nela o que você vai fazer</p>
<p><strong>Number of Threads</strong> &#8211; Quantidade de Threads que será realizada</p>
<p><strong>Ram-UP</strong> &#8211; Tempo que o jmeter para executar as threads informada acima</p>
<p><strong>Loop </strong>- Quantas vezes ele irá realizar esta atividade</p>
<p>No caso acima 10 requisições em 60 segundos repetindo 5 vezes</p>
<p>No final consolido estes resultados em uma planilha</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image20.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb20.png" alt="image" width="240" height="106" /></a></p>
<p>Update 08/09/2011</p>
<p><a title="Gráfico Performance" href="http://www.zezologs.org/wp-content/uploads/downloads/2011/09/performance.xls" target="_blank">Download do arquivo .xls com o gráfico acima. </a></p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, junho 10, 2008</a>, <a href='http://www.via6.com/topico.php?tid=188652' rel='external nofollow' class='url'>Eudes via Rec6</a> comentou: <strong>Testando Performance de Aplicações WEB com JMeter...</strong>

Uma introdução a ferramenta de testes de performance, carga e stress chamada JMeter.
...</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, novembro 11, 2008</a>, <a href='http://www.worldorg.net' rel='external nofollow' class='url'>Flávio</a> comentou: O que são aquelas infomações em Graph Full e como eu pego o relatório aquele que é exibido no final?</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sexta-feira, novembro 14, 2008</a>, Claudio comentou: Valeu pelo tutorial.....vou começar a brincar com ele.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, janeiro 21, 2009</a>, Scheila comentou: Bom dia,

Muito legal o post! É sempre bom conhecer novas ferramentas...
Só gostaria de mais explicações sobre como eu faço para que a ferramenta grave as ações que farei no site para depois poder testar...
Gostaria tbm de dicas de outros bons livros e artigos para o Jmeter.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, abril 23, 2009</a>, Fernando comentou: muito confuso o tutorial, poderia detalhar mais para facilitar o uso da ferramenta, me perdi na parte "irei usar os valores ${USER} e ${PASS} aqui." aqui onde ? , mas valeu pela intenção de ajudar.  ≈up≈</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sexta-feira, abril 24, 2009</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Fernando, obrigado pelo feedback.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, março 23, 2010</a>, Edson comentou: Gostaria de saber como ler esses resultados apresentados nos gráficos, ou seja, o que o esá dizendo o gráfico entende?
Se poder me ajudar,,, to precisando muito.... se vc ouber de alguns livro eu aceito....

Valeu.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, junho 30, 2010</a>, joao batista comentou: Cara muito bom o tutorial, gostaria de saber como vc gerou.

Consolido de resultados em uma planilha</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, julho 1, 2010</a>, joao batista comentou: Como faço para consolidar o resulta e uma planilha iqual seu exemplo

No final consolido estes resultados em uma planilha</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sábado, julho 17, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: João,

É um copy & paste da tela do jmeter.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">segunda-feira, agosto 16, 2010</a>, Rodrigo Arriel comentou: Como pego o resultado do teste e monto um XLS?</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, agosto 18, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: copy + paste :)</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 23, 2010</a>, joao batista comentou: Boa tarde, Gostaria de saber qual ouvinte, vc utilizou para gerar este grafico.

que esta no final de seu post.

desde já fico grato.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 23, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: @joão, este gráfico gerei no excel, utilizando como input inormações coletadas do 'View Results in Table'</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sábado, setembro 3, 2011</a>, Leandro comentou: Gostaria de saber se é possível disponibilizar este seu grafico?

Grato.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, joao batista comentou: Excelente post, a minha maior duvida, e interpretar o resultado final, e passar a informação correta ao cliente. Você  teria algum post explicando como analisar os resultado do Listem.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Leandro, Todos,

Atualizei post com o link para download do gráfico que uso neste passo a passo.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/' rel='external nofollow' class='url'>Ferramentas de Teste: JMeter (2) | zezologs</a> comentou: [...] leitores do blog e do post me questionam sobre qual o critério usamos para determinar que uma aplicação WEB está reprovada [...]</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: João,

Olha em http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/questionamentos-sobre-o-testlink-1/" rel="bookmark" title="Permanent Link: Questionamentos sobre o Testlink (#1)">Questionamentos sobre o Testlink (#1)</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-csunit/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com csUnit">Testes Unit&aacute;rios com csUnit</a></li><li><a href="http://www.zezologs.org/blog/cobertura-de-cdigo-com-ncover/" rel="bookmark" title="Permanent Link: Cobertura de C&oacute;digo com NCover">Cobertura de C&oacute;digo com NCover</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>Vou falar agora um pouco sobre o <a href="http://jakarta.apache.org/jmeter/">jmeter</a>, uma ferramenta do grupo <a href="http://www.apache.org">apache</a>, para a realização de testes de performance, carga e stress. Apesar de ser este o foco do jmeter (testes de performance, carga e stress) ele também pode ser utilizado para realizar testes em webservices, banco de dados e também automatizar alguns teste funcionais, seu uso, alias, é bastante amplo. Lógico que existem ferramentas que desempenham o mesmo papel que o Jmeter como o caso <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e2c0585a-062a-439e-a67d-75a89aa36495&amp;displaylang=en">WAST (Web Application Stress Test)</a>, <a href="http://www.webload.org/ ">WebLoad</a> mas vamos aborar jmeter neste momento.</p>
<p>Irei mostar a seguir, o Jmeter em sua operação mais básica e nos posts decorrentes irei aprofundando na sua aplicação.</p>
<p>Quem vê o Jmeter pela primeira vez não deve se sentir muito confortável devido a sua relativa falta de intuitividade, mas isso logo passa depois que você entende sua estrutura, que pelo que vocês irão ver, é bem simples.</p>
<p></p>
<p>Creio que a melhor forma de entender a estrutura de elementos da árvore do Jmeter é mostrando logo de início um script do Jmeter todo pronto, pois assim fica mais prático. Irei portanto, usar como exemplo um script que escrevi para alguns testes de performance e stress, são scripts simples que mostram como é fácil usar esta ferramenta.</p>
<p>Antes, irei mostrar onde se encontram os elementos que serão utilizados no exemplo que irei dar, veja na imagem abaixo como chegar neles.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image6.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb6.png" alt="image" width="240" height="158" /></a></p>
<p>Bem agora vamos para o script com os elementos que utilizei.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image7.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb7.png" alt="image" width="199" height="240" /></a></p>
<p>Vamos lá, na ordem:</p>
<p><strong>1.</strong> Inserindo História &#8211; Thread Group (<strong>Add &gt; New &gt; Thread Group</strong>)</p>
<p>Este é o começo de qualquer script (ou plano de teste, se preferir) no jmeter, este elemento inicia seu script, todos os outros elementos que serão interpretados pelo jmeter devem ficar obrigatoriamente abaixo deste thread group, você pode, se preferir, organizar seu script em vários thread groups sem problemas. É aqui no Thread Group que você irá indicar número de conexões simultâneas, Ramp-up e Tempo de Execução.</p>
<p><strong>2. </strong>HTTP Request Defaults (<strong>Thread Group &gt; Add &gt; Config Element &gt; HTTP Request Defaults</strong>)</p>
<p>Aqui você define o padrão de seus requests HTTP, este elemento basicamente gerência os HTTP requests que essa thread está prestes a fazer.</p>
<p>O que basicamente deve estar preenchido neste elemento é o campo <strong>Server Name or IP.</strong></p>
<p><strong>3.</strong> HTTP Cookie Manager (<strong>Thread Group &gt; Add &gt; Config Element &gt; HTTP Cookie Manager</strong>)</p>
<p>Suporte a Cookies, você pode remover este elemento, mas recomendo deixar. Este elemento garante que cada Thread vai receber seu próprio cookie.</p>
<p><strong>4.</strong> CSV Data Set Config (<strong>Thread Group &gt; Add &gt; Config Element &gt; CSV Data Set Config</strong>)</p>
<p>Esta aqui é uma facilidade do jmeter, em telas de login ou qualquer tela que você tenha que passar dados para o browser, você pode usar este elemento, ele funciona da seguinte forma.</p>
<p>Você preenche arquivo .csv com os parâmetros que você vai querer passar, conforme imagem abaixo</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image8.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb8.png" alt="image" width="137" height="66" /></a></p>
<p>Salve e depois volte ao elemento CSV Data Set Config e informe respectivamente nome para os valores acima <em>admin</em> e <em>1234</em>, conforme imagem abaixo</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image9.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb9.png" alt="image" width="240" height="23" /></a></p>
<p>Neste momento, ao rodar o script o jmeter vai vincular <em>USER=admin</em> e <em>PASS=1234</em>, e você pode chamar estes valores em qualquer lugar do script assim: <em>${USER}</em> e <em>${PASS}.</em></p>
<p>No caso deste script irei utilizar estes valores no campo abaixo.</p>
<p><strong>5.</strong> /redes2/login.do</p>
<p>Aqui é onde começa a interação com o browser, ou seja, onde as requisições são efetivamente realizadas, existe uma forma bem fácil de conseguir estas informações, usando uma funcionalidade chamada <strong>HTTP Proxy Server.</strong></p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image10.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb10.png" alt="image" width="240" height="56" /></a></p>
<p>Com o <strong>HTTP Proxy Server </strong>você pode gravar ações no browser e o jmeter irá gravando tudo pra você, basta que você informe nas configurações de seu browser a porta 8080 (você pode alterar para qualquer porta disponível no seu pc) e pressionar PLAY</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image11.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb11.png" alt="image" width="219" height="41" /></a></p>
<p>Pronto, feito isso, o jmeter deverá lhe poupar de realizar manualmente estes passos.</p>
<p>Como mencionado no tópico 5) irei usar os valores <em>${USER}</em> e <em>${PASS}</em> aqui.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image12.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb12.png" alt="image" width="240" height="44" /></a></p>
<p><strong>6.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>7.</strong> /redes2/viewHome.do</p>
<p>Mais um request gravado pelo <strong>HTTP Proxy Server </strong></p>
<p><strong>8.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>9.</strong> /iredes2/confirmCreateNarrative.do</p>
<p>Mais um request gravado pelo <strong>HTTP Proxy Server </strong></p>
<p><strong>10.</strong> Browser-derived headers</p>
<p>Estes controles o <strong>HTTP Proxy Server </strong>adiciona automaticamente, não se preocupe com eles.</p>
<p><strong>11.</strong> Counter &#8211; (<strong>Thread Group &gt; Add &gt; Pre Processors &gt; Counter</strong>)</p>
<p>Esta aqui é outra facilidade do jmeter, quando existe a necessidade de se incluir vários registros sequencialmente no banco, a melhor forma de se fazer isso é via estes Counters, ele vai basicamente incrementar em +1 (isto no entanto é configurável)</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image13.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb13.png" alt="image" width="240" height="214" /></a></p>
<p>No caso acima ele vai começar com 1 incrementar de 1 em 1 até 100 e o nome de referência é H, ou seja, onde você quiser utilizar este counter, basta chamar<em> ${H}</em> onde queres incrementar, veja imagem abaixo.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image14.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb14.png" alt="image" width="240" height="61" /></a></p>
<p><strong>12.</strong> View Results in Table &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; View Results in Table</strong>)</p>
<p>Bem aqui é a parte dos relatórios, este relatório exibirá os seguintes valores</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image15.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb15.png" alt="image" width="240" height="10" /></a></p>
<p><strong>13.</strong> View Results Tree &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; View Results Tree</strong>)</p>
<p>Os resultados estão vazios, mas ele lista aqui todos os requests e alem disso aqui você tambem pode renderizar o HTML e ver exatamente o que este request fez, ótimo para debugar caso ocorra algum problema.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image16.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb16.png" alt="image" width="225" height="240" /></a></p>
<p><strong>14.</strong> Graph Results &#8211; (<strong>Thread Group &gt; Add &gt; Listener &gt; Graph Results</strong>)</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image17.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb17.png" alt="image" width="240" height="157" /></a></p>
<p><strong>15.</strong> Save Responses to a file &#8211; (<strong>Thread Group &gt; Add &gt; Post Processors &gt; Save Resonses to a file</strong>)</p>
<p>Salva requisições em um arquivo</p>
<p><strong>16.</strong> Generate Summary Results &#8211; (<strong>Thread Group &gt; Add &gt; Post Processors &gt; Generate Summary Results</strong>)</p>
<p>Salva um sumário em um arquivo</p>
<p>Você pode organizar tudo em várias threads desta forma</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image18.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb18.png" alt="image" width="240" height="226" /></a></p>
<p>E antes de finalizar esta parte que é a mais importante</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image19.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb19.png" alt="image" width="235" height="163" /></a></p>
<p>Estas são as propriedade de uma Thread, você deve informar nela o que você vai fazer</p>
<p><strong>Number of Threads</strong> &#8211; Quantidade de Threads que será realizada</p>
<p><strong>Ram-UP</strong> &#8211; Tempo que o jmeter para executar as threads informada acima</p>
<p><strong>Loop </strong>- Quantas vezes ele irá realizar esta atividade</p>
<p>No caso acima 10 requisições em 60 segundos repetindo 5 vezes</p>
<p>No final consolido estes resultados em uma planilha</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/06/image20.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/06/image-thumb20.png" alt="image" width="240" height="106" /></a></p>
<p>Update 08/09/2011</p>
<p><a title="Gráfico Performance" href="http://www.zezologs.org/wp-content/uploads/downloads/2011/09/performance.xls" target="_blank">Download do arquivo .xls com o gráfico acima. </a></p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, junho 10, 2008</a>, <a href='http://www.via6.com/topico.php?tid=188652' rel='external nofollow' class='url'>Eudes via Rec6</a> comentou: <strong>Testando Performance de Aplicações WEB com JMeter...</strong>

Uma introdução a ferramenta de testes de performance, carga e stress chamada JMeter.
...</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, novembro 11, 2008</a>, <a href='http://www.worldorg.net' rel='external nofollow' class='url'>Flávio</a> comentou: O que são aquelas infomações em Graph Full e como eu pego o relatório aquele que é exibido no final?</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sexta-feira, novembro 14, 2008</a>, Claudio comentou: Valeu pelo tutorial.....vou começar a brincar com ele.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, janeiro 21, 2009</a>, Scheila comentou: Bom dia,

Muito legal o post! É sempre bom conhecer novas ferramentas...
Só gostaria de mais explicações sobre como eu faço para que a ferramenta grave as ações que farei no site para depois poder testar...
Gostaria tbm de dicas de outros bons livros e artigos para o Jmeter.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, abril 23, 2009</a>, Fernando comentou: muito confuso o tutorial, poderia detalhar mais para facilitar o uso da ferramenta, me perdi na parte "irei usar os valores ${USER} e ${PASS} aqui." aqui onde ? , mas valeu pela intenção de ajudar.  ≈up≈</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sexta-feira, abril 24, 2009</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Fernando, obrigado pelo feedback.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">terça-feira, março 23, 2010</a>, Edson comentou: Gostaria de saber como ler esses resultados apresentados nos gráficos, ou seja, o que o esá dizendo o gráfico entende?
Se poder me ajudar,,, to precisando muito.... se vc ouber de alguns livro eu aceito....

Valeu.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, junho 30, 2010</a>, joao batista comentou: Cara muito bom o tutorial, gostaria de saber como vc gerou.

Consolido de resultados em uma planilha</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, julho 1, 2010</a>, joao batista comentou: Como faço para consolidar o resulta e uma planilha iqual seu exemplo

No final consolido estes resultados em uma planilha</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sábado, julho 17, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: João,

É um copy & paste da tela do jmeter.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">segunda-feira, agosto 16, 2010</a>, Rodrigo Arriel comentou: Como pego o resultado do teste e monto um XLS?</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quarta-feira, agosto 18, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: copy + paste :)</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 23, 2010</a>, joao batista comentou: Boa tarde, Gostaria de saber qual ouvinte, vc utilizou para gerar este grafico.

que esta no final de seu post.

desde já fico grato.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 23, 2010</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: @joão, este gráfico gerei no excel, utilizando como input inormações coletadas do 'View Results in Table'</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">sábado, setembro 3, 2011</a>, Leandro comentou: Gostaria de saber se é possível disponibilizar este seu grafico?

Grato.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, joao batista comentou: Excelente post, a minha maior duvida, e interpretar o resultado final, e passar a informação correta ao cliente. Você  teria algum post explicando como analisar os resultado do Listem.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: Leandro, Todos,

Atualizei post com o link para download do gráfico que uso neste passo a passo.</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/' rel='external nofollow' class='url'>Ferramentas de Teste: JMeter (2) | zezologs</a> comentou: [...] leitores do blog e do post me questionam sobre qual o critério usamos para determinar que uma aplicação WEB está reprovada [...]</li><br><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/">quinta-feira, setembro 8, 2011</a>, <a href='http://www.zezologs.org' rel='external nofollow' class='url'>eudescosta</a> comentou: João,

Olha em http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/dicas-jmeter-once-only-controller/" rel="bookmark" title="Permanent Link: Dicas JMeter: &#8216;Once Only Controller&#8217;">Dicas JMeter: &#8216;Once Only Controller&#8217;</a></li><li><a href="http://www.zezologs.org/blog/questionamentos-sobre-o-testlink-1/" rel="bookmark" title="Permanent Link: Questionamentos sobre o Testlink (#1)">Questionamentos sobre o Testlink (#1)</a></li><li><a href="http://www.zezologs.org/blog/ferramentas-de-teste-jmeter-2/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter (2)">Ferramentas de Teste: JMeter (2)</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-csunit/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com csUnit">Testes Unit&aacute;rios com csUnit</a></li><li><a href="http://www.zezologs.org/blog/cobertura-de-cdigo-com-ncover/" rel="bookmark" title="Permanent Link: Cobertura de C&oacute;digo com NCover">Cobertura de C&oacute;digo com NCover</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Server GC x Workstation GC</title>
		<link>http://www.zezologs.org/blog/server-gc-x-workstation-gc/</link>
		<comments>http://www.zezologs.org/blog/server-gc-x-workstation-gc/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 15:51:11 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Garbage Collection]]></category>
		<category><![CDATA[Teste de Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/2007/12/18/server-gc-x-workstation-gc/</guid>
		<description><![CDATA[<p>Vários artigos sobre performance em .net sugerem que dependendo da aplicação o algoritmo no GC seja alterado&#8230;</p>
<p>Se é uma aplicação desktop (tipo Windows forms) ele aconselha o uso do <strong>Workstation GC (Mscorwks.dll</strong>).Se for uma aplicação servidor ele aconselha o uso do <strong>Server GC (Mscorsvr.dll)</strong>.</p>
<p>No caso do Server GC ele so funciona em um servidor dual processor, pq ele cria dois GC heaps, um pra cada processador.</p>
<p>O Server GC é “tunado” para otimizar: throughput, comsumo de memória e fornece a escalabilidade que o dual processor deve prover&#8230;.se ele for dual processor e usarmos o Workstation GC ele vai usar a aplicação como se tivesse só um processador&#8230;.</p>
<p></p>
<p>Pra saber qual o algoritmo GC que sua aplicação esta usando é fácil vá no console do windows e digite:</p>
<p>tasklist /m mscorwks.dll</p>
<p>Ele deverá lhe mostrar isto:</p>
<pre>Image Name                   PID Modules
========================= ====== ==================
OUTLOOK.EXE                 3352 mscorwks.dll
mmc.exe                     2084 mscorwks.dll
w3wp.exe                    3436 mscorwks.dll</pre>
<p>Para configurar sua aplicação para o modo servidor no seu arquivo de configuração adicione a linha:</p>
<blockquote><p>&lt;configuration&gt;</p>
<p>&lt;runtime&gt;</p>
<p>&lt;gcServer enabled=&#8221;true&#8221; /&gt;</p>
<p>&lt;/runtime&gt;</p>
<p>&lt;/configuration&gt;</p></blockquote>
<p>Lembre-se que para rodar o Server GC seu servidor deverá ser dual processor.</p>
<hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/" rel="bookmark" title="Permanent Link: .NET e Contadores de Performance">.NET e Contadores de Performance</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>Vários artigos sobre performance em .net sugerem que dependendo da aplicação o algoritmo no GC seja alterado&#8230;</p>
<p>Se é uma aplicação desktop (tipo Windows forms) ele aconselha o uso do <strong>Workstation GC (Mscorwks.dll</strong>).Se for uma aplicação servidor ele aconselha o uso do <strong>Server GC (Mscorsvr.dll)</strong>.</p>
<p>No caso do Server GC ele so funciona em um servidor dual processor, pq ele cria dois GC heaps, um pra cada processador.</p>
<p>O Server GC é “tunado” para otimizar: throughput, comsumo de memória e fornece a escalabilidade que o dual processor deve prover&#8230;.se ele for dual processor e usarmos o Workstation GC ele vai usar a aplicação como se tivesse só um processador&#8230;.</p>
<p></p>
<p>Pra saber qual o algoritmo GC que sua aplicação esta usando é fácil vá no console do windows e digite:</p>
<p>tasklist /m mscorwks.dll</p>
<p>Ele deverá lhe mostrar isto:</p>
<pre>Image Name                   PID Modules
========================= ====== ==================
OUTLOOK.EXE                 3352 mscorwks.dll
mmc.exe                     2084 mscorwks.dll
w3wp.exe                    3436 mscorwks.dll</pre>
<p>Para configurar sua aplicação para o modo servidor no seu arquivo de configuração adicione a linha:</p>
<blockquote><p>&lt;configuration&gt;</p>
<p>&lt;runtime&gt;</p>
<p>&lt;gcServer enabled=&#8221;true&#8221; /&gt;</p>
<p>&lt;/runtime&gt;</p>
<p>&lt;/configuration&gt;</p></blockquote>
<p>Lembre-se que para rodar o Server GC seu servidor deverá ser dual processor.</p>
<hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/" rel="bookmark" title="Permanent Link: .NET e Contadores de Performance">.NET e Contadores de Performance</a></li><li><a href="http://www.zezologs.org/blog/ferramenta-de-testes-jmeter/" rel="bookmark" title="Permanent Link: Ferramentas de Teste: JMeter">Ferramentas de Teste: JMeter</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/server-gc-x-workstation-gc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET e Contadores de Performance</title>
		<link>http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/</link>
		<comments>http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 20:10:32 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Execução de Testes]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Teste de Performance]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/2007/12/05/identificando-gargalos-em-net-com-contadores-de-performance/</guid>
		<description><![CDATA[<p>O próprio windows vem com uma ferramenta para indentificar gargalos em .net, o nome desta ferramenta é &#8220;Performance&#8221; <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8230;fica em: Painel de Controle &#8211; Ferramentas Administrativas &#8211; Performance.</p>
<p>Nao sei se muitos usam essa ferramenta, eu já usei anteriormente mas nunca notei que ele tinha contadores de performance para .NET</p>
<p>Alguns artigos indicam o uso desta ferramenta para identificar gargalos em aplicações .NET para então com uso de outras ferramentas (profillers) atacar a causa raiz.(Em um futuro momento farei algumas apresentações de profilers que uso e usei)</p>
<p></p>
<p>Os contadores para estas analises são:</p>
<p>Memory Process\Private Bytes<br />
.NET CLR Memory\% Time in GC<br />
.NET CLR Memory\# Bytes in all Heaps<br />
.NET CLR Memory\# Gen 0 Collections<br />
.NET CLR Memory\# Gen 1 Collections<br />
.NET CLR Memory\# Gen 2 Collections<br />
.NET CLR Memory\# of Pinned Objects<br />
.NET CLR Memory\Large Object Heap size<br />
Working Set Process\Working Set</p>
<p>Exceptions<br />
.NET CLR Exceptions\# of Exceps Thrown /sec</p>
<p>Contention<br />
.NET CLR LocksAndThreads\Contention Rate / sec<br />
.NET CLR LocksAndThreads\Current Queue Length</p>
<p>Threading<br />
.NET CLR LocksAndThreads\# of current physical Threads<br />
Thread\% Processor Time<br />
Thread\Context Switches/sec<br />
Thread\Thread State</p>
<p>Code Access Security<br />
.NET CLR Security\Total Runtime Checks<br />
.NET CLR Security\Stack Walk Depth</p>
<p>Fontes:<br />
<a href="http://www.codeproject.com/dotnet/perfcounter.asp">http://www.codeproject.com/dotnet/perfcounter.asp</a><br />
<a href="http://channel9.msdn.com/wiki/default.aspx/PerformanceWiki.HowToTuneNETFramework">http://channel9.msdn.com/wiki/default.aspx/PerformanceWiki.HowToTuneNETFramework</a><br />
<a href="http://msdn2.microsoft.com/en-us/library/ms998579.aspx">http://msdn2.microsoft.com/en-us/library/ms998579.aspx</a></p>
<hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/" rel="bookmark" title="Permanent Link: Definindo Requisito-Não Funcional de Performance">Definindo Requisito-Não Funcional de Performance</a></li><li><a href="http://www.zezologs.org/blog/server-gc-x-workstation-gc/" rel="bookmark" title="Permanent Link: Server GC x Workstation GC">Server GC x Workstation GC</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li><li><a href="http://www.zezologs.org/blog/testlink-exportao-de-casos-de-teste/" rel="bookmark" title="Permanent Link: Testlink: Exporta&ccedil;&atilde;o de Casos de Teste">Testlink: Exporta&ccedil;&atilde;o de Casos de Teste</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-componente-do-net/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com componente do .NET">Testes Unit&aacute;rios com componente do .NET</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> <p>O próprio windows vem com uma ferramenta para indentificar gargalos em .net, o nome desta ferramenta é &#8220;Performance&#8221; <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8230;fica em: Painel de Controle &#8211; Ferramentas Administrativas &#8211; Performance.</p>
<p>Nao sei se muitos usam essa ferramenta, eu já usei anteriormente mas nunca notei que ele tinha contadores de performance para .NET</p>
<p>Alguns artigos indicam o uso desta ferramenta para identificar gargalos em aplicações .NET para então com uso de outras ferramentas (profillers) atacar a causa raiz.(Em um futuro momento farei algumas apresentações de profilers que uso e usei)</p>
<p></p>
<p>Os contadores para estas analises são:</p>
<p>Memory Process\Private Bytes<br />
.NET CLR Memory\% Time in GC<br />
.NET CLR Memory\# Bytes in all Heaps<br />
.NET CLR Memory\# Gen 0 Collections<br />
.NET CLR Memory\# Gen 1 Collections<br />
.NET CLR Memory\# Gen 2 Collections<br />
.NET CLR Memory\# of Pinned Objects<br />
.NET CLR Memory\Large Object Heap size<br />
Working Set Process\Working Set</p>
<p>Exceptions<br />
.NET CLR Exceptions\# of Exceps Thrown /sec</p>
<p>Contention<br />
.NET CLR LocksAndThreads\Contention Rate / sec<br />
.NET CLR LocksAndThreads\Current Queue Length</p>
<p>Threading<br />
.NET CLR LocksAndThreads\# of current physical Threads<br />
Thread\% Processor Time<br />
Thread\Context Switches/sec<br />
Thread\Thread State</p>
<p>Code Access Security<br />
.NET CLR Security\Total Runtime Checks<br />
.NET CLR Security\Stack Walk Depth</p>
<p>Fontes:<br />
<a href="http://www.codeproject.com/dotnet/perfcounter.asp">http://www.codeproject.com/dotnet/perfcounter.asp</a><br />
<a href="http://channel9.msdn.com/wiki/default.aspx/PerformanceWiki.HowToTuneNETFramework">http://channel9.msdn.com/wiki/default.aspx/PerformanceWiki.HowToTuneNETFramework</a><br />
<a href="http://msdn2.microsoft.com/en-us/library/ms998579.aspx">http://msdn2.microsoft.com/en-us/library/ms998579.aspx</a></p>
<hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/definindo-requisito-nao-funcional-de-performance/" rel="bookmark" title="Permanent Link: Definindo Requisito-Não Funcional de Performance">Definindo Requisito-Não Funcional de Performance</a></li><li><a href="http://www.zezologs.org/blog/server-gc-x-workstation-gc/" rel="bookmark" title="Permanent Link: Server GC x Workstation GC">Server GC x Workstation GC</a></li><li><a href="http://www.zezologs.org/blog/dicas-firebug-e-yslow/" rel="bookmark" title="Permanent Link: Dicas: Firebug e YSlow">Dicas: Firebug e YSlow</a></li><li><a href="http://www.zezologs.org/blog/testlink-exportao-de-casos-de-teste/" rel="bookmark" title="Permanent Link: Testlink: Exporta&ccedil;&atilde;o de Casos de Teste">Testlink: Exporta&ccedil;&atilde;o de Casos de Teste</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-componente-do-net/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com componente do .NET">Testes Unit&aacute;rios com componente do .NET</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">WordPress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/identificando-gargalos-em-net-com-contadores-de-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

