SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Karate DSL
testes de api de forma
simples
Karate - DSL para testes de api
Open Source
Autor: Peter Thomas / @ptrthomas
Versão atual: 0.9.2
Lançamento: ~ 2 anos atrás
Popularidade: +1800 +1850★ Github
Karate - DSL para testes de api
Karate Karate Netty Karate Gatling
Automação
de testes de
API
Mocks
Testes de
performance
de APIs
ok, mas como isso ajuda?
sintaxe simples.
Scenario: Listar livros cadastrados
Given path 'books'
When method GET
Then status 200
And match response.data == '# []'
sintaxe simples.
Scenario: Listar livros cadastrados
Given path 'books'
When method GET
Then status 200
And match response.data == '# []'
sintaxe simples.
Scenario: Listar livros cadastrados
Given path 'books'
When method GET
Then status 200
And match response.data == '# []'
sintaxe simples.
Scenario: Listar livros cadastrados
Given path 'books'
When method GET
Then status 200
And match response.data == '# []'
sintaxe simples.
Scenario: Listar livros cadastrados
Given path 'books'
When method GET
Then status 200
And match response.data == '# []'
ok, e como isso funciona?
Runner
(JUnit,
TestNG)
Karate Script
(Feature)
Karate DSL Architecture
Java8JRE
Karate DSL Interpreter
(Cucumber "Step Definitions")
HTTP Client
Abstraction
Apache Jersey
JS
Engine
(Nashorn) Data Functions
match, get, set
JSON XML
ok, e como eu rodo esses testes?
Karate DSL - Execução (stand)
java -jar karate.jar src/features
Karate DSL - Execução (gherkin plugin)
Karate DSL - Execução (runner)
//outros imports que não imports nesse moments
public class ApiStatusRunner {
@Test
public void testParalell() {
}
ok, e como vejo se meu teste passou?
Karate DSL - Karate Report
Karate DSL - Cucumber Report
Karate DSL - Code coverage w/ Jacoco
Karate DSL - Execução paralela
//outros imports que não imports nesse moments
import com.intuit.karate.Runner;
public class ApiStatusRunner {
@Test
public void testParalell() {
Results results = Runner.parallel(getClass(), 1);
assertTrue(results.getErrorMessages(), results.getFailCount() == 0);
}
Quantidade
de threads.
Karate DSL - Execução paralela (stand)
java -jar karate.jar --threads 5 src/features
Karate DSL - Execução paralela (exemplo)
> java -jar karate.jar --threads 1 src/features
Threads duração em TST (seg) duração em PROD (seg)
1 81 23
40 cenários
Karate DSL - Execução paralela (exemplo)
> java -jar karate.jar --threads 5 src/features
Threads duração em TST (seg) duração em PROD (seg)
1 81 23
5 30 13
40 cenários
Karate DSL - Execução paralela (exemplo)
> java -jar karate.jar --threads 10 src/features
Threads duração em TST (seg) duração em PROD (seg)
1 81 23
5 30 13
10 26 8
40 cenários
Karate DSL - Execução paralela (exemplo)
> java -jar karate.jar --threads 15 src/features
Threads duração em TST (seg) duração em PROD (seg)
1 81 23
5 30 13
10 26 8
15 22 6
40 cenários
Demoscriando uma feature
executando sem projeto
execução paralela
criando um projeto
executando com projeto
eta, e vem mais por aí?
Karate
API
Karate
Netty
Karate
Gatling
Karate
Driver
Karate
Appium
Karate
Desktop
KarateFrameworks
github.com/samlucax/karate-example
Karatê DSL - Artigo & Projeto
Obrigado!
Samuel Lucas
@samlucax

Mais conteúdo relacionado

Semelhante a GDG POA - Karate DSL - Automatizando testes de api de forma simples

TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dadostdc-globalcode
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9Nando Vieira
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XMLiMasters
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivityffeitosa
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicasHelder da Rocha
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Webgoal
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
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
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESSelliando dias
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkFelipe
 
CouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsCouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsJuan Maiz
 

Semelhante a GDG POA - Karate DSL - Automatizando testes de api de forma simples (20)

TDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de DadosTDC2016SP - Trilha Banco de Dados
TDC2016SP - Trilha Banco de Dados
 
Como criar Custom Tags
Como criar Custom TagsComo criar Custom Tags
Como criar Custom Tags
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XML
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Threads 04 Variáveis atômicas
Threads 04 Variáveis atômicasThreads 04 Variáveis atômicas
Threads 04 Variáveis atômicas
 
Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho Gems para colocar seus testes no trilho
Gems para colocar seus testes no trilho
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
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
 
Regras de Produção: o Motor de Inferência JESS
Regras de Produção:o Motor de Inferência JESSRegras de Produção:o Motor de Inferência JESS
Regras de Produção: o Motor de Inferência JESS
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache Spark
 
Melhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e TestesMelhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e Testes
 
CouchDB vs Postgres em Rails
CouchDB vs Postgres em RailsCouchDB vs Postgres em Rails
CouchDB vs Postgres em Rails
 

GDG POA - Karate DSL - Automatizando testes de api de forma simples

