SeleniumTG: UMA FERRAMENTA WEB PARA GERAÇÃO DE SCRIPTS DE TESTE. Trabalho de Conclusão de Curso Engenharia da Computação



Documentos relacionados
DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

APLICATIVO WEB PARA O SETOR DE EXTENSÃO IFC VIDEIRA

Desenvolvimento Ágil de Software

Plano de Gerenciamento do Projeto

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Desenvolvendo Websites com PHP

4 O Workflow e a Máquina de Regras

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI

Universidade Federal Rural de Pernambuco. Bacharelado em Sistemas de Informação. Disciplina: Análise e Projeto de Sistemas de Informação

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Versão 7 TraceGP Ágil

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Manual do usuário - Service Desk SDM - COPASA. Service Desk

Dicas para usar melhor o Word 2007

Noções de. Microsoft SQL Server. Microsoft SQL Server

Manual de Utilização do Zimbra

SUAP Módulo Protocolo Manual do Usuário DTI DIRETORIA DE TECNOLOGIA DA INFORMAÇÃO SEÇÃO DE PROJETOS, SISTEMAS E PROCESSOS DE NEGÓCIO

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Ajuda ao SciEn-Produção O Artigo Científico da Pesquisa Experimental

Guia Site Empresarial

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Engenharia de Requisitos Estudo de Caso

Feature-Driven Development

02 - Usando o SiteMaster - Informações importantes

Sistema de Gerenciamento Remoto

Desenvolvendo para WEB

Sistema de Controle de Solicitação de Desenvolvimento

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Projeto de Sistemas I

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

SIGLA - Sistema Integrado de Gestão Legislativa e Administrativa

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

MVC e Camadas - Fragmental Bliki

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Manual de Utilização

Registro e Acompanhamento de Chamados

BEM-VINDO AO dhl PROVIEW

Operações de Caixa. Versão 2.0. Manual destinado à implantadores, técnicos do suporte e usuários finais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Manual das funcionalidades Webmail AASP

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Sistema de Chamados Protega

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Google Drive. Passos. Configurando o Google Drive

Em 2012, a Prosoft planejou o lançamento da Versão 5 dos seus produtos.

CONSTRUÇÃO DE BLOG COM O BLOGGER

Manual UNICURITIBA VIRTUAL para Professores

Primeiros Passos para o Simulador de Ações do FinanceDesktop. Parte A INICIANDO E CONFIGURANDO (5 passos)

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

Gestão inteligente de documentos eletrônicos

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Microsoft Office PowerPoint 2007

Cenários do CEL. Acessar ao sistema

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

ENGENHARIA DE SOFTWARE I

1. INTRODUÇÃO 3 2. ESCOPO DO SERVIÇO DE CUSTOMIZAÇÃO 3

Planejando o aplicativo

Programando em PHP. Conceitos Básicos

"Manual de Acesso ao Moodle - Discente" 2014

Manual do Almoxarifado SIGA-ADM

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

MANUAL DO PVP SUMÁRIO

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula:

Semântica para Sharepoint. Busca semântica utilizando ontologias

Aula 1: Noção Básica e Criação de Tabelas.

Manual Operacional SIGA

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

Universidade da Beira Interior

2 Diagrama de Caso de Uso

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

AULA 3 FERRAMENTAS E APLICATIVOS DE NAVEGAÇÃO, DE CORREIO ELETRÔNICO, DE GRUPOS DE DISCUSSÃO, DE BUSCA E PESQUISA (PARTE II)

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Manual do sistema SMARsa Web

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

E&L Protocolo, Documentos Eletrônicos e Processos Perguntas Frequentes

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Manual Operacional SIGA

Footprints Service Core. Manual de uso do sistema

INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8

Manual Captura S_Line

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

Manual de configuração do sistema

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

Manual do usuário. v1.0

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Transcrição:

SeleniumTG: UMA FERRAMENTA WEB PARA GERAÇÃO DE SCRIPTS DE TESTE Trabalho de Conclusão de Curso Engenharia da Computação Eduardo Augusto de Oliveira Nazaré Orientador: Prof. M.Sc. Gustavo Carvalho

