Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Testování RESTful API v rámci continuous integration
1. Testování RESTful API v rámci continuous
integration
Bc. Martin Štekl
steklmar@fit.cvut.cz
12. ˇcervna 2014
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 1 / 12
2. Cíle práce
Uspoˇrdádání znalostí o testování SW a o testování RESTful API
Porovnání r °uzných nástroj °u na testování nebo popis RESTful API
Vývoj ˇci vylepšení nástroje pro testování RESTful API
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 2 / 12
3. Proˇc toto téma?
Málo zmapované testování RESTful API
Relativnˇe málo nástroj °u
Rˇ ešení reálného problému s testováním RESTful API
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 3 / 12
4. Analytická ˇcást práce
Testovací proces vˇcetnˇe metod, typ °u a úrovní test °u
Návaznosti na testování RESTful API
Porovnání nástroj °u na testování nebo popis RESTful API
Osobní konzultace s vývojáˇri z Apiary
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 4 / 12
5. Scénáˇrové testování RESTful API
Doposud pouze vlastním kódem
Žádná vazba na dokumentaci nebo na tutorial
Cucumber - základní nástroj pro implementaci scénáˇrového
testování RESTful API
API Blueprint - jazyk pro popis RESTful API
Zvolena implementace v JavaScriptu (Coffee Scriptu)
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 5 / 12
6. Cucumber
Syntaxe Gherkin pro zápis test °u
Základní stavební bloky Feature, Background a Scenario
Jednotlivé kroky testu, tzv. Step definitions
I Given
I When
I Then
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 6 / 12
7. Definice vlastních step definitions
Naˇctení API Blueprint souboru
Nastavení endpointu
Výbˇ er akce z API Blueprint souboru
Nastavení a asertace HTTP hlaviˇcek
Nastavení a asertace t ˇ ela zprávy
Speciální nastavení a asertace hlaviˇcky Content-Type
Asertace HTTP kódu odpovˇ edi
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 7 / 12
8. Ukázka vlastního scénáˇre
Background:
Given API Blueprint in file "test/fixtures/apiary.apib"
And base url http://localhost:3333
Scenario: Create a Machine
When I do action Machines > Machines collection >
Create a Machine
And the request message header Accept is application/json
And the request message body is JSON
"""
{
"type": "bulldozer",
"name": "willy"
}
"""
Then It should be Accepted
And the response message header Content-Encoding is none
And the response message body is JSON
"""
{
"message": "Accepted"
}
"""
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 8 / 12
9. Výstup spuštˇeného testu
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 9 / 12
10. Testování samotného nástoje
První verze výraznˇe zrefaktorována
Automatické testy na serveru Travis CI pˇres GitHub hooky
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 10 / 12
11. Závˇ er
Uspoˇrádané myšlenky a znalosti o testování RESTful API
Základní verze nástroje pro scénáˇrové testování RESTful API
Cíle práce byly naplnˇeny s drobnou odchylkou
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 11 / 12
12. Dˇ ekuji za pozornost
Bc. Martin Štekl (FIT Cˇ VUT) Testování RESTful API v rámci continuous integration 12. cˇervna 2014 12 / 12