SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioPatrick Monteiro
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comIdexcel Technologies
 
Automate REST API Testing
Automate REST API TestingAutomate REST API Testing
Automate REST API TestingTechWell
 
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
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API TestingSauce Labs
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de TesteElias Nogueira
 
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 ÁgilElias Nogueira
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API TestingQASource
 
Software Testing Life Cycle (STLC) | Software Testing Tutorial | Edureka
Software Testing Life Cycle (STLC) | Software Testing Tutorial | EdurekaSoftware Testing Life Cycle (STLC) | Software Testing Tutorial | Edureka
Software Testing Life Cycle (STLC) | Software Testing Tutorial | EdurekaEdureka!
 
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...Andreas Grabner
 
Workshop Agile Testing Mindset
Workshop Agile Testing MindsetWorkshop Agile Testing Mindset
Workshop Agile Testing MindsetElias Nogueira
 
API Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj RollisonAPI Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj RollisonTEST Huddle
 
Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8a34sharm
 
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
 
Demystifying observability
Demystifying observability Demystifying observability
Demystifying observability Abigail Bangser
 

Tendances (20)

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
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.comTest Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.com
 
Automate REST API Testing
Automate REST API TestingAutomate REST API Testing
Automate REST API Testing
 
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...
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API Testing
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de Teste
 
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
 
4 Major Advantages of API Testing
4 Major Advantages of API Testing4 Major Advantages of API Testing
4 Major Advantages of API Testing
 
Software Testing Life Cycle (STLC) | Software Testing Tutorial | Edureka
Software Testing Life Cycle (STLC) | Software Testing Tutorial | EdurekaSoftware Testing Life Cycle (STLC) | Software Testing Tutorial | Edureka
Software Testing Life Cycle (STLC) | Software Testing Tutorial | Edureka
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
Application Quality Gates in Continuous Delivery: Deliver Better Software Fas...
 
API Testing
API TestingAPI Testing
API Testing
 
Workshop Agile Testing Mindset
Workshop Agile Testing MindsetWorkshop Agile Testing Mindset
Workshop Agile Testing Mindset
 
API Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj RollisonAPI Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj Rollison
 
Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8Role Of Qa And Testing In Agile 1225221397167302 8
Role Of Qa And Testing In Agile 1225221397167302 8
 
JUNit Presentation
JUNit PresentationJUNit Presentation
JUNit Presentation
 
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
 
Demystifying observability
Demystifying observability Demystifying observability
Demystifying observability
 

Similaire à 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
 

Similaire à 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...
 

Plus 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 PyramidElias Nogueira
 
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 APIElias 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
 
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
 
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 e2eElias Nogueira
 

Plus 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
 
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
 
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
 
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