Eduardo Augusto de Oliveira Nazaré SeleniumTG: UMA FERRAMENTA WEB PARA GERAÇÃO DE SCRIPTS DE TESTE Monograa apresentada como requisito parcial para obtenção do diploma de Bacharel em Engenharia da Computação pela Escola Politécnica de Pernambuco - Universidade de Pernambuco Orientador: Prof. M.Sc. Gustavo Carvalho Universidade de Pernambuco Escola Politécnica de Pernambuco Graduação em Engenharia da Computação Recife - PE, Brasil 23 de maio de 2012

(Dedicatória) Dedico este trabalho a todos aqueles que dedicam sua vida na luta pelo direitos humanos e coletivos. Dedico este trabalho a todos aqueles que compreendem que um mundo melhor se constrói com uma outra sociedade, justa e igualitária. À você que não conheci e conheço tanto, Gregório. "Gostaria de ser lembrado como o homem que foi amigo das crianças, dos pobres e excluídos." Gregório Bezerra

Agradecimentos Em O Avesso das Coisas, o poeta Carlos Drummond de Andrade escreveu: "A amizade é um meio de nos isolarmos da humanidade cultivando algumas pessoas.". E ele está certo, não pelo fato de nos identicarmos mais com umas pessoas do que outras, mas pelo fato de realmente deixarmos de nos identicar com outrem em favor de pequenos círculos. Dos pequenos círculos de outros, faço o meu grande círculo. Faço o meu primeiro agradecimento àqueles que, anônimos, não costumam ser lembrados no resultado de anos de esforços na academia: Aos operários, que construíram a Universidade sob o seu suor e a qual única placa que lhes sobra, injustamente, são póstumas. Aos garis, que limpam todo dia nossas vergonhas cotidianas da rua, ignorados e despercebidos na nossa correria do dia-a-dia. Aos rodoviários, que me levaram a Universidade todo dia. Que acordam muito antes do amanhecer e dormem muito depois do anoitecer. Aos servidores públicos da POLI, que mantêm a máquina tão vital à Universidade pública. Aos meus amigos de livros e sonhos: o esforço valeu a pena. Quando uma causa é justa, ela não deve ser abandonada. Eu não baixei guarda, apenas juntei forças para o dia seguinte. Aos meus professores que sei que dedicam todos os seus dias aos seus alunos e à ciência. Faço reconhecer o esforço que fazem para manter e melhorar a qualidade do nosso curso. A minha mãe, que das adversidades da vida fez sua força. Ela que me lançou escolhas e me deu suporte na minha decisão.

Resumo Automatização de testes de software é um desejo constante nas empresas de desenvolvimento de software e a plataforma Selenium é um meio para se dar os primeiros passos nessa direção. Contudo, é demasiado custoso manter scripts de teste, devida a mudança de requisitos, tecnologia, etc. Este trabalho apresenta uma ferramenta web de criação de scripts de teste para o Selenium, com seu desenvolvimento gerenciado com metodologia SCRUM. A ferramenta obtém dos uxos dos casos de uso de um projeto os cenários de teste e, destes, os casos de teste em script HTML para o Selenium. Palavras-chave: teste, selenium, automação, web, regressão, reteste, ferramenta, caso de uso, scrum.

Abstract Automated software testing is a constant desire in business software development and platform Selenium is a means to take the rst steps in that direction. However, it is too costly to maintain test scripts, due to changing requirements, technology, etc.. This paper presents a web tool for creating test scripts for Selenium, with its managed development with SCRUM methodology. The tool gets the ow of use cases in a project the test scenarios, and of these test cases in HTML script for Selenium. Keywords: test, selenium, automation, web, regression, retest, use case, scrum.

Sumário Lista de Figuras p. ix Lista de Tabelas p. xi Lista de Abreviaturas e Siglas p. xi 1 Introdução p. 12 1.1 Qualicação do Problema......................... p. 12 1.2 Objetivos.................................. p. 15 1.2.1 Objetivos Especícos........................ p. 15 1.3 Resultados e Impactos Esperados..................... p. 16 1.4 Estrutura da Monograa.......................... p. 16 2 Referencial Teórico p. 17 2.1 Conceitos Chaves.............................. p. 17 2.1.1 Teste de Software.......................... p. 17 2.1.1.1 Teste Funcional...................... p. 18 2.1.2 Teste Automatizado........................ p. 18 2.1.2.1 Selenium......................... p. 19 2.2 Trabalhos Relacionados........................... p. 21 2.2.1 UCT - Use Case Tester....................... p. 22 2.2.2 TaRGeT............................... p. 22 3 Método de Pesquisa p. 24