  • 1. Karate DSL testes de api de forma simples
  • 2. Karate - DSL para testes de api Open Source Autor: Peter Thomas / @ptrthomas Versão atual: 0.9.2 Lançamento: ~ 2 anos atrás Popularidade: +1800 +1850★ Github
  • 3. Karate - DSL para testes de api Karate Karate Netty Karate Gatling Automação de testes de API Mocks Testes de performance de APIs
  • 4. ok, mas como isso ajuda?
  • 5. sintaxe simples. Scenario: Listar livros cadastrados Given path 'books' When method GET Then status 200 And match response.data == '# []'
  • 6. sintaxe simples. Scenario: Listar livros cadastrados Given path 'books' When method GET Then status 200 And match response.data == '# []'
  • 7. sintaxe simples. Scenario: Listar livros cadastrados Given path 'books' When method GET Then status 200 And match response.data == '# []'
  • 8. sintaxe simples. Scenario: Listar livros cadastrados Given path 'books' When method GET Then status 200 And match response.data == '# []'
  • 9. sintaxe simples. Scenario: Listar livros cadastrados Given path 'books' When method GET Then status 200 And match response.data == '# []'
  • 10. ok, e como isso funciona?
  • 11. Runner (JUnit, TestNG) Karate Script (Feature) Karate DSL Architecture Java8JRE Karate DSL Interpreter (Cucumber "Step Definitions") HTTP Client Abstraction Apache Jersey JS Engine (Nashorn) Data Functions match, get, set JSON XML
  • 12. ok, e como eu rodo esses testes?
  • 13. Karate DSL - Execução (stand) java -jar karate.jar src/features
  • 14. Karate DSL - Execução (gherkin plugin)
  • 15. Karate DSL - Execução (runner) //outros imports que não imports nesse moments public class ApiStatusRunner { @Test public void testParalell() { }
  • 16. ok, e como vejo se meu teste passou?
  • 17. Karate DSL - Karate Report
  • 18. Karate DSL - Cucumber Report
  • 19. Karate DSL - Code coverage w/ Jacoco
  • 20. Karate DSL - Execução paralela //outros imports que não imports nesse moments import com.intuit.karate.Runner; public class ApiStatusRunner { @Test public void testParalell() { Results results = Runner.parallel(getClass(), 1); assertTrue(results.getErrorMessages(), results.getFailCount() == 0); } Quantidade de threads.
  • 21. Karate DSL - Execução paralela (stand) java -jar karate.jar --threads 5 src/features
  • 22. Karate DSL - Execução paralela (exemplo) > java -jar karate.jar --threads 1 src/features Threads duração em TST (seg) duração em PROD (seg) 1 81 23 40 cenários
  • 23. Karate DSL - Execução paralela (exemplo) > java -jar karate.jar --threads 5 src/features Threads duração em TST (seg) duração em PROD (seg) 1 81 23 5 30 13 40 cenários
  • 24. Karate DSL - Execução paralela (exemplo) > java -jar karate.jar --threads 10 src/features Threads duração em TST (seg) duração em PROD (seg) 1 81 23 5 30 13 10 26 8 40 cenários
  • 25. Karate DSL - Execução paralela (exemplo) > java -jar karate.jar --threads 15 src/features Threads duração em TST (seg) duração em PROD (seg) 1 81 23 5 30 13 10 26 8 15 22 6 40 cenários
  • 26. Demoscriando uma feature executando sem projeto execução paralela criando um projeto executando com projeto
  • 27. eta, e vem mais por aí? Karate API Karate Netty Karate Gatling Karate Driver Karate Appium Karate Desktop KarateFrameworks