SlideShare a Scribd company logo
1 of 23
Download to read offline
ARQUITETURA BÁSICA DE TESTES
PARA SEU PROJETO JAVA
ELIAS NOGUEIRA
@eliasnogueira
ARQUITETURA DE TESTES
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
Planejamento
dos	Tipos	de	Testes
ARQUITETURA DE TESTES
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
Planejamento
dos	Tipos	de	Testes
Testes	e	
Execução	de	
Teste	das	User
Stories
ARQUITETURA DE TESTES
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
Planejamento
dos	Tipos	de	Testes
Testes	e	
Execução	de	
Teste	das	User
Stories
Testes	e	Execução	de	
Testes	das	Tarefas
ARQUITETURA DE TESTES
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
Planejamento
dos	Tipos	de	Testes
Testes	e	
Execução	de	
Teste	das	User
Stories
Testes	e	Execução	de	
Testes	das	Tarefas
Testes	Funcionais
Testes	E2E
ARQUITETURA DE TESTES
ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES
Story	1
0 It	1 It	2 It	3	- 5 End	Game
Entrega	do	Time
Tarefa	A 8	horas
Tarefa	B 5	horas
Tarefa	C 6	horas
Tarefa	D 8	horas
Release	1 Release	2 Release	3
Entendimento	dos	
Tipos	de	Testes
Planejamento
dos	Tipos	de	Testes
Testes	e	
Execução	de	
Teste	das	User
Stories
Testes	e	Execução	de	
Testes	das	Tarefas
Testes	Funcionais
Testes	E2E
Execução	de	Testes	E2E
Testes	em	Produção
Testes	Não	Funcionais
ARQUITETURA DE TESTES
ESTRATÉGIA PARA UM PIPELINE CONTENDO TESTES
ARQUITETURA DE TESTES
Testes	
Manuais
Baseados	
em	Sessão
Testes	Unitários
Testes	de	Componentes
Testes	de	Integração
Testes	de	API
Testes	em	UI
Web	/	Mobile
UI/Aceitação
Regressão	Visual
Performance
Testes	de	Segurança
Mocks
Stubs
Serviços
Testes	de	Unidade
Análise	estática
ESTRATÉGIA PARA FERRAMENTAS EM DIFERENTES NÍVEIS
ARQUITETURA DE TESTES
Pirâmide	de	Automação	de	TesteTestes	
Manuais
Baseados	
em	Sessão
Testes	Unitários
Testes	de	Componentes
Testes	de	Integração
Testes	de	API
Testes	em	UI
Web	/	Mobile Máquinas	para	execução	Web
Servidores	para	teste	das	
integrações	e	APIs
Servidores	para	execução	de	
Testes	Não	Funcionais
Dispositivos	 para	
execução	Mobile
ESTRATÉGIA PARA AMBIENTES EM DIFERENTES NÍVEIS
ARQUITETURA DE TESTES
MODELOS DE ABSTRAÇÃO
▸ Utilizar Modelos de Abstração
▸ Implementação através de padrões de projeto
▸ Factory | Builder | Singleton
▸ Page Objects [para API | Web | Mobile]
ARQUITETURA DE TESTES
EXEMPLO PAGE OBJECTS
// exemplo com Selenium WebDriver
private WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void preencherLogin(String email) {
driver.findElement(By.id("username")).sendKeys(email);
}
public void preencherSenha(String senha) {
driver.findElement(By.id("password")).sendKeys(senha);
}
public void clicarEmLogin() {
driver.findElement(By.name("submit")).click();
}
EXEMPLO PAGE OBJECTS
// exemplo com Selenium WebDriver
private WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void preencherLogin(String email) {
driver.findElement(By.id("username")).sendKeys(email);
}
public void preencherSenha(String senha) {
driver.findElement(By.id("password")).sendKeys(senha);
}
public void clicarEmLogin() {
driver.findElement(By.name("submit")).click();
}
EXEMPLO PAGE OBJECTS
@Test
public void testeLoginComSenhaErrada() {
LoginPage login = new LoginPage(driver);
login.efetuarLogin("elias@elias.com", "eli@s134");
assertEquals("Usuário ou senha inválido", login.mensagemErro());
}
TESTE FUNCIONAL
EXEMPLO PAGE OBJECTS
@Test
public void adicionaProdutosNoEstoque() {
String produto = "iPhone 7 16GB";
LoginPage login = new LoginPage(driver);
login.efetuarLogin("elias@elias.com", "3li@s123!");
MainPage paginaPrincipal = new MainPage(driver);
paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos();
GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver);
gestaoProdutos.pesquisaProduto(produto);
gestaoProdutos.clicarEmEditar();
gestaoProdutos.atualizaQuantidadeEstoque(23);
assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto));
}
EXEMPLO PAGE OBJECTS
@Test
public void adicionaProdutosNoEstoque() {
String produto = "iPhone 7 16GB";
LoginPage login = new LoginPage(driver);
login.efetuarLogin("elias@elias.com", "3li@s123!");
MainPage paginaPrincipal = new MainPage(driver);
paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos();
GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver);
gestaoProdutos.pesquisaProduto(produto);
gestaoProdutos.clicarEmEditar();
gestaoProdutos.atualizaQuantidadeEstoque(23);
assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto));
}
EXEMPLO PAGE OBJECTS
@Test
public void adicionaProdutosNoEstoque() {
String produto = "iPhone 7 16GB";
LoginPage login = new LoginPage(driver);
login.efetuarLogin("elias@elias.com", "3li@s123!");
MainPage paginaPrincipal = new MainPage(driver);
paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos();
GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver);
gestaoProdutos.pesquisaProduto(produto);
gestaoProdutos.clicarEmEditar();
gestaoProdutos.atualizaQuantidadeEstoque(23);
assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto));
}
EXEMPLO PAGE OBJECTS
@Test
public void adicionaProdutosNoEstoque() {
String produto = "iPhone 7 16GB";
LoginPage login = new LoginPage(driver);
login.efetuarLogin("elias@elias.com", "3li@s123!");
MainPage paginaPrincipal = new MainPage(driver);
paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos();
GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver);
gestaoProdutos.pesquisaProduto(produto);
gestaoProdutos.clicarEmEditar();
gestaoProdutos.atualizaQuantidadeEstoque(23);
assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto));
}
TESTE E2E
LOGS
▸ Gerar logs da execução de teste em qualquer nível
▸ Em caso de falha [asserts] ou erro [exceptions]
▸ Gerar arquivos .log
▸ Gerar screenshots
▸ Agregar arquivos de resultado em formato xUnit
▸ Ou usar ferramentas de geração de relatórios
▸ Evitar o uso do Cucumber em múltiplas camadas
ARQUITETURA DE TESTES
ARQUIVOS DE CONFIGURAÇÃO
▸ Abusar de arquivos de configuração
▸ Eles apoiarão com um menor esforço de testar em diversos
ambientes
▸ Fácil apontamento de endpoints e URLs
▸ .properties
▸ .conf
▸ .xml
ARQUITETURA DE TESTES
DIFERENTES ESTRATÉGIAS E NÍVEIS
Web | Mobile
Smoke/Sanity Test

