Testes de desempenho do WordPress através do uso de ferramentas de software livre Mauro Pichiliani ( [email_address] )
Apresentar e discutir algumas abordagens de software gerais para testes no WordPress Objetivo
Roteiro Preparação do ambiente Testes de usabilidade Teses de código Testes de banco de dados Testes de carga Conclusões e recomendações
Preparação do ambiente (1) Planejamento de testes: o quê, quando, onde, como, quem e porquê Montar ambiente adequado:  Homologação x Produção Local x Remoto Versão atual x Versão nova x Versão alternativa Alocar e configurar recursos Hardware, software, link, usuários, etc Avisar responsáveis (hosting, designers, programadores, etc) Tempo, paciência, custo x benefíco, $$$
Preparação do ambiente (2) Desenvolvimento no WP != Desenvolvimento ‘padrão’: Não há build Uso de plug-ins Conteúdo variado e postado pelo usuário Altíssima disponibilidade Pouca modelagem e programação Baixa reusabilidade Cenário de hosting Conclusão: metodologias formais de teste não se adequam muito bem AVISO: TESTES NÃO SUBSTITUEM VALIDAÇÃO E HOMOLOGAÇÃO!
Preparação do ambiente (3) Como começar? Definir bem objetivos Saber as métricas a serem utilizadas Montar pequena escala (Ex: MythBusters) Análise crítica (sucesso, falha, adequado, agradável, suficiente, necessário, etc) Faça um teste por vez! Teste várias ferramentas/serviços e escolha a mais adequada Avalie a modificação da ferramenta Artigos sobre criação de ambiente de desenvolvimento/testes: http://migre.me/1nicu   http://migre.me/1nicJ http://migre.me/1nide http://migre.me/1nidX Informações importantes sobre testes no WP: http://migre.me/1nieo
Testes de usabilidade (1) Se possível, envolver o usuário e realizar testes de acessibilidade: Teste automatizado de usabilidade: Selenium ( http://migre.me/1nieS ) Checagem de links, trackbacks, RSS e pingbacks:  Xenu ( http://migre.me/1nif9 ) LinkChecker ( http://migre.me/1nifm ) W3C Link Checker ( http://migre.me/1nifG ) Diversors web crawlers open source (  http://sf.net  e  http://www.codeprojetct.com ) Visualização em diversos browsers pela Web (screenshots e videos):  Browsershots ( http://migre.me/1nigr ) Spoon Browser SandBox ( http://migre.me/1nigI ) CrossBrowserTesting ( http://migre.me/1nihB ) IETester ( http://migre.me/1nihM ) Browsrcamp.com ( http://migre.me/1nihX ) Adobe BrowserLab ( http://migre.me/1nii9 ) iPhoneTester ( http://migre.me/1nijC ) e TestiPhone ( http://migre.me/1nijS ) Teste do Android com o SDK:  http://migre.me/1nik7 Recomendação: instalar SO+browser+emulador+SDK em ambiente virtual (VMWare, VirtualBox, Wine, Parallels, etc) para testar interação
Testes de usabilidade (2) HeatMap com opção trial: Clickdensity ( http://migre.me/1nilB ) Clicktale ( http://migre.me/1nilK ) Perl + Javascript+ imageMagick:  http://migre.me/1nimB Web Click Stream Analysis: Degaa.NET ( http://migre.me/1nimI ) MySQL + Log Apache + Beowulf:  http://migre.me/ibm/6V Outros projeto open source para análise de log: Apache2dot:  http://migre.me/1nioo Visitors:  http://migre.me/1nioz StatViz:  http://migre.me/1nioH Pathalizer:  http://migre.me/1nioU Web Utilization Miner (WUM):  http://migre.me/1nip2 phpOpenTracker:  http://migre.me/1nipp
Testes de usabilidade (3) Visualizando tráfego do site em tempo real: glTail ( http://migre.me/1nipF ), Logstalgia ( http://migre.me/1nipQ ) e Hummingbird ( http://migre.me/1niq0 ) Alternativas ao Google Analytics (não open source) Plugin WP: Google Analytics for WordPress:  http://migre.me/1niq8 Ommiture:  http://migre.me/1niqm   Yahoo! Web Analytics:  http://migre.me/1nir4 Overstat:  http://migre.me/1nire Woopra:  http://migre.me/1nirq Coremetrics:  http://migre.me/1nirA   ClickTale:  http://migre.me/1nirL Webtrends:  http://migre.me/1nisI Lyrics:  http://migre.me/1nisP FireClick:  http://migre.me/1nisT
Testes de código (1) WordPress = PHP + MYSQL Verificação do código PHP: Regras (Static Code Analysis)+duplicação de código: PMD ( http://migre.me/1nit4 ) Ferramenta de análise estática do código: PHP-Sat ( http://migre.me/1nitC ) Adequação à convenção de códigos: Spike PHPCheckstyle ( http://migre.me/1nitI ) Validação de padrões de código: CodeSnigger ( http://migre.me/1nitR ) Testes unitários com o PHP: PHPUnit ( http://migre.me/1niuc ) Verificador de testes de cobertura: PHP Test Coverage Tool ( http://migre.me/1nium ) e PHP Gcov ( http://migre.me/1niut ) Integração contínua: phpUnderControl ( http://migre.me/1niuH ) Artigo sobre técnicas de debug no PHP:  http://migre.me/ibm/6W
Testes de código (2) Auxílio na programação: Add-ons do Firefox:  PHP Developer Toolbar ( http://migre.me/1nivi ) PHP manual ( http://migre.me/1nivz ) WordPress Helper ( http://migre.me/1nivC ) IDE e debug do PHP onLine: Ideo.com ( http://migre.me/1nivJ ) Teste de expressões regulares:  http://migre.me/1nivR   e  http://migre.me/1nivU   e  http://migre.me/1niw2   Validador geral: Validador do W3C:  http://validator.w3.org/ Verificação contra SQL Injection e vulnerabilidades  no PHP+MySQL: Pixy ( http://migre.me/1niwj ) SQLPowerInjector:  ( http://migre.me/1niwl ) SQLMap ( http://migre.me/1niwp ) OWASP SQLiX Project ( http://migre.me/1niwt ) Pangolin ( http://migre.me/1niwy ) MySQLoit ( http://migre.me/1niwJ )
Testes de banco de dados (1) Modelo de dados do WordPress em 2D
Testes de banco de dados (2) ou em 3D Diva ( http://migre.me/1niwS ) e iFree3d ( http://migre.me/1niwW )
Testes de banco de dados (3) Meu artigo sobre modelo de dados do WordPress e assuntos relacionados:  http://migre.me/1nixm Ferramentas para testes e preenchimento do banco de dados do WP: MySQL Test Framework ( http://migre.me/1nixv )  Apache JMeter ( http://migre.me/1nixF ) Alguns dados de testes para o DB do WordPress ( http://migre.me/1nixK ) Geração de massa de teste: DBMonster ( http://migre.me/1nixX ) Web Site GenerateData.com ( http://migre.me/1niy8 ) Geração de logs do apache: GenLog ( http://migre.me/1niyf ) Teste de stress simples: mysql-stress-test ( http://migre.me/1niyE ) Distributed load testing tool: Tsung ( http://migre.me/1niyr ) Projeto LTP (Linux Test Projetct) + Suíte para testes em banco de dados:  http://migre.me/1niyN
Testes de carga (1) Muitas ferramentas para realizar o teste de carga. Muitas mesmo! Basicamente enviam requisições para o servidor+opções É preciso monitor o desempenho (mais ferramentas...) Artigo bom sobre testes de carga com o WP:  http://migre.me/1nkgc   Ferramentas prontas: AB - Apache http server benchmarking tool. ( http://migre.me/1nkgD  é uma ferramenta de linha de comando. Exemplo: “ab -n 100 -c 5  http://www.exemplo.com ” JMeter ( http://migre.me/1nkgM ) Testes simples com o Raw Load Tester ( http://migre.me/1nkgV ) Visualização com monitoração+webservice: IxoraRMS ( http://migre.me/1nkhd   Teste de stress em níveis de profundidade JCrawler ( http://migre.me/1nkhu ) Microsoft WCAT (Web Capacity Analysis Tool):  http://migre.me/1nkhF Ferramenta nativa do WP: XDebug  + mysqlnd ( http://migre.me/1nkhO ) Plug in do Wordpress para testes (requer XDebug):  http://migre.me/1nkhU
Testes de carga (2) Plataformas de testes: Plataforma para testes distribuídos Opensta ( http://migre.me/1nki6 ) Automação de testes+linguagem programação Watir ( http://migre.me/1nkic )  Gera classes de testes com requisição http  Fast Web Performance Test Tool ( http://migre.me/1nkit ) Configuração baseada em texto e protocolo HTTP: Apache Flood ( http://migre.me/1nkiH ) Plataforma em Java Grinder ( http://migre.me/1nkiT )
Conclusões e recomendações Planeje o que você vai testar Testes não resolvem problemas: no máximo comprovam a solução efetuada Monitoria ajuda muito a controlar ambiente e evitar testes específicos Escolha as ferramentas mais adequadas para o teste Ferramentas simples de linha de comando até plataformas e frameworks para testes distribuídos Testar não é luxo e precisa ser realizado para evitar situações desagradáveis (principalmente com o cliente…)

Testes de desempenho do WordPress através do uso de ferramentas de software livre

  • 1.
    Testes de desempenhodo WordPress através do uso de ferramentas de software livre Mauro Pichiliani ( [email_address] )
  • 2.
    Apresentar e discutiralgumas abordagens de software gerais para testes no WordPress Objetivo
  • 3.
    Roteiro Preparação doambiente Testes de usabilidade Teses de código Testes de banco de dados Testes de carga Conclusões e recomendações
  • 4.
    Preparação do ambiente(1) Planejamento de testes: o quê, quando, onde, como, quem e porquê Montar ambiente adequado: Homologação x Produção Local x Remoto Versão atual x Versão nova x Versão alternativa Alocar e configurar recursos Hardware, software, link, usuários, etc Avisar responsáveis (hosting, designers, programadores, etc) Tempo, paciência, custo x benefíco, $$$
  • 5.
    Preparação do ambiente(2) Desenvolvimento no WP != Desenvolvimento ‘padrão’: Não há build Uso de plug-ins Conteúdo variado e postado pelo usuário Altíssima disponibilidade Pouca modelagem e programação Baixa reusabilidade Cenário de hosting Conclusão: metodologias formais de teste não se adequam muito bem AVISO: TESTES NÃO SUBSTITUEM VALIDAÇÃO E HOMOLOGAÇÃO!
  • 6.
    Preparação do ambiente(3) Como começar? Definir bem objetivos Saber as métricas a serem utilizadas Montar pequena escala (Ex: MythBusters) Análise crítica (sucesso, falha, adequado, agradável, suficiente, necessário, etc) Faça um teste por vez! Teste várias ferramentas/serviços e escolha a mais adequada Avalie a modificação da ferramenta Artigos sobre criação de ambiente de desenvolvimento/testes: http://migre.me/1nicu http://migre.me/1nicJ http://migre.me/1nide http://migre.me/1nidX Informações importantes sobre testes no WP: http://migre.me/1nieo
  • 7.
    Testes de usabilidade(1) Se possível, envolver o usuário e realizar testes de acessibilidade: Teste automatizado de usabilidade: Selenium ( http://migre.me/1nieS ) Checagem de links, trackbacks, RSS e pingbacks: Xenu ( http://migre.me/1nif9 ) LinkChecker ( http://migre.me/1nifm ) W3C Link Checker ( http://migre.me/1nifG ) Diversors web crawlers open source ( http://sf.net e http://www.codeprojetct.com ) Visualização em diversos browsers pela Web (screenshots e videos): Browsershots ( http://migre.me/1nigr ) Spoon Browser SandBox ( http://migre.me/1nigI ) CrossBrowserTesting ( http://migre.me/1nihB ) IETester ( http://migre.me/1nihM ) Browsrcamp.com ( http://migre.me/1nihX ) Adobe BrowserLab ( http://migre.me/1nii9 ) iPhoneTester ( http://migre.me/1nijC ) e TestiPhone ( http://migre.me/1nijS ) Teste do Android com o SDK: http://migre.me/1nik7 Recomendação: instalar SO+browser+emulador+SDK em ambiente virtual (VMWare, VirtualBox, Wine, Parallels, etc) para testar interação
  • 8.
    Testes de usabilidade(2) HeatMap com opção trial: Clickdensity ( http://migre.me/1nilB ) Clicktale ( http://migre.me/1nilK ) Perl + Javascript+ imageMagick: http://migre.me/1nimB Web Click Stream Analysis: Degaa.NET ( http://migre.me/1nimI ) MySQL + Log Apache + Beowulf: http://migre.me/ibm/6V Outros projeto open source para análise de log: Apache2dot: http://migre.me/1nioo Visitors: http://migre.me/1nioz StatViz: http://migre.me/1nioH Pathalizer: http://migre.me/1nioU Web Utilization Miner (WUM): http://migre.me/1nip2 phpOpenTracker: http://migre.me/1nipp
  • 9.
    Testes de usabilidade(3) Visualizando tráfego do site em tempo real: glTail ( http://migre.me/1nipF ), Logstalgia ( http://migre.me/1nipQ ) e Hummingbird ( http://migre.me/1niq0 ) Alternativas ao Google Analytics (não open source) Plugin WP: Google Analytics for WordPress: http://migre.me/1niq8 Ommiture: http://migre.me/1niqm Yahoo! Web Analytics: http://migre.me/1nir4 Overstat: http://migre.me/1nire Woopra: http://migre.me/1nirq Coremetrics: http://migre.me/1nirA ClickTale: http://migre.me/1nirL Webtrends: http://migre.me/1nisI Lyrics: http://migre.me/1nisP FireClick: http://migre.me/1nisT
  • 10.
    Testes de código(1) WordPress = PHP + MYSQL Verificação do código PHP: Regras (Static Code Analysis)+duplicação de código: PMD ( http://migre.me/1nit4 ) Ferramenta de análise estática do código: PHP-Sat ( http://migre.me/1nitC ) Adequação à convenção de códigos: Spike PHPCheckstyle ( http://migre.me/1nitI ) Validação de padrões de código: CodeSnigger ( http://migre.me/1nitR ) Testes unitários com o PHP: PHPUnit ( http://migre.me/1niuc ) Verificador de testes de cobertura: PHP Test Coverage Tool ( http://migre.me/1nium ) e PHP Gcov ( http://migre.me/1niut ) Integração contínua: phpUnderControl ( http://migre.me/1niuH ) Artigo sobre técnicas de debug no PHP: http://migre.me/ibm/6W
  • 11.
    Testes de código(2) Auxílio na programação: Add-ons do Firefox: PHP Developer Toolbar ( http://migre.me/1nivi ) PHP manual ( http://migre.me/1nivz ) WordPress Helper ( http://migre.me/1nivC ) IDE e debug do PHP onLine: Ideo.com ( http://migre.me/1nivJ ) Teste de expressões regulares: http://migre.me/1nivR e http://migre.me/1nivU e http://migre.me/1niw2 Validador geral: Validador do W3C: http://validator.w3.org/ Verificação contra SQL Injection e vulnerabilidades no PHP+MySQL: Pixy ( http://migre.me/1niwj ) SQLPowerInjector: ( http://migre.me/1niwl ) SQLMap ( http://migre.me/1niwp ) OWASP SQLiX Project ( http://migre.me/1niwt ) Pangolin ( http://migre.me/1niwy ) MySQLoit ( http://migre.me/1niwJ )
  • 12.
    Testes de bancode dados (1) Modelo de dados do WordPress em 2D
  • 13.
    Testes de bancode dados (2) ou em 3D Diva ( http://migre.me/1niwS ) e iFree3d ( http://migre.me/1niwW )
  • 14.
    Testes de bancode dados (3) Meu artigo sobre modelo de dados do WordPress e assuntos relacionados: http://migre.me/1nixm Ferramentas para testes e preenchimento do banco de dados do WP: MySQL Test Framework ( http://migre.me/1nixv ) Apache JMeter ( http://migre.me/1nixF ) Alguns dados de testes para o DB do WordPress ( http://migre.me/1nixK ) Geração de massa de teste: DBMonster ( http://migre.me/1nixX ) Web Site GenerateData.com ( http://migre.me/1niy8 ) Geração de logs do apache: GenLog ( http://migre.me/1niyf ) Teste de stress simples: mysql-stress-test ( http://migre.me/1niyE ) Distributed load testing tool: Tsung ( http://migre.me/1niyr ) Projeto LTP (Linux Test Projetct) + Suíte para testes em banco de dados: http://migre.me/1niyN
  • 15.
    Testes de carga(1) Muitas ferramentas para realizar o teste de carga. Muitas mesmo! Basicamente enviam requisições para o servidor+opções É preciso monitor o desempenho (mais ferramentas...) Artigo bom sobre testes de carga com o WP: http://migre.me/1nkgc Ferramentas prontas: AB - Apache http server benchmarking tool. ( http://migre.me/1nkgD é uma ferramenta de linha de comando. Exemplo: “ab -n 100 -c 5 http://www.exemplo.com ” JMeter ( http://migre.me/1nkgM ) Testes simples com o Raw Load Tester ( http://migre.me/1nkgV ) Visualização com monitoração+webservice: IxoraRMS ( http://migre.me/1nkhd Teste de stress em níveis de profundidade JCrawler ( http://migre.me/1nkhu ) Microsoft WCAT (Web Capacity Analysis Tool): http://migre.me/1nkhF Ferramenta nativa do WP: XDebug + mysqlnd ( http://migre.me/1nkhO ) Plug in do Wordpress para testes (requer XDebug): http://migre.me/1nkhU
  • 16.
    Testes de carga(2) Plataformas de testes: Plataforma para testes distribuídos Opensta ( http://migre.me/1nki6 ) Automação de testes+linguagem programação Watir ( http://migre.me/1nkic ) Gera classes de testes com requisição http Fast Web Performance Test Tool ( http://migre.me/1nkit ) Configuração baseada em texto e protocolo HTTP: Apache Flood ( http://migre.me/1nkiH ) Plataforma em Java Grinder ( http://migre.me/1nkiT )
  • 17.
    Conclusões e recomendaçõesPlaneje o que você vai testar Testes não resolvem problemas: no máximo comprovam a solução efetuada Monitoria ajuda muito a controlar ambiente e evitar testes específicos Escolha as ferramentas mais adequadas para o teste Ferramentas simples de linha de comando até plataformas e frameworks para testes distribuídos Testar não é luxo e precisa ser realizado para evitar situações desagradáveis (principalmente com o cliente…)