Este documento fornece uma introdução aos testes automatizados, abordando conceitos como: objetivos da automação de testes, tipos de testes, ferramentas como Selenium e Cucumber, e técnicas como TDD. O documento também discute como identificar elementos na página e interagir com eles durante a automação.
2. OBJETIVO
– Compreender a necessidade dos testes
– Identificar casos de testes a serem automatizados
– Conhecer as principais características das ferramentas de automação de
testes funcionais
– Aprender a identificar elementos web e como fazer a interação com estes
– Conhecer e desenvolver testes com Selenium ,Cucumber, Java, Maven,
Eclipse.
– E muito mais!
3. CONTEÚDO
• Fundamentos da automação de testes
• O que preciso conhecer para trabalhar com automação
• Diferenças entre tipos de testes
• Identificando cenários de testes a serem automatizados
• Identificando quando e o quê automatizar
• Linguagens de programação para se trabalhar com automação
• Principais frameworks de automação de testes existentes no mercado
• Instalação
• Configuração
• Gravação do script
• Criação do teste
• Estrutura do projeto eclipse
• Git/Github
• Maven
4. “Teste automatizados significa: automatizar
atividades de teste de software, incluindo o
desenvolvimento dos roteiros de teste, a
execução desses roteiros e a verificação dos
resultados.”
AUTOMAÇÃO DE TESTES
5. Toyota atualiza controle de estabilidade da Hilux após falha no “teste do alce”
“A prova conhecida como "teste do alce" consiste em mudança brusca
de trajetória com desvio de obstáculos em velocidades entre 64 e 68
km/h, com meia carga na caçamba. O teste reuniu as mais principais
picapes médias do mercado, como Nissan Frontier, Mitsubishi L200
Triton, Isuzu D-Max (versão da Chevrolet S10), Ford Ranger,
Volkswagen Amarok e RAM 1500”
TESTE DE ESTABILIDADE
6. Toyota atualiza controle de estabilidade da Hilux após falha no “teste do alce”
TESTE DE ESTABILIDADE
8. TDD
TDD é a sigla utilizada para Test Driven Development, ou
em português “Desenvolvimento Orientado por Testes.
”
O uso de TDD também garante que o
desenvolvedor irá programar cada vez melhor.
Mesmo em pouco tempo usando estes testes ele
já percebe uma diferença relevante em sua
forma de programar. O código desenvolvido por
quem utiliza a técnica ficará com cada vez mais
qualidade, dando origem a objetos concisos e
com menos dependências.
POR ONDE COMEÇAR OS TESTES?
9. BDD
O Behavior Driven Development (BDD) ou
desenvolvimento orientado por
comportamento foi inventado por Dan
North no ano de 2000, quando Dan percebeu
que muitas equipes tinham dificuldades de
adotar e usar eficazmente o TDD
POR ONDE COMEÇAR OS TESTES?
11. A refatoração é a melhoria no código, o que já é bom
para as práticas tradicionais. Mas com o TDD ela torna-se
obrigatória. Isto porque é escrito um teste, uma
funcionalidade, porém esta funcionalidade não pode
quebrar o outro teste. Se isto acontecer, será necessário
um esforço para que o novo código esteja menos
acoplado ao código restante.
A IMPORTÂNCIA DA
REFATORAÇÃO
14. XGH - GO HORSE PROCESS
https://gohorseprocess.com.
br/extreme-go-horse-xgh/
“If you have to think, it's not XGH”
“Be authentic,
XGH does not
respect
standards.”
”Testing
is for the
weak”
16. NOT YET!
Voltemos aos conceitos.
Testes Unitários (Unit Testing)
Testes de Integração (Integration Testing)
Testes de Aceitação (Acceptance Testing)
O objetivo de um teste unitário é validar a menor parte de um sistema de forma isolada,
para garantir que funcione exatamente como é esperado
Os testes de integração validam se comunicação entre dois ou mais componentes
está funcionando corretamente.
Testes de aceitação acontecem na camada da interface de usuário e normalmente envolvem
todas as camadas da aplicação testada para validar um cenário de negócio.
18. VISUA STUDIO CODE
O Visual Studio Code é um editor de código-fonte / IDE de mínimos recursos
desenvolvido pela Microsoft para Windows, Linux e macOS. Ele inclui suporte para
depuração, controle Git incorporado, realce de sintaxe, complementação inteligente
de código, snippets e refatoração de código.
Linguagem: TypeScript, JavaScript, CSS
Licença: Código-fonte: Licença MIT; Binários: Freeware;
Lançamento: 29 de abril de 2015 (3 anos)
Plataforma: IA-32, x64
Tamanho: Windows: 32,8 MB; Debian, Ubuntu: 34,1 MB; Fedora, Red Hat: 50,4
MB; macOS: 51,8 MB
Gravado em: TypeScript, JavaScript, Cascading Style Sheets
https://code.visualstudio.com/
20. GIT
Git é um sistema de controle de versões
distribuído, usado principalmente no
desenvolvimento de software, mas pode ser
usado para registrar o histórico de edições de
qualquer tipo de arquivo.
21. UMA BREVE HISTÓRIA DO GIT
“Como com muitas coisas boas na vida, Git começou com um pouco de destruição criativa e controvérsia
ardente.
O kernel do Linux é um projeto de software de código aberto de grande alcance. Durante a maior parte da vida
útil da manutenção do kernel do Linux (1991-2002), as alterações no software foram repassadas como patches e
arquivos arquivados. Em 2002, o projeto do kernel Linux começou a usar um DVCS proprietário chamado
BitKeeper.
Em 2005, a relação entre a comunidade que desenvolveu o kernel do Linux e a empresa comercial que
desenvolveu o BitKeeper quebrou, e o status de free-charge da ferramenta foi revogado. Isso levou a
comunidade de desenvolvimento Linux (e em particular Linus Torvalds, o criador do Linux) a desenvolver sua
própria ferramenta com base em algumas das lições que aprenderam ao usar o BitKeeper. Alguns dos objetivos
do novo sistema foram os seguintes:
•Rapidez
•Design simples
•Forte suporte ao desenvolvimento não linear (milhares de ramificações paralelas)
•Totalmente distribuído
•Capaz de lidar eficientemente com grandes projetos como o kernel do Linux (velocidade e tamanho dos dados)
Desde o seu nascimento em 2005, o Git evoluiu e amadureceu para ser fácil de usar e ainda manter essas
qualidades iniciais. É incrivelmente rápido, é muito eficiente em grandes projetos e possui um incrível sistema
de ramificação para desenvolvimento *não-linear.”
“Não linear refere-se a todas as estruturas que não apresentam um único sentido. Estrutura que apresenta múltiplos caminhos e
destinos, desencadeando em múltiplos finais.”
23. COMANDOS DO GIT
https://comandosgit.github.io/
Abrir o Git console instalado.
•Para configurar o usuário digite:
• git config –global user.name “Carlos gonzaga” < enter >
•Para criar o e-mail digite:
• git config –global user.email “carlosgonzaga.bsb@gmail.com” < enter >
• git config –list < enter >
http://www.asbpm.com.br/blog/manual-de-instalacao-do-git-plug-ins-eclipse-e-visual-studio-code-e-configuracao-de-solucoes/
24. COMANDOS DO GIT
Criar um repositório local e comandos básicos do Git
Crie uma pasta no local desejado para o projeto.
•Acesse a pasta: c:ProjetosExemplo < enter >
•Para iniciar o repositório digite:
• git init < enter >
•Para checar o repositório criado.
• git status < enter >
•Para enviar arquivos para repositório local:
• Crie um arquivo na pasta do projeto e digite:
• git add << nome do arquivo >> < enter > ou
• git add *.* < enter >
•Para retirar o arquivo adicionado digite:
• git reset << nome do arquivo >> < enter > ou
• git reset *.* < enter >
•Para registrar um commit digite:
• git commit –m “Comentário do commit” < enter >
•Verificar o histórico de commits digite:
• git log < enter >
26. O que é cucumber?
Cucumber é uma estrutura de automação, que permite a conversão
de casos de teste escritos em inglês simples para ações usando
codificação. A estrutura de automação segue principalmente uma
abordagem conhecida como Behavior Driven Development (BDD),
que fornece aos engenheiros de software a oportunidade de criar
casos de teste da perspectiva do usuário final.
27. O que é cucumber?
Uma pessoa de background não técnico, que entenda o domínio e a
implementação de negócios incorporada no aplicativo, pode
fornecer cenários de teste que precisam ser verificados. Dessa
maneira, um fluxo de negócios do aplicativo pode ser automatizado
para testes. Isso também permite testar vários dados de teste para
cenários positivos e negativos.
28. Vantagens do cucumber sobre outras ferramentas
1 - Cucumber suporta diferentes linguagens como Java, .net e Ruby.
2 - Ele atua como uma ponte entre a linguagem comercial e
técnica.
3 - Podemos fazer isso criando um arquivo de recurso em texto
simples em inglês, cobrindo as áreas que precisam ser testadas.
4 - Ele permite que o script de teste seja escrito sem o
conhecimento de qualquer código, permite o envolvimento de não-
programadores também.
5 - Devido à arquitetura de script de teste simples, o cucumber
fornece reutilização de código.
29. Ferramentas que você precisa para começar
1 - Configuração Java
2 - Configuração do Eclipse
3 - Bibliotecas do cucumber para o Eclipse
4 - Bibliotecas de selênio para o Eclipse
Um arquivo criado no cucumber, recebe uma extensão “.feature”
O idioma no qual esse arquivo de recurso executável é gravado é conhecido
como Gherkin . Gherkin é uma linguagem de texto simples Inglês, o que ajuda a
ferramenta - cucumber para interpretar e executar os scripts de teste.
31. Feature
Uma feature pode ser definido como uma unidade
independente ou funcionalidade de um projeto.
Scenario
O cenário é uma das principais estruturas do Gherkin. Cada cenário
começa com a palavra-chave “Cenário:” (ou um localizado) e é seguido
por um título de cenário opcional. Cada feature pode ter um ou mais
cenários e cada cenário consiste em uma ou mais etapas.
33. Arquivo.feature
Um Arquivo de feature é um ponto de entrada para
os testes do cucumber . Este é um arquivo onde você
descreverá seus testes em linguagem descritiva (em
inglês). É uma parte essencial do cucumber, pois
serve como um script de teste de automação, bem
como documentos ao vivo. Um arquivo de feature
pode conter um cenário ou pode conter muitos
cenários em um único arquivo de recurso, mas
geralmente contém uma lista de cenários.
34. Arquivo.feature
Funcionalidade: funcionalidade testar se houve falha no login da aplicacao
Esquema do Cenario: Verificacao se ocorreu erro ao informar o login e a senha
Dado que o usuario abriu o firefox e executou a aplicacao "GESTAO_WEB"
Quando for informado o login <login> e a senha <senha>
E foi clicado no botao Login
Entao verifico se o houve falha durante o Login com a mensagem <mensagem>.
@LoginFalhou
Exemplos:
| login | senha | mensagem |
| "login111" | "senha111“ |"Ocorreu um erro interno de autenticação.“ |
| "login222" | "senha222“ |"Ocorreu um erro interno de autenticação.“ |
| "login333" | "senha333“ | "Ocorreu um erro interno de autenticação." |
35. ArquivoStep.java
@Quando("^for informado o login "([^"]*)" e a senha "([^"]*)"$")
public void for_informado_o_login_User_senha_senha(String login, String senha) throws Exception {
Thread.sleep(200);
webDriver.findElement(By.xpath(".//*[@id=‘xdeerrff']")).sendKeys(login);
webDriver.findElement(By.xpath(".//*[@id=‘dfggttf']")).sendKeys(senha);
}
@Quando("^foi clicado no botao Login$")
public void a_credencial_sera_resetada() throws Exception {
Thread.sleep(200);
webDriver.findElement(By.xpath(".//*[@id=‘gttrrddd']")).click();
}
@Entao("^verifico se o houve falha durante o Login com a mensagem "([^"]*)".$")
public void verifico_se_o_houve_falha_durante_o_Login_com_a_mensagem(String mensagem) throws Exception {
Thread.sleep(3000);
if (mensagem.contentEquals((webDriver.findElement(By.xpath("html/body/div/div[2]/div[2]/div/div/h3")).getText()))) {
ContaTestPage.fullScreenCapture(mensagem);
logErrorDriver.info("Erro durante login " + " <><><> " + mensagem);
webDriver.quit();
}
}
https://docs.cucumber.io/installation/
37. Selenium
O Selenium é uma ferramenta utilizada para automatização de
testes de sistemas que permite ao desenvolvedor reproduzi-los
rapidamente no ambiente real da aplicação, em função da sua
integração direta com o navegador. Através de uma extensão
podemos criar os scripts de testes de forma simples e utilizar
nas mais diversas linguagens de programação. No geral, o script
é gerado em HTML, porém pode ser exportado e editado para
testes em Java, C#, etc.
39. WEBDRIVER
O que é o WebDriver?
O WebDriver é uma estrutura de automação da web que permite executar seus
testes em diferentes navegadores , não apenas no Firefox.
As seguintes linguagens de
programação são suportadas pelo
WebDriver
• Java
• PHP
• Python
• Perl
• Rubi
40. GECKODRIVER
What is Gecko Driver?
O termo Gecko significa um mecanismo de navegação na Web que é embutido no
navegador Mozilla Firefox. O Gecko Driver funciona como um proxy entre os clientes
habilitados para Web Driver (Eclipse, NetBeans, etc.) e o navegador Mozilla
Firefox. Em suma, o driver Gecko atua como um link entre os testes do Selenium
Web Driver e o navegador Mozilla Firefox.
Antes do Selenium 3, o navegador Mozilla Firefox era o navegador padrão do
Selenium. Após o Selenium 3, os testadores precisam inicializar o script para usar o
Firefox usando o GeckoDriver explicitamente. O Selenium usa o protocolo W3C
Webdriver para enviar solicitações ao GeckoDriver, o que as converte em um
protocolo chamado Marionette. O Firefox entenderá os comandos transmitidos na
forma de protocolo Marionette e os executará.
41. XPATH
O que é XPath?
XPath é definido como caminho XML . É uma sintaxe ou linguagem para encontrar qualquer elemento na
página da web usando expressão de caminho XML . O XPath é usado para localizar o local de qualquer
elemento em uma página da Web usando a estrutura HTML DOM. O formato básico do XPath é explicado
abaixo:
42. XPATH
•//: Selecione o nó atual.
•Tagname: Tagname do nó específico.
•@: Selecione o atributo.
•Atributo: nome do atributo do nó.
•Valor: valor do atributo.
Para encontrar o elemento em páginas da web com precisão, existem diferentes tipos de
localizadores:
Xpath = // tagname [@ attribute = 'valor']
43. XPATH
Tipos de caminho X
Existem dois tipos de XPath:
1) XPath absoluto.
2) XPath relativo.
XPath Absoluto :
É a maneira direta de encontrar o elemento, mas a desvantagem do XPath absoluto é que, se
houver alguma mudança feita no caminho do elemento, o XPath falhará.
A principal característica do XPath é que ele começa com a barra simples (/), o que significa que
você pode selecionar o elemento a partir do nó raiz.
Abaixo está o exemplo de uma expressão xpath absoluta do elemento mostrado na tela abaixo.
html / body / div [1] / seção / div [1] / div / div / div / div [1] / div / div / div / div / div [3] / div [1] / div / h4 [1 ] / b
Abaixo está o exemplo de uma expressão xpath absoluta do elemento mostrado na tela abaixo.
44. XPATH
Xpath relativo:
Para Xpath relativo, o caminho começa no meio da estrutura HTML DOM. Ele começa com a barra
dupla (//), o que significa que ele pode procurar o elemento em qualquer lugar na página da web.
Você pode começar do meio da estrutura HTML DOM e não precisa escrever o xpath longo.
Abaixo está o exemplo de uma expressão XPath relativo
Xpath relativo: // * [@ class = 'featured-box'] // * [text () = 'Teste']
String s = driver.findElement(By.xpath(xpath)).getText().trim();
45. FIREBUG
O Firebug é uma extensão de navegador da Web livre e de
código aberto para o Mozilla Firefox que facilitou a
depuração ao vivo, a edição e o monitoramento de qualquer
CSS, HTML, DOM, XHR e JavaScript de qualquer site.
47. EQUIPE DE TESTES
a) Qualquer funcionário da empresa que esteja vinculado ao projeto
em desenvolvimento
b) Não precisa ter experiência nem conhecimentos aprofundados de
informática
c) Deve conhece as regras de negócios pertencentes ao sistema
d) Deve conhecer as funcionalidades oferecidas na aplicação
49. CONCLUSÃO
1. Desenvolvimento de software é uma tarefa complexa.
2. A automação dos testes dá segurança à equipe para fazer
alterações no código
3. Fazer testes automatizados está relacionado com ser ou não
profissional
4. Precisamos vencer nosso superiores que testes automatizados são
importantes e que são eles que vão ganhar com isso
5. Teste automatizados é uma prática fundamental para garantir a
qualidade do código.