Pequenos testes, de preferência headless [web] para
garantir que o fluxo principal funciona
Functional

Validação de cada funcionalidade de forma singular
Aceitação | E2E

Validação de um fluxo do usuário
ARQUITETURA DE TESTES
DIFERENTES ESTRATÉGIAS E NÍVEIS
API
EndPoint

garantir que endpoints estão ativos
Contrato

garantir que existe o retorno esperado
Funcional

validação das regras do próprio endpoint
Aceitação | E2E

validação de regras usando diversos endpoints
ARQUITETURA DE TESTES
@eliasnogueira
eliasnogueira.com
github.com/eliasnogueira
fb.com/elias.nogueira.teste

More Related Content

What's hot

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersRudy De Busscher
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaFrederico Augusto Do Carmo Moreira
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing PyramidNaresh Jain
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de TesteElias Nogueira
 
Test automation
Test automationTest automation
Test automationXavier Yin
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoElias Nogueira
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API TestingSauce Labs
 
Agile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingAgile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingDimitri Ponomareff
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeElias Nogueira
 
Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Fabrício Campos
 
Planejamento de Testes
Planejamento de TestesPlanejamento de Testes
Planejamento de Testeselliando dias
 
RESTful API Testing using Postman, Newman, and Jenkins
RESTful API Testing using Postman, Newman, and JenkinsRESTful API Testing using Postman, Newman, and Jenkins
RESTful API Testing using Postman, Newman, and JenkinsQASymphony
 

What's hot (20)

O papel do qa (testador) em um time ágil
O papel do qa (testador) em um time ágilO papel do qa (testador) em um time ágil
O papel do qa (testador) em um time ágil
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Finally, easy integration testing with Testcontainers
Finally, easy integration testing with TestcontainersFinally, easy integration testing with Testcontainers
Finally, easy integration testing with Testcontainers
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
 
Inverting The Testing Pyramid
Inverting The Testing PyramidInverting The Testing Pyramid
Inverting The Testing Pyramid
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de Teste
 
Test automation
Test automationTest automation
Test automation
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Carreira de QA
Carreira de QA Carreira de QA
Carreira de QA
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API Testing
 
Agile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingAgile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated Testing
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu time
 
Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)Técnicas de modelagem de teste (parte 1)
Técnicas de modelagem de teste (parte 1)
 
