quinta-feira, 2 de outubro de 2014

Resumo: Hangout With Testers 5 - Performance Testing


O ultimo Hangout with Testers foi sobre Testes de Performance e tivemos um debate muito produtivo e repleto de detalhes. Muito conteúdo bacana foi abordado e os próprios participantes aprenderam conversando uns com os outros. Esperamos que você também tenha aprendido!

Se você perdeu, não tem problema! Segue o vídeo que também pode ser conferido no no Canal do GUTS-RS: 


Hangout with Testers - Testes de Performance

Segue um apanhado de termos técnicos, tecnologias ou coisas legais que foram comentadas durante o hangout e gostaríamos de explicás-la melhor. Cada participante dedicou um tempo para detalhar e compartilhar alguns links interessantes e bem úteis sobre testes de performance.


Por Elias Nogueira (elias.nogueira@gmail.com)


GTMetrix: site que analisa uma URL (página) e te apresente boas práticas que devem ser seguidas para melhorar a performance no front-end seguidas pelo Page Speed (Google), YSlow (Yahoo) além de um panorama das requisições (mesma visualização do paine "Net" d Firebug).
http://gtmetrix.com/

Load Balancing (Balanceamento de Carga): O Wikipidia já é auto-explicativo :D

BeanShell: comentamos que este recurso pode ser utilizado no JMeter para diversas tarefas. Pense como uma adição de uma pequena funcionalidade que o JMeter não tem :)


Por Robson Agapito (robagapito@hotmail.com)

ab - Apachebench: é uma ferramenta da Apache que ajuda em alguns casos para testes de preformance menos planejados, não tem tantos detalhes e funcionalidades como o Jmeter, mas é uma ferramenta que pode lhe ajudar para testes rápidos.

httperf : ferramenta de performance da HP, mas livre para a comunidade, focada em payload, mas não trata adequadament assets, não utilizei muito ela, mas está sendo muito comentada em alguns grupos de desenvolvedores.

yslow: ferramenta para analisar o desempenho da página web, analisando todos os componentes da página, incluindo os componentes criados dinamicamente usando JavaScript. Ele mede o desempenho da página e oferece sugestões de melhoria.

webpagetest:  WebPagetest é um projeto open source que é desenvolvido e mantido pela Google. É uma ferramenta que foi originalmente desenvolvido pela AOL para uso interno e era open-source em 2008 sob a licença BSD. A plataforma está em desenvolvimento ativo no GitHub e também é empacotado periodicamente e disponível para download para ser utilizado por qualquer pessoa que tenha interesse. Na sua essência, WebPagetest é usado para medir e analisar o desempenho de páginas web.

JMeter: A ferramenta mais comentada e uma das mais utilizadas pelos testers e QAs.
É uma aplicação desktop e é um software de código aberto, uma aplicação Java puro 100% projetado para load testes e medir o desempenho. Ele foi originalmente projetado para aplicações web.

BlazeMeter: É uma ferramenta que apoia a utilização do Jmeter para ser utilizado na Nuvem, fazendo com que tenhamos um teste de performance mais real e sem prejudicar o resultado por causa do equipamento do executor não suportar tanta demanda de envio dos testes.

Escalabilidade (AutoScaling)"A escalabilidade é a principal vantagem que uma solução de Cloud Computing oferece.  Ela permite que você tenha flexibilidade para escalar automaticamente os recursos de memória e processamento do seu servidor cloud de acordo com a demanda do seu site ou projeto,  sem a necessidade de reconfiguração, migração ou upgrade de plano."

Escalabilidade na prática com o Jelastic:

Load Balance: Balanceamento de carga consiste em uma técnica para distribuição de carga/requisição uniformemente entre dois ou mais servidores (compartilhado, dedicado ou  cloud)
Intuito pelo qual visa o aperfeiçoamento da utilização dos recursos, a maximização do desempenho, a diminuição do tempo de resposta e ainda evitar sobrecarga. Devido a redundância de múltiplos componentes a confiabilidade aumenta.

Video explicativo sobre Load Balance: http://www.youtube.com/watch?v=zHn2G71hoIk


Screen Shot 2014-09-29 at 9.19.41 AM.png
Load Balance

Vídeo do Marcel Duran: Twitter - BrasilJS - Performance as a Twitter Feature. Excelente vídeo da palestra do Marcel Duran e demonstra como é realizado alguns testes no Twitter, o Marcel fala sobre algumas técnicas para ajudar nos testes de performance da aplicação.


