Selenium WebDriver Descomplicando testes automatizados com Java
Rafael PeixotoPrefácio
Por Ana Paula Gonçalves Serra
O conceito de teste pode ser definido como uma atividade que tem por objetivo verificar se o software produzido está de acordo com sua especificação e se satisfaz as expectativas do cliente. Teste de software é parte integrante do processo de Validação e Verificação (V&V) da Engenharia de Software. Sendo que verificação refere-se ao conjunto de tarefas que garantem que o software implementa corretamente uma função específica, e validação refere-se ao conjunto de tarefas que asseguram que o software foi criado e pode ser rastreado segundo os requisitos do cliente. A definição de V&V abrange muitas atividades de garantia da qualidade de software, sendo uma preocupação constante no desenvolvimento de software e difícil de ser obtida.
A atividade de teste, das atividades de verificação e validação, é considerada um elemento crítico para garantia da qualidade. Segundo Pressman, a distribuição recomendada de esforço em todo o processo de software é muitas vezes referida como a regra 40-20-40. Esta regra recomenda que 40% do esforço seja realizado nas fases de análise e projeto, 20% na fase de codificação e 40% realizado na fase de teste. Essa distribuição do esforço é apenas uma diretriz e varia de acordo com a natureza de cada projeto. Mas é possível observar a importância e muitas vezes as dificuldades de garantir que 40% do projeto seja utilizado para testes.
Há um conjunto de problemas comuns no processo de teste que devem ser evitados, como: cronogramas reduzidos ou inexistentes para a fase de testes; testes manuais e não controlados, gastando-se muito tempo em testes repetitivos e não eficientes; falta de recursos, ou equipe não qualificada pelo desconhecimento de ferramentas de automação de testes; falta de rastreabilidade de casos de teste entre diferentes versões do sistema, dificultando o reúso e repetição dos testes após modificações nos requisitos ou após correções; ambiente de teste diferente do ambiente de produção; ausência de critérios para seleção dos casos de teste, da definição da sua completude e do estabelecimento de um ponto de parada.
O planejamento, execução e controle de teste são dispendiosos e trabalhosos no processo de desenvolvimento de software. Com isso, as ferramentas de testes estão entre as primeiras ferramentas de software a serem utilizadas. Atualmente, essas ferramentas oferecem uma variedade de recursos que podem reduzir significativamente os problemas identificados, de modo a garantir a qualidade de software, aumentar a produtividade e diminuir os custos.
Neste livro, Rafael apresenta, de forma introdutória e objetiva, como automatizar testes utilizando duas ferramentas: JUnit e Selenium WebDriver. O autor demonstra passo a passo e com exemplos para apoiar profissionais que queiram aprender e utilizar automação de testes, melhorando a qualidade de seus softwares. Rafael tem trabalhado com testes desde a graduação em Ciência da Computação na Universidade São Judas Tadeu. Eu, como professora dele e orientadora de Trabalho de Conclusão de Curso, pude acompanhar toda a sua trajetória, desde 2014. Seu conhecimento na área de testes e na automação de testes é vasto, e este livro é a extensão de sua experiência de trabalho diário com desenvolvimento de software, refletindo todo seu conhecimento sobre o assunto de automação de testes e ferramentas. Os profissionais que buscam orientação sobre ferramentas de automação de testes para criação de casos de testes automatizados, especialmente para Web, aprenderão como instalá-las e utilizá-las de modo a garantir maior eficiência, qualidade de software e redução de custos no desenvolvimento de software.
Dra. Ana Paula Gonçalves Serra
Coordenadora dos cursos de Análise e Desenvolvimento de Sistemas, Ciência da Computação e Sistemas de Informação da Universidade São Judas Tadeu.
Por Eschiley Mayra Rolim
A busca pela qualidade na entrega de um software tem sido constante, tornando a fase de testes fundamental. Quando falamos em testes, uma das primeiras preocupações que aparecem são os prazos de entrega e a garantia de que uma nova versão não afetará a anterior. Desta forma, é necessário realizar os testes de regressão, que, se executados manualmente, muitas vezes são repetitivos, cansativos e demandam muito esforço. É nesse momento que podemos nos aliar à automação.
A automação de testes de software tem sido um assunto muito abordado, pois traz inúmeras vantagens para quem a utiliza, como redução de custos e prazos. Minha primeira experiência com testes automatizados foi na faculdade, onde pude conhecer alguns conceitos e ferramentas. Posteriormente tive a oportunidade de aprender mais sobre o assunto em um curso ministrado pelo Rafael. O Selenium WebDriver é uma excelente escolha para iniciarmos a automação dos nossos testes, pois é uma ferramenta livre, gratuita e permite o uso em diferentes linguagens de programação e browsers, além de oferecer facilidades que vamos descobrir à medida que avançarmos os capítulos.
Este livro representa a experiência adquirida pelo Rafael nos últimos anos, ensinando-nos desde os conceitos básicos até a criação de scripts automatizados de uma forma clara e de fácil entendimento.
Sobre o livro
Neste livro, você encontrará como escrever testes automatizados para Web utilizando Selenium WebDriver e JUnit em Java, de maneira clara e passo a passo, junto de exemplos práticos. Você verá como rodar testes automatizados em navegadores convencionais como Google Chrome e Firefox além de navegadores sem interface gráfica como HTMLUnit e Phantom JS.
A inspiração para este livro se deu pela vontade de reunir em um só um lugar o conhecimento de Selenium WebDriver adquirido durante minha carreira em testes, para os profissionais que desejam iniciar na carreira de automação de teste ou conhecer um pouco mais sobre essa ferramenta, dispondo de um material objetivo e em português.
Durante a leitura, você encontrará diversos exemplos de uso no dia a dia, conhecerá os principais problemas e dificuldades de um projeto de automação e verá padrões de projeto como Page Objects, essencial e muito requerido no mercado, que o ajudarão a escrever códigos mais limpos e de fácil manutenção. O conteúdo deste livro aborda desde a instalação e configuração de um ambiente em Java, utilizando ferramentas como o Maven, até códigos avançados de manipulação de elementos em uma página Web.
Ao longo deste livro, você também verá outras ferramentas que darão apoio à automação. Como o foco é apresentar o básico de automação com Selenium WebDriver, você não precisa ter conhecimentos prévios sobre automação de testes. Ao final, você deverá ser capaz de entender, configurar um ambiente e criar scripts de testes automatizados, bem como terá uma boa base para seguir para ferramentas e técnicas mais avançadas.
Muitas pessoas perguntam se é necessário saber programar para poder fazer testes automatizados. Você não precisar ser um desenvolvedor sênior, mas é importante, até para uma melhor absorção do conteúdo do livro, que você tenha noção do que são os seguintes itens de programação:
* Orientação a Objetos;
* Tipos de dados/variáveis;
* Condicionais;
* Loops;
* Arrays;
* HTML (principais tags, atributos);
* CSS (conhecer os principais seletores).
Muitos testadores não gostam de programar (ou não sabem) e por isso têm um certo receio de começar a automatizar, mas vencendo esse medo, você verá que programação não é nenhum bicho de sete cabeças. Com um pouco de esforço, você conseguirá automatizar seus testes e, com certeza, vai querer começar a automatizar tudo o que puder.
As versões utilizadas neste livro são: Selenium WebDriver 3.12.0, JUnit 4.12, Faker 0.14 e Eclipse Oxygen.3a Release (4.7.3a).
Aproveite a leitura, não deixe de praticar com os exercícios e comece a automatizar seus projetos.
Sumário
- 1 Introdução
- 1.1 Selenium
- 2 Instalando o Selenium
- 2.1 Configurando o Selenium no Eclipse
- 2.2 Maven
- 2.3 Conclusão
- 3 JUnit
- 3.1 @BeforeClass
- 3.2 Exemplo prático
- 3.3 Conclusão
- 4 Primeiros scripts
- 4.1 Comandos básicos do WebDriver
- 4.2 Usando mais recursos do JUnit com WebDriver
- 4.3 Conclusão
- 5 Interagindo com elementos
- 5.1 WebElements
- 5.2 Inspecionando um elemento
- 5.3 Escrevendo em um campo de texto
- 5.4 Clicando em um elemento
- 5.5 Utilizando outros localizadores
- 5.6 Conclusão
- 6 Mais interações
- 6.1 Select
- 6.2 Checkboxes e radio buttons
- 6.3 Conclusão
- 7 Asserts
- 7.1 AssertTrue
- 7.2 AssertFalse
- 7.3 AssertEquals
- 7.4 Conclusão
- 8 Page Objects
- 8.1 O conceito
- 8.2 Aplicando Page Object no seu projeto
- 8.3 Conclusão
- 9 Esperas
- 9.1 Esperas implícitas
- 9.2 Esperas explícitas
- 9.3 FluentWait
- 9.4 Conclusão
- 10 Mais navegadores e headless browser
- 10.1 Firefox
- 10.2 Internet Explorer
- 10.3 Headless browsers
- 10.4 Criando uma fábrica de WebDrivers
- 10.5 Conclusão
- 11 Alertas e janelas
- 11.1 Janelas
- 11.2 Alertas
- 11.3 Popup box
- 11.4 Confirm popup
- 11.5 Prompt popup
- 11.6 Conclusão
- 12 Lidando com tabelas
- 12.1 Conhecendo a estrutura
- 12.2 Automatizando uma tabela
- 12.3 Lidando com tabelas dinâmicas
- 12.4 Inserindo texto em uma célula
- 12.5 Conclusão
- 13 Massa de dados
- 13.1 Faker
- 13.2 Conclusão
- 14 Page Factory
- 14.1 Declarando um WebElement
- 14.2 A anotação FindBy
- 14.3 Inicializando nosso WebElement com Page Factory
- 14.4 Encontrando mais de um elemento com @FindBys
- 14.5 A anotação @CacheLookup
- 14.6 Conclusão
- 15 Criando suítes de teste com JUnit
- 15.1 Separando por funcionalidade
- 15.2 Anotações @Suite e @RunWith
- 15.3 Definindo categorias de teste
- 15.4 Incluindo ou excluindo mais uma categoria no mesmo teste
- 15.5 Ordenando a execução dos testes
- 15.6 Conclusão
- 16 A classe Actions
- 16.1 Clicando com o botão direito do mouse
- 16.2 O método sendKeys e a classe Actions
- 16.3 Conclusão
- 17 Aplicando o conhecimento na prática
- 17.1 Conhecendo e configurando o projeto
- 17.2 Implementando o primeiro passo do teste
- 17.3 Continuando nosso teste
- 17.4 Cobrindo mais alguns cenários
- 17.5 Uma pausa para refatoração
- 17.6 Conclusão
- 18 Por onde prosseguir: dicas e ferramentas complementares
Dados do produto
- Número de páginas:
- 238
- ISBN:
- 978-85-94188-72-4
- Data publicação:
- 07/2018