Olá pessoal, boas-vindas ao treinamento de Selenium aqui da Alura. Meu nome é Rodrigo e serei seu instrutor durante este treinamento, cujo objetivo é aprender a utilizar a API do Selenium WebDriver para escrever testes de aceitação na linguagem Java.
O Selenium é uma ferramenta para escrever testes de aceitação e tem suporte a várias linguagens, como Python, Ruby, PHP e o próprio Java. Neste curso aprenderemos a baixar e configurar o Selenium em nossa aplicação, e a escrever os testes de aceitação para simular um usuário navegando pela aplicação e validando as funcionalidades.
Aprenderemos a entrar no site do Selenium e ler a documentação e o guia de boas práticas. A aplicação com a qual trabalharemos durante o curso envolverá leilões. É uma aplicação já pronta, já que o objetivo do treinamento não é desenvolvermos a aplicação e seu código-fonte, mas sim testá-la utilizando o Selenium.
Trata-se de uma aplicação bem simples, na qual os usuários podem cadastrar leilões, incluindo uma funcionalidade de autenticação, listagem, edição e assim por diante. Nosso objetivo é testar algumas dessas funcionalidades.
Aprenderemos a escrever os códigos dos testes automatizados, como esses testes são realizados em uma aplicação Java utilizando o Maven, aprenderemos a utilizar os Page Objects (um padrão importante utilizado na API do Selenium), entre outras boas práticas.
É um curso bem técnico, focado em programação Java, utilizando a biblioteca do Selenium WebDriver. Espero que vocês gostem do treinamento e que possam aprender a utilizar o Selenium para automatizar os testes de aceitação dos seus projetos. Bons estudos!
Olá pessoal, boas vindas ao curso de Selenium. Nesta aula falarei um pouco sobre o Selenium e sobre testes automatizados de modo a entendermos os conceitos antes de trabalharmos efetivamente no projeto.
Você já deve conhecer um pouco sobre testes automatizados, e até mesmo escrito alguns testes utilizando o JUnit (no caso do Java). Existem vários tipos de testes que você pode escrever, em especial se for fazer algum tipo de automatização.
Existem os mais simples, que são os "Testes de unidade" - também chamados de "Testes unitários" - nos quais basicamente se utiliza o framework JUnit para testar uma unidade de maneira isolada do resto do projeto. Por exemplo, uma classe que possua métodos com validações ou regras de negócio, e você deseja testá-los de maneira isolada das demais classes. Nesse caso, é possível escrever um teste de unidade - bem simples de escrever e de rápida execução - utilizando apenas o JUnit.
Outra categoria bastante popular é o "Teste de integração". Nele, queremos testar justamente a integração entre duas classes, dois módulos ou dois componentes, entendendo se tal integração entre os elementos está funcionando como esperado. È um teste um pouco mais abrangente, e você pode utilizar outras ferramentas.
Existem também outros testes, como "Teste de segurança", para verificar brechas, falhas ou vulnerabilidades na aplicação; "Teste de performance", para verificar se a aplicação está se comportando de acordo com a performance desejada; e "Teste de aceitação", categoria que também recebe nomes como "Teste de UI (User Interface)" ou "E2E" (end-to-end), um teste que simula o usuário utilizando a aplicação, passando por telas de login, preenchimento de formulários, cliques em botões e assim por diante. É um teste que vai de "ponta-a-ponta" na aplicaçãõ, da tela até o banco de dados (caso haja persistência), interagindo com as classes do projeto; justamente por isso, é um pouco mais trabalhoso de escrever, necessita de outras ferramentas e demanda mais tempo de execução.
Existe um conceito conhecido na área de testes automatizados, a "Pirâmide de Teste" ("Test Pyramid"), que estipula uma proporção ideal entre esses tipos de testes dentro de um projeto. Conforme você sobe na pirâmide, os testes vão ficando mais custosos e sua execução e manutenção mais lentas.
Em geral, ela possui três divisões: a base da pirâmide, onde se encontram os testes de unidade, que são mais rápidos e mais baratos de escrever e dar manutenção, portanto devem estar em concentração maior; a faixa central, de testes de serviço e integração entre os componentes; e no topo os testes de aceitação, que são o foco do nosso treinamento. Esses testes estão em menor quantidade, já que sãos difíceis de escrever, necessitam de ferramentas além do JUnit, são mais lentos de executar e sua manutenção é mais custosa.
Os times de desenvolvimento normalmente se baseiam nessa pirâmide para escrever os testes, seguindo as proporções recomendadas pela comunidade.
No mundo Java nós dispomos de diversas ferramentas para escrever esses variados tipos de testes. A principal e mais famosa delas é o JUnit, para testes de unidade, mas também temos o Mockito (utilizado para testes que simulam comportamento, os chamados "mocks"); DBUnit, para testes em que simulamos o ato de popular de um banco de dados; Cucumber, para testes de comportamento com uma linguagem mais natural/humana; e o Selenium, uma ferramenta para testes de interface com usuário. Obviamente existem outras ferramentas, inclusive concorrentes entre elas, mas estas são as mais populares.
O Selenium é uma biblioteca gratuita e opensource para testes end-to-end. É um projeto bem antigo da comunidade, nascido em 2004 e popular ainda hoje. Ao longo do seu desenvolvimento foram surgindo subprojetos, como o Selenium RC e o Selenium WebDriver, que nasceu por volta de 2007 e é focado em escrever testes utilizando linguagem de programação, como Java ou Python. O script escrito nessas linguagens pode ser integrado ao Selenium, responsável pela abstração do protocolo de comunicação com o browser.
Por exemplo, podemos escrever um código em Java e o Selenium dá conta de abrir o navegador, clicar em um botão e preencher um formulário, suportando diversos browsers (Chrome, Firefox, Opera, etc). Além disso, a API que ele fornece é bem simples de ser utilizada, facilitando o desenvolvimento desses testes.
Uma curiosidade: o nome "Selenium" é derivado de um elemento da tabela periódica, e justamente por isso o seu símbolo é o "Se". O time responsável pelo Selenium também foi responsável por uma ferramenta de testes anterior, o Mercúrio, e o Selênio ajuda no combate de envenenamentos por mercúrio.
No próximo vídeo começaremos a conhecer o projeto do curso, e em seguida passaremos a escrever nossos testes automatizados.
Agora que já conversamos um pouco sobre o Selenium, nesta aula conheceremos o projeto com o qual trabalharemos no curso, quais são suas funcionalidades e um pouco do seu código-fonte. Já temos uma aplicação previamente desenvolvida, já que o foco do treinamento não é entendermos a tecnologia da aplicação si, mas sim escrever os testes automatizados que a avaliarão.
No link acima você pode fazer o download da aplicação, que deverá ser descompactado em algum diretório do seu computador e importado na IDE de sua preferência, como o Eclipse, que utilizaremos no curso, ou IntelliJ, Netbeans, entre outras. Temos uma aplicação Java utilizando o Maven - portanto, você precisará importá-la utilizando o Maven - e que segue uma estrutura padrão, utilizando também o framework Springboot.
Você não precisa conhecer o Springboot para acompanhar o curso, mas temos treinamentos sobre este framework aqui na Alura caso você tenha curiosidade.
Dentro do diretório "source/main/java" existe um pacote alura.leilao
. Vamos trabalhar com uma aplicação de leilões, e conheceremos mais sobre ela daqui a pouco. Dentro do pacote raiz da aplicação temos a classe LeilaoApplication
. Para rodarmos a aplicação com o Springboot, é necessário executar essa classe. No Eclipse, fazemos isso clicando com o botão direito sobre a classe em seguida em "Run As > Java Application".
Ao executarmos como uma aplicação Java, vão aparecer algumas informações no console do Eclipse. A aplicação tem um servidor embutido, que é o Tomcat, e será executada na porta 8080
.
Após inicializado, podemos abrir um navegador e acessar a aplicação por meio do endereço http://localhost:8080. Ela simula um sistema de leilões, no qual as pessoas podem cadastrar leilões ou dar lances para comprar produtos - claro, caso consigam o maior lance. Ao entrarmos na aplicação, somos direcionados à página que mostra os leilões cadastrados.
Ao executarmos a classe LeilaoApplication
, já populamos o banco de dados com algumas informações - dessa forma, não teremos que nos preocupar em cadastrar várias informações toda vez que rodarmos o projeto. Na tela principal, temos acesso somente à lista de leilões, onde atualmente temos dois leilões cadastrados. Um leilão precisa possuir um nome, uma data de abertura, o valor do lance inicial e o usuário que criou o leilão.
Para cadastrar um leilão ou dar um lance, é necessário fazer login na aplicação. No canto superior direito da tela temos um botão "Entrar" que nos leva a um formulário de login. Existe um usuário previamente cadastrado com o nome "fulano" e a senha "pass". Ao preechermos e submetermos as informações clicando em "Login", seremos levados de volta à tela de leilão, mas com algumas opções a mais.
A primeira delas é o botão "novo leilão", que permite cadastrar um novo leilão. Em nosso teste, preencheremos o campo "Nome" com "Iphone 10"; o "Valor inicial" com 4000
; a "Data de abertura" com "20/11/2020"; e o "Usuário" é preenchido automaticamnete com o nome do usuário logado no sistema. Clicando em "Salvar", o leilão será cadastrado no sistema e aparecerá na listagem.
Como fomos nós que cadastramos o leilão, não podemos dar um lance, somente editá-lo. O botão "editar" nos leva de volta ao formulário e nos permite, por exemplo, alterar o "Nome" (que substituiremos por "Iphone 5"). Ao salvarmos, as informações serão atualizadas na listagem.
Se for um leilão criado por outro usuário, poderemos dar lances. Como exemplo, temos um leilão criado pelo usuário "beltrano". Ao clicarmos em "dar lance", somos levados a uma página que mostra todos os lances, mas atualmente não há nenhum. Preencheremos o campo "Novo lance" com o valor "1000" e clicaremos em "Dar lance!". A página será atualizada e o novo lance será exibido na listagem. Se preenchermos e submetermos um novo lance, por exemplo "1010", receberemos um erro - afinal, não deve ser possível que um mesmo usuário dê dois lances na sequência. Sendo assim, é necessário esperar outro usuário dê um lance para que "fulano" crie um lance maior.
Temos então uma aplicação bem simples, com cadastro de leilões, tela para editar informações de um leilão que criamos, tela para dar lances em leilões de outros usuários e algumas regras de negócio em relação ao valor mínimo, data e lances. Por exemplo, um usuário só pode dar cinco lances em um determinado leilão, e não pode dar dois lances seguidos.
No pacote alura.leilao
, encontramos outros pacotes com as classes, controladores, classes de modelo (utilizando JPA) e assim por diante - ou seja, estamos trabalhando com uma aplicação Java tradicional. As páginas são encontradas no diretório "src/main/resources/templates", e consistem em páginas HTMLe utilizando Thymeleaf.
Não é necessário conhecer essas tecnologias, ainda que conhecer o básico delas possa ser de alguma ajuda, já que não entraremos em detalhes sobre o código fonte, como as funcionalidades foram implementadas e assim por diante. O foco do curso realmente é nos testes automatizados utilizando o Selenium. Obviamente, em alguns momentos, será necessário passarmos por algumas classes e páginas do projeto, mas não perderemos muito tempo nisso.
Após termos baixado e importado o projeto no computador, podemos partir para a próxima aula, na qual escreveremos o primeiro teste automatizado utilizando o Selenium!
O curso Selenium: testes automatizados de aceitação em Java possui 159 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.