SlideShare uma empresa Scribd logo
1 de 50
TESTES
AUTOMATIZADOS
Carlos Gonzaga |Analista de Tecnologia
https://www.linkedin.com/in/carlos-gonzaga-1b84137a/
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!
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
“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
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
Toyota atualiza controle de estabilidade da Hilux após falha no “teste do alce”
TESTE DE ESTABILIDADE
TIPOS DE TESTES
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?
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?
Exemplo de TDD.
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
A IMPORTÂNCIA DA
REFATORAÇÃO
FERRAMENTAS DE MERCADO.
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”
Mãos na massa!!!
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.
VISUA STUDIO CODE
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/
GIT/GITHUB
O que preciso saber sobre GIT?
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.
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.”
INSTALANDO O GIT
https://git-scm.com/download/win
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/
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 >
CUCUMBER
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.
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.
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.
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.
Estrutura do cucumber
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.
Estrutura do projeto
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.
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." |
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/
Selenium
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.
Selenium fluxo
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
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á.
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:
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']
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.
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();
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.
EQUIPE DE TESTES
Quem deve fazer parte da equipe de testes?
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
EQUIPE DE TESTES
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.
ANY QUESTIONS?
https://www.linkedin.com/in/carlos-gonzaga-1b84137a/

Mais conteúdo relacionado

Semelhante a TESTES AUTOMATIZADOS: FERRAMENTAS E CONCEITOS

Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaHumberto Streb
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Ramon Durães
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftGraziella Bonizi
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Laís Vidal
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 

Semelhante a TESTES AUTOMATIZADOS: FERRAMENTAS E CONCEITOS (20)

Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016Keynote Visual Studio Summit 2016
Keynote Visual Studio Summit 2016
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
FDD
FDDFDD
FDD
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012Aula 1 -_ambiente_visual_studio_2012
Aula 1 -_ambiente_visual_studio_2012
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 

TESTES AUTOMATIZADOS: FERRAMENTAS E CONCEITOS

  • 1. TESTES AUTOMATIZADOS Carlos Gonzaga |Analista de Tecnologia https://www.linkedin.com/in/carlos-gonzaga-1b84137a/
  • 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/
  • 19. GIT/GITHUB O que preciso saber sobre GIT?
  • 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.
  • 46. EQUIPE DE TESTES Quem deve fazer parte da equipe de testes?
  • 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.