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.3
Lançamento: ~ 2 anos atrás
Popularidade: +1900 +2100★ Github
Karate - DSL para testes de api
Karate Karate Netty Karate Gatling
API Test API Mock API Perf
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 == '# []'
asserções
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 - 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
Karate DSL - Code coverage w/ Jacoco
Hands onAPI de Livros
em progresso
Karate
API
Karate
Netty
Karate
Gatling
Karate
Driver
Karate
Appium
Karate
Desktop
KarateFramework
github.com/samlucax/karate-example
Karatê DSL - Artigo & Projeto
Obrigado!
Samuel Lucas
@samlucax

Karatê DSL - Automatizando testes de API de forma simples - GUTS RS - Junho