Selenium WebDriver na prática com o JUnit

Neste artigo vamos explorar a utilização da nova API do Selenium, conhecida como WebDriver, em conjunto com o JUnit para a criação de testes de aceitação automatizados.

Artigo do tipo Tutorial
Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
Selenium WebDriver
Neste artigo vamos explorar a utilização da nova API do Selenium, conhecida como WebDriver, para realizar a navegação entre páginas, localizar elementos na árvore DOM, preencher formulários, criar condições de espera para lidar com chamadas AJAX, tratar alertas, chavear entre diferentes janelas abertas e ainda aprender a modelar páginas utilizando o padrão PageObject.

Em que situação o tema é útil
Atualmente, é bem raro encontrar sistemas com uma cobertura de testes adequada e capaz de detectar a introdução de defeitos após modificações. Para garantir a qualidade do software, é necessário investir em automação de testes, no entanto, dificuldades arquiteturais e excesso de acoplamento entre os componentes acabam dificultando esse trabalho. O Selenium facilita imensamente esse processo.

Já parou para pensar quantas vezes testamos a mesma coisa em nosso dia a dia de desenvolvedores de software? Infelizmente, é comum despendermos um tempo importante apenas realizando testes manuais e repetitivos. O pior é que esse tempo não é reaproveitado, pois quando qualquer modificação é realizada, os testes precisam ser feitos novamente.

Por esse motivo, a automação de testes deve ser entendida como um importante investimento, capaz de proporcionar um processo de desenvolvimento de software mais sustentável ao longo de todo o projeto. Ao mesmo tempo em que ajuda a garantir a qualidade do software que é entregue, a automação de testes contribui para o aumento da produtividade e da satisfação da própria equipe e principalmente dos clientes.

Normalmente, um dos fatores que mais fazem com que a produtividade diminua é o acúmulo de defeitos. Quando um defeito aparece, geralmente deve ser corrigido urgentemente, muitas vezes fazendo com que a equipe precise parar suas atividades para efetuar a correção. Fora o custo de ficar trocando de atividade, quanto mais tempo demorar para que o defeito seja detectado, mais tempo será gasto no seu entendimento e reprodução. Uma boa cobertura de testes automatizados ajuda a detectar o defeito no momento em que ele é inserido, barateando os custos de correção e aumentando a produtividade da equipe como um todo.

Outro fator que impacta na produtividade é a rotatividade da equipe do projeto. Em geral, o aumento da rotatividade na área de desenvolvimento de software está relacionado com a sensação de falta de desafios, de crescimento e de aprendizado. Esse sentimento de que a carreira está estagnando vem de um ambiente insustentável, onde o foco principal é em apenas apagar os últimos incêndios e correr atrás do prejuízo.

Falando em incêndios, não existe nada pior para um cliente do que detectar problemas no software constantemente em seu dia a dia de trabalho. Esta é uma das principais causas da perda de confiança e até de cancelamento de contrato, sem falar em prejuízos financeiros. Quanto vale a imagem da sua empresa no mercado?

Com o objetivo de aumentar a produtividade e principalmente o nível de confiança entre a equipe de desenvolvimento e os clientes do produto, vamos abordar neste artigo a utilização da ferramenta Selenium e sua API, conhecida como WebDriver, explorando diversas maneiras de automatizar a execução de testes de aceitação em sistemas web.

História do Selenium

O Selenium é uma das ferramentas mais conhecidas e utilizadas da atualidade para realizar a automação de testes de aceitação em aplicações web por meio da utilização do browser. É possível utilizá-la tanto por meio de sua interface de gravação de testes, o Selenium IDE, quanto utilizando sua API para escrever os testes em diferentes linguagens como: Java, C#, Ruby, Perl, PHP e Groovy.

Ele foi criado em 2004, nos laboratórios da ThoughtWorks em Chicago, por Jason Huggins, que na época trabalhava em um projeto interno chamado Time and Expense (T&E), que fazia uso extensivo da linguagem JavaScript.

A ThoughtWorks é uma empresa mundialmente reconhecida pela excelência em desenvolvimento ágil de software e tem como um de seus principais líderes, Martin Fowler. Posteriormente, o projeto foi aberto e outras pessoas ajudaram a evoluir até chegar ao que temos hoje.

A principal motivação por trás da criação do Selenium está relacionada à ineficiência dos testes manuais, que consumiam um tempo excessivo da equipe do projeto T&E da ThoughtWorks, além do custo elevado de outras ferramentas similares no mercado, que estava além do orçamento do projeto.

Uma curiosidade bastante interessante é que o nome Selenium foi concebido em meio a uma troca de e-mails sarcásticos entre seu criador, Jason Huggins, e a equipe do projeto. Uma das principais ferramentas de mercado da época, o Mercury, era satirizado pelo autor que dizia que o envenenamento causado pelo mercúrio poderia ser curado com selênio. Assim, o nome escolhido para o projeto acabou sendo o Selenium.

Criando um projeto com Selenium

A forma mais fácil de criar e configurar um projeto com Selenium é por meio da ferramenta Apache Maven. O Maven, atualmente na versão 3.0.4, é uma poderosa ferramenta para automação e gerenciamento de configuração de projetos Java. Entre suas principais características estão a gestão de dependências, a padronização da estrutura de diretórios, o ciclo de vida bem definido, a geração de documentação, além de uma imensa quantidade de plugins disponíveis que permitem estender suas funcionalidades."

[...] continue lendo...

Artigos relacionados