Postman API Prüfung¶
Umfassende Postman Shortcuts und Workflows für API-Entwicklung und -Test.
Hauptnavigation¶
Shortcut | Description |
---|---|
Ctrl+N |
New Request |
Ctrl+Shift+N |
New Collection |
Ctrl+O |
Open |
Ctrl+S |
Save |
Ctrl+Shift+S |
Save As |
Ctrl+Enter |
Send Request |
Ctrl+R |
Reload |
Ctrl+W |
Close Tab |
Ctrl+Shift+W |
Close All Tabs |
Ctrl+T |
New Tab |
Ctrl+Shift+T |
Reopen Closed Tab |
Verwaltung¶
Shortcut | Description |
---|---|
Ctrl+L |
Focus URL Bar |
Ctrl+M |
Change HTTP Method |
Ctrl+Shift+P |
Open Command Palette |
Ctrl+K |
Search Collections |
Ctrl+H |
Show/Hide Sidebar |
Ctrl+Alt+C |
Open Console |
Ctrl+Alt+E |
Open Environment Quick Look |
Textbearbeitung¶
Shortcut | Description |
---|---|
Ctrl+A |
Select All |
Ctrl+C |
Copy |
Ctrl+V |
Paste |
Ctrl+X |
Cut |
Ctrl+Z |
Undo |
Ctrl+Y |
Redo |
Ctrl+F |
Find |
Ctrl+G |
Find Next |
Ctrl+Shift+G |
Find Previous |
F3 |
Find Next |
Shift+F3 |
Find Previous |
Umwelt und Varianten¶
Shortcut | Description |
---|---|
Ctrl+Alt+E |
Environment Quick Look |
Ctrl+Shift+E |
Manage Environments |
\\{\\{variable\\}\\} |
Variable Syntax |
pm.environment.get("var") |
Get Environment Variable |
pm.environment.set("var", "value") |
Set Environment Variable |
pm.globals.get("var") |
Get Global Variable |
pm.globals.set("var", "value") |
Set Global Variable |
HTTP Methoden und Statuscodes¶
Gemeinsames HTTP Methoden¶
Method | Purpose | Example |
---|---|---|
GET |
Retrieve data | Get user profile |
POST |
Create new resource | Create new user |
PUT |
Update entire resource | Update user profile |
PATCH |
Partial update | Update user email |
DELETE |
Remove resource | Delete user account |
HEAD |
Get headers only | Check if resource exists |
OPTIONS |
Get allowed methods | CORS preflight |
HTTP Status Codes¶
Code Range | Type | Common Codes |
---|---|---|
2xx |
Success | 200 OK, 201 Created, 204 No Content |
3xx |
Redirection | 301 Moved, 302 Found, 304 Not Modified |
4xx |
Client Error | 400 Bad Request, 401 Unauthorized, 404 Not Found |
5xx |
Server Error | 500 Internal Error, 502 Bad Gateway, 503 Unavailable |
Pre-Request Scripts¶
Gemeinsame Pre-Request Script Beispiele¶
```javascript // Set timestamp pm.environment.set("timestamp", Date.now());
// Generate random data pm.environment.set("randomEmail", "user" + Math.random().toString(36).substring(7) + "@example.com");
// Set authentication token const token = pm.environment.get("auth_token"); pm.request.headers.add(\\{ key: "Authorization", value: "Bearer " + token \\});
// Generate UUID const uuid = require('uuid'); pm.environment.set("requestId", uuid.v4());
// Base64 encode credentials const username = pm.environment.get("username"); const password = pm.environment.get("password"); const credentials = btoa(username + ":" + password); pm.environment.set("basicAuth", credentials); ```_
Testskripte¶
Grundlegende Hinweise¶
```javascript // Status code tests pm.test("Status code is 200", function () \\{ pm.response.to.have.status(200); \\});
pm.test("Status code name has string", function () \\{ pm.response.to.have.status("OK"); \\});
// Response time test pm.test("Response time is less than 200ms", function () \\{ pm.expect(pm.response.responseTime).to.be.below(200); \\});
// Header tests pm.test("Content-Type is present", function () \\{ pm.response.to.have.header("Content-Type"); \\});
pm.test("Content-Type is application/json", function () \\{ pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json"); \\}); ```_
JSON Prüfverfahren¶
```javascript // Parse JSON response const responseJson = pm.response.json();
// Test JSON structure pm.test("Response has required fields", function () \\{ pm.expect(responseJson).to.have.property("id"); pm.expect(responseJson).to.have.property("name"); pm.expect(responseJson).to.have.property("email"); \\});
// Test specific values pm.test("User ID is correct", function () \\{ pm.expect(responseJson.id).to.eql(123); \\});
pm.test("Email format is valid", function () \\{ pm.expect(responseJson.email).to.match(/[\s@]+@[\s@]+.[\s@]+$/); \\});
// Test array responses pm.test("Response is an array", function () \\{ pm.expect(responseJson).to.be.an('array'); \\});
pm.test("Array has correct length", function () \\{ pm.expect(responseJson).to.have.lengthOf(5); \\}); ```_
Variable Extraktion¶
```javascript // Extract data from response const responseJson = pm.response.json();
// Set environment variables pm.environment.set("userId", responseJson.id); pm.environment.set("userToken", responseJson.token);
// Extract from headers const location = pm.response.headers.get("Location"); pm.environment.set("resourceUrl", location);
// Extract using regex const responseText = pm.response.text(); const match = responseText.match(/token:\s*"([^"]+)"/); if (match) \\{ pm.environment.set("extractedToken", match[1]); \\} ```_
Sammlung Runner¶
Laufende Sammlungen¶
```javascript // Collection variables pm.collectionVariables.set("baseUrl", "https://api.example.com"); pm.collectionVariables.get("baseUrl");
// Data-driven testing // Use CSV or JSON files for test data // Access data using pm.iterationData.get("fieldName")
// Workflow control postman.setNextRequest("Request Name"); postman.setNextRequest(null); // Stop execution ```_
Authentication Workflows¶
Auf den Wunschzettel¶
javascript
// Pre-request script for login
pm.sendRequest(\\\\{
url: pm.environment.get("baseUrl") + "/auth/login",
method: "POST",
header: \\\\{
"Content-Type": "application/json"
\\\\},
body: \\\\{
mode: "raw",
raw: JSON.stringify(\\\\{
username: pm.environment.get("username"),
password: pm.environment.get("password")
\\\\})
\\\\}
\\\\}, function (err, response) \\\\{
if (response.code === 200) \\\\{
const token = response.json().token;
pm.environment.set("authToken", token);
\\\\}
\\\\});
_
OAuth 2.0¶
```javascript // OAuth 2.0 configuration const clientId = pm.environment.get("clientId"); const clientSecret = pm.environment.get("clientSecret"); const tokenUrl = pm.environment.get("tokenUrl");
pm.sendRequest(\\{ url: tokenUrl, method: "POST", header: \\{ "Content-Type": "application/x-www-form-urlencoded" \\}, body: \\{ mode: "urlencoded", urlencoded: [ \\{key: "grant_type", value: "client_credentials"\\}, \\{key: "client_id", value: clientId\\}, \\{key: "client_secret", value: clientSecret\\} ] \\} \\}, function (err, response) \\{ if (response.code === 200) \\{ const accessToken = response.json().access_token; pm.environment.set("accessToken", accessToken); \\} \\}); ```_
API Testing Workflows¶
CRUD Operations Testing¶
```javascript // 1. Create Resource (POST) pm.test("Create user successfully", function () \\{ pm.response.to.have.status(201); const user = pm.response.json(); pm.environment.set("createdUserId", user.id); \\});
// 2. Read Resource (GET) pm.test("Get user successfully", function () \\{ pm.response.to.have.status(200); const user = pm.response.json(); pm.expect(user.id).to.eql(pm.environment.get("createdUserId")); \\});
// 3. Update Resource (PUT/PATCH) pm.test("Update user successfully", function () \\{ pm.response.to.have.status(200); \\});
// 4. Delete Resource (DELETE) pm.test("Delete user successfully", function () \\{ pm.response.to.have.status(204); \\}); ```_
Fehlerbehandlungstests¶
```javascript // Test error responses pm.test("Returns 400 for invalid data", function () \\{ pm.response.to.have.status(400); const error = pm.response.json(); pm.expect(error).to.have.property("message"); \\});
pm.test("Returns 401 for unauthorized access", function () \\{ pm.response.to.have.status(401); \\});
pm.test("Returns 404 for non-existent resource", function () \\{ pm.response.to.have.status(404); \\}); ```_
Best Practices¶
Organisation¶
- Verwenden Sie Sammlungen zu Gruppenanfragen
- Erstellen Sie Ordner innerhalb von Sammlungen für logische Gruppierung
- Deskriptive Namen für Anfragen und Sammlungen verwenden
- Dokumente APIs mit Sammlungsbeschreibungen
- Verwenden Sie Umgebungsvariablen für verschiedene Stufen (dev, staging, prod)
Teststrategie¶
- Vollständige Testskripte schreiben
- Testen Sie positive und negative Szenarien
- Gültige Antwortstruktur und Datentypen
- Antwortzeiten und Leistung überprüfen
- Prüffehlerbehandlung und Kantenfälle
Datenverwaltung¶
- Verwenden Sie Umgebungsvariablen für die Konfiguration
- Implementierung datengesteuerter Tests mit CSV/JSON-Dateien
- Prüfdaten nach der Testdurchführung reinigen
- Verwenden Sie dynamische Variablen für einzigartige Testdaten
- Separate Testdaten aus Produktionsdaten
Zusammenarbeit¶
- Sammeln mit Teammitgliedern teilen
- Verwendung der Versionskontrolle für Sammelausfuhren
- Dokumente API Änderungen und Testupdates
- Erstellen Sie wiederverwendbare Testskripte und Snippets
- Benennung Konventionen und Standards