3.1 Qualicação do Método de Pesquisa.................... p. 24 3.2 Etapas do Método de Pesquisa....................... p. 26 3.3 Limitações da Pesquisa........................... p. 27 4 Resultados p. 28 4.1 Requisitos.................................. p. 28 4.2 Backlog................................... p. 28 4.3 Protótipos de Tela............................. p. 31 4.4 Casos de Uso................................ p. 31 4.4.1 Descrição de Casos de Uso..................... p. 31 4.5 Arquitetura e Padrões de Projeto..................... p. 36 4.6 Diagrama Conceitual............................ p. 38 4.7 Diagrama Entidade-Relacional....................... p. 40 4.8 Tecnologia.................................. p. 40 4.8.1 Java Web.............................. p. 40 4.8.2 JavaServer Faces.......................... p. 42 4.8.3 Tomcat............................... p. 42 4.8.4 Hibernate.............................. p. 43 4.9 A Ferramenta SeleniumTG......................... p. 43 4.9.1 Utilização.............................. p. 45 5 Considerações Finais p. 51 5.1 Conclusões.................................. p. 51 5.2 Trabalhos Futuros.............................. p. 52 Referências p. 53 Apêndice A -- Telas Prototipadas p. 55

Lista de Figuras 1 Custo do teste manual VERSUS tempo de projeto............ p. 14 2 Custo de testes automáticos e manuais ao longo do tempo....... p. 14 3 Tela do Test Runner sendo executado no navegador Firefox....... p. 22 4 Tela da TaRGeT............................... p. 23 5 Representação do ciclo da metodologia SCRUM............. p. 26 6 Diagrama de casos de uso da ferramenta................. p. 31 7 Representação do padrão DAO....................... p. 36 8 Representação do padão MVC....................... p. 37 9 Diagrama de Classes............................ p. 39 10 Diagrama Entidade-Relacional....................... p. 41 11 Diagrama de interação de tecnologias................... p. 44 12 Diagrama de uxo da ferramenta..................... p. 44 13 Tela inicial da ferramenta......................... p. 45 14 Tela de gerência de projetos........................ p. 46 15 Tela de gerência de casos de uso...................... p. 46 16 Popup de adição de passo a um uxo................... p. 47 17 Popup de edição de um uxo alternativo................. p. 47 18 Tela de geração de suítes.......................... p. 49 19 Tela de gestão das frases.......................... p. 50 20 Protótipo da tela inicial da ferramenta.................. p. 55 21 Protótipo da tela de manutenção dos projetos.............. p. 56 22 Protótipo da tela de manutenção dos Casos de Uso........... p. 57

23 Protótipo da tela de criação dos cenários quando integrado com algoritmo..................................... p. 58 24 Protótipo da tela de criação dos casos de teste e das suítes de teste.. p. 59 25 Protótipo da tela de manutenção das frases utilizadas nos casos de uso. p. 60

Lista de Tabelas 1 Técnicas de teste funcional......................... p. 19 2 Exemplo de script de teste Selenium em HTML.............. p. 21

Lista de Abreviaturas e Siglas Ajax DAO FDD HTML HTTP JDBC JSF J2EE J2SE MVC PO Pojo TDD WAR Web XHTML XML Asynchronous Javascript and XML Data Access Object Feature Driven Development Hypertext Markup Language Hypertext Transfer Protocol Java Database Connectivity Java Server Faces Java 2 Platform, Enterprise Edition Java 2 Platform, Standard Edition Model-view-controller Product Owner Plain Old Java Objects Test Driven Development Web Archive World Wide Web Extensible Hypertext Markup Language Extensible Markup Language

