Documente Academic
Documente Profesional
Documente Cultură
Cristiano Caetano
1
Prefcio ...................................................................................................5 Agradecimentos .......................................................................................7 Introduo...............................................................................................8 Proposta deste livro................................................................................ 11 Consideraes iniciais ............................................................................. 12 Captulo 1 Gesto de defeitos ............................................................... 14 Mantis................................................................................................ 15 Instalando e configurando ................................................................ 16 Criando um novo projeto.................................................................. 17 Registrando e modificando um bug ................................................... 19 Meus Bugs ...................................................................................... 22 Sumrio dos bugs ............................................................................ 23 News .............................................................................................. 24 Change Log..................................................................................... 25 Documentao do projeto ................................................................ 25 Configurao do Mantis .................................................................... 26 Captulo 2 Gesto de testes .................................................................. 27 TestLink ............................................................................................. 28 Instalando e configurando ................................................................ 29 Criando um novo projeto.................................................................. 30 Adicionando requisitos ..................................................................... 31 Adicionando test cases ..................................................................... 34 Associando test cases aos requisitos.................................................. 38 Associando keywords aos test cases.................................................. 39 Criando test suites ........................................................................... 41 Associando nveis de prioridade a test suite ....................................... 44 Associando usurios ao test suite ...................................................... 44 Criando builds e milestones .............................................................. 45 Executando os Test Cases ................................................................ 46 Captulo 3 Gesto de projetos ............................................................... 49 php-collab .......................................................................................... 50 Instalando e configurando ................................................................ 51 Criando um novo projeto.................................................................. 52 Adicionando tarefas ......................................................................... 55 Visualizando o calendrio do projeto ................................................. 56 Listas de discusses ......................................................................... 57 Adicionando arquivos ao projeto ....................................................... 59 Bookmarks compartilhados ............................................................... 61 Adicionando clientes ........................................................................ 62 Requisies de suporte..................................................................... 65 Relatrios........................................................................................ 66 Captulo 4 Automao de testes funcionais e de aceitao....................... 67 Selenium ............................................................................................ 68 Selenium Core ................................................................................. 69
Selenium IDE .................................................................................. 73 Selenium RC (Remote Control).......................................................... 78 Marathon ........................................................................................... 83 Criando um novo projeto.................................................................. 84 Criando um script de teste................................................................ 87 Criando um mdulo reutilizvel ......................................................... 90 Executando os scripts de teste por meio do JUnit ............................... 92 Criando uma fixture ......................................................................... 93 SoapUI............................................................................................... 95 Criando um novo projeto.................................................................. 96 Criando um test case ..................................................................... 100 Criando asseres.......................................................................... 102 Depurando os Test Cases ............................................................... 104 Adicionando novos Test Steps ao Test Case ..................................... 105 Criando testes de desempenho e stress ........................................... 107 Captulo 5 Automao de testes de performance .................................. 109 JMeter ............................................................................................. 110 Configurando um test plan ............................................................. 111 Adicionando e configurando um thread group .................................. 112 Gravando um teste por meio de um HTTP Proxy .............................. 114 Adicionando asseres ................................................................... 117 Adicionando um timer .................................................................... 120 Adicionando listeners (relatrios) .................................................... 121 Executando e visualizando os resultados.......................................... 123 Monitorando a performance do servidor........................................... 126 Microsoft WEB Application Stress........................................................ 131 Gravando um teste por meio de um HTTP Proxy .............................. 132 Executando e visualizando os resultados.......................................... 136 Configurando o comportamento dos testes ...................................... 138 Configurando Page Groups ............................................................. 139 Configurando usurios para autenticao......................................... 141 Captulo 6 Controle de verses............................................................ 142 CVS ................................................................................................. 143 TortoiseCVS .................................................................................. 146 Repositrio.................................................................................... 147 Importao ................................................................................... 147 Retirada dos arquivos do repositrio................................................ 151 Modificando os arquivos ................................................................. 152 Inspecionando as modificaes ao longo do tempo........................... 154 Configurando o TortoiseCVS ........................................................... 155 Captulo 7 Ferramentas de apoio......................................................... 156 Tail for Win32................................................................................... 157 HeavyLoad ....................................................................................... 158 Process Explorer ............................................................................... 159
VMWARE .......................................................................................... 160 Microsoft Pairwise Independent Combinatorial Testing ......................... 161 Burp Suite ........................................................................................ 162 Camstudio ........................................................................................ 163 MWSnap .......................................................................................... 164 WinMerge......................................................................................... 165 Data Generator ................................................................................. 166 Firebug ............................................................................................ 167 Consideraes Finais ............................................................................ 168 Ferramentas similares no apresentadas neste livro............................. 168 Repositrios de ferramentas Open Source ........................................... 172 Alternativas comerciais ...................................................................... 174 Referncias sobre teste de software ................................................... 178 Sobre o autor ................................................................................... 179 Bibliografia Recomendada ..................................................................... 180 Bibliografia .......................................................................................... 182 ndice Remissivo .................................................................................. 183
Prefcio
Caro Leitor, O grande escritor e poeta Carlos Drummond de Andrade disse uma vez que todas as vezes que se abre uma livraria deveramos comemorar com festa, tal qual o nascimento de uma criana. Da mesma forma que quando nasce um livro, seja por qual mdia ou formato que ele venha, deveramos comemorar com festa e grande orgulho. Um livro representa uma expresso viva de um conjunto de conhecimentos que se acumularam e que foi compartilhado. Este conhecimento pode ser um conto, uma histria, um conhecimento tcnico, ou at mesmo um pouco de sabedoria que todos ns aprendemos diariamente. Este livro um reflexo da experincia profissional madura em Teste e Qualidade de Software vivida pelo autor, meu amigo Cristiano Caetano. Quando vemos os altos custos do processo de desenvolvimento subindo cada vez mais e se exigindo nveis de excelncia cada vez maiores, percebe-se que a necessidade em se conhecer ferramentas que tenham custo zero se tornou uma exigncia. A maioria das empresas usa, ou vo usar ainda, alguma ferramenta Open Source ou Gratuita. O Linux um exemplo real disto e tem tomado cada vez mais espao. Muitas grandes empresas tm aberto o cdigo de seus produtos e optado por ter lucro atravs da venda de servio associado ferramenta, ao invs de "ganhar" puramente com a venda da ferramenta. um modelo novo de negcio. uma nova viso. algo que veio pra ficar. Voc pode at no gostar e evitar. Pode desconfiar, mas impossvel negar o que est a. uma nova transformao. Concluso: Transforme-se ou voc ser transformado. Ser transformado em um profissional que se "esqueceu" de se atualizar. Infelizmente, no mercado de trabalho, quem se esquece tornase um esquecido. Leve este livro para todos os lados e no tenha medo de perguntar ao Cristiano, ou de pesquisar nas referncias citadas no livro. Este livro , em essncia, uma ferramenta de apoio para quem deseja usar solues em Automao e Gerenciamento de Testes de Software. Quando o Cristiano me convidou em um primeiro instante para prefaciar o seu livro, relutei um pouco, talvez porque queria entender a "alma" do livro. Afinal sou escritor, e cada livro para mim como um filho. Aceitei, e me orgulho do convite aceito, porque percebi a essncia central deste livro: compartilhar com convico honesta uma grande experincia na rea de Testes e Qualidade de Software. Repito: compartilhar. Disseminar. Dividir. No
caso aqui: dividir para conquistar a sua transformao no modo de ver como as solues Open Source podem ser teis no seu trabalho. Este livro como um afilhado para mim, e como "padrinho" dei sugestes que foram aproveitadas de modo a aproximar voc, caro Leitor, fazendo-o sentir-se em casa. Devido a limitaes de tamanho do livro e por algumas questes de inviabilidade tcnica no foi possvel colocar "tudo de tudo" no que se refere a automao de testes. A cada dia surgem novas solues, e algumas amadurecem como o caso do Testlink, usado mundialmente e suportado por um grupo forte de usurios, e outras tantas acabam no vingando. Por isso o Cristiano colocou as que ele considerou mais usadas ou mais maduras. Mas lembre-se: a nica certeza a mudana. Por mais que o livro seja tambm uma "foto", este tambm uma ferramenta madura e extremamente til, tendo um pouco de tudo tal qual um "canivete suo". Essa a proposta do Cristiano. Simples, prtica e multiuso. O livro se divide em grandes reas que vo ajud-lo a tirar o mximo de proveito do conhecimento aqui colocado. Por exemplo, se voc no desejar ler o livro de forma seqencial, pode faz-lo indo direto no conhecimento que voc precisa. O livro tanto servir como livro base como livro de referncia. Muitos tm medo de compartilhar conhecimento, mas o Cristiano Caetano no teve medo de compartilhar o conhecimento aqui colocado, da mesma forma que no tive medo em escrever de forma transparente aqui. O maior conhecimento e aquele que dividido e de preferncia no menor espao de tempo. O futuro ainda no foi escrito, e cada um escreve o seu. Este livro uma ferramenta para lhe ajudar a escrever de forma positiva o seu futuro na rea de Automao de Testes de Software. Caro Leitor, acredite em voc e no tenha medo. Boa leitura.
Leonardo Molinari Consultor de Qualidade de Software, Palestrante e Autor de diversos livros como "Testes de Software", "BTO - Otimizao da Tecnologia do Negcio", "Gesto de Projetos" e "Gerncia de Configurao". E-mail: lm7k@yahoo.com.br Blog: http://diariodaqualidade.blogspot.com/ site: http://br.geocities.com/lm7k/testes.html
Agradecimentos
Eu gostaria de agradecer todas as pessoas que direta ou indiretamente contriburam para a realizao desta obra. Estou muito grato pelas crticas, conselhos e sugestes dos revisores: Leonardo Molinari, Renan Sucupira, Daniel Cunha, Jos Papo, Cristiane Machado e Sagiane Dvila. Um obrigado especial para os meus gestores na HP Invent. O apoio, compreenso e aquele empurrozinho especial na hora certa foram essenciais para a finalizao desta obra e de outras realizaes na minha vida pessoal. Sem vocs, esse livro no seria possvel: obrigado.
Introduo
"If you don't have the right equipment for the job, you just have to make it yourself" MacGyver
em que o teste estiver rodando, sintonize aproximadamente na estao 975 AM e voc poder literalmente escutar o zumbido do processador funcionando. Essa tcnica bastante interessante para voc descobrir se o processador est realmente realizando algum processamento durante algum teste ou se nada est acontecendo. O cenrio descrito no pargrafo anterior, apesar de representar uma situao extrema, um timo exemplo de um testador altamente eficaz em ao. medida que se queira executar os testes com maior eficincia, torna-se necessrio estar familiarizado com a maior gama de ferramentas que possam vir a ajudar a execuo dos testes, simular um componente de hardware ou software que no estiver disponvel, observar o trfego da rede, entre outros cenrios. As situaes so ilimitadas, tudo depende do tipo de aplicao que estiver sendo testada
O trecho apresentado acima parte de um dos meus artigos mais conhecidos: Os 7 hbitos dos Testadores Altamente Eficazes1; e o fio condutor deste livro. Aps a publicao do artigo Os 7 hbitos dos Testadores Altamente Eficazes a idia de criar um novo artigo apresentando quais eram as ferramentas que os testadores altamente eficazes normalmente usam ficou martelando na minha cabea por semanas. Eu acabei me envolvendo com outros temas e escrevendo outros artigos at o dia em que eu comecei a ler o Guide to the CSTE Common Body of Knowledge do QAI. Em certo ponto do livro desta certificao de teste de software abordado o tema Utilizao de ferramentas. O livro afirma que apesar de no existir uma categorizao amplamente difundida das ferramentas de teste, a experincia tem mostrado elas so normalmente agrupadas em 8 reas distintas: 1. 2. 3. 4. 5. 6. 7. 8.
1
de automao de testes de regresso; para gesto de defeitos; para testes de Performance/Estresse; manuais; de rastreabilidade; de cobertura de cdigo; para gesto de testes; de apoio execuo dos testes;
http://www.linhadecodigo.com.br/artigos.asp?id_ac=1083
Naquele momento, entre riscos e rabiscos numa folha em branco o artigo ganhou forma. Uma das premissas bsicas originais era de que somente ferramentas Open Source2 e gratuitas fariam parte do escopo. Entretanto, o escopo sofreu muitas modificaes ao longo da sua histria. O artigo que iria abordar apenas ferramentas utilizadas por testadores altamente eficazes, acabou abraando ferramentas das reas sugeridas pelo Guide to the CSTE Common Body of Knowledge, tais como ferramentas para gesto de defeitos, gesto de testes, automao de testes de regresso e assim por diante. Assim que finalizei o primeiro rascunho do MindMap contendo as reas e ferramentas que seriam abordadas no artigo, ficou muito claro que no daria para apresentar tudo o que eu queria apenas num artigo; ficaria exageradamente superficial. Ento surgiu a idia do livro. Aps uma pequena pesquisa, cheguei a concluso de que o escopo deveria ser reduzido a fim de evitar que o livro levasse muito tempo para ser escrito e ficasse muito desatualizado (as ferramentas Open Source evoluem numa velocidade fantstica). Dessa forma eu tinha um escopo e um deadline definidos. As primeiras pginas deste livro foram escritas em dezembro de 2006 e, entre semanas extremamente produtivas e semanas sem nenhuma pgina escrita, as ltimas pginas foram finalizadas em julho de 2007 (a ltima linha sendo escrita no ltimo dia, mas dentro do prazo previsto). Mas no pensem que foi fcil. Como voc poder notar mais adiante no captulo Ferramentas similares no apresentadas neste livro, o escopo original era bastante extenso e interessante. Foi duro ter que remover o Bugzilla, o XPlanner, o WEBLoad, entre outros do escopo. De qualquer forma, o escopo teve que ser redefinido tendo em mente as ferramentas realmente essenciais; outro ponto que pesou muito foi a facilidade de uso e o tamanho das comunidades apoiando e suportando estas ferramentas. Ferramentas com grandes comunidades e liberaes freqentes foram privilegiadas em relao s outras. De qualquer forma, tive o cuidado de manter as ferramentas do escopo original para que o leitor possa explorar as outras alternativas no apresentadas neste livro. Considere isso, um atalho onde o joio j foi separado do trigo para voc. No entanto, por mais abrangente que sejam as categorias e ferramentas apresentadas neste livro, seria ingnuo pensar que ele ofereceria solues que atendessem a necessidade de todos os leitores. Pensando neste cenrio, fiz uma pesquisa extensa cujo resultado uma lista detalhada com os maiores e melhores repositrios de ferramentas Open Source do mundo, a
2
http://en.wikipedia.org/wiki/Open_source
fim de permitir que voc leitor, possa escolher a soluo que atenda a sua necessidade. E para voc, que estava prestes a perguntar sobre as ferramentas comerciais. Sim, elas esto listadas no captulo Alternativas comerciais. Para cada categoria apresentada neste livro, foram listadas algumas das solues comerciais existentes. No foram esgotadas as opes, mas j um bom ponto de partida. Ah, e para leitor que quiser aprender ou aprimorar os seus conhecimentos em teste de software, o captulo Referncias sobre teste de software apresenta uma listagem dos livros nacionais mais importantes da atualidade sobre esse tema. Este livro foi escrito com muito cuidado e fundamentado na experincia e na pesquisa realizada pelo autor. No entanto, podem existir erros, inconsistncias ou omisses que no foram percebidas durante as revises. Sinta-se vontade para entrar em contato com o autor para que as devidas correes sejam realizadas. Boa leitura, Cristiano Caetano c_caetano@hotmail.com http://softwarequality.spaces.live.com/
10
11
Consideraes iniciais
Desenvolver software de qualidade no mais um requinte para poucos, transformou-se num fator de competitividade num mercado cada vez mais exigente. O filsofo Nietzsche, no sculo passado, alertava: "Com o aumento da competio, a qualidade se torna mera propaganda. Vence aquele que melhor engana". Essa receita muito simples e fcil de seguir, todavia, quem tomar esse tipo de postura estar fadado ao fracasso. Nos dias de hoje, a qualidade tornouse requisito imprescindvel para garantir a sobrevida de um software no mercado. Podemos concluir que as empresas mais competitivas so as empresas que trabalham sob a tica da melhoria contnua dos processos para aumentar a qualidade do processo de desenvolvimento e, conseqentemente, aumentar a qualidade do produto final. Neste contexto, devemos destacar adoo crescente de ferramentas para dar suporte ao processo de melhoria contnua. Estas ferramentas servem para dar suporte a todas as atividades relacionadas ao ciclo de vida de desenvolvimento de software: da concepo implantao. Como mencionamos anteriormente, a proposta deste livro apresentar as ferramentas Open Source e gratuitas essenciais para a gesto e automao de testes de software. Dessa forma, a figura abaixo apresenta a relevncia de cada tipo de ferramenta apresentada neste livro em relao s fases de um ciclo de vida de desenvolvimento de software:
12
Neste livro sero apresentadas e sugeridas diversas ferramentas Open Source e gratuitas. Para o autor, considerado Open Source Software 3 (OSS) todo e qualquer software que permita simultaneamente: A sua utilizao para qualquer fim e sem restries; A distribuio de cpias sem restries; O acesso ao seu cdigo fonte e o estudo do seu funcionamento; A sua adaptao s necessidades de cada um; A possibilidade de disponibilizar a terceiros quaisquer alteraes introduzidas; Est fora do escopo deste livro, comparar e debater as vantagens da utilizao de ferramentas Open Source em relao a ferramentas comerciais4. No entanto, devemos destacar que a principal vantagem na adoo de ferramentas Open Source a economia na aquisio de licenas, uma vez que estas ferramentas so distribudas gratuitamente. Por outro lado, existe o custo de formao, suporte e manuteno. Neste caso, cada organizao deve utilizar os seus prprios critrios para calcular o ROI (Return of Investment) e o TCO (Total Cost of Ownership) na ocasio da adoo de uma ferramenta Open Source.
3 4
http://www.opensource.org/ http://cio.uol.com.br/estrategias/2005/08/22/idgnoticia.2005-08-22.4315880495
13
Na tabela abaixo voc poder ver a ferramenta que ser apresentada nas prximas sees: Mantis
http://www.mantisbt.org/
14
Mantis
O Mantis5 uma ferramenta Open Source cujo principal objetivo registrar e acompanhar os bugs encontrados em um projeto, desde o seu nascimento at o seu fechamento. Neste cenrio, o ciclo de vida gerenciado pelo Mantis inicia-se quando um bug registrado; as fases seguintes so empregadas para a confirmao, correo, reviso e o fechamento do bug. Cada bug recebe um nmero seqencial nico a fim de identific-lo durante as operaes de consulta, relatrios e modificaes. Por outro lado, diversas informaes so agregadas ao bug durante as fases que compem o seu ciclo de vida, como por exemplo, status, prioridade, severidade, comentrios, anexos, etc. Entre as diversas funcionalidades oferecidas pelo Mantis, devemos destacar as seguintes: Pode ser executado em qualquer plataforma que suportar PHP/Apache (Windows, Linux, Mac, Solaris, AS400/i5, etc); Suporta vrios bancos de dados (MySQL, MS SQL, PostgreSQL); Suporta mltiplos mecanismos de autenticao (Interna, LDAP, HTTP Basic, Active Directory); Traduzido em 68 lnguas diferentes (incluindo "portuguese_brazil"); Criao ilimitada de projetos e relatos de defeitos; Controle de acesso e nveis de permisses para os usurios; Ciclo de vida dos defeitos (worflow) personalizvel; Gerador interno de relatrios e grficos (possibilidade para exportar os dados nos formatos CSV, Excel e Word); Mecanismo para a criao de campos personalizveis (custom fields); Notificaes por email automticas ou por meio de RSS Feeds; Integrao com ferramentas de controle de verses (Subversion e CVS); Interface Webservice (SOAP) para integrao com outras ferramentas; MantisWAP Suporte a dispositivos mveis (funcionalidade paga);
15
Instalando e configurando
Para instalar o Mantis, voc dever seguir os seguintes passos (a ttulo de exemplo estamos sugerindo a utilizao do XAMMP a fim de satisfazer os softwares requeridos para a utilizao do Mantis (Apache, MySQL, PHP)). 1. Faa o download do XAMMP6. 2. Instale e inicialize o XAMMP conforme a orientao do manual ou descompacte o arquivo zip em alguma pasta no seu computador. 3. Aps instalado, configure um password para o usurio root do Mysql usando um dos mtodos sugeridos no site do XAMMP7. 4. Faa o download do Mantis. 5. Descompacte o arquivo zip na pasta htdocs do XAMMP (ex: c:\xamppwin32-1.6.2\xampp\htdocs\mantis_1.0.5). 6. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/mantis_1.0.5/). 7. Na janela Pre-Installation Check, preencha os campos username com 'root' e o campo password com a senha configurada no passo 3. 8. Deixe os valores default nos demais campos. 9. Pressione o boto Install/Upgrade Database. 10. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/mantis_1.0.5/login_page.php). 11. Faa o login com o usurio padro (administrator/root). Lembre-se de mudar a senha deste usurio. Caso voc prefira utilizar esta ferramenta com todos os textos traduzidos para a lngua portuguesa, ento siga os passos descritos abaixo: 1. Faa o login normalmente com o seu usurio e senha. 2. Clique no menu My Account e ento selecione a Preferences. 3. No campo Language selecione a opo "portuguese_brazil". 4. Pressione o boto "Update Prefs". opo
6 7
http://www.apachefriends.org/en/xampp.html http://www.apachefriends.org/pt_br/faq-xampp-windows.html
16
Nesta pgina voc poder fornecer diversas informaes sobre o projeto, como por exemplo: o Nome do projeto, Status, Descrio do projeto entre outras informaes. Uma vez que o projeto for cadastrado, voc poder selecion-lo na lista de projetos existentes e inserir informaes adicionais, tais como: SubProjetos, Categorias, Verses, Campos Personalizados,
17
18
Se for necessrio voc poder ver a lista dos bugs existentes. Para tal tarefa, voc dever clicar no menu View Issues. A pgina Viewing Issues dever ser exibida, como pode ser visto na Figura 4. Esta pgina, por default, lista todos os bugs abertos. No entanto, voc poder configurar filtros especficos
19
conforme a sua necessidade com base nos campos de filtragem exibidos na parte superior desta pgina. O Mantis tambm permite que voc salve o filtro para posterior utilizao.
importante ressaltar que os bugs listados so apresentados em diferentes cores. Cada cor significa o status do bug conforme a legenda apresentada na parte inferior desta pgina (Figura 4) Voc poder clicar sobre qualquer bug da lista a fim de abrir a pgina Viewing Issue e modificar qualquer informao relacionada ao bug, como pode se visto no exemplo apresentado na Figura 5.
20
Uma vez dentro desta pgina, alm de modificar as informaes do bug, voc poder criar uma associao de relacionamento com outros bugs (relacionado a, filho de, pai de, etc) e tambm poder selecionar a opo para monitorar o bug e receber um e-mail sempre que alguma informao for modificada.
21
Meus Bugs
O Mantis oferece uma pgina onde voc poder visualizar de forma resumida e consolidada todos os bugs. Para visualizar esta pgina, voc dever clicar no menu My View. Basicamente, esta pgina exibe os bugs registrados, atribudos e monitorados por voc. Alm dessas informaes, voc poder tambm visualizar os bugs recentemente modificados, bugs que no foram atribudos e assim por diante, como pode visto no exemplo apresentado na Figura 6. De qualquer maneira, caso seja necessrio, voc poder modificar os filtros default usados para exibir as informaes nesta pgina por meio do link [^] existente em cada seo.
22
23
News
O Mantis tambm oferece uma funcionalidade para a divulgao de notcias News. Por meio desta funcionalidade, voc poder registrar qualquer novidade ou aviso aos demais usurios do Mantis. Para tal tarefa, voc dever clicar no menu News. A pgina Add News dever ser exibida, como pode ser visto na Figura 8. A notcia registrada poder ser vista na pgina principal do Mantis.
24
Change Log
Por meio do Change Log, voc poder ver todas as correes associadas a um determinado release (verso). Para visualizar o Change Log, voc dever clicar no menu Change Log, como pode ser visto no exemplo apresentado na Figura 9.
Documentao do projeto
Outra funcionalidade interessante a possibilidade de adicionar a documentao do projeto no Mantis. Para realizar tal tarefa, voc dever clicar no menu Docs e fazer o upload dos documentos, como pode ser visto no exemplo apresentado na Figura 10.
25
Configurao do Mantis
O Mantis oferece uma srie de pginas de configuraes que voc poder utilizar para realizar customizaes a fim de atender as suas necessidades. Para tal tarefa, voc dever clicar no menu Manage. Basicamente, esta pgina exibe as diversas reas que voc poder realizar algum tipo de customizao tais como: criao de campos personalizados, gesto de usurios, configurao de workflows, notificao por email, entre outros (como pode ser observado no exemplo apresentado na Figura 11).
26
Na tabela abaixo voc poder ver a ferramenta que ser apresentada nas prximas sees: TestLink
http://www.teamst.org/
27
TestLink
O TestLink8 uma aplicao Open Source cujo principal objetivo gerenciar as atividades de testes de um projeto. Por meio do TestLink voc poder criar Test Cases e organiz-los em Test Suites. Voc tambm poder associar um conjunto de Test Cases a um testador e acompanhar os resultados da execuo dos testes, assim como, gerar relatrios com diversas mtricas para o acompanhamento da execuo dos testes. O TestLink oferece um recurso para que voc possa registrar e organizar os requisitos do projeto, assim como, associar os Test Cases aos requisitos. Dessa forma, voc poder garantir o rastreamento entre os requisitos e os Test Cases por meio de uma matriz de rastreabilidade. Adicionalmente, o TestLink permite a integrao com Mantis. Por meio dessa integrao, quando um Test Case falhar, voc conseguir associar os bugs cadastrados no Mantis a este Test Case. Entre as diversas funcionalidades oferecidas pelo TestLink, devemos destacar as seguintes: Pode ser executado em qualquer plataforma que suportar PHP/Apache/Mysql (Windows, Linux, Mac, Solaris, AS400/i5, etc); Traduzido em vrias lnguas diferentes (incluindo "Brazil Portuguese"); Controle de acesso e nveis de permisses por papis (Lder, Testador, etc); Os casos de testes so organizados hierarquicamente em sutes; Os casos de testes podem ser classificados por palavras-chave "keyword" para facilitar a pesquisa e organizao; Criao ilimitada de projetos e casos de testes; Os ciclos de testes podem ser priorizados e atribudos aos testadores; Gerador interno de relatrios e grficos (possibilidade para exportar os dados nos formatos CSV, Excel e Word); Integrao com ferramentas de gesto de defeitos (Bugzilla, Mantis, Jira);
28
Instalando e configurando
Para instalar o TestLink, voc dever seguir os seguintes passos (a ttulo de exemplo estamos sugerindo a utilizao do XAMMP a fim de satisfazer os softwares requeridos para a utilizao do TestLink (Apache, MySQL, PHP)). 1. Faa o download do XAMMP9. 2. Instale e inicialize o XAMMP conforme a orientao do manual ou descompacte o arquivo zip em alguma pasta no seu computador. 3. Aps instalado, configure um password para o usurio root do Mysql usando um dos mtodos sugeridos no site do XAMMP10. 4. Faa o download do TestLink. 5. Descompacte o arquivo zip na pasta htdocs do XAMMP (ex: c:\xamppwin32-1.6.2\xampp\htdocs\testlink-1.6.2). 6. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/ testlink-1.6.2/install/index.php). 7. Na janela de instalao, selecione a opo New installation. 8. Na janela TestLink Setup, preencha os campos login com 'root' e o campo password com a senha configurada no passo 3. 9. Deixe os valores default nos demais campos. 10. Pressione o boto Setup TestLink. 11. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/testlink-1.6.2/login.php). 12. Faa o login com o usurio padro (admin/admin). Lembre-se de mudar a senha deste usurio. Caso voc prefira utilizar esta ferramenta com todos os textos traduzidos para a lngua portuguesa, ento siga os passos descritos abaixo: 1. 2. 3. 4. Faa o login normalmente com o seu usurio e senha. Clique no menu Personal. No campo Locale selecione a opo "Portuguese (Brazil)". Pressione o Boto "Update".
10
http://www.apachefriends.org/en/xampp.html http://www.apachefriends.org/pt_br/faq-xampp-windows.html
29
importante ressaltar que durante a criao do projeto, voc poder desabilitar o recurso de gerenciamento de requisitos oferecido pelo TestLink, caso voc utilize alguma outra ferramenta para este fim. Alm disso, voc poder associar uma cor ao projeto criado. Dessa forma, o fundo das pginas sempre sero da mesma cor que foi associada ao projeto neste passo.
30
Adicionando requisitos
Assim que o projeto for criado, o prximo passo a criao dos requisitos (caso voc tenha habilitado o recurso de gerenciamento de requisitos). Primeiro, voc dever adicionar uma Especificao de Requisito. Para realizar tal tarefa, v para a seo Requirements e ento clique no menu Requirement Specification. A pgina Requirement Specification dever ser exibida, conforme o exemplo apresentado na Figura 13. importante ressaltar que segundo a organizao do TestLink, cada requisito deve ser associado a uma Especificao de Requisito, que representa a grosso modo um agrupador de requisitos semelhantes (algo como uma sute ou seo de requisitos), como pode ser visto no modelo apresentado na Figura 14.
31
To logo a Especificao de Requisito seja criada, voc dever clicar sobre ela. A pgina Edit Requirement Specification dever ser exibida, conforme o exemplo apresentado na Figura 15.
32
Nesta pgina voc poder importar os requisitos por meio de um arquivo externo (*.CSV) ou adicionar o requisito manualmente. Observe ainda que, nesta pgina voc poder tambm visualizar a lista de requisitos existentes, assim como, gerar um relatrio (por meio do boto Analyze) que demonstra um sumrio dos requisitos cobertos e os no cobertos por testes. Para adicionar um requisito manualmente, voc dever clicar no boto Create New REQ. A pgina Create a new Requirement dever ser exibida, conforme o exemplo apresentado na Figura 16. Convm lembrar, alis, que durante a criao do requisito, voc poder identificar no campo Status se o requisito testvel ou no.
33
De forma similar aos requisitos, a Especificao de Teste dever obedecer a uma organizao hierrquica definida pelo TestLink. Nessa condio, segundo a hierarquia do TestLink, cada Especificao de Teste composta por um ou mais Componentes, que por sua vez pode ter uma ou mais Categorias. Cada Categoria agrupa um ou mais Test Cases, como pode ser visto no modelo apresentado na Figura 18.
34
Uma vez que o Componente for criado, voc dever selecion-lo na lista dos componentes disponveis e clicar no boto New Category. A pgina Create Category dever ser exibida, conforme o exemplo apresentado na Figura 19.
35
Finalmente, uma vez que a Categoria for criada, voc dever selecion-la na lista de categorias a fim de criar um novo Test Case. Nesta pgina voc poder importar os Test Cases por meio de um arquivo externo (*.CSV) ou criar o Test Case manualmente. Para tal tarefa, voc dever clicar no boto Create Test Cases. A pgina Create Test Case dever ser exibida, conforme o exemplo apresentado na Figura 20.
36
O TestLink tambm permite a impresso dos Test Cases de uma Categoria ou Componente. Para realizar tal tarefa, voc dever ir para a seo Test Specification e ento clicar no menu Print Test Cases. A pgina Print Test Case Specification dever ser exibida, conforme o exemplo apresentado na Figura 21. Nesta pgina voc dever selecionar a Categoria ou Componente que voc deseja imprimir e configurar as opes de impresso na seo Print Options.
37
38
To logo as keywords sejam criadas, voc poder associa-las aos Test Cases. Para realizar tal tarefa, voc dever ir para a seo Keywords e ento clicar no menu Assign Keywords. Uma vez dentro desta pgina, voc dever selecionar o Test Case desejado. A pgina Assign Keywords dever ser exibida, conforme o exemplo apresentado na Figura 24. Nesta pgina voc dever selecionar a keyword desejada e, por ltimo, associa-la ao Test Case (por meio do boto Assign).
39
40
Uma vez que a primeira Test Suite for criada, um novo conjunto de menus e opes ser exibido na rea esquerda da pgina principal do TestLink. A maioria dessas novas opes serve para o gerenciamento da Test Suite, execuo dos Test Cases e gerao de relatrios, como pode ser visto no exemplo apresentado na Figura 26. preciso lembrar que voc deve selecionar a Test Suite (seta vermelha da Figura 26) antes de comear a realizar qualquer operao para evitar modificaes na Test Suite errada.
41
Por ltimo, voc dever associar os Test Cases a Test Suite recm criada. Para tal tarefa, voc dever selecionar a Test Suite desejada, conforme orientado no pargrafo anterior. Em seguida, v para a seo Test Case Suite e ento clique no menu Add Test Cases. A pgina Add Test Cases to the Test Suite dever ser exibida, conforme o exemplo apresentado na Figura 27.
42
Nesta pgina voc dever selecionar o Test Case desejado (com base no Componente ou Categoria selecionada) e associar ao Test Suite por meio do boto Add selected Test Cases. importante lembrar que voc poder utilizar as keywords para filtrar os Test Cases conforme a sua necessidade.
43
44
Convm lembrar, alis, que voc poder criar Milestones a fim de definir marcos no tempo do seu projeto. Um Milestone define critrios mnimos que devem ser atingidos baseado nos nveis de prioridades associados aos Test Suites. Para criar um Milestone, voc dever ir para a seo Test Suite Management e ento clicar no menu Edit / Delete Milestones.
45
Nesta pgina, o testador poder selecionar os Test Cases com base nos Test Suites existentes ou por meio de filtros criados no menu Navigation Filter & Settings (rea esquerda desta pgina). Aps a execuo do Test Case, o testador dever definir o resultado da execuo (Not run, Pass, Failed ou Blocked) e algum comentrio caso seja necessrio. importante lembrar que as mtricas e relatrios so gerados a partir dos dados informados pelos testadores durante a execuo dos Test Cases. Adicionalmente, o TestLink oferece uma configurao especial que permite a integrao com Mantis (e outras ferramentas de gesto de defeitos). Essa
46
configurao dever ser realizada manualmente, conforme descrito no manual do TestLink11. Dessa forma, voc poder registrar um bug no Mantis e associar este bug ao Test Case que falhou no TestLink, como pode ser visto no exemplo apresentado na Figura 32.
Por fim, para gerar os relatrios com as mtricas de execuo dos testes, voc dever ir para a seo Test Execution e ento clicar no menu Test reports and Metrics. A pgina Overview of available Test Reports and Metrics dever ser exibida. Nesta pgina voc poder gerar mtricas ou relatrios de acordo com o Build selecionado. Os diversos relatrios existentes agrupam as informaes por Build, Test Suite, Componente, Keyword, Milestone, Prioridade e at mesmo por Requisito, como pode ser observado na Figura 33.
11
http://testlink.org/mantis/file_download.php?file_id=72&type=bug
47
48
Na tabela abaixo voc poder ver a ferramenta que ser apresentada nas prximas sees: php-collab
http://www.php-collab.org
49
php-collab
O php-Collab12 uma aplicao Open Source cujo principal objetivo gerenciar projetos e facilitar a colaborao entre os membros de um time. O php-Collab oferece um recurso onde o projeto pode ser gerenciado sob o ponto de vista do time do projeto (gerenciando e exibindo todas as informaes especficas do projeto) ou do cliente (oferecendo apenas informaes relevantes ao cliente e dados para o acompanhamento das atividades). Entre as diversas funcionalidades oferecidas pelo php-collab, devemos destacar as seguintes: Pode ser executado em qualquer plataforma que suportar PHP/Apache/Mysql (Windows, Linux, Mac, Solaris, AS400/i5, etc); Permite a criao de duas vises do projeto: viso do time e viso do cliente; Criao ilimitada de projetos e tarefas; Gerador interno de relatrios e grficos (possibilidade para exportar os dados nos formatos CSV, Excel e Word); Controle de acesso e nveis de permisses por usurio; Organizao do projeto por meio de fases, tarefas e sub-tarefas; Integrao com o Mantis (ferramenta de gesto de defeitos); Gerenciador integrado de requisies de suporte tcnico; Calendrios e Bookmarks compartilhados; Gerenciador de listas de discusses; Versionamento de artefatos;
12
50
Instalando e configurando
Para instalar o php-collab, voc dever seguir os seguintes passos (a ttulo de exemplo estamos sugerindo a utilizao do XAMMP a fim de satisfazer os softwares requeridos para a utilizao do php-collab (Apache, MySQL, PHP)). 1. Faa o download do XAMMP13. 2. Instale e inicialize o XAMMP conforme a orientao do manual ou descompacte o arquivo zip em alguma pasta no seu computador. 3. Aps instalado, configure um password para o usurio root do Mysql usando um dos mtodos sugeridos no site do XAMMP14. 4. Crie um database no Mysql por meio do phpMyAdmin integrado no XAMMP (http://localhost/phpmyadmin/). 5. Faa o download do php-Collab. 6. Descompacte o arquivo zip na pasta htdocs do XAMMP (ex: c:\xamppwin32-1.6.2\xampp\htdocs\phpcollab-2.5). 7. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/phpcollab-2.5/installation/setup.php). 8. Na janela de instalao, selecione a opo Offline installation (firewall/intranet, no update checker). 9. Na janela Settings, preencha o campo database com o nome do database criado no passo 4. Preencha os campos login com 'root' e o campo password com a senha configurada no passo 3. Preencha o campo Admin Password com o password que voc quiser atribuir ao administrador. 10. Deixe os valores default nos demais campos e pressione o boto Save. 11. Abra o seu navegador e acesse o seguinte endereo: (http://localhost/phpcollab-2.5/). 12. Faa o login com o usurio padro (admin/a senha definida no passo 9). Caso voc prefira utilizar esta ferramenta com todos os textos traduzidos para a lngua portuguesa, ento siga os passos descritos abaixo: 1. Abra a janela de login do php-collab. 2. No campo Language selecione a opo "Brazilian Portuguese". 3. Faa o login normalmente com o seu usurio e senha.
13 14
http://www.apachefriends.org/en/xampp.html http://www.apachefriends.org/pt_br/faq-xampp-windows.html
51
52
Uma vez dentro da pgina principal, voc poder criar um novo projeto por meio do cone Add do menu Projects. Durante a criao do projeto, voc dever informar o nome do projeto, prioridade, status, entre outras informaes, como pode ser observado na Figura 35. O campo Enable Phases habilita a organizao do projeto em fases. Dessa forma, cada tarefa cadastrada dever ser associada a uma fase distinta do projeto. O campo Client Organization habilita a criao e publicao de Websites para o cliente, como veremos mais adiante.
Assim que o projeto for criado, voc ser remetido automaticamente para a pgina de visualizao e alterao dos dados do projeto. Nesta pgina, voc poder ver as fases associadas ao projeto, o status de cada fase, a quantidade de tarefas existentes, a quantidade de tarefas no concludas,
53
entre outras informaes, como pode ser visto no exemplo apresentado na Figura 36.
54
Adicionando tarefas
Para adicionar uma tarefa, voc dever entrar na pgina do projeto e selecionar a fase na qual a tarefa ser associada. Uma vez dentro da pgina da fase selecionada, voc dever ir para a seo Tasks e ento clicar no cone Add. Durante o cadastramento da tarefa, voc dever informar o nome da tarefa, a descrio, a prioridade, o responsvel, o tempo estimado, entre outras informaes, como pode ser visto na Figura 37.
55
56
Listas de discusses
A lista de discusso do php-collab oferece um canal comum e integrado para todos os membros do time. Para criar um tpico, voc dever entrar na pgina do projeto. Uma vez dentro desta pgina, voc dever ir para a seo Discussions e ento clicar no cone Add, conforme o exemplo apresentado na Figura 39.
Qualquer membro do time pode criar um tpico ou postar uma mensagem. Alm disso, assim que a discusso for concluda o php-collab permite que o tpico seja fechado pelo seu criador, como pode ser observado na Figura 40.
57
58
Alm de armazenar o arquivo, o php-collab faz o controle do status (pendente, aprovado, etc) e o controle de verses do arquivo, como pode ser observado na Figura 42.
59
60
Bookmarks compartilhados
O php-collab tambm oferece uma funcionalidade para gerenciar bookmarks compartilhados. Para tal tarefa, voc dever clicar no menu Bookmarks e ento clicar no cone Add, conforme o exemplo apresentado na Figura 43.
61
Adicionando clientes
To logo o projeto seja criado voc poder adicionar clientes e associ-los ao projeto. Para tal tarefa, voc dever clicar no menu Clients e ento clicar no cone Add. A pgina Add Client Organization dever ser exibida conforme o exemplo apresentado na Figura 44. Nesta pgina, voc dever informar o nome do cliente, endereo, telefone, entre outras informaes.
Uma vez que o cliente tenha sido adicionado, voc poder associa-lo a um projeto. Na pgina de visualizao das informaes do cliente, voc tambm poder criar o site do projeto (sob o ponto de vista do cliente). Para realizar tal tarefa, voc dever clicar no link <details>, como pode ser observado no exemplo exibido na Figura 45.
62
Assim que voc realizar esta operao, a pgina Create Project Site dever ser exibida, conforme o exemplo apresentado na Figura 46. Nesta pgina, voc dever clicar no boto Create para criar definitivamente o site do projeto. Assim que o site do projeto for criado, qualquer usurio cadastrado (Client Users) poder realizar o login e entrar no site do projeto automaticamente. Voc tambm poder acessar o site do projeto por meio do link Go to projects site localizado no topo direito da pgina principal do php-collab.
63
No site do projeto, o cliente poder visualizar as tarefas existentes, os documentos e as listas de discusses, como pode ser visto na Figura 47. As informaes no so disponibilizadas ao site do projeto automaticamente. Para que elas sejam visualizadas no site do projeto, voc dever realizar a publicao por meio do cone Add to project site (presente na maior parte dos menus do php-collab).
64
Requisies de suporte
O cliente, por meio do site do projeto, tambm poder realizar requisies de suporte. Basicamente, o php-collab fornece um mecanismo simples de gesto de requisies de suporte, como pode ser visto no exemplo apresentado na Figura 48.
Uma vez que as requisies tenham sido cadastradas pelos clientes, elas podero ser visualizadas e gerenciadas por meio da seo Support localizada na pgina do projeto, como pode ser visto na Figura 49.
65
Relatrios
O php-collab fornece tambm um recurso para a gerao de relatrios. Por meio desse recurso, voc poder filtrar e listar as tarefas com base no projeto, cliente, prioridade, data de finalizao entre outros filtros, como pode ser visto no exemplo apresentado na Figura 50. Adicionalmente, voc poder salvar os filtros criados para que o relatrio possa ser executado posteriormente.
66
http://www.openqa.org/selenium/ marathon
67
Selenium
O Selenium15 uma ferramenta Open Source usada para a criao de testes de regresso automatizados para aplicaes WEB. O Selenium foi escrito utilizando Java Script e DHTML. Em funo disso, os testes rodam diretamente a partir do navegador. Na realidade, em virtude desta caracterstica do Selenium, os testes podem rodar virtualmente em qualquer navegador que suporte Java Script (Internet Explorer, Firefox, Opera, Safari, Konqueror, etc). Basicamente, os testes do Selenium so escritos em tabelas HTML. Nestas tabelas, voc informar as operaes ou asseres de um teste e os seus respectivos argumentos. O Selenium responsvel por interpretar os comandos das tabelas HTML e executar as aes, simulando um usurio real. O Selenium dividido em dois modos diferentes: Selenium Core: Neste modo os testes so executados a partir do WEB Server que a aplicao WEB estiver sendo executada. Os testes so escritos previamente em tabelas HTML e o TestRunner (Gerenciador da execuo dos testes) responsvel pela execuo dos testes. Selenium RC (Remote Control): Neste modo os testes so dirigidos por uma das linguagens suportadas pelo Selenium (Ruby16, Python, etc).
15
http://www.openqa.org/selenium/ (os exemplos deste livro so apresentados com a verso 0.8.2) 16 http://pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao)
68
Selenium Core
Conforme mencionado anteriormente, neste modo chamado de Selenium Core, os testes so executados a partir do WEB Server em que a aplicao WEB estiver sendo executada. Para que o Selenium Core funcione corretamente, voc dever habilitar o acesso de leitura e escrita nos diretrios onde ele for instalado.
Para instalar o Selenium Core, voc dever fazer o download17 a partir do site do Selenium. Uma vez feito o download, voc dever descompactar os arquivos sob o diretrio de deploy do seu WEB Server (Ex: DocumentRoot, htdocs, www ou webroot). Uma vez instalado, voc poder testar se houve sucesso por meio da abertura da pgina TestRunner.html. O TestRunner a pgina que gerencia a execuo dos testes e exibe o relatrio de progresso da execuo. Normalmente esta pgina est localizada sob o diretrio core, como pode ser observado no exemplo apresentado na Figura 51.
17
http://www.openqa.org/selenium-core
69
A pgina do TestRunner dividida em quatro diferentes reas: Test Suite: Nesta rea voc dever escolher a Test Suite que ser executada pelo Selenium, assim como selecionar um teste da lista de testes disponveis. Current Test: Nesta rea voc poder visualizar o teste selecionado ou o teste que estiver sendo executado. Control Panel: Nesta rea voc poder gerenciar a execuo dos testes (rodar apenas os testes selecionados, diminuir a velocidade de execuo dos testes, executar os testes passo a passo, ver o log de execuo e o resultado da execuo dos testes). AUT: Nesta rea localizada na parte inferior da pgina, voc visualizar a aplicao em teste durante a execuo dos testes. Voc tambm poder configurar o Selenium para exibir a aplicao em teste em uma janela separada por meio da opo AUT in separate window ou pelo parmetro "multiWindow=true" da pgina TestRunner.html. No entanto, o Firefox no suporta nativamente o multi-window mode. Para resolver este problema, voc dever baixar o add-on readyState.xpi18. importante lembrar que voc dever desabilitar os bloqueadores de pop-up, gerenciadores de senhas e recursos semelhantes do navegador antes da execuo dos testes automatizados, para garantir que os testes no falhem ou travem em virtude de algum desses recursos oferecidos pela maioria dos navegadores. Naturalmente, para executar os testes por meio do Selenium Core, voc dever ter criado previamente os casos de testes para a sua aplicao WEB. Conforme mencionamos anteriormente, os testes so escritos em tabelas HTML. Nestas tabelas, voc informar as operaes ou asseres de um teste e os seus respectivos argumentos. A sintaxe destes comandos chamada de Selenese, ou em bom portugus: Selens. Um teste escrito em Selens basicamente composto por uma tabela contendo trs colunas. Uma coluna usada para a operao e as duas restantes so usadas para os argumentos. Cabe lembrar que nem todas as operaes requerem dois argumentos, como pode ser visto no exemplo apresentado na Figura 52.
18
http://www.openqa.org/selenium-core/download/readyState.xpi
70
Cabe ressaltar que as linhas com menos de trs colunas sero automaticamente ignoradas pelo Selenium. Neste caso, voc poder utilizlas para comentrios ou para o ttulo do caso de teste. Por questes estticas, voc poder usar a tag HTML   para fazer as clulas da tabela ficarem esteticamente melhores, ao invs de apenas exibir um espao vazio. De forma similar, os Test Sutes tambm so representados em tabelas HTML. Cada Test Suite referencia um ou mais casos de teste. No entanto, o cdigo HTML usado para o Test Suite, tem uma pequena particularidade: a tag HTML target deve sempre referenciar o frame testFrame para que os casos de teste sejam adequadamente exibidos na rea Test Sute do TestRunner, conforme discutido anteriormente. Observe o exemplo apresentado na Figura 53:
71
De um ponto de vista genrico, as operaes suportadas pelo Selens so divididas em trs grupos distintos: Actions: Representam as operaes realizadas pelo usurio durante a utilizao da aplicao WEB. A maioria das Actions representam aes do tipo (clicar em determinado link ou boto, selecionar determinada opo e assim por diante). Se a execuo de uma Action falhar, o status do teste modificado para Failed e o teste imediatamente paralisado. Adicionalmente, voc poder adicionar o sufixo AndWait para a maioria das Actions. Este sufixo informa ao Selenium que a ao gerou uma requisio ao servidor e a execuo do teste precisa esperar que a pgina seja recarregada. Accessors: Executa uma assero (compara o estado ou propriedade de um objeto da pgina contra um valor esperado) e armazena o resultado numa varivel. O resultado negativo de uma Accessor no paralisa a execuo do teste, mas no entanto, a falha exibida no resultado dos testes. Assertions: Executa uma assero (compara o estado ou propriedade de um objeto da pgina contra um valor esperado). No entanto, a Assertion no armazena o resultado numa varivel. O resultado negativo de uma Assertion no paralisa a execuo do teste, mas no entanto, a falha exibida no resultado dos testes. Infelizmente, no faz parte do escopo deste livro apresentar minuciosamente as operaes suportadas pelo Selens. Com certeza, um livro inteiro poderia ser escrito para descrever e mostrar exemplos prticos de todas as operaes existentes. Neste caso, o autor sugere que voc leia o Reference Guide19 do Selens no site do Selenium. Por outro lado, voc no precisa decorar todas as operaes suportadas pelo Selens. Por meio de um ambiente grfico integrado chamado Selenium IDE, voc poder gravar e reproduzir os testes sem escrever uma nica operao em Selens, como veremos mais adiante.
19
http://release.openqa.org/selenium-core/nightly/reference.html
72
Selenium IDE
O Selenium IDE20 um ambiente grfico integrado ao Firefox capaz de gravar e reproduzir os testes do Selenium. O Selenium IDE captura e grava as suas aes no Firefox. Essas aes so convertidas para o Selens automaticamente para que voc possa salvar o teste, execut-lo e depur-lo individualmente ou em conjunto com outros testes numa Test Suite. O Selenium IDE uma extenso do Firefox, como pode ser visto na Figura 54. Uma vez instalado, voc poder executar o Selenium IDE acessando o menu Tools>Selenium IDE, de acordo com o exemplo apresentado na Figura 55.
Uma vez aberta a janela do Selenium IDE, qualquer ao que voc executar nas pginas do navegador ser convertida para uma operao em Selens na aba Table. No entanto, o Selenium IDE no se limita apenas a reproduzir os cliques ou preenchimento dos campos realizados durante a navegao. Voc tambm poder selecionar qualquer uma das operaes suportadas pelo Selens conforme a sua necessidade por meio do campo Command. Vale a pena destacar que, conforme o comando selecionado, uma descrio completa da sua utilizao e argumentos requeridos apresentada na parte inferior da janela do Selenium IDE.
20
73
Adicionalmente, o Selenium IDE adiciona novos menus de contexto no Firefox. Neste caso, durante gravao da navegao, voc poder selecionar qualquer objeto da pgina e adicionar uma operao ou assero de acordo com o contexto do objeto selecionado, como pode ser visto no exemplo apresentado na Figura 56.
74
Por fim, assim que voc finalizar gravao da navegao da sua aplicao WEB, todos os passos executados sero convertidos automaticamente em Selens e estaro disponveis na aba Table. O teste poder ser salvo no formato HTML para que seja posteriormente executado. Voc tambm poder executar, pausar ou depurar o teste por meio do Selenium IDE. Adicionalmente, o Selenium IDE empacota internamente por default o Selenium Core. Neste caso, voc tambm poder executar o teste por meio do TestRunner do Selenium Core, como pode ser visto na Figura 57.
75
Todo navegador, por default, oferece mecanismos de segurana para evitar ataques do tipo XSS cross-site scripting. Toda extenso do Firefox tem acesso ao protocolo Chrome (especfico deste navegador). Esse protocolo oferece um meio alternativo para burlar a segurana dos navegadores para evitar os ataques do tipo XSS. No exemplo da Figura 57, o Selenium Core no precisou ser instalado no WEB Server em que a aplicao WEB estava sendo executada em virtude dessa caracterstica do Firefox. Dessa forma, voc poder executar as suas Teste Sutes a partir do Firefox sem a necessidade de instalar o Selenium Core no mesmo WEB Server onde a aplicao WEB estiver sendo executada. Para realizar tal tarefa, voc dever utilizar a seguinte URL para executar o TestRunner a partir do Firefox:
76
Onde: baseURL: Indica a URL base da aplicao WEB. test: Indica a localizao da Test Suite. auto: Indica que o TestRunner dever executar os testes assim que for aberto. Por ltimo, devemos destacar que voc tambm poder testar aplicaes WEB baseadas em AJAX (Asynchronous JavaScript and XML) utilizando o Selenium IDE. Sem discutir em detalhes, uma pgina AJAX capaz de realizar diversas operaes sem, no entanto, precisar buscar ou trocar muitas informaes com o WEB Server. Neste caso, normalmente a pgina no recarregada, garantindo assim maior velocidade nas operaes. No entanto, neste cenrio, operaes em Selens do tipo clickAndWait no funcionaro corretamente em virtude de que a pgina AJAX no ser recarregada. Para solucionar esta limitao e viabilizar os testes de pginas AJAX, voc dever utilizar, por exemplo, a operao waitForValue que aguardar a mudana do valor definido como argumento, ao invs de esperar a pgina recarregar. Existem muitas pginas21 na Internet apresentando solues e exemplos para testes de pginas AJAX utilizando o Selenium. Vale a pena conferir tambm os exemplos apresentados no site do Selenium.
21
http://www.infoq.com/articles/testing-ajax-selenium
77
A arquitetura do Selenium RC extremante simples e eficaz (Figura 58). Basicamente, o Selenium RC expe uma interface (Wrapper API) para os comandos em Selens. J existem interfaces escritas para as principais linguagens de programao da atualidade23 (Java, .NET, Perl, Python, and Ruby). Durante a execuo do teste na linguagem escolhida por voc, os comandos executados por meio dessas interfaces se comunicam com o Selenium Server, que a outra parte da arquitetura do Selenium RC. O Selenium Server, de acordo com o site do Selenium, onde a mgica acontece. Por meio do Selenium Server, uma instncia do navegador escolhido por voc iniciada nos bastidores. Assim, toda a vez que o teste executa uma
22 23
http://www.openqa.org/selenium-rc/ http://www.openqa.org/selenium-rc/tutorial.html
78
operao, na verdade ele se comunica com o Selenium Server, que por sua vez se comunica com essa instncia do navegador (usando XmlHttpRequest do AJAX).
Alm desse modo de execuo convencional, o Selenium Server oferece tambm um modo interativo. Neste modo, voc poder interagir diretamente com Selenium Server por meio da digitao de comandos (Selens) no seu prompt. Para inicializar o Selenium Server em modo interativo, execute o seguinte comando java -jar selenium-server.jar -interactive, como pode ser visto no exemplo apresentado na Figura 59 (o output dos comandos foram propositalmente omitidos). Adicionalmente, voc poder utilizar o Selenium IDE para criar os testes usados pelo Selenium RC. O Selenium IDE tem um recurso que permite a exportao dos testes em Selens para a maioria das linguagens suportadas pelo Selenium RC, como pode ser observado na Figura 60.
79
Como resultado do processo de exportao, obtemos o cdigo fonte na linguagem alvo escolhida por voc. No exemplo apresentado na Figura 61, voc poder ver o resultado da exportao para a linguagem Ruby.
80
Para confirmar se o teste foi exportado com sucesso, execute o Selenium Server por meio do comando java jar selenium-server.jar. Em outra janela do prompt execute o seu teste, como pode ser visto no exemplo apresentado na Figura 62.
81
82
Marathon
O Marathon24 uma ferramenta Open Source de testes de regresso automatizados para aplicaes Java desenvolvidas com o toolkit grfico Swing25. Utilizando o Marathon, voc poder criar testes automatizados por meio da captura das suas aes (cliques do mouse, digitao, etc). Estas aes so convertidas em scripts Jython26 (implementao Java da linguagem de script Python) para que voc possa executar posteriormente o teste. Dentre as suas principais caractersticas, podemos destacar as seguintes: Ambiente de desenvolvimento integrado onde voc poder capturar, depurar e executar os testes automatizados; Mdulos reutilizveis para facilitar a manuteno; Fixtures (scripts em Jython cuja principal funo criar as prcondies de execuo dos testes, assim como, a posterior limpeza dos recursos criados); Component Resolver e Custom Component Resolver (recurso utilizado para detectar todos os componentes do Swing (botes, campos de edio, menus, etc), assim como os seus mtodos e propriedades);
24
http://www.marathontesting.com/ (os exemplos deste livro so apresentados com a verso 1.0.3) 25 http://en.wikipedia.org/wiki/Swing_(Java) 26 http://www.jython.org/Project/index.html
83
27
http://pt.wikipedia.org/wiki/Java_(linguagem_de_programao)
84
To logo o projeto seja criado, a janela principal do Marathon exibida. Esta janela oferece um ambiente de desenvolvimento integrado onde voc poder capturar, depurar e executar os testes automatizados, como pode ser observado na Figura 64.
Os projetos do Marathon so compostos por trs elementos distintos (todos esses elementos sero discutidos mais adiante): TestCases: Scripts em Jython que representam as aes (cliques do mouse e digitao) e asseres realizadas por voc durante a captura (gravao); Modules: Scripts em Jython usados por outros testes (mdulos reutilizveis). Por meio dos Modules, voc poder aumentar a reutilizao e facilitar a manuteno no futuro. Fixtures: Scripts em Jython cuja funo criar as pr-condies de execuo dos testes, assim como, a posterior limpeza dos recursos criados.
85
Por fim, para efeitos didticos, os exemplos apresentados nas prximas sees sero realizados utilizando um editor simples de UML desenvolvido em Java chamado Violet28, como pode ser visto no exemplo apresentado na Figura 65.
28
http://www.horstmann.com/violet/
86
Por meio da janela Marathon Control Center todas as aes so capturadas e traduzidas para comandos Jython. Adicionalmente, esta janela fornece opes para pausar, retornar da pausa, parar a captura e a adio de mdulos reutilizveis (os mdulos reutilizveis sero discutidos mais adiante). importante ressaltar que o Marathon utiliza um recurso chamado Component Resolver para detectar todos os componentes do Swing (botes, campos de edio, menus, etc), assim como os seus mtodos e propriedades. por meio desse recurso que o Marathon capaz de mapear os componentes da aplicao e converter as suas aes em comandos Jython. No entanto, caso a sua aplicao tenha algum componente personalizado, que no faz parte da biblioteca padro do Swing, voc poder criar um
87
Custom Component Resolver para que o Marathon possa detectar o seu componente. Ao final da gravao, o Marathon fecha automaticamente a aplicao em teste e adiciona ao script de teste todas aes capturadas (traduzidas para comandos Jython). No nosso exemplo, foi criado um script de teste para testar a criao de um diagrama de caso de uso, como pode ser observado na Figura 67.
Entretanto, como voc poder notar, este script de teste no realiza nenhuma verificao (nenhuma informao comparada com algum resultado esperado). Para adicionar esse tipo de verificao durante a captura, voc dever usar um recurso chamado Assertions (ou verificaes). Por meio das Assertions, voc poder comparar qualquer informao contida em qualquer componente da aplicao (botes, campos de edio, menus, etc) contra um resultado esperado. Para adicionar uma assero durante a captura do script de teste, voc dever usar o atalho (CTRL+F8) ou (CTRL+Boto direito do mouse) sobre o componente desejado. Um menu pop-up ser exibido com a lista de asseres disponveis. No exemplo apresentado na Figura 68, voc poder notar o novo script criado com as Assertions.
88
89
No nosso exemplo, foi criado um mdulo reutilizvel com os passos para acessar o menu do Violet e criar um novo diagrama de caso de uso. Para adicionar o mdulo reutilizvel a um script de teste, voc dever clicar no boto Insert Script da janela Marathon Control Center durante a captura (gravao).
90
A janela Insert Script dever ser exibida. Voc dever escolher um dos scripts disponveis para a reutilizao e, se for o caso, informar o parmetro do mdulo reutilizvel, como pode ser visto na Figura 70.
Uma vez que esses passos forem realizados com sucesso, o Marathon adicionar uma chamada ao mdulo reutilizvel dentro do script de teste, como pode ser observado no exemplo apresentado na Figura 71.
91
29
http://en.wikipedia.org/wiki/JUnit
92
A partir desse ponto, voc dever codificar a Fixture conforme a sua necessidade. No nosso exemplo, vamos criar uma nova Fixture chamada clean_up_fixture que executar a criao de um diretrio chamado tempdir na Inicializao (Setup), como pode ser visto na Figura 73. Como voc deve ter notado, foram utilizados comandos do Jython para customizar a Fixture. O Marathon oferece a biblioteca de comandos bsica
93
do Jython, mas no entanto, caso seja necessrio utilizar recursos avanados, voc dever instalar o interpretador do Python30 no seu computador. Uma vez instalado, voc dever informar ao Marathon o Path do Python por meio da janela Create and manage configuration. Para realizar tal tarefa, voc dever clicar no menu Marathon>Project Settings, como pode ser observado no exemplo apresentado na Figura 74.
Uma vez que a Fixture for criada, voc poder associa-la a um script de teste. Para tal tarefa, voc dever clicar no menu Marathon>Select Fixture, como pode ser observado no exemplo apresentado na Figura 75.
http://www.python.org/download/
94
SoapUI
SoapUI31 uma ferramenta Open Source escrita em Java cuja principal funo consumir e testar WEB Services32. WEB Service uma tecnologia baseada em XML e HTTP cuja principal funo disponibilizar servios interativos na WEB que podem ser acessados (ou consumidos) por qualquer outra aplicao independente da linguagem ou plataforma em que a aplicao foi construda. O SOAP (Simple Object Access Protocol) o padro universal utilizado para a troca de mensagens entre as aplicaes consumidoras e o WEB Service. O WEB Service expe as suas operaes por meio de um tipo de esquema XML chamado WSDL (WEB Service Description Language). Neste contexto, o SoapUI facilita todo o processo de criao e depurao dos testes por meio de uma interface grfica intuitiva. Dentre as suas principais caractersticas, podemos destacar as seguintes: Importao e gerao automtica das requisies descritas no WSDL; Capacidade de gerenciar um nmero ilimitado de requisies para cada operao; Gerenciamento de mltiplos endpoints para cada WEB Service; Validao das requisies e respostas contra as suas definies no WSDL; Testes funcionais, desempenho e stress; Execuo de diversos testes em paralelo; Editores com syntax highlight e formatao automtica; Suporta expresses XPATH; Suporta criao de testes complexos utilizando scripts Groovy33;
31 32 33
http://www.soapui.org/ (os exemplos deste livro so apresentados com a verso 1.5) http://en.wikipedia.org/wiki/WEB_service http://groovy.codehaus.org/
95
Para efeitos didticos e de entendimento, os exemplos apresentados nas prximas sees vo realizar os testes de um suposto WEB Service chamado EchoService. Este WEB Service expe uma operao chamada HelloEcho cujo nico propsito ser ecoar o texto enviado, ou seja, se voc enviar Ol Mundo! a resposta ser Ol Mundo!. Dando continuidade, assim que o projeto for criado, ele aparecer listado na rvore de projetos localizada na rea esquerda da janela principal do SoapUI. Em seguida, devemos importar o WSDL a fim de que o SoapUI seja capaz de conhecer todas as operaes expostas pelo EchoService. Para realizar esta tarefa, voc dever clicar com o boto direito do mouse sobre o nome do projeto e escolher a opo Add WSDL from file, como
96
pode ser visto na Figura 77. Lembre-se de confirmar a criao das Requisies Default para todas as operaes quando for solicitado.
Ao final do processo de importao do WSDL, o SoapUI incluir um novo item abaixo do nome do projeto representando o WSDL importado. Clicando-se duas vezes sobre este novo item, voc abrir a janela Interface Viewer. Por meio dessa janela voc poder ver o contedo do WSDL recm importado. Adicionalmente, o SoapUI criar uma Requisio Default (Request 1) para cada operao exposta pelo WEB Service EchoService, como pode ser visto na Figura 78.
97
As Requisies Default so criadas para facilitar a criao dos Test Cases. Voc tambm poder testar o acesso ao WEB Service clicando com o boto direito do mouse sobre a Requisio Default da operao que voc desejar e, em seguida, escolher a opo Open Request Editor. No nosso cenrio, voc dever abrir a Requisio Default da operao HelloEcho. A janela Request Editor dever ser exibida. No lado esquerdo desta janela aparecer a requisio SOAP que ser enviada ao EchoService. Voc dever preencher os parmetros desta requisio conforme os tipos definidos no WSDL. Para consumir a operao HelloEcho exposta pelo WEB Service EchoService, devemos apenas fornecer uma string no nico parmetro disponvel e, ento, submeter a requisio. A resposta desta requisio imediatamente exibida no lado direito do Request Editor, como pode ser visto na Figura 79.
98
99
Aps a concluso da criao do Test Case, o SoapUI incluir um novo item abaixo do nome do projeto representando a Test Suite e o Test Case, respectivamente. Clicando-se duas vezes sobre o cone da Test Suite, voc abrir a janela "Test Suite Runner". Por meio desta janela voc poder iniciar a execuo de todos os Test Cases existentes na Test Suite, como pode ser visto na Figura 80.
100
Para editar ou depurar os Test Steps, d um duplo clique sobre o nome do Test Step. O SoapUI abrir a janela Test Step Editor. Por meio desta janela, voc poder editar e inspecionar a resposta da requisio, como pode ser visto na Figura 81.
101
Criando asseres
Por meio da janela Test Step Editor, voc tambm poder definir asseres (ou verificaes) que sero executadas contra a resposta da requisio. Voc poder adicionar uma assero clicando com o boto direito do mouse na aba Assertions localizada na parte inferior da janela Test Step Editor (Figura 82).
Atualmente, o SoapUI oferece cinco tipos diferentes de asseres (ou verificaes) para validar a resposta de uma requisio, como pode ser visto na Tabela 1. Assero Schema Compliance Simple Contains Descrio Valida as respostas das requisies contra o xmlschema definido no WSDL Verifica a existncia de uma string nas respostas das requisies
102
Verifica a no existncia de uma string nas respostas das requisies Verifica se a resposta da requisio contm um soapfault Compara o contedo das respostas das requisies contra uma expresso XPATH34
Basicamente, as asseres servem para confirmar se a resposta de uma requisio contm as informaes esperadas. Se as asseres falharem, o Test Step e o Test Case indicaro um status de falha, como pode ser visto na Figura 83.
34
http://en.wikipedia.org/wiki/XPath
103
Figura 84: Depurando Test Cases complexos por meio do Test Result Log
104
Atualmente, o SoapUI oferece cinco tipos diferentes de Test Steps que podem ser adicionados ao Test Case, conforme descrito na Tabela 2.
105
Test Step Groovy Script Conditional Goto Properties Delay Property Transfer
Descrio Permite a utilizao do Groovy (linguagem de script baseada em Java) para criar Test Steps e Asseres complexas Fornece a possibilidade de mudar o fluxo de execuo dos Test Steps de acordo com alguma condio especial Armazena propriedades para serem utilizadas entre os Test Steps como se fossem variveis Simula uma espera/atraso de acordo com o tempo determinado por voc Transfere dados entre os Test Steps
106
Voc tambm poder criar asseres para identificar se o WEB Service est atendendo determinado requisito de performance de acordo com as suas necessidades, como pode ser observado na Figura 86. Caso o WEB Service demore mais tempo do que o tempo definido na assero, inserido um registro no log. O SoapUI tambm exibe grficos com as estatsticas da execuo dos testes para facilitar a leitura e a anlise dos dados, conforme apresentado na Figura 87.
107
108
109
JMeter
O JMeter35 uma ferramenta Open Source de testes de performance automatizados para aplicaes WEB. O JMeter oferece recursos para realizar testes de performance, volume e estresse automatizados para aplicaes WEB, servidores FTP, WEB Services, Banco de Dados, entre outros. Por ser uma ferramenta inteiramente escrita em Java, o JMeter poder ser executado em qualquer plataforma que suporte a mquina virtual do Java. Alm disso, o JMeter facilita todo o processo de criao e depurao dos testes por meio de uma interface grfica intuitiva. Os testes podem ser escritos manualmente (por meio da criao manual das requisies HTTP36) ou gravados automaticamente enquanto voc navega na aplicao simulando um usurio real (por meio de um Proxy Server). Entre os diversos recursos oferecidos pelo JMeter, devemos destacar: Pode ser executado em qualquer plataforma que suporte a mquina virtual do Java 1.4 ou superior (Solaris, Linux, Windows, OpenVMS Alpha 7.3+); Suporta a criao de testes de performance para os protocolos (HTTP, JDBC, FTP, JMS, LDAP, SOAP, entre outros); Possibilidade de executar os testes em computadores distribudos37; Criao de asseres para validar os requisitos de performance e funcionalidade; Possibilidade de monitorar a performance de um servidor Apache Tomcat38; Permite a utilizao de pr-processadores e ps-processadores para modificar o comportamento das requisies; Suporta diversos tipos de monitores para avaliar a performance da aplicao em teste;
35
http://jakarta.apache.org/jmeter/index.html (os exemplos deste livro so apresentados com a verso 2.3RC3) 36 http://en.wikipedia.org/wiki/HTTP 37 http://jakarta.apache.org/jmeter/usermanual/jmeter_distributed_testing_step_by_step.pdf 38 http://en.wikipedia.org/wiki/Apache_Tomcat
110
111
A janela Thread Group dever ser exibida, como pode ser observado na Figura 90. Nesta janela, voc poder configurar o nmero de usurios virtuais simultneos que sero simulados durante a execuo do teste por meio do campo Number of Threads (users).
112
O campo Ramp-Up Period define a freqncia/tempo de lanamento dos usurios virtuais. Por exemplo, voc poder configurar 10 usurios virtuais (Number of Threads (users)) e definir um Ramp-Up period de 10 segundos. Neste cenrio, um usurio virtual ser lanado (iniciado) por segundo. Dessa forma, a partir do dcimo segundo, todos os usurios virtuais estaro sendo executados simultaneamente. O campo Loop Count define quantas vezes o teste ser repetido. Um Loop Count igual a 10 significa que o teste ser executado por todos os usurios virtuais 10 vezes consecutivas. Por ltimo, voc poder configurar um cronograma de execuo por meio da seo Scheduler Configuration. Nesta seo voc definir a data e a hora de incio e fim da execuo dos testes, entre outras opes.
113
Dessa forma, o JMeter poder executar os testes por meio da reproduo das requisies HTTP gravadas neste passo. A princpio, voc dever manter todos os parmetros default desta janela, exceto o campo Target Controller. Neste campo voc dever selecionar o Thread Group que voc criou anteriormente. Assim, o HTTP Proxy Server saber o lugar onde as requisies HTTP capturadas devero ser gravadas. Lembre-se de pressionar o boto Start para iniciar o HTTP Proxy Server. Em seguida, voc dever apontar o Proxy do seu navegador preferido para o endereo localhost:8080. neste endereo que o HTTP Proxy Server do JMeter est escutando as requisies. Dessa forma, o JMeter poder capturar e gravar todas as requisies HTTP (GET, POST, etc) trocadas entre
114
o navegador e a aplicao WEB, como pode ser visto no exemplo apresentado na Figura 92.
Assim que o Proxy do navegador for configurado, voc poder navegar no site ou utilizar a aplicao WEB normalmente, simulando a utilizao de um usurio convencional. Ao final da navegao voc dever fechar o navegador e parar a execuo do HTTP Proxy Server por meio do boto Stop (Figura 91). Voc poder notar que foram criados vrios elementos abaixo do Thread Group. Esses elementos representam as requisies HTTP trocadas entre o navegador e o site ou aplicao WEB. Para fins didticos e de entendimento, foi gravado uma pesquisa com as palavras chave teste de software no Google, como pode ser observado na Figura 93.
115
Os testes podero tambm ser criados manualmente por meio da adio e configurao manual das requisies HTTP (isso necessrio para testes cujas requisies sejam SSL/HTTPS39).
39
http://wiki.apache.org/jakarta-jmeter/JMeterAndHTTPS
116
Adicionando asseres
O Jmeter, por meio deAssertions (asseres), valida as respostas das requisies HTTP. Existe um conjunto de asseres para as mais diversas funes, mas por hora, vamos discutir um pouco sobre a assero Response Assertion. Este tipo de assero permite que voc procure determinado texto dentro do contedo de uma requisio HTTP. Se o texto procurado no for encontrado, ento a assero falhar. Dando continuidade ao nosso exemplo de pesquisa no Google, voc dever clicar com o boto direito do mouse na requisio HTTP chamada search e escolher a opo de menu Add>Assertions>Response Assertion, como pode ser visto na Figura 94.
A assero foi adicionada na requisio HTTP chamada search em virtude de que os resultados da pesquisa sero trazidos na resposta desta requisio. Na janela Response Assertion, voc poder configurar o nome da assero, qual campo da resposta vai ser procurado, a regra de comparao e os textos a serem procurados na resposta.
117
No nosso caso, vamos procurar o texto Wikipdia na resposta da requisio, como pode ser visto na Figura 95.
Outra assero interessante que vale a pena destacar chama-se Duration Assertion. Por meio dessa assero voc poder validar se o tempo de resposta de uma requisio HTTP maior do que um valor esperado. Para validar o tempo de resposta de todas as requisies HTTP associadas ao Thread Group, escolha a opo de menu Add>Assertions>Duration Assertion, como pode ser visto na Figura 96.
Na Janela Duration Assertion, voc dever preencher o campo Duration in miliseconds para configurar o tempo de resposta limite para as requisies HTTP, como pode ser observado na Figura 97. Se alguma requisio demorar mais tempo do que o tempo limite definido na assero, ento a assero falhar.
118
119
Adicionando um timer
Voc poder simular a navegao de um site ou utilizao de uma aplicao WEB de maneira mais realstica por meio da utilizao de um Timer. Nenhum usurio normal clica nos links rapidamente milhares de vezes feito um rob. O Timer um recurso do JMeter que permite a simulao das paradas para ler algum texto ou ver alguma figura que um usurio normal realiza antes de realizar a prxima operao. O JMeter oferece um conjunto de Timers para as mais diversas funes, mas por hora, vamos discutir um pouco sobre o Uniform Random Timer. Este tipo de Timer permite simular uma parada aleatrio dentro dos limites inferior e superior que voc informar. Para adicionar este Timer, voc dever clicar com o boto direito do mouse sobre o Thread Group e, em seguida, escolher a opo de menu Add>Timer>Uniform Random Timer. Neste caso, o Timer afetar todas as requisies HTTP que estiverem associadas a esse Thread Group. Na Janela Uniform Random Timer, voc dever preencher os campos Random Delay Maximum e Constant Delay Offset para definir os limites inferior e superior das paradas simuladas, como pode ser observado na Figura 98.
120
Para no nos alongarmos muito, vamos apresentar apenas os Listeners mais importantes. Neste caso, voc dever selecionar o Thread Group e adicionar os seguintes Listeners: Assertion Results, Graph Results, Aggregate Graph, View Results Tree e Statistical Aggregate Report, como pode ser observado no exemplo apresentado na Figura 100.
121
122
Ao final ou durante a execuo dos testes voc poder visualizar os resultados obtidos pelos Listeners. Na Figura 101 voc poder observar o resultado do Listener Assertion Results. Neste caso, somente as requisies HTTP que no atenderam os parmetros das asseres (Response e Duration) so listadas neste relatrio. Por outro lado, o Listener Graph Results desenha um grfico descrevendo o desvio padro, a mdia, a taxa de requisies realizadas por segundo, entre outras informaes, como pode ser observado na Figura 102.
40
http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php
123
Em contrapartida, o Listener Aggregate Graph exibe as estatsticas para cada pgina individualmente, como pode ser observado na Figura 103.
O Listener View Results Tree, por sua vez, nos fornece informaes sobre o cdigo de sucesso ou falha das requisies HTTP (HTTP Response Code41), assim como o contedo completo das requisies.
41
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
124
Desta forma, voc poder visualizar exatamente o que navegador teria recebido caso um usurio real estivesse navegando no site ou aplicao WEB, como pode ser observado no exemplo apresentado na Figura 104.
Por fim, o Listener Statistical Aggregate Report apresenta a relao entre o tempo de resposta e a quantidade de requisies realizadas por segundo ao longo do tempo, como pode ser observado na Figura 105. Devemos lembrar que esse Listener no faz parte do pacote original do JMeter. Na verdade este Listener um plug-in e deve ser instalado separadamente42.
42
http://rubenlaguna.com/wp/better-jmeter-graphs/
125
Na verdade, o JMeter oferece um recurso onde voc poder monitorar a performance do Apache Tomcat durante a execuo dos testes de performance (caso o seu site ou aplicao WEB esteja sendo executada no Tomcat). No entanto, para configurar esse recurso, voc dever seguir alguns passos conforme indicaremos a seguir. Em primeiro lugar, voc dever criar um novo Thread Group. Vamos cham-lo de Monitor do Tomcat. Neste Thread Group, adicione um HTTP Authorization Manager por meio do menu Add>Config Element>HTTP Authorization Manager. Na janela HTTP Authorization Manager voc dever adicionar a URL raiz do seu servidor Apache Tomcat, assim como, o usurio e a senha do administrador. A principal funo do Authorization Manager fornecer as credenciais necessrias para obter os parmetros de performance do Apache Tomcat, como pode ser observado no exemplo apresentado na Figura 107.
126
Uma vez que o HTTP Authorization Manager for configurado, voc dever adicionar ao Thread Group Monitor do Tomcat um HTTP Request. Para realizar tal tarefa, clique com o boto direito do mouse no Thread Group Monitor do Tomcat e acesse o menu Add>Sampler>HTTP Request. O HTTP Request tem a funo de enviar requisies ao servidor Apache Tomcat para obter os parmetros de performance durante a execuo dos testes. Na janela HTTP Request voc dever configurar o IP do servidor Apache Tomcat, assim como, a porta em que o servidor estiver escutando. Adicionalmente, na seo HTTP Request voc dever informar o caminho /manager/status para indicar o lugar onde os parmetros de performance devero ser obtidos. Por ltimo, na seo Send Parameters with the Request, voc dever preencher os campos Name e Value com os valores XML e true respectivamente. Lembre-se de habilitar o campo Use as Monitor localizado na seo Optional Tasks, como pode ser observado na Figura 108.
127
To logo o HTTP Request seja configurado, voc dever adicionar um Constant Timer ao Thread Group Monitor do Tomcat por meio do menu Add>Timer>Constant Time. Na janela Constant Timer, configure o Timer de maneira que ele simule uma parada de 5 segundos por meio do campo Thread Delay. Dessa forma, voc evitar que sejam enviadas centenas de requisies por segundo para verificar os parmetros de performance do Tomcat. Neste caso, o Timer garantir que ser enviada uma requisio a cada 5 segundos, como pode ser visto na Figura 109.
128
Por fim, o ltimo passo dever ser realizado por meio da adio de um Listener chamado Monitor Results. Para realizar tal tarefa, clique com o boto direito do mouse sobre o Thread Group Monitor do Tomcat e selecione a opo de menu Add>Listener>Monitor Results. Na aba Health da janela Monitor Results, voc poder acompanhar a sade do Tomcat por meio de indicadores coloridos durante a execuo dos testes de performance, como pode ser observado no exemplo apresentado na Figura 110.
129
Por outro lado, na aba Performance da janela Monitor Results, voc poder acompanhar a performance e utilizao de recursos do Apache Tomcat durante a execuo dos testes de performance, como pode ser visto na Figura 111.
130
43
131
44
http://en.wikipedia.org/wiki/Internet_Information_Services
132
Por hora, vamos nos concentrar no mecanismo de gravao utilizando um Proxy. Na janela Create new script, selecione a opo Record. O dilogo Browser Recorder dever ser exibido, conforme pode ser observado na Figura 113.
Neste dilogo, entre outras configuraes, voc poder optar pela gravao do tempo que voc levar para ler algum texto ou ver alguma figura antes de realizar a prxima requisio (atraso ou parada), simulando assim um usurio real durante a execuo dos testes de performance. Deixe os valores default nos campos e pressione o boto Next>. Uma janela do Internet Explorer pr-configurada com o endereo do Proxy abrir automaticamente, como pode ser visto na Figura 114.
133
Nesta janela digite o endereo do seu site ou aplicao WEB e comece a navegar como se fosse um usurio comum. O HTTP Proxy do WAS captura e grava todas as requisies HTTP (GET, POST, etc) trocadas entre o navegador e a aplicao WEB. Dessa forma, o WAS poder executar os testes por meio da reproduo das requisies HTTP gravadas neste passo, como pode ser observado na Figura 115.
To logo voc conclua a navegao, feche o Internet Explorer e pressione o boto Stop Recording da janela Recording (Figura 115).
Todas as requisies gravadas sero automaticamente associadas a um novo teste chamado New Recorded Script. Neste novo teste, voc ver as requisies HTTP gravadas, o tipo de requisio, o tempo de atraso (delay), entre outras informaes.
134
importante lembrar que, por padro o WAS atribuir o valor localhost no campo Server. Para que o teste seja executado posteriormente com sucesso, voc dever modificar este valor para o endereo correto do seu servidor WEB. Para fins didticos e de entendimento, foi gravado uma pesquisa com as palavras chave teste de software no Google. O WAS tambm permite que voc modifique qualquer parmetro da requisio HTTP. Para tal tarefa, d um duplo clique em qualquer requisio HTTP gravada no seu teste. A janela com os dados da requisio dever ser exibida, como pode ser observado no exemplo apresentado na Figura 117.
135
Ao final da execuo dos testes voc poder visualizar o status da performance da sua aplicao WEB por meio de diversos relatrios. Para abrir a janela de relatrios, acesse o menu View>Reports. A janela Reports dever ser exibida. Por meio do relatrio Overview, voc poder ter uma viso geral dos principais indicadores de performance do teste selecionado (Figura 119).
136
O relatrio Result Codes nos fornece informaes sobre o cdigo de sucesso ou falha das requisies HTTP (HTTP Response Code45) (Figura 120).
O relatrio Page Summary, por sua vez, exibe o tempo mdio de resposta de cada requisio HTTP (Figura 121).
45
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
137
138
Uma vez que os Page Groups sejam configurados, voc dever associar as requisies HTTP ao Page Group conforme a sua necessidade. No nosso caso, vamos associar o Page Group pesquisa requisio que realiza a pesquisa pelas palavras chaves teste de software, como pode ser observado na Figura 124.
139
Ao final da execuo dos testes voc poder visualizar o relatrio das requisies distribudas por grupo na seo Page Groups da janela Reports, como pode ser observado na Figura 125.
140
Uma vez que os grupos sejam criados e os usurios adicionados, voc poder associar ao teste um ou mais grupos de acordo com as suas necessidades por meio da opo Users, como pode ser observado na Figura 127.
141
http://www.tortoisecvs.org/
142
CVS
O CVS46 uma ferramenta Open Source que atende os pr-requisitos bsicos de um processo de Gerncia de Configurao de Software47 e implementa as principais funes pertinentes ao controle de verses. Basicamente, o CVS armazena em seu repositrio as modificaes realizadas num arquivo ao longo do tempo; cada modificao identificada por um nmero chamado Reviso. Toda Reviso armazena as modificaes realizadas, quem realizou as modificaes, quando as modificaes foram realizadas, entre outras informaes. Alm disso, o CVS conta com um mecanismo capaz de controlar os acessos simultneos e as modificaes paralelas, garantindo a integridade das modificaes e a atomicidade das operaes. De maneira geral, o fluxo de trabalho bsico do CVS consiste em retirar os arquivos de um projeto para a rea de trabalho, realizar as modificaes e, por ltimo, submeter as modificaes de volta ao repositrio, como pode ser visto na Figura 128. O completo entendimento dos termos apresentados na Tabela 3 fundamental para auxiliar a leitura desse captulo.
46 47
143
Termo Workspace, SandBox (rea de trabalho) Repository (Repositrio) Revision (Reviso) Release, Version (Liberao)
Descrio Termo usado para representar um diretrio no computador cliente onde os arquivos de um projeto sero transferidos durante uma retirada. Local onde os arquivos submetidos ao controle de verses so armazenados. Termo usado para descrever a numerao atribuda pelo CVS a cada modificao de um arquivo. Termo usado para descrever a denominao atribuda a um conjunto de arquivos para identificar determinado ponto no tempo; sobretudo, quando se quer identificar um conjunto de novas caractersticas ou correes de um software. Termo usado para descrever a transferncia de um ou mais arquivos modificados da rea de trabalho para um repositrio. Termo usado para descrever a retirada de um ou mais arquivos de um repositrio para a rea de
144
Diff (Comparao das diferenas) Import (Importao) Module (Projeto, Mdulo) Branch (Ramo)
trabalho. Termo usado para descrever o processo de comparao das modificaes entre revises diferentes de um arquivo. Termo usado para descrever o processo de transferncia dos arquivos de um projeto a um repositrio, dando inicio ao controle de verses. Termo usado para descrever um nome simblico associado a um conjunto de diretrios e arquivos que compem um projeto a fim de facilitar o acesso e a manipulao. Termo usado para descrever o processo de diviso dos arquivos de um projeto em linhas de desenvolvimento independentes.
145
TortoiseCVS
O TortoiseCVS48 um front-end grfico Open Source para Windows que torna o uso do CVS mais fcil e intuitivo. Basicamente, o TortoiseCVS realiza as principais operaes do CVS por meio de menus de contexto integrados ao Windows Explorer, como pode ser visto na Figura 129.
O TortoiseCVS , em virtude da sua proposta, uma ferramenta extremamente eficiente cuja principal caracterstica a sua independncia de uma aplicao cliente especfica. Dessa forma, como descrito anteriormente, todas as operaes sero realizadas por meio de menus de contexto do Windows Explorer. O TortoiseCVS suporta as seguintes verses do Windows: Windows 95, 98, ME, NT, 2000 e XP.
48
146
Repositrio
Basicamente, um repositrio um diretrio que tem por objetivo abrigar todos os arquivos de um projeto sob o controle de verses. O repositrio poder ser criado num diretrio compartilhado no seu computador ou num servidor (Windows49 50 ou Linux51). Naturalmente, quando o repositrio criado num servidor, voc dever instalar um servidor de CVS e configurar um mtodo de acesso ao repositrio para garantir a segurana dos arquivos sob o controle de verses. Sendo assim, para fins didticos, os exemplos apresentados nas sees seguintes sero realizados num repositrio local. Para tal tarefa, voc dever criar e compartilhar um diretrio chamado CVSROOT na raiz do seu computador (C:\CVSROOT).
Importao
Uma vez que o repositrio tenha sido criado, o primeiro passo para iniciar o controle de verses chamado de Importao. Neste passo, os arquivos da sua aplicao so transferidos para o repositrio e submetidos ao controle de verses do CVS. Para tal tarefa, vamos transferir os arquivos de uma aplicao exemplo para o diretrio "C:\Temp". A importao do projeto dever ser realizada por meio do menu de contexto Make New Module. Na caixa de dilogo Make New Module, o TortoiseCVS fornece opes para acessar repositrios remotos por meio de qualquer mtodo de autenticao suportado pelo CVS. Mas, no entanto, como havamos definido anteriormente, todos os exemplos sero realizados utilizando um repositrio local. Em razo disso, voc dever selecionar a opo Locally mounted folder (:local:) no campo Protocol. O campo "Repository folder" dever ser preenchido com "C:\CVSROOT" que a localizao do repositrio criado anteriormente na raiz do seu computador.
49 50 51
147
O campo Mdulo indica um apelido que ser utilizado pelo TortoiseCVS todas as vezes que ele se referir ao nosso projeto e dever ser preenchido com o texto webapp, como pode ser visto na Figura 130.
Aps confirmar os dados anteriores, o TortoiseCVS exibir um dilogo informando que no existe nenhum repositrio criado no diretrio informado. Voc dever selecionar a opo Initialise a new repository here para inicializar um novo repositrio, como pode ser observado na Figura 131.
148
Este dilogo ser exibido somente quando importar o primeiro projeto. Assim que a criao do novo mdulo e a inicializao do repositrio finalizarem, voc dever adicionar os arquivos a esse mdulo recm criado. Para tal tarefa, voc dever acessar o menu de contexto CVS Add Contents. O TortoiseCVS exibir um dilogo solicitando a confirmao dos arquivos que sero adicionados, como pode ser visto na Figura 132.
Por fim, devemos realizar a operao de entrega, tambm chamada de Commit para transferir os arquivos do projeto webapp definitivamente para o repositrio do CVS. Essa operao dever ser realizada atravs do menu de contexto CVS Commit. O TortoiseCVS exibir um dilogo solicitando a confirmao dos arquivos que sero transferidos para o repositrio. Neste dilogo voc tambm dever escrever um breve comentrio descrevendo as modificaes realizadas. Alm disso, antes de confirmar a operao voc poder modificar o formato do arquivo, comparar as suas modificaes com outras verses armazenadas no repositrio, entre outras opes, como pode ser observado na Figura 133.
149
150
Por fim, assim que a operao de retirada for concluda, voc poder comear a trabalhar com os arquivos do projeto webapp que foram transferidos para o diretrio C:\Projetos\webapp.
151
Modificando os arquivos
Assim que o projeto for transferido para a rea de trabalho, poderemos iniciar a edio dos arquivos. Perceba que, aps a importao e durante a edio dos arquivos, o TortoiseCVS modifica os cones do Windows Explorer a fim dar um significado visual sobre o status dos arquivos da rea de trabalho em relao aos arquivos armazenados no repositrio, como pode ser visto na Figura 135.
Para que a adio e remoo de arquivos sejam entendidas e refletidas no repositrio do CVS, voc dever selecionar o arquivo desejado e acessar os menus de contexto CVS Add ou CVS Remove como descrito na Figura 136.
152
Por fim, devemos realizar a operao de entrega Commit ao final do nosso trabalho para garantir que todas as modificaes, adies e remoes sejam definitivamente refletidas no repositrio do CVS.
153
154
Configurando o TortoiseCVS
Por ltimo, o comportamento e as configuraes do TortoiseCVS podem ser modificados por meio do menu de contexto Preferences, como pode ser visto na Figura 138. Dentre as configuraes possveis, podemos destacar: integrao com ferramentas externas para a realizao da comparao das diferenas entre duas revises, modificao da aparncia dos cones que indicam o status dos arquivos no Windows Explorer e a opo para ignorar arquivos durante as operaes do CVS (para evitar que determinados tipos de arquivos sejam submetidos ao controle de verses inadvertidamente).
155
156
Caso o Tail for Win32 no atenda as suas necessidades, vale a pena conferir os utilitrios BareTail53 e MakeLogicTail54 que oferecem funcionalidades semelhantes.
52 53 54
157
HeavyLoad
O HeavyLoad55 um utilitrio gratuito para Windows cuja principal funo estressar os recursos de um computador, ou seja, aumentar a utilizao do processamento, memria, disco, rede e sistema operacional a nveis extremamente elevados. O HeavyLoad foi criado originalmente para testar a robustez de servidores antes de entrar em produo, no entanto, podemos us-lo para testar a confiabilidade e robustez da aplicao em teste quando submetida a um ambiente onde os recursos esto sendo utilizados no limite da sua capacidade. A utilizao do HeavyLoad bastante simples, basta selecionar quais recursos voc quer estressar, qual freqncia ser atualizado o grfico que demonstra a utilizao da memria e processamento e, por fim, iniciar a execuo, como pode ser visto na Figura 140.
Caso o HeavyLoad no atenda as suas necessidades, vale a pena conferir o TrafficEmulator56 que oferece funcionalidades especficas para estressar redes, roteadores, firewalls, etc.
55 56
http://www.jam-software.com/freeware/index.shtml http://www.nsauditor.com/network_tools/network_traffic_generator.html
158
Process Explorer
O Process Explorer57 utilitrio gratuito para Windows cuja principal funo monitorar a performance e o comportamento das aplicaes. O funcionamento do Process Explorer semelhante ao Gerenciador de Tarefas do Windows, mas no entanto, ele conta com diversos recursos avanados que nos auxilia a monitorar o comportamento e performance da aplicao em teste. Por meio do Process Explorer, voc poder ver informaes da aplicao em teste, tais como, a linha de comando e o usurio usado para executar a aplicao, os processos filhos iniciados pela aplicao, entre outras informaes. Devemos destacar tambm a possibilidade de visualizar os recursos, tais como, os arquivos, diretrios, chaves de registros e DLLs que foram abertos pela aplicao em teste. Alm disso, voc poder ver tambm grficos destacando a utilizao de processamento, memria e disco apenas da aplicao selecionada, como pode ser observado no exemplo apresentado na Figura 141.
importante ressaltar que o Process Explorer faz parte de um pacote de timos utilitrios chamado SysInternals58 da Microsoft que fazem a diferena durante as atividades de monitorao (profiling) da aplicao em teste.
57 58
http://www.microsoft.com/technet/sysinternals/SystemInformation/ProcessExplorer.mspx http://www.microsoft.com/technet/sysinternals/default.mspx
159
VMWARE
O VMWARE59 uma ferramenta gratuita que executa mltiplos sistemas operacionais ao mesmo tempo num mesmo computador fsico por meio de virtualizao. O VMWARE suporta a virtualizao de diversas plataformas, tais como Windows, Linux, Novel Netware, Solaris, entre outros. Alm disso, ele pode ser executado tanto no Windows quanto no Linux. O VMWARE uma soluo perfeita economizar investimentos com hardware quando necessrio testar aplicaes que suportam plataformas diferentes. importante lembrar que o sistema operacional virtualizado se comporta realmente como se fosse um ambiente separado do ambiente onde ele est sendo executado, mas no entanto, apesar dessas vantagens, o VMWARE no recomendado para a realizao de testes de performance, em virtude de que por mais eficiente que seja a virtualizao, ela nunca ser to rpida quanto o hardware real. Dentre as principais funcionalidades do VMWARE, devemos destacar a possibilidade de executar vrios sistemas operacionais ao mesmo tempo, a possibilidade de realizar configuraes nos dispositivos virtualizados (memria, disco, rede, USB, entre outros), assim como, a possibilidade de salvar o estado do sistema operacional (snapshot) para posterior restaurao (normalmente utilizado para voltar a determinado ponto no tempo em que o sistema operacional est limpo e com as prcondies necessrias satisfeitas para iniciar os testes), como pode ser visto na Figura 142.
importante ressaltar que a Microsoft oferece um produto gratuito similar ao VMWARE chamado VirtualPC60.
59 60
160
Microsoft Testing
Pairwise
Independent
Combinatorial
O PICT61 um utilitrio gratuito para Windows cuja funo principal gerar uma lista de combinaes baseadas no mtodo de combinao dupla (pairwise). Muitas vezes, testar todas as combinaes dos parmetros de entrada ou pr-condies de um caso de teste praticamente impossvel em virtude do nmero elevado de cenrios. Por meio do mtodo de combinao dupla, cada par de parmetros combinado ao menos uma vez, garantindo dessa forma, uma cobertura mnima das situaes possveis. O PICT executado pela linha de comando e o resultado das combinaes exibido direto na tela ou pode ser direcionado para um arquivo. Os parmetros de entrada que sero combinados devem ser listados num arquivo com base numa sintaxe especfica do PICT. Alm dos parmetros de entrada, essa sintaxe suporta grupo de parmetros, restries incondicionais e condicionais (IF-THEN-ELSE), como pode ser visto no exemplo abaixo de um arquivo com algumas combinaes de navegadores e OS (sistema operacional) e uma restrio:
Navegador: IE7, IE6, IE5 OS: WINVISTA, WINXP IF [OS] = "WINVISTA" THEN [Navegador] = "IE7";
Na listagem abaixo, voc poder visualizar o resultado das combinaes pairwise aps a execuo do PICT utilizando o arquivo citado no pargrafo anterior:
Navegador IE6 IE7 IE7 IE5 OS WINXP WINVISTA WINXP WINXP
Caso o Microsoft PICT no atenda as suas necessidades, vale a pena conferir o utilitrio ALLPAIRS Test Case Generation62 que oferece funcionalidades semelhantes. Em tempo, no site pairwise.org63 voc encontrar uma listagem de outras ferramentas interessantes para a gerao de combinaes duplas.
61
http://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd8c6f76cc014b/pict33.msi
62 63
http://www.satisfice.com/tools/pairs.zip http://www.pairwise.org/tools.asp
161
Burp Suite
O Burp Suite64 um utilitrio Open Source escrito em Java cuja principal funo monitorar e interagir com as requisies HTTP enviadas de um navegador para um servidor WEB e vice-versa. O Burp Suite se comporta com um Proxy, ou seja, um elemento capaz de monitorar, inspecionar e modificar todo o trfego de informaes entre o navegador e o servidor WEB. Por meio do Burp Suite, voc poder interceptar e validar o contedo das requisies HTTP (GET/POST), assim como, modificar os contedo das requisies para simular um hacker explorando uma vulnerabilidade da aplicao, Alm disso, voc poder testar a robustez da aplicao quando dados incorretos so enviados ao servidor. O Burp Suite oferece uma opo de filtragem para exibir somente o tipo de requisio que importa no momento do teste, assim como, um mecanismo para visualizar o contedo da requisio renderizada em HTML para simular o que o navegador ir exibir, como pode ser visto na Figura 143.
Caso o Burp Suite no atenda as suas necessidades, vale a pena conferir o utilitrio TCPMon65 que oferece funcionalidades semelhantes.
64 65
http://portswigger.net/proxy/download.html https://tcpmon.dev.java.net/
162
Camstudio
O Camstudio66 um utilitrio Open Source para Windows cuja principal funo capturar toda a atividade exibida no seu monitor (abrir janelas, mover o mouse, digitar, etc) e converter para um vdeo no formato AVI ou Flash (SWF). Estes vdeos podem ser capturados para demonstraes, treinamentos, entre outras funes. No entanto, sob o ponto de vista de testes de software, voc poder gravar um vdeo a fim de fornecer uma evidncia ao time de desenvolvimento de que existe um defeito em determinada funcionalidade da aplicao e os passos para reproduzi-lo. Durante o processo de gravao voc poder escolher se deseja gravar determinada regio do monitor ou o monitor todo. Para dar nfase ou destacar determinada ao ou regio da tela, voc poder gravar a sua voz ou escolher alguns dos indicadores (setas, formas, bales, etc), fornecidos pelo CamStudio, como pode ser observado no exemplo apresentado na Figura 144.
Caso o CamStudio no atenda as suas necessidades, vale a pena conferir o utilitrio Wink67 que oferece funcionalidades semelhantes.
66 67
http://sourceforge.net/projects/camstudio/ http://www.debugmode.com/wink/
163
MWSnap
O MWSnap68 um utilitrio gratuito para Windows cuja principal funo capturar uma imagem (screenshot) do seu monitor. Estas imagens podem ser capturadas para demonstraes, treinamentos, entre outras funes. Assim como o CamStudio, a imagem capturada poder fornecer uma evidncia ao time de desenvolvimento de que existe um defeito em determinada funcionalidade da aplicao. O MWSnap muito superior em relao ao velho boto PrintScreen para capturar uma imagem (screenshot) do seu monitor. Entre outros recursos, voc poder capturar janelas, dilogos e at componentes especficos de uma janela (botes, grids, menus, etc). Adicionalmente, voc poder configurar o MWSnap para capturar uma regio especfica do seu monitor, como pode ser observado na Figura 145.
Caso o MWSnap no atenda as suas necessidades, vale a pena conferir o utilitrio Screen Grab Pro69 que oferece funcionalidades semelhantes.
68 69
http://www.mirekw.com/winfreeware/mwsnap.html http://www.traction-software.co.uk/downloads/ScreenGrabPro.zip
164
WinMerge
O WinMerge70 um utilitrio Open Source para Windows cuja principal funo realar a diferena entre dois arquivos. O WinMerge de grande utilidade quando necessrio durante a execuo de um teste comparar um arquivo de sada (output) gerado pela aplicao em teste contra o mesmo arquivo gerado por uma verso anterior da mesma aplicao, por um outro build da mesma aplicao ou, at mesmo, pelo sistema legado. O WinMerge oferece um interface fcil de usar e bastante intuitiva. Alm de realar as diferenas entre dois arquivos, voc poder realizar operaes de mesclagem/sincronizao (merge) entre as diferenas dos arquivos a fim de tornar os arquivos idnticos ou fazer um arquivo receber as diferenas do outro, como pode ser visto na Figura 146. Entre os diversos recursos do WinMerge, devemos destacar o recurso de comparao de pastas, onde realada as diferenas entre os arquivos de duas pastas, as diferenas dos seus nomes, data de atualizao, entre outros.
Caso o WinMerge no atenda as suas necessidades, vale a pena conferir o utilitrio Perforce Visual Merge Tool71 que oferece funcionalidades semelhantes.
70 71
http://winmerge.sourceforge.net/ http://www.perforce.com/perforce/products/merge.html
165
Data Generator
O Data Generator72 uma aplicao WEB Open Source baseada em JavaScript, PHP and MySQL cuja principal funo gerar enormes volumes de dados para popular banco de dados de testes. Este tipo de utilitrio tem grande serventia quando a aplicao nova e no existem dados nas tabelas do banco de dados para realizar os testes. O Data Generator vem com uma srie de templates com diversos tipos de dados para auxiliar a criao da massa de dados conforme a sua necessidade. No entanto, muitos templates correspondem a dados especficos de outros pases (Canad, Estados Unidos, etc). Por outro lado, por ser uma ferramenta Open Source, voc poder fazer o download do cdigo fonte e realizar as modificaes necessrias para atender as suas necessidades (gerao de CPF, telefones no formato brasileiro, CEP no formato brasileiro e assim por diante), como pode ser visto na Figura 147.
72
http://www.generatedata.com/
166
Firebug
O Firebug73 um utilitrio Open Source cuja principal funo editar, depurar e monitorar o contedo HTML, CSS e JavaScript utilizados em aplicaes WEB. O Firebug uma extenso (add-on) do navegador Firefox. Por meio do Firebug, voc poder monitorar o que est acontecendo por detrs dos panos da aplicao em teste (on-the-fly enquanto voc navega pelas pginas). Entre os diversos recursos oferecidos pelo Firebug, podemos destacar a visualizao do contedo de cada requisio entre navegador e o servidor e a possibilidade de monitorar as requisies XML utilizadas em pginas AJAX. Alm disso, voc poder monitorar e depurar o cdigo JavaScript enquanto ele executado e analisar a performance do download/execuo de cada elemento da pgina da aplicao WEB, como pode ser visto na Figura 148.
73
http://getfirebug.com/
167
Consideraes Finais
Ferramentas similares no apresentadas neste livro
Quando este livro ainda era uma idia embrionria, entre riscos e rabiscos numa folha em branco criei um MindMap74 definindo as ferramentas que fariam parte do seu escopo. Aps uma pequena pesquisa, cheguei a concluso de que o escopo deveria ser reduzido a fim de evitar que o livro levasse muito tempo para ser escrito e ficasse muito desatualizado (as ferramentas Open Source evoluem numa velocidade fantstica). O escopo foi redefinido tendo em mente as ferramentas realmente essenciais; outro ponto que pesou muito foi o tamanho das comunidades apoiando e suportando estas ferramentas. Ferramentas com grandes comunidades e liberaes freqentes foram privilegiadas em relao s outras. De qualquer forma, mantive a listagem original a fim de apresentar as ferramentas similares que no foram abordadas neste livro (talvez sejam adicionadas novas ferramentas na prxima edio de acordo com o retorno do leitor). Caso as ferramentas apresentadas neste livro no atendam as suas necessidades, sinta-se vontade para procurar um similar equivalente entre as ferramentas apresentadas na Tabela 4. Categoria Gesto de projetos Ferramenta GanttProject http://ganttproject.biz/ ProjectKoach http://www.projectkoach.com/ ]project-open[ http://www.project-open.com/ OpenWorkbench http://www.openworkbench.org/ XPlanner http://www.xplanner.org/ WebCollab http://webcollab.sourceforge.net/ OpenProj http://openproj.org/ Mindquarry http://www.mindquarry.com/ OpenSTA http://www.opensta.org/ WEBLOAD http://www.WEBload.org/ The Grinder http://grinder.sourceforge.net/ rth http://www.rth-is-quality.com TestMaster http://testmaster.sourceforge.net/
http://en.wikipedia.org/wiki/Mind_Mapping
168
Gesto de defeitos
Gesto de requisitos
Testes funcionais
Testitool http://majordojo.com/testitool/ QaManager http://qamanager.sourceforge.net/ Test Case Web (TCW) http://tcw.sourceforge.net/ Testopia http://www.mozilla.org/projects/testopia/ Bugzilla http://www.bugzilla.org/ Scarab http://scarab.tigris.org/ BugNET http://www.bugnetproject.com/ TRAC http://trac.edgewall.org/ OSRMT http://www.osrmt.com/ Tiger PRO http://www.seecforum.unisa.edu.au/SEECTools.html Xuse http://xuse.sourceforge.net/ TRUC http://sourceforge.net/projects/truc REM (REquisite Management) http://www.lsi.us.es/descargas/descarga_programas.php?id= 3 Plandora http://plandora.sourceforge.net/ Jeremia http://jeremia.sourceforge.net/ Watir (WEB) http://wtr.rubyforge.org/ Canoo WEBTest (WEB) http://WEBtest.canoo.com/ actiWATE (WEB) http://www.actiwate.com/ Apodora (WEB) http://www.apodora.org/ Abbot (Java Swing) http://abbot.sourceforge.net SoapUI (WEBServices) http://www.soapui.org/ SOAPSonar Personal Edition (WEBServices) http://www.crosschecknet.com/ LISA WS-Testing (WEBServices) http://www.itko.com/site/products/lisa/ws_testing.jsp Squish for KDE (Linux) http://www.froglogic.com GNU/Linux Desktop Testing Project (Linux) http://ldtp.freedesktop.org/wiki/Home SharpRobo (WinForm .NET) http://confluence.public.thoughtworks.org/display/SHRO/Ho me FitNesse http://fitnesse.org/ Construx Estimate http://www.construx.com/Page.aspx?nid=68 WinCVS http://www.wincvs.org/ Subversion http://subversion.tigris.org/
169
darcs http://darcs.net/
Tabela 4: Ferramentas similares no apresentadas neste livro
Para os leitores que ficaram interessados no MindMap com as ferramentas do escopo original deste livro, os rabiscos originais foram convertidos num formato mais amigvel, como pode ser visto na Figura 149. Este MindMap ser atualizado constantemente para acompanhar a evoluo das ferramentas de testes Open Source e ser disponibilizado para a comunidade brasileira de testes gratuitamente no seguinte endereo: http://www.mindomo.com/view?m=d1535d37f8b0aa6df765a1db90bfa317
170
171
172
Site especializado em teste de software. Neste site existe uma seo listando diversas ferramentas agrupadas por diversas categorias. http://www.testingfaqs.org/ Site especializado em ferramentas Open Source escritas em c# para testes funcionais de aplicaes WEB http://csharp-source.net/open-source/WEB-testing-tools Site especializado em ferramentas Open Source para realizar testes do sistema operacional Linux. http://ltp.sourceforge.net/tooltable.php Site especializado em ferramentas Open Source escritas em Java para realizar testes diversos. http://www.java-source.net/open-source/testing-tools Site especializado em ferramentas Open Source escritas em Java para realizar testes diversos. http://javatoolbox.com/categories/tests Site especializado em ferramentas Open Source escritas em Java para realizar testes diversos. http://community.java.net/projects/
173
Alternativas comerciais
impossvel apresentar e discutir ferramentas Open Source sem pensar nas ferramentas comerciais similares e vice-versa. A ttulo de comparao, sero apresentadas na Tabela 6 as principais ferramentas comerciais para cada categoria apresentada neste livro. Categoria Gesto de projetos Ferramenta TraceGP http://www.tracegp.com.br/ Microsoft Office Project http://office.microsoft.com/enus/project/FX100487771033.aspx Project Builder http://www.projectbuilder.com.br/ BaseCamp http://www.basecamphq.com/ ZOHO Projects http://projects.zoho.com/jsp/home.jsp Mercury LoadRunner http://www.mercury.com/us/products/performancecenter/loadrunner/ WebLOAD Professional http://www.radview.com/ Empirix e-Load http://www.empirix.com/products/testing/e-Load.asp Rational Performance Tester http://www306.ibm.com/software/awdtools/tester/performance/ Compuware QALoad http://www.compuware.com/solutions/qaload.htm Borland SilkPerformer http://www.borland.com/us/products/silk/silkperforme r/index.html RSI/QA-Teste http://www.rsinet.com.br/modules/content/index.php? id=9 TestLog http://www.testlog.com/ Mercury Quality Center http://www.mercury.com/us/products/quality-center/ TestTrack TCM http://www.seapine.com/tttcm.html
Testes de performance
Gesto de testes
174
Rational TestManager http://www306.ibm.com/software/awdtools/test/manager/ Compuware QA Director http://www.compuware.com/products/qacenter/qadire ctor.htm SilkCentral Test Manager http://www.borland.com/us/products/silk/silkcentral_t est/index.html Gesto de defeitos FogBugz http://www.fogcreek.com/FogBugz/ Jira http://www.atlassian.com/software/jira/ yKAP http://www.ykap.com/ Rational ClearQuest http://www306.ibm.com/software/awdtools/clearquest/ Gesto de Rational RequisitePro Requisitos http://www-306.ibm.com/software/awdtools/reqpro/ Borland Caliber http://www.borland.com/us/products/caliber/index.ht ml Compuware Optimal Trace http://www.compuware.com/products/optimaltrace/ Telelogic DOORS Fastrak http://www.telelogic.com/Products/doors/doorsfastrak /index.cfm Testes funcionais Mercury QuickTest Professional http://www.mercury.com/us/products/qualitycenter/functional-testing/quicktest-professional/ Rational Functional Tester http://www306.ibm.com/software/awdtools/tester/functional/ QA Wizard Pro http://www.seapine.com/qawizard.html Compuware QARun http://www.compuware.com/qarun.htm TestComplete http://www.automatedqa.com/products/testcomplete/ Controle de verses Perforce http://www.perforce.com/
175
Microsoft Visual Source Safe http://msdn2.microsoft.com/enus/vstudio/aa718670.aspx Rational ClearCase http://www306.ibm.com/software/awdtools/clearcase/ SourceGear Vault http://www.sourcegear.com/vault/downloads.html
Tabela 6: Comparao com ferramentas comerciais
Outros autores/pesquisadores ao redor do mundo tambm disponibilizaram comparaes entre as solues comerciais e Open Source. Confira abaixo alguns exemplos selecionados especialmente para o leitor:
http://bugs.sakaiproject.org/confluence/download/attachments/7105/HTTP_T est_Tool_Comparison.xls?version=1
176
177
178
Sobre o autor
Cristiano Caetano (c_caetano@hotmail.com)
certificado CBTS pela ALATS. Com mais de 10 anos de experincia, j trabalhou na rea de qualidade e teste de software para grandes empresas como Zero G, DELL e HP Invent. colunista na rea de Teste e Qualidade de software do site linhadecodigo.com.br e autor do livro CVS: Controle de Verses e Desenvolvimento Colaborativo de Software. O autor tambm pode ser contactado no seguinte endereo: http://spaces.msn.com/softwarequality/ http://www.testexpert.com.br/
179
Bibliografia Recomendada
Teste de Software INTHURN, Cndida. Qualidade & teste de software. 1 edio, Florianpolis: Visual Books, 2001. MOLINARI, Leonardo. Testes de Software: Produzindo Sistemas Melhores e Mais Confiveis, So Paulo: rica, 2003. KOSCIANSKI, A. Soares, M. S. Qualidade de Software. Editora Novatec, Segunda Edio, 2007. BARTIE Alexandre, Garantia da Qualidade de Software, So Paulo: Elsevier Editora Ltda, 2002. MECENAS, IVAN et al. Qualidade em Software. Editora Alta Books, 2005. RIOS, Emerson et al. Teste de Software. Editora Alta Books, 2003. RIOS, Emerson. Anlise de riscos em projetos de teste de software. Editora Alta Books, 2005. RIOS, Emerson et al. Projeto e Engenharia de Software: Teste de Software. Editora Alta Books, Segunda Edio, 2006. Gesto de Defeitos e Testes FUTRELL, Robert T. Quality Software Project Management. Prentice Hall PTR, 2004. BLACK, Rex. Critical Testing Processes: Plan, Prepare, Perform, Perfect. Addison Wesley, 2003 CRAIG Rick D. Systematic Software Testing. Artech House, 2002. Gesto de Projetos MCCONNELL, Steve. Software Project Survival Guide: how to be sure your first important project isn't your last / Steve McConnell. Microsoft Press, 2002. THOMSETT, Rob. Radical Project Management. Prentice Hall PTR, 2002. CHIN, Gary. Agile Project Management: How to Succeed in the Face of Changing Project Requirements. AMACOM, 2004 Automao de Testes Funcionais e de Aceitao FEWSTER, Mark et al. Software Test Automation: Effective use of test execution tools. Addison-Wesley, 1999. MOSLEY, Daniel J. et al. Just Enough Software Test Automation. Prentice Hall, 2002.
180
DUSTIN, Elfriede, et al. Automated Software Testing: Introduction, Management. Addison-Wesley, 1999. Automao de Testes de Performance MENASCE Daniel A., et al. Performance by Design: Computer Capacity Planning by Example. Prentice Hall PTR, 2004. SUBRAYA, B. M. Integrated Approach to Web Performance Testing: A Practitioner's Guide. IRM Press, 2006. Microsoft ACE Team. Performance Testing Microsoft .NET Web Applications. Microsoft Press, 2002. Controle de Verses e Gerncia de Configurao de Software CAETANO, Cristiano. CVS - Controle de Verses e Desenvolvimento Colaborativo de Software (Concurrent Versions System). Editora Novatec, 2004.
181
Bibliografia
PRESSMAN, Roger. Engenharia de Software. So Paulo: Makron Books, 1995. MYERS, Glenford. The Art of Software Testing. New York: Wiley, 1979. INTHURN, Cndida. Qualidade e Teste de Software, Visual Books, 2001. MOLINARI, Leonardo. Testes de Software: Produzindo Sistemas Melhores e Mais Confiveis, So Paulo: rica, 2003. BARTIE Alexandre, Garantia da Qualidade de Software, So Paulo: Elsevier Editora Ltda, 2002. RIOS, Emerson et al. Teste de Software. Editora Alta Books, 2003.
182
ndice Remissivo
  ..................................... 72 Accessors ................................ 73 acessos simultneos ................143 Actions .................................... 73 AJAX ....................................... 78 ALLPAIRS ...............................162 ANT .......................................124 Apache Tomcat ............... 111, 127 rea de trabalho .....................145 Assertions........................... 73, 89 AUT ........................................ 71 automao de testes ................ 68 AVI ........................................164 Bandwidth ..............................139 BareTail..................................158 bookmarks compartilhados........ 62 Branch ...................................146 Browser Recorder....................134 bug ......................................... 16 bug tracking system ................. 15 Build ....................................... 46 Burp Suite ..............................163 calendrio................................ 57 campos personalizados ............. 27 Camstudio ..............................164 Categorias ............................... 35 Change Log ............................. 26 Checkout ................................145 Class Path................................ 85 clickAndWait ............................ 78 cliente ..................................... 51 cobertura dos testes ................. 68 combinao dupla ...................162 Commit ..................................145 componente............................. 35 Concurrent Connections ...........139 Conditional Goto .....................107 Control Panel ........................... 71 controle de verses .................143 Cooldown ...............................139 cross-site scripting.................... 77 Custom Component Resolver ..... 89 CVS ....................................... 144 Data Generator....................... 167 Delay ..................................... 121 depurar.......... 76, 84, 86, 102, 168 DHTML .................................... 69 Diff ........................................ 146 divulgao de notcias ............... 25 Duration Assertion .................. 119 e-book ..................................... 12 endpoints ................................. 96 Especificao de Requisito ......... 32 Especificao de Teste .............. 35 estresse ................................. 111 fases........................................ 51 ferramentas comerciais similares .......................................... 174 Ferramentas de apoio ............. 157 Finalizao ............................... 94 Firebug .................................. 168 Firefox . 69, 71, 74, 75, 76, 77, 168 Fixture ..................................... 94 Fixtures.................................... 86 Flash...................................... 164 FTP........................................ 111 Gerncia de Configurao ........ 143 gerenciamento de requisitos ...... 31 gesto de defeitos .................... 15 gesto de projetos .................... 50 gesto de testes ....................... 28 GET ....................................... 115 Groovy Script.......................... 107 HeavyLoad ............................. 159 HTTP Authorization Manager.... 127 HTTP Proxy Server.................. 115 HTTP Response Code .............. 125 Importao ............................ 148 Inicializao.............................. 94 instncia do navegador ............. 79 Internet Explorer ....... 69, 134, 135 Java Script ............................... 69
183
JMeter....................................111 JUnit ....................................... 93 Jython ..................................... 84 keyword .................................. 40 Liberao................................145 lista de discusso ..................... 58 Listeners.................................122 Loop Count .............................114 Main Class ............................... 85 MakeLogicTail .........................158 Mantis ..................................... 16 Marathon................................. 84 Marathon Control Center........... 91 matriz de rastreabilidade........... 29 menus de contexto.....75, 147, 153 mtricas .................................. 48 Microsoft ................................132 Milestones ............................... 46 MindMap ................................169 modo interativo........................ 80 Module ...................................146 Modules................................... 86 mdulos reutilizveis ........... 88, 91 Mdulos reutilizveis................. 84 MWSnap.................................165 nveis de prioridade .................. 45 Open Source2, 5, 6, 7, 10, 12, 13, 14, 16, 29, 51, 68, 69, 84, 96, 110, 111, 127, 144, 147, 158, 163, 164, 166, 167, 168, 169, 171, 172, 173, 174, 176 Page Groups ...........................140 pairwise..................................162 palavra-chave .......................... 40 pausar................................ 76, 88 Perforce Visual Merge Tool.......166 performance ...........................111 php-Collab ............................... 51 PICT ......................................162 plataforma WEB ......................110 PMBOK .................................... 50 ps-processadores...................111 POST......................................115 pr-processadores ...................111
PrintScreen............................. 165 prioridade ................................ 16 Process Explorer ..................... 160 processo de teste...................... 28 project management system...... 50 projeto..................................... 50 Property Transfer.................... 107 Python ..................................... 84 qualidade ................................. 13 Ramo..................................... 146 Ramp-Up................................ 114 Record ......... 88, 91, 133, 134, 139 registro de bugs ....................... 20 relatrios.................................. 48 Release .................................. 145 Remote Control ........................ 79 repositrio.............................. 144 repositrios de ferramentas Open Source ................................ 172 Request Editor.......................... 99 requisies de suporte............... 66 requisies HTTP .................... 111 requisitos ................................. 32 Response Assertion ................. 118 resultado da execuo............... 47 Reviso .................................. 144 ROI ......................................... 14 Ruby........................................ 81 Scheduler............................... 114 Schema Compliance ................ 103 Screen Grab Pro ..................... 165 Selens .................................... 71 Selenese .................................. 71 Selenium.................................. 69 Selenium Core .......................... 70 Selenium IDE ........................... 74 Selenium RC............................. 79 Selenium Server........................ 79 Setup....................................... 94 severidade ............................... 16 Simple Contains ...................... 103 Simple NotContains................. 104 Simple Object Access Protocol.... 96 site do projeto .......................... 64
184
Slow Play................................. 93 snapshot ................................161 SOAP ...................................... 96 SOAP Fault .............................104 SoapUI .................................... 96 SSL/HTTPS .............................117 sumrio dos bugs ..................... 24 Swing...................................... 84 syntax highlight........................ 96 SysInternals............................160 tabelas HTML........................... 69 Tail for Win32 .........................158 tarefas .................................... 54 TCO ........................................ 14 TCPMon..................................163 Teardown ................................ 94 tempo estimado ....................... 56 Test Cases............................... 39 test management system .......... 28 Test Step................................101 Test Suite Runner ...................101 Test Suites ......................... 29, 42 teste de software ....................178 testes de performance .............110 testes de regresso .................. 68 testFrame ................................ 72 TestLink .................................. 29 TestRunner.............................. 70 Thread Group .........................113 time do projeto ........................ 51
Timer..................................... 121 TortoiseCVS............................ 147 TrafficEmulator ....................... 159 Violet ....................................... 87 virtualizao ........................... 161 virtualizado............................. 161 VirtualPC ................................ 161 VMWARE................................ 161 volume................................... 111 Warmup................................. 139 WAS ...................................... 132 WEB Application Stress............ 132 WEB Service Description Language ............................................ 96 WEB Services ........................... 96 Websites .................................. 54 Wink...................................... 164 WinMerge .............................. 166 worflow.................................... 16 WorkBench............................. 115 Workspace ............................. 145 Wrapper API............................. 79 WSDL ...................................... 96 XAMMP .........................17, 30, 52 XML ......................................... 96 XmlHttpRequest........................ 80 XPATH ..................................... 96 XPath Match ........................... 104 XSS ......................................... 77
185