SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

Automated Testing with Agile
Automated Testing with AgileAutomated Testing with Agile
Automated Testing with Agile
Ken McCorkell
 
How to Design a Successful Test Automation Strategy
How to Design a Successful Test Automation Strategy How to Design a Successful Test Automation Strategy
How to Design a Successful Test Automation Strategy
Impetus Technologies
 
Building a Test Automation Strategy for Success
Building a Test Automation Strategy for SuccessBuilding a Test Automation Strategy for Success
Building a Test Automation Strategy for Success
Lee Barnes
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
elliando dias
 
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
Elias Nogueira
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de Teste
Elias Nogueira
 
6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture
Erdem YILDIRIM
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
Elias Nogueira
 
powerpoint template for testing training
powerpoint template for testing trainingpowerpoint template for testing training
powerpoint template for testing training
John Roddy
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
Sauce Labs
 
Automation testing strategy, approach & planning
Automation testing  strategy, approach & planningAutomation testing  strategy, approach & planning
Automation testing strategy, approach & planning
SivaprasanthRentala1975
 
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
Elias Nogueira
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code Speak
Applitools
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
Elias Nogueira
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de software
Qualister
 
Test Automation Best Practices (with SOA test approach)
Test Automation Best Practices (with SOA test approach)Test Automation Best Practices (with SOA test approach)
Test Automation Best Practices (with SOA test approach)
Leonard Fingerman
 
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
Elias Nogueira
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
Elias Nogueira
 
Developing a test automation strategy by Brian Bayer
Developing a test automation strategy by Brian BayerDeveloping a test automation strategy by Brian Bayer
Developing a test automation strategy by Brian Bayer
QA or the Highway
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
Nayanda Haberty
 

Mais procurados (20)

Automated Testing with Agile
Automated Testing with AgileAutomated Testing with Agile
Automated Testing with Agile
 
How to Design a Successful Test Automation Strategy
How to Design a Successful Test Automation Strategy How to Design a Successful Test Automation Strategy
How to Design a Successful Test Automation Strategy
 
Building a Test Automation Strategy for Success
Building a Test Automation Strategy for SuccessBuilding a Test Automation Strategy for Success
Building a Test Automation Strategy for Success
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
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
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de Teste
 
6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture6 Traits of a Successful Test Automation Architecture
6 Traits of a Successful Test Automation Architecture
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
 
powerpoint template for testing training
powerpoint template for testing trainingpowerpoint template for testing training
powerpoint template for testing training
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
 
Automation testing strategy, approach & planning
Automation testing  strategy, approach & planningAutomation testing  strategy, approach & planning
Automation testing strategy, approach & planning
 
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
 
Cypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code SpeakCypress-vs-Playwright: Let the Code Speak
Cypress-vs-Playwright: Let the Code Speak
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de software
 
Test Automation Best Practices (with SOA test approach)
Test Automation Best Practices (with SOA test approach)Test Automation Best Practices (with SOA test approach)
Test Automation Best Practices (with SOA test approach)
 
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
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
Developing a test automation strategy by Brian Bayer
Developing a test automation strategy by Brian BayerDeveloping a test automation strategy by Brian Bayer
Developing a test automation strategy by Brian Bayer
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 

Semelhante a 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 iOS
Ricardo Valeriano
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
Robotium_Sikuli
Robotium_SikuliRobotium_Sikuli
Robotium_Sikuli
Lucas Cortazzo
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
Diego Pacheco
 
VRaptor4
VRaptor4VRaptor4
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
Robinson 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 Catch
Uilian 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 cecom
lucasbarsand
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
Ramon Ribeiro Rabello
 
Aula JPA
Aula JPAAula JPA
Aula JPA
Marco Reis
 
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
Loiane 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_jav
Julio Viegas
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app Android
Suelen Carvalho
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel
 
[DevOps Carioca] Continuous Delivery
[DevOps Carioca]  Continuous Delivery[DevOps Carioca]  Continuous Delivery
[DevOps Carioca] Continuous Delivery
Samanta 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
 

Semelhante a 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...
 

Mais de Elias Nogueira

API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
Elias 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 time
Elias 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écnico
Elias 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 automation
Elias 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ápidos
Elias 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 Gathering
Elias 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 containers
Elias 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 - Tests
Elias 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 Testes
Elias 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 Appium
Elias 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écnica
Elias 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
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
Elias Nogueira
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
Elias 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 Mobile
Elias 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 Application
Elias Nogueira
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
Elias Nogueira
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
Elias Nogueira
 

Mais de 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
 
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
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
 

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