12 1 Introdução 1.1 Qualicação do Problema Software tem se tornado não só importante, mas imprescindível para o desenvolvimento da sociedade moderna. Cada vez mais, a sociedade está dependente de sistemas de informação para realizar desde a atividades simples e despercebidas, como controlar um micro-ondas, às complexas e de alta responsabilidade, como controlar um avião. Tendo contato com variados sistemas, os usuários e clientes de produtos da tecnologia da informação passaram a exigir de forma mais criteriosa a qualidade dos produtos que usam. Deste modo, as empresas desenvolvedoras são obrigadas a cada vez mais serem minuciosas e criteriosas com a qualidade de seus produtos. Falhas, antes corriqueiras em software de décadas atrás, não são mais relevadas pelos usuários, e são também levadas em conta na hora de qualicar e escolher um software. "Sosticação e complexidade podem causar enormes problemas para quem precisa construir sistemas complexos." (PRESSMAN, 2010). Dentro da área de qualidade de software e suas subáreas e denições, a disciplina de testes (RATIONAL, 2012) tem crescido a passos menores do que deveria; em parte pela falta de prossionais qualicados e em parte pela ainda fraca cultura de testes nas empresas. De acordo com AQUINO (2012), "as desculpas utilizadas para a não realização dos testes nas empresas são muitas"além de que "a boa notícia é de que há uma expectativa de, nos próximos anos, as empresas mudarão de forma radical a sua postura em relação ao teste de software. Isso porque, a pressão dos usuários por mais qualidade, somada à demanda dos acionistas por produtividade, tende a transformar a questão em uma condição essencial a qualquer projeto de TI.". Tendo em vista tal espaço para crescimento, as empresas que investem em qualidade em geral por meio da disciplina de testes têm tido frutos visíveis e não costumam voltar atrás no investimento, mas sim buscar meios de se desenvolver. AQUINO (2012)

1.1 Qualicação do Problema 13 comenta ainda que a economia foi de até 20 vezes para aqueles que acharam defeitos ainda na fase de levantamento de requisitos, de acordo com pesquisa feita com participação de empresas como IBM, GTE e TRW. PRESSMAN (2010) também observa que "Hoje em dia uma enorme indústria de software tornou-se fator dominante nas economias do mundo industrializado.". Sendo assim, um software de qualidade torna-se fator imprescindível para aqueles que querem posicionar-se a frente do mercado, quer como usuários de soluções, quer como produtores destas soluções. São os dois lados trabalhando mutuamente e interferirindo positivamente no processo de produção de software. Então, ao encontro desta necessidade de mercado é que temos a esperança nos testes: ampliar garantias em busca da excelência do produto. Sobre isso, acrescenta BASTOS (2007) que as expectativas sobre o teste só podem ser alcançadas quando este é movido sobre um processo próprio, com todas as características de qualquer outro processo, respeitadas suas particularidades. O teste de software deve ser movido pelos requisitos do cliente e o bom teste é aquele que encontra defeitos (PRESSMAN, 2010). Mas considerando que a complexidade dos programas tem crescido, torna-se inviável buscar para a grande maioria dos sistemas atuais cobrir 100% das possibilidades de uxos e estados. Para isso, devemos utilizar de técnicas próprias de testes que se baseiam em opções representativas dessas possibilidades, buscando diminuir o escopo de teste mas minimizando o prejuízo sobre o resultado (BASTOS, 2007). Ao nal, teremos um número reduzido de instâncias de teste (casos de teste) onde então daremos o foco de nossa vericação e análise. Além de técnicas de redução do escopo, a disciplina de testes utiliza de métodos próprios de execução do trabalho. A vista do usuário, os testes funcionais (BASTOS, 2007) focam no comportamento do sistema e procuram vericar os requisitos. Por si, a natureza destes testes é humana e manual e herda todas as características danosas da operação: custo (recursos humanos, tempo de execução), dispersão do testador, exaustão física, etc. Na Figura 1, temos a representação gráca do custo de tempo dedicado ao reteste de execução manual ao longo de um projeto. Contudo, a automação da execução dos testes busca reduzir o esforço e facilitar o trabalho. Com a popularidade da gestão ágil de projeto com (PRESSMAN, 2010), reforça-se a necessidade de retestar casos de teste passados pela justicativa que a unidade de iteração pode promover mudanças substanciais no sistema, invalidando o resultado anterior dos testes. A essa operação repetitiva e retroativa chama-se teste de regressão. ( BASTOS,

1.1 Qualicação do Problema 14 Figura 1: Custo do teste manual VERSUS tempo de projeto. [Fonte: (SARTORELLI, 2007)] 2007) O custo já visto anteriormente para a execução do teste de regressão por via manual é crescente ao longo do projeto, podendo se tornar um fator de insucesso do mesmo. Já o custo da execução automática destes costuma manter-se dentro de uma média inferior a manual, visto a facilidade e versatilidade da execução dos casos de teste automatizados (scripts de teste). Mostra SARTORELLI (2007), na Figura 2, que o teste automático tem menor custo quando o reteste é constante e necessário. Figura 2: Custo de testes automáticos e manuais ao longo do tempo. [Fonte: (SARTORELLI, 2007)] Por outro lado, um problema enfrentado pelas empresas é o alto custo para formação