Por Gabriel Oliveira (gabriel.pa.oliveira@gmail.com)

Estatística: Para os apressados que querem uma boa leitura para não se envergonhar, fiquem com o clássico “Key Mathematic Principles for Performance Testers” da Microsoft (http://msdn.microsoft.com/en-us/library/bb924370.aspx). Para os que querem uma base mais sólida, tem um curso chamado “Data Analysis and Statistical Inference“ de grátis na internet (https://class.coursera.org/statistics-002). Muitíssimo obrigado à Ísis Binder pela dica!).

LoadRunner: a ferramenta mais famosa e bem paga do ramo foi criada pela Mercury e adquirida pela HP em 2006. Para quem quer um pouco de história e links oficiais, a wikipedia está de bom tamanho (http://en.wikipedia.org/wiki/HP_LoadRunner). Para quem quer dicas mais “quentes” sobre o funcionamento, tem uma série de vídeos-tutoriais antigos (a mesma arquitetura da ferramenta ainda é usada, fiquem tranquilos) feitos pelo guru99.com (https://www.youtube.com/watch?v=AicAqUC0K6Q&list=PLFB7DB42D42A7C31C) e outa série, com as novas features do Load Runner 11.0 (https://www.youtube.com/watch?v=cR8-3DRE2zo&list=PL92F119E42F79CEFC)

Comunicando resultados de Performance: novamente começaremos pelo clássico: “Performance Test Reporting Fundamentals” da Microsoft (http://msdn.microsoft.com/en-us/library/bb924371.aspx). Para os que gostam de apresentações, a Karen Johnson fez várias perguntas que te fazem refletir sobre teu processo de report (http://karennicolejohnson.com/wp-content/uploads/2009/02/knjohnson-_performance_test_analysis.pdf) e o Scott Barber conta um pouco do que ele faz em “Understanding and Creating Effective Performance Test Reports” (http://www.perftestplus.com/resources/perf_reporting_ppt.pdf).

Gatling: com mais uma incrível ajuda da Ísis, descobrimos que o Gatling é um projeto open-source de uma ferramenta para testes de carga na qual você escreve seus cenários numa DSL em Scala. Se você, como nós, não parou de ler ainda e se interessou bastante pelo conceito, saiba que tem uma página oficial (http://gatling.io/), um twitter (https://twitter.com/GatlingTool), um plugin pro Jenkins (https://wiki.jenkins-ci.org/display/JENKINS/Gatling+Plugin) e várias apresentações interessantes, inclusive na convenção Scala.IO (http://pt.slideshare.net/slandelle/gatling-scala-io-27568405). Mais interessante ainda são as comparações de performance dele com o JMeter, aqui (https://flood.io/blog/13-stress-testing-jmeter-and-gatling) e aqui (http://badmoodperf.blogspot.com.br/2014/01/gatling-vs-jmeter-fact-checking.html), mostrando que pode ser uma bela alternativa a famosa ferramenta gratuita.


Por Handrus Nogueira (handrus@gmail.com)

Simian Army: Framework para testar a resistência da aplicação a falhas no ambiente da amazon, derrubaando o EC2, S3 etc.

UDP: Protocolo de dados para dados pouco sensíveis, normalmente usado para streaming de vídeos, música… enfim conexões de baixa latência. Por no possuir verificação de IPs e limites de envio de arquivos  geralmente fácil explorar servidores que esquecem de configurar medidas de segurança para UDP.

RUM - Real User Monitoring: Só encontrei definições em inglês, então segue uma traduzida: é uma tecnologia de monitoramento passiva que grava toda interação do usuário com uma aplicação.

NewRelic: Um serviço que permite mensurar dados importantes do servidor, usuários e da aplicação para uma boa análise de performance.

Requisitos não funcionais: Existe um grave erro no artigo da wikipedia: “ficando a cargo do desenvolvedor optar por atender esses requisitos ou não” é no mínimo errôneo, muitos contratos trabalham com requisitos não funcionais de velocidade, confiabilidade etc. Leia o artigo para entender ;)


Para quem ainda não deu aquela curtida na nossa página no Facebook ou aquela seguida no nosso Twitter, seguem os principais meios de comunicação para acompanhar os eventos do GUTS-RS e trocar ideias sobre testes de software: