BdB Recomenda – Ferramentas para analisar o desempenho do seu site

O BdB Recomenda de hoje é feito para os desenvolvedores web que se preocupam em saber se a parte operacional do seu site é satisfatória. Os problemas clássicos  do desenvolvimento de sites que se costumam enfrentar hoje são dois e podem se resumir em duas frases: “O site é lento” e “O site não funciona no navegador X”. Hoje iremos explorar a problemática de desempenho.

Foram escolhidas três ferramentas que são uma mão na roda para analisar “o porquê” da lentidão do seu site, e também, algumas delas sugerem algumas melhorias para os testes encontrados, podendo assim até auxiliar a equipe de desenvolvimento.

A primeira ferramenta é o Blame stella, no qual consiste em uma ferramenta gratuita com interface muito simples, onde o usuário insere a url desejada em um campo e após rodar o benchmark, ele reporta algumas informações como tempo de resposta, latência na rede do servidor, latência da aplicação, tempo do download dos assets do site e um adjetivo para transcrever o desempenho analisado, tais como “The Best”, “Poor”, “Not Best”, etc.

A grande vantagem dessa ferramenta é que ela fornece um relatório que pode ser compreendido por pessoas que não necessariamente são especialistas em desenvolvimento web. Uma outra opção que o serviço oferece é que você pode escolher monitorar seu site e descobrir se o seu servidor possui desempenho instável, por algum motivo. Entretanto se trata de um serviço pago, a partir de U$ 8,00/mês.

Se você é desenvolvedor e quer sugestões técnicas para melhorar o desempenho de seu código, a sugestão mais apropriada para você é o Yslow, criada pelo yahoo. A ferramenta que além de dar uma nota para cada teste rodado, ela também passa algumas sugestões para melhorar o desempenho do módulo que não passou no teste. As sugestões podem variar em configuração de dns, posicionamento de includes de javascript, minificação de arquivos e muito mais.

Por fim e não menos importante, temos o firebug que consiste numa extensão para o firefox que consegue analisar o tempo exato do carregamento dos assets do seu site, além de possibilitar também um debugging e a edição em tempo real do seus arquivos css, javascript ou html do seu site. Para quem precisa fazer experimentos mensuráveis e pontuais é a alternativa perfeita. Se você usa outros navegadores também existem algumas alternativas, as quais possuem uma proposta similar ao firebug, tal como Web Inspector para Safari, Google Chrome Inspector para o Chrome, Opera Dragonfly para o Opera e por incrível que pareça IE Developer Tools para o IE, vale a pena ver.

Se você conhece alguma ferramenta que você acha crucial para a análise de uma aplicação web e não foi abordada nesse post, comente abaixo, sua recomendação será muito bem-vinda.

Anúncios

Entendendo os testes de performance

Todos já enfrentamos diferentes problemas de performance ao acessar nossos serviços favoritos na web. Lentidão e até mesmo indisponibilidade por longos períodos são problemas que ainda afetam a maioria das aplicações web.

Desse modo, podemos apontar que a Performance é um requisito não-funcional CHAVE para as aplicações web. E menosprezá-la pode causar grandes consequências.

Podemos definir os testes de performance, como:

Através dos testes de performance podemos simular o ambiente de produção, que a aplicação será submetida e avaliar como a mesma irá se comportar.

Lembrando que….

…de forma, que através da correta execução dos testes de performance, em conjunto com um monitoramento eficiente, podemos submeter diversos pontos da aplicação aos níveis de carga esperados e avaliar o seu comportamento.

No contexto das aplicações web: “Se um usuário tem de esperar muito (para acesso, processamento do lado do servidor, para formatação ou exibição do lado do cliente), ele ou ela pode decidir ir para outro lugar.” (Pressman, 2005)

Logo, desprezar esse requisito não-funcional pode gerar perdas irrecuperáveis para um negócio.

Do ponto de vista conceitual, fala-se sempre em três tipos de teste:

Performance: Avalia se a aplicação em teste atinge os requisitos em relação a questões como: tempo de resposta, throughput e utilização sob um nível de carga esperado.

Carga: Submete a aplicação a diferentes níveis de carga, com o objetivo de identificar a capacidade máxima de operação, além de gargalos, memory leaks, etc…

Stress: Avalia a robustez, disponibilidade e confiabilidade da aplicação em condições extremas (cargas muito elevadas, escassez de recursos)

Os três são comumente confundidos, porém como descrito cada um tem sem objetivo específico e a correta utilização dos mesmos durante o desenvolvimento poderá proporcionar um nível completo de informações sobre o comportamento da aplicação.

Por fim, é importante enfatizarmos que: “Caso não sejam executados da maneira correta, os resultados são, na melhor das hipóteses, inúteis e, na pior das hipóteses, enganosos, fazendo com que uma empresa menospreze ou superestime a capacidade de sua aplicação.” (Savoia, 2000)

Logo, é fundamental que, desde o início do ciclo de vida da aplicação, o RNF relacionado a performance seja priorizado, para que todo um ambiente de testes seja preparado de maneira adequada para simular o ambiente de produção e desse modo auxiliar o desenvolvimento a atingir o nível de qualidade desejado.

Gostou do assunto testes de performance? Participe, deixando seu comentário no post.

Em breve, voltaremos ao assunto falando do Apache JMeter.

E não esqueça de nos seguir no Twitter e juntar-se a nós no Facebook para ser informado das novas atualizações do blog!