1.2 Objetivos 15 especializada de uma equipe de automação de testes e ainda pode-se acrescentar a variedade de propostas de ferramentas. Das mais aceitas pelo mercado para a web (World Wide Web), o Selenium (SELENIUMHQ, 2012) é uma das propostas mais utilizadas (PA- TUCI, 2010) em todo o mundo para testes de web funcionais, contando com um conjunto de artifícios poderoso. Uma limitação a ser observada para a adoção do Selenium permeia duas esferas. A primeira refere-se à criação dos scripts de teste que quase sempre utiliza da gravação de casos de testes manuais pelo plugin com interface gráca Selenium-IDE (próprio do framework Selenium), tornando-se dispendiosa. "Em alguns casos, muito especícos, o Record and Replay é muito bem aproveitado, mas ele não deve ser usado em projetos que sofrerão mudanças com o tempo", RIBEIRO (2011). A segunda se refere a manutenção dos scripts de teste gerados, já que torna-se um árduo trabalho editar cada script de teste. Ainda observa RIBEIRO (2011) que o tempo de refatoramento de scripts ruins é cerca de dez vezes o tempo de planejamento. Este trabalho propõe, portanto, uma ferramenta que estreite a distância entre a equipe de testes e a automação. Tal ferramenta busca facilitar a criação de scripts de testes automáticos por meio de uma interface amigável onde, com o mínimo de conhecimento em testes, é possível construir scripts a partir de descrições em linguagem natural associadas a passos de scripts de testes. 1.2 Objetivos O objetivo geral deste trabalho é desenvolver uma ferramenta web capaz de construir, de maneira facilitada e automática, scripts de teste para a plataforma Selenium a partir de denições textuais dos passos de casos de uso. 1.2.1 Objetivos Especícos Em particular, a ferramenta pode ter seu objetivo geral desdobrado nos seguintes objetivos especícos: 1. Permitir o mapeamento entre frases e comandos Selenium (i.e., selenese, comandos próprios do Selenium); 2. Utilizando as frases mapeadas, permitir descrever o comportamento de um software através de casos de uso que possuem uxos principais e alternativos;

1.3 Resultados e Impactos Esperados 16 3. Considerar os cenários de teste identicados a partir dos uxos principais e alternativos dos casos de uso; Tal ferramenta deverá ser fácil de ser operada por prossionais de testes, assim, atuando como um facilitador entre a especicação de requisitos e a sua vericação. 1.3 Resultados e Impactos Esperados O principal resultado deste trabalho é o desenvolvimento de uma ferramenta web que permitirá a geração e manutenção de scripts Selenium, a partir de descrições textuais dos passos de casos de uso. Espera-se que a ferramenta atue como um facilitador no processo de automação de testes. O mercado deve enxergar que a automação de testes não é uma atividade distante, mas sim viável mesmo no contexto de pequenas empresas. Com a utilização da ferramenta, espera-se que o custo para manutenção da automação seja reduzido, estimulando, assim, a sua adoção. Essa diminuição de custos se dará pela facilidade de uso da ferramenta, com a possibilidade de gerar e, por conseguinte, manter mais facilmente scripts de teste para Selenium. 1.4 Estrutura da Monograa A monograa possui os seguintes capítulos: Capítulo Capítulo Capítulo 2: apresenta os conceitos relacionados ao desenvolvimento deste trabalho, bem como trabalhos relacionados. 3: apresenta a metodologia utilizada para o desenvolvimento deste trabalho bem como limitações da pesquisa. 4: apresenta detalhes técnicos do desenvolvimento da ferramenta fruto deste trabalho, como requisitos e particularidades de implementação. Capítulo 5: conclui este trabalho e apresenta trabalhos futuros.

17 2 Referencial Teórico Este capítulo apresenta os principais conceitos relacionados ao desenvolvimento deste estudo, assim como outros trabalhos relacionados a esta iniciativa. 2.1 Conceitos Chaves 2.1.1 Teste de Software Teste de software é uma disciplina responsável por prover serviços para outras disciplinas, como requisitos, análise e implantação, enfatizando seu trabalho na avaliação da qualidade do produto de software (RATIONAL, 2012). Por meio de técnicas próprias de checagem, o teste visa vericar aspectos de requisito e conferir a qualidade do software. Avalia-se o quanto o software está preparado para lidar com situações previstas e não previstas de funcionamento, desde seu ambiente e utilização, até situações extremas. É no teste que situações de exceção deixam evidentes pontos fracos no software e onde se tem desde uma avaliação parcial a uma integral de como o sistema corresponde ao esperado. Os testes não devem ser deixados para o último momento no desenvolvimento, mas serem utilizados desde o início do ciclo de vida de um software. Atualmente aceitam-se quatro fases de nível de teste: (BASTOS, 2007) Teste Unitário: feito normalmente pelos desenvolvedores sobre pequenas partes do código. Teste de Integração: aplicado sobre a junção das pequenas partes do código. Teste de Sistema: visa conferir o sistema como um todo. Teste de Aceitação: teste nal do sistema para questões de funcionalidade e usabilidade.

2.1 Conceitos Chaves 18 Existem duas abordagens de teste de software: Caixa-preta onde não se tem conhecimento do código-fonte ou da minuciosidade de sua implementação. Caixa-branca onde se tem acesso livre ao código fonte e detalhes de implementação. Da primeira abordagem, as técnicas de teste funcional são seus maiores representantes, pois se preocupam em garantir o atendimento aos requisitos, ou seja, que os requisitos estão corretamente codicados (BASTOS, 2007), sem se preocupar com características de implementação. Muito se confunde caixa-preta com teste funcional, mas na verdade os dois têm escopos diversos de análise. Há de se observar que alguns autores consideram uma terceira abordagem, chamada Caixa-cinza. Nesta abordagem, há a combinação das outras duas, tendo o testador acesso ao código-fonte e permitindo, assim, priorizar os testes de acordo com a implementação, podendo priorizar uxos, condições e situações. 2.1.1.1 Teste Funcional Por priorizar o software em suas características tanto de requisitos quanto de qualidade, de acordo com PRESSMAN (2010), a técnica de teste funcional busca defeitos em, basicamente, 5 categorias: 1. funções incorretas ou omitidas. 2. erros de interface. 3. erros de estrutura de dados ou de acesso à base de dados externa. 4. erros de comportamento ou desempenho. 5. erros de iniciação e término. Dividindo-se ainda o teste funcional em outras técnicas mais especícas e objetivas, a técnica de teste funcional desdobra-se, resumidamente, na Tabela 1. 2.1.2 Teste Automatizado A automação de testes é a mecanização do trabalho repetitivo relacionado aos testes. Queira para planejar, gerir, executar ou analisar, a automatização dos testes busca reduzir

2.1 Conceitos Chaves 19 Tabela 1: Técnicas de teste funcional. [Fonte: (BASTOS, 2007)] Técnica Descrição Exemplo Requisitos Regressão Erro no manuseio (usabilidade) Suporte manual Integração Controle Paralelo Determinar se o sistema é executado conforme o especicado Vericar se alguma coisa mudou em relação ao que já estava funcionando corretamente Prevenir ou detectar erros para depois consertá-los Preparar os dados para processamento e usar os dados fornecidos pelo sistema Assegurar que a interconexão entre as aplicações funciona corretamente Analisar que a interconexão entre as aplicações funciona corretamente Comparar resultados do aplicativo atual com a versão anterior Validação do especicado versus implementado. Vericação das políticas e dos regulamentos Mudança de segmentos funcionais do sistema. Mudança manual de procedimentos corretos Falha introduzida no teste. Erro reincidente Informação de input. Tomada de ações baseadas nas informações contidas nos relatórios Cenário de teste de integração Cenário de teste de integração Comparação dos resultados obtidos com as versões nova e antiga para garantir a equivalência esforços e dar respostas mais rápidas a atividade de testes, reduzindo custos. Em muitos casos é imprescindível para se chegar a resultados rápidos e claros. Contudo, se tratadas sem a devida análise, considerações e respeito aos limites, podem corresponder ao inverso do esperado, trazendo mais prejuízos do que benefícios. Da automação de testes, a automação pela utilização de ferramentas de apoio é uma das principais alternativas. Para CAETANO (2007), ferramentas servem para dar suporte a todas as atividades relacionadas ao ciclo de vida de desenvolvimento de software: da concepção à implantação. Fortalece e pondera BASTOS (2007), que veículo para executar um processo de teste, a ferramenta é um recurso para o testador e, sozinha, é insuciente para conduzir todo o teste. (...) o martelo é apenas uma ferramenta, que, sem a técnica para seu uso, nem sempre será ecaz. É na execução dos testes que a automação se torna mais evidente. Para os software em camadas, existem uma innidade de ferramentas para cada uma das camadas. Mas é na camada de apresentação que os testes funcionais permeiam, em testes como usabilidade, interface, funcionalidade, etc. 2.1.2.1 Selenium Selenium é uma suíte de ferramentas para automação de testes web (SELENIUMHQ, 2012). Com ela é possivel desde gravar ações do usuário e vericar informações da tela,