Planejamento de Testes
Planejamento de TestesPlanejamento de Testes
Planejamento de Testes
 
Using Mockito
Using MockitoUsing Mockito
Using Mockito
 
RESTful API Testing using Postman, Newman, and Jenkins
RESTful API Testing using Postman, Newman, and JenkinsRESTful API Testing using Postman, Newman, and Jenkins
RESTful API Testing using Postman, Newman, and Jenkins
 

Similar to Arquitetura básica de testes para seu projeto Java

Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Wennder Santos
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOSRicardo Valeriano
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitRobinson Castilho
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e CatchUilian Ries
 
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Juliana Chahoud
 
Framework de testes cecom
Framework de testes cecomFramework de testes cecom
Framework de testes cecomlucasbarsand
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptLoiane Groner
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidSuelen Carvalho
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous DeliverySamanta Cicilia
 
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
 

Similar to Arquitetura básica de testes para seu projeto Java (20)

Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
 
Testes Automatizados e o iOS
Testes Automatizados e o iOSTestes Automatizados e o iOS
Testes Automatizados e o iOS
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Robotium_Sikuli
Robotium_SikuliRobotium_Sikuli
Robotium_Sikuli
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
VRaptor4
VRaptor4VRaptor4
VRaptor4
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
 
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
Swift, a nova linguagem de programação da Apple (CocoaHeads Sao Paulo)
 
Framework de testes cecom
Framework de testes cecomFramework de testes cecom
Framework de testes cecom
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
One Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScriptOne Language to Rule Them All: TypeScript
One Language to Rule Them All: TypeScript
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app Android
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
 
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...
 

More from Elias Nogueira

API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test PyramidElias Nogueira
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testesElias Nogueira
 
Coach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeElias Nogueira
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoElias Nogueira
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automationElias Nogueira
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Elias Nogueira
 
BDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringElias Nogueira
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersElias Nogueira
 
Improve Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsElias Nogueira
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
 
BDD não é Automação de Testes
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de TestesElias Nogueira
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumElias Nogueira
 
Como ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaElias Nogueira
 
Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Elias Nogueira
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile CoachElias Nogueira
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileElias Nogueira
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationElias Nogueira
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile CoachElias Nogueira
 

More from Elias Nogueira (20)

API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
Coach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o time
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
 
BDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum Gathering
 
Como criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containersComo criar e executar testes paralelos web usando Selenium e containers
Como criar e executar testes paralelos web usando Selenium e containers
 
Improve Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - Tests
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 
BDD não é Automação de Testes
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de Testes
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Como ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnica
 
Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
 

