====== LU07.A02 - Bookshelf testen ======
Teste die API der Bookshelf-Applikation mit Postman.
===== Bookshelf-Applikation =====
Die Webapplikation "Bookshelf" stellt eine API zur Verwaltung eines Bücherregals bereit.
Über diese API kann ein Programm die Bücher lesen, erstellen, ändern und löschen.
==== Dokumentation der API ====
Die API ist unter ''https://it.bzz.ch/book/FUNKTION'' erreichbar.
Der Pfad der einzelnen Funktionen wird jeweils hinten angehängt. Also z.B.: ''https://it.bzz.ch/book/list''.
=== Buch lesen ===
Liest ein einzelnes Buch anhand der UUID.
* Pfad: ''read/''
* HTTP-Methode: GET
* Response: Buch als JSON-Struktur
* HTTP-Status:
* 200 = Buch gefunden
* 404 = Kein Buch gefunden
=== Buch löschen ===
Löscht ein einzelnes Buch anhand der UUID.
* Pfad: ''delete/''
* HTTP-Methode: DELETE
* Response: leer
* HTTP-Status:
* 200 = Buch gelöscht
* 404 = Kein Buch gefunden
=== Buch speichern ===
Speichert ein Buch mit den angegebenen Formulardaten.
Falls eine bekannte Buch-UUID mitgegeben wird, wird das Buch geändert.
Andernfalls wird ein neues Buch erstellt.
* Pfad: ''save''
* HTTP-Methode: POST
* Daten (x-www-form-urlencoded):
* book_uuid (optional)
* title
* author
* price
* format
* isbn (optional)
* Reponse: leer
* HTTP-Status
* 200 = Bestehendes Buch wurde aktualisiert.
* 201 = Neues Buch wurde eingefügt.
* 400 = Daten fehlen oder sind formal ungültig
* 422 = Daten entsprechen nicht den Validierungsregeln
==== Validierungsregeln ====
^ Datenfeld ^ Datentyp ^ Regeln ^
| book_uuid| UUIDv4 | Die UUID eines Buchs. |
| title | String | 2-50 Zeichen, alle Zeichen der [[https://www.ascii-code.com/ISO-8859-1|ASCII-Codetabelle gemäss ISO-8859-1]]. |
| author | String | 4-100 Zeichen, alle Zeichen der [[https://www.ascii-code.com/ISO-8859-1|ASCII-Codetabelle gemäss ISO-8859-1]]. |
| price | Decimal | 0.00 - 299.95 mit maximal 2 Nachkommastellen |
| isbn | String | optional, [[wpde>Internationale_Standardbuchnummer|ISBN-13 Nummer]] |
| format | Auswahl | Hardcover, Softcover, eBook oder Audio |
==== Testdaten ====
Diese Testdaten stehen in der API zur Verfügung.
[
{
"book_uuid": "c746a291-0ef9-4b2a-8268-392b12d636bd",
"title": "The Winds of Winter",
"author": "George R R Martin",
"price": 52.75,
"format": "Hardcover",
"isbn": "978-0-1256-0432-1"
},
{
"book_uuid": "d82bf28e-eb73-45c9-9ce3-1f94a599a0b5",
"title": "The Shadow of What Was Lost",
"author": "James Islington",
"price": 15.3,
"format": "eBook",
"isbn": "978-0-3162-7407-4"
},
{
"book_uuid": "3247c340-c712-402e-b400-0a23a9368c97",
"title": "An Echo Of Things To Come",
"author": "James Islington",
"price": 32.5,
"format": "",
"isbn": "978-0-3162-7409-8"
}
]
===== Aufträge =====
==== Testfälle (Requests) erstellen ====
Erstelle die Testfälle mit Postman zu jeder API-Funktion.
* Für jeden möglichen HTTP-Statuscode muss ein eigener Testfall erstellt werden.
* Zum Testen der Validierung der Daten, müssen Testfälle gemäss Äquivalenzklassen-Analyse erstellt werden.
==== Beispiel: read ====
Falls die Funktion ''read'' ein Buch findet, liefert sie die Daten des Buchs und den HTTP-Status 200.
Andernfalls antwortet die Funktion mit dem HTTP-Status 404.
Du brauchst also 2 Testfälle für diese Funktion.
==== Tests durchführen ====
Führe die Tests manuell aus.
Betrachte die Resultate (Daten, HTTP-Statuscode).
Nutze den Collection Runner um alle Requests automatisch auszuführen.
Studiere den Output des Collection Runners.
===== Abgabe =====
Exportiere alle erstellten Postfälle als JSON-Datei.
Lade die JSON-Datei hier in Moodle hoch.
----
{{tag>M450-LU07}}
[[https://creativecommons.org/licenses/by-nc-sa/4.0/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] Marcel Suter