2.1 Conceitos Chaves 20 como também programar suítes de teste com integração em várias linguagens. "O Selenium é uma ferramenta Open Source usada para a criação de testes de regressão automatizados para aplicações web. O Selenium foi escrito utilizando Java Script e DHTML. Em função disso, os testes rodam diretamente a partir do navegador." ( CAE- TANO, 2007). Por meio de uma linguagem própria de comandos, incluindo ações de usuário e vericações do sistema, é que o Selenium executa seus testes. Esta "linguagem"própria é chamada selenese. Na verdade, trata-se de um conjunto de comandos que incluem actions (ações do usuário, como clicar em um botão), accessors (funções de vericações do tipo 'get' e 'is', como pegar o valor de um campo) e assertions (funções de armação que podem falhar o teste, como conferir se o título de uma página está correto). Os dois últimos podem inclusive ser criados dinamicamente, de acordo com a necessidade do testador quando utilizada alguma linguagem de programação suportada pelo Selenium. O Selenium conta, atualmente, com um conjunto que inclue quatro ferramentas principais: Selenium 2: é o projeto futuro do Selenium, que se encontra ainda em fase de desenvolvimento. Integra características antigas da suíte com uma maior exibilidade por meio da fusão com o WebDriver 1. Selenium IDE: é um plugin para o navegador Firefox. Registra e reproduz interações com o navegador (como click em link e preenchimento de formulários) e facilita a alteração e adaptação dos scripts. Selenium 1: resulta da especialização do Selenium Remote Control (Selenium RC). Foi o principal projeto do Selenium, até a fusão com o WebDriver. É um servidor escrito em Java, necessário para execução de scripts de teste do Selenium RC, suportando as linguagens de programação Java, Javascript, Ruby, PHP, Python, Perl e C#. Selenium Grid: diferente do Selenium 1, permite que sejam executados múltiplos testes em paralelo, em diferentes máquinas e sistemas operacionais, utilizando processamento em paralelo. O core do Selenium funciona com base na selenese. Quando chamada para executar scripts HTML, o Selenium faz deploy do arquivo HTML, buscando, entre outras coisas, 1 WebDriver: projeto da Google.

2.2 Trabalhos Relacionados 21 pelo endereço raiz de execução do script e os passos a serem executados, indiferente se são ações do usuário ou comandos de vericação e validação. Um exemplo de um script de teste pode ser visto na Tabela 2. Este exemplo tem como objetivo abrir a tela com informações sobre leitos do Portal de Dados Abertos do Governo de Pernambuco. Tabela 2: Exemplo de script de teste Selenium em HTML. Busca por "leitos" open http://www.dadosabertos.pe.gov.br type id=tbbuscainput leitos clickandwait id=btbusca Na primeira linha da Tabela 2, temos o nome do caso de teste que serve como referencial para manutenção e visualização do arquivo. Nas linhas seguintes temos as seguintes ações, em sequência: 1. Abertura da página do Portal de Dados Abertos. 2. Escrita do texto "leitos"no campo de busca. 3. Clique no botão de submissão da busca e aguardo da resposta. Ao nal da execução do script de teste, temos o navegador na tela esperada. Esse script é simples e pode ser extendido, fazendo validação de alguns campos, valores, etc. O script de exemplo pode ser executado no Selenium de várias formas. Pelo Selenium 1, há opção de usar o Test Runner, mostrado na Figura 3, que é uma interface web para rodar suítes de teste HTML. Deste modo, o Selenium é um dos automatizadores de teste funcional web mais utilizados em todo o mundo (PATUCI, 2010), sendo foco de pesquisa deste trabalho. 2.2 Trabalhos Relacionados Na direção deste trabalho, outras ferramentas buscaram automatizar a geração e manutenção de testes, com distintas metodologias. Contudo, poucas mostraram-se comparáveis a este trabalho. Esta seção apresenta algumas destas ferramentas disponíveis.