Arquitetura básica de testes para seu projeto Java

  • 1. ARQUITETURA BÁSICA DE TESTES PARA SEU PROJETO JAVA ELIAS NOGUEIRA @eliasnogueira
  • 2. ARQUITETURA DE TESTES ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes
  • 3. ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes Planejamento dos Tipos de Testes ARQUITETURA DE TESTES
  • 4. ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes Planejamento dos Tipos de Testes Testes e Execução de Teste das User Stories ARQUITETURA DE TESTES
  • 5. ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes Planejamento dos Tipos de Testes Testes e Execução de Teste das User Stories Testes e Execução de Testes das Tarefas ARQUITETURA DE TESTES
  • 6. ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes Planejamento dos Tipos de Testes Testes e Execução de Teste das User Stories Testes e Execução de Testes das Tarefas Testes Funcionais Testes E2E ARQUITETURA DE TESTES
  • 7. ESTRATÉGIA SOBRE TESTES EM DIFERENTES FASES Story 1 0 It 1 It 2 It 3 - 5 End Game Entrega do Time Tarefa A 8 horas Tarefa B 5 horas Tarefa C 6 horas Tarefa D 8 horas Release 1 Release 2 Release 3 Entendimento dos Tipos de Testes Planejamento dos Tipos de Testes Testes e Execução de Teste das User Stories Testes e Execução de Testes das Tarefas Testes Funcionais Testes E2E Execução de Testes E2E Testes em Produção Testes Não Funcionais ARQUITETURA DE TESTES
  • 8. ESTRATÉGIA PARA UM PIPELINE CONTENDO TESTES ARQUITETURA DE TESTES
  • 11. MODELOS DE ABSTRAÇÃO ▸ Utilizar Modelos de Abstração ▸ Implementação através de padrões de projeto ▸ Factory | Builder | Singleton ▸ Page Objects [para API | Web | Mobile] ARQUITETURA DE TESTES
  • 12. EXEMPLO PAGE OBJECTS // exemplo com Selenium WebDriver private WebDriver driver; public LoginPage(WebDriver driver) { this.driver = driver; } public void preencherLogin(String email) { driver.findElement(By.id("username")).sendKeys(email); } public void preencherSenha(String senha) { driver.findElement(By.id("password")).sendKeys(senha); } public void clicarEmLogin() { driver.findElement(By.name("submit")).click(); }
  • 13. EXEMPLO PAGE OBJECTS // exemplo com Selenium WebDriver private WebDriver driver; public LoginPage(WebDriver driver) { this.driver = driver; } public void preencherLogin(String email) { driver.findElement(By.id("username")).sendKeys(email); } public void preencherSenha(String senha) { driver.findElement(By.id("password")).sendKeys(senha); } public void clicarEmLogin() { driver.findElement(By.name("submit")).click(); }
  • 14. EXEMPLO PAGE OBJECTS @Test public void testeLoginComSenhaErrada() { LoginPage login = new LoginPage(driver); login.efetuarLogin("elias@elias.com", "eli@s134"); assertEquals("Usuário ou senha inválido", login.mensagemErro()); } TESTE FUNCIONAL
  • 15. EXEMPLO PAGE OBJECTS @Test public void adicionaProdutosNoEstoque() { String produto = "iPhone 7 16GB"; LoginPage login = new LoginPage(driver); login.efetuarLogin("elias@elias.com", "3li@s123!"); MainPage paginaPrincipal = new MainPage(driver); paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos(); GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver); gestaoProdutos.pesquisaProduto(produto); gestaoProdutos.clicarEmEditar(); gestaoProdutos.atualizaQuantidadeEstoque(23); assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto)); }
  • 16. EXEMPLO PAGE OBJECTS @Test public void adicionaProdutosNoEstoque() { String produto = "iPhone 7 16GB"; LoginPage login = new LoginPage(driver); login.efetuarLogin("elias@elias.com", "3li@s123!"); MainPage paginaPrincipal = new MainPage(driver); paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos(); GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver); gestaoProdutos.pesquisaProduto(produto); gestaoProdutos.clicarEmEditar(); gestaoProdutos.atualizaQuantidadeEstoque(23); assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto)); }
  • 17. EXEMPLO PAGE OBJECTS @Test public void adicionaProdutosNoEstoque() { String produto = "iPhone 7 16GB"; LoginPage login = new LoginPage(driver); login.efetuarLogin("elias@elias.com", "3li@s123!"); MainPage paginaPrincipal = new MainPage(driver); paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos(); GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver); gestaoProdutos.pesquisaProduto(produto); gestaoProdutos.clicarEmEditar(); gestaoProdutos.atualizaQuantidadeEstoque(23); assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto)); }
  • 18. EXEMPLO PAGE OBJECTS @Test public void adicionaProdutosNoEstoque() { String produto = "iPhone 7 16GB"; LoginPage login = new LoginPage(driver); login.efetuarLogin("elias@elias.com", "3li@s123!"); MainPage paginaPrincipal = new MainPage(driver); paginaPrincipal.clicarEmProdutos().clicarEmGestaoDeProdutos(); GestaProdutosPage gestaoProdutos = new GestaProdutosPage(driver); gestaoProdutos.pesquisaProduto(produto); gestaoProdutos.clicarEmEditar(); gestaoProdutos.atualizaQuantidadeEstoque(23); assertEquals(72, gestaoProdutos.obtemEstoqueProduto(produto)); } TESTE E2E
  • 19. LOGS ▸ Gerar logs da execução de teste em qualquer nível ▸ Em caso de falha [asserts] ou erro [exceptions] ▸ Gerar arquivos .log ▸ Gerar screenshots ▸ Agregar arquivos de resultado em formato xUnit ▸ Ou usar ferramentas de geração de relatórios ▸ Evitar o uso do Cucumber em múltiplas camadas ARQUITETURA DE TESTES
  • 20. ARQUIVOS DE CONFIGURAÇÃO ▸ Abusar de arquivos de configuração ▸ Eles apoiarão com um menor esforço de testar em diversos ambientes ▸ Fácil apontamento de endpoints e URLs ▸ .properties ▸ .conf ▸ .xml ARQUITETURA DE TESTES
  • 21. DIFERENTES ESTRATÉGIAS E NÍVEIS Web | Mobile Smoke/Sanity Test
 Pequenos testes, de preferência headless [web] para garantir que o fluxo principal funciona Functional
 Validação de cada funcionalidade de forma singular Aceitação | E2E
 Validação de um fluxo do usuário ARQUITETURA DE TESTES
  • 22. DIFERENTES ESTRATÉGIAS E NÍVEIS API EndPoint
 garantir que endpoints estão ativos Contrato
 garantir que existe o retorno esperado Funcional
 validação das regras do próprio endpoint Aceitação | E2E
 validação de regras usando diversos endpoints ARQUITETURA DE TESTES