2.2 Trabalhos Relacionados 22 Figura 3: Tela do Test Runner sendo executado no navegador Firefox. [Fonte: (SELENIUMHQ, 2012)] 2.2.1 UCT - Use Case Tester Em SILVA (2011) tem-se uma avaliação da UCT - Use Case Tester (CARNIELLO ADRIANA; JINO, 2005), uma ferramenta de cobertura de testes preparada para suportar mudanças. A ferramenta resume-se em três funcionalidades: determinação dos requisitos, simulação do teste e análise dos resultados. Baseada por critérios dados pelo testador, são criados os casos de teste e a ferramenta percorre os grafos de possibilidades de testes e avalia inconscistências. A UCT não gera casos de teste e muito menos scripts de teste, funciona como um avaliador de requisitos pelos uxos encontrados para o caso de uso, podendo simular a execução dentro das possibilidades de caminhos dentro dos uxos. Logo, não supre as necessidades impostas nesse trabalho por não gerar casos de teste e muito menos os scripts de teste para o Selenium. 2.2.2 TaRGeT A TaRGeT (Test and Requirements Generation Tool) tem como objetivo a criação de cenários de teste com base em um documento de casos de uso, formatado a um modelo XML. Com esta ferramenta é possível criar casos de teste rapidamente e com ltros variados, como cobertura e requisitos, por meio de uma interface para desktop (SIQUEIRA,

2.2 Trabalhos Relacionados 23 2010). Ela é open-source e conta com módulos muito úteis que foram agregados com o tempo, de acordo com a necessidade das empresas e pesquisas que com ela trabalharam e acabaram contribuindo com a ferramenta. Seus principais módulos são: Editor de Caso de Uso: funciona como um facilitador de edição e também adição dos casos de uso para um projeto nela incorporado. Controlled Natural Language: é um módulo capaz de identicar ambiguidades descritas nos casos de uso, utilizando uma linguagem natural controlada. On The Fly Generation: é o principal módulo, ou core da ferramenta, onde os casos de teste são gerados de acordo com ltros diversos, como caso de uso, propósito, cobertura, etc. A Figura 4 mostra a TaRGeT em operação em um projeto ctício com a tela de geração de casos de teste e seus diversos ltros. Figura 4: Tela da TaRGeT. Ela é uma ferramenta robusta para geração e manutenção de casos de teste. Das ferramentas apresentadas, a que mais se assemelha com o proposto por este projeto. Contudo, toda a automação da ferramenta é para testes manuais, não tendo integração para criação de scripts de teste.

24 3 Método de Pesquisa As próximas seções descrevem a metodologia aplicada no desenvolvimento deste trabalho. 3.1 Qualicação do Método de Pesquisa O desenvolvimento da ferramenta proposta por este trabalho será guiado por um processo de gerenciamento próximo ao SCRUM, já que tem como proposta ser "um processo ágil que permite manter o foco na entrega do maior valor de negócio, no menor tempo possível." (BROD, 2012). Essa metodologia visa gerir projetos de maneira ágil, com retorno rápido ao cliente e focado no que o cliente tem como mais prioritário para o projeto (por exemplo, alguma funcionalidade). Não deve-se confundir metodologia de gerência ágil com metodologia de desenvolvimento ágil. O SCRUM é uma metodologia de gerência ágil de projeto, podendo ser aplicado, em tese, a qualquer projeto (de software ou não) onde uma metodologia ágil torne-se interessante. Já as metodologias de desenvolvimento ágil como TDD (Test Driven Development) e FDD (Feature Driven Development) (PRESSMAN, 2010), visam trazer agilidade ao desenvolvimento de um software, sendo íntimamente ligado a disciplina de implementação (RATIONAL, 2012) e com foco em técnicas ágeis para implementação. Como as duas têm como característica a agilidade, são fortes candidatas a serem utilizadas em conjunto, ou seja, pode-se usar SCRUM com FDD. Pela metodologia aplicada, consideramos a adaptação dos seguintes envolvidos (BROD, 2012): Product Owner é a pessoa envolvida com o resultado do projeto, normalmente chamada simplesmente de PO. Em geral, é o próprio cliente. No caso, assumiremos o orientador deste trabalho com esta função.