Middle
Πώς θα ελέγξετε την υπηρεσία ιστού;
sobes.tech AI
Απάντηση από AI
Ο έλεγχος μιας υπηρεσίας web περιλαμβάνει αρκετά βασικά στάδια και τύπους δοκιμών:
-
Κατανόηση απαιτήσεων και προδιαγραφών:
- Μελέτη της τεκμηρίωσης (Swagger/OpenAPI, WSDL, λειτουργικές προδιαγραφές).
- Διευκρίνιση ασαφών σημείων με την ομάδα ανάπτυξης ή τους επιχειρηματικούς αναλυτές.
-
Σχεδιασμός δοκιμών:
- Καθορισμός της στρατηγικής δοκιμών.
- Επιλογή μεθόδων και εργαλείων δοκιμών.
- Προγραμματισμός του όγκου δεδομένων δοκιμών.
-
Λειτουργικές δοκιμές:
- Θετικά σενάρια: Έλεγχος της αναμενόμενης συμπεριφοράς με σωστά δεδομένα εισόδου.
- Αρνητικά σενάρια: Έλεγχος επεξεργασίας λανθασμένων δεδομένων, σφαλμάτων, ορίων.
- Δοκιμές όλων των λειτουργιών (GET, POST, PUT, DELETE κ.ά.).
- Επικύρωση της δομής των αιτημάτων και απαντήσεων (JSON, XML).
- Έλεγχος καταστάσεων HTTP (2xx - επιτυχία, 4xx - σφάλμα πελάτη, 5xx - σφάλμα διακομιστή).
- Επανεκκίνηση του διακομιστή κατά τη διάρκεια λειτουργίας (για αρνητικά σενάρια).
-
Δοκιμές ολοκλήρωσης:
- Έλεγχος αλληλεπίδρασης της υπηρεσίας web με άλλες υπηρεσίες ή συστήματα.
- Χρήση εργαλείων που μπορούν να εξομοιώσουν απαντήσεις εξαρτώμενων υπηρεσιών (mock-servers).
-
Δοκιμές απόδοσης:
- Φόρτωση: Έλεγχος της συμπεριφοράς της υπηρεσίας υπό αναμενόμενη φόρτωση.
- Άγχος: Έλεγχος λειτουργίας υπό μεγαλύτερη φόρτωση από την αναμενόμενη για τον προσδιορισμό του σημείου αποτυχίας.
- Δοκιμές αντοχής (Endurance testing): Έλεγχος λειτουργίας υπό φόρτωση για μεγάλο χρονικό διάστημα.
- Μέτρηση χρόνου απόκρισης και διαπερατότητας.
-
Δοκιμές ασφαλείας:
- Έλεγχος αυθεντικοποίησης και εξουσιοδότησης.
- Επικύρωση εισόδων για την αποτροπή SQL injection, XSS και άλλων ευπαθειών.
- Έλεγχος παρουσίας HTTPS.
-
Δοκιμές δεδομένων:
- Έλεγχος ορθότητας των δεδομένων που επιστρέφονται από την υπηρεσία.
- Έλεγχος ακεραιότητας δεδομένων σε λειτουργίες δημιουργίας, ενημέρωσης και διαγραφής.
- Δοκιμές με μεγάλα όγκους δεδομένων.
-
Αυτοματοποίηση δοκιμών:
- Αυτοματοποίηση επαναλαμβανόμενων λειτουργικών δοκιμών.
- Χρήση βιβλιοθηκών και πλαισίων για αυτοματοποίηση API δοκιμών (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
- Ρύθμιση CI/CD για αυτόματη εκτέλεση δοκιμών.
-
Εργαλεία:
- Postman, Insomnia (χειροκίνητες και αυτοματοποιημένες δοκιμές).
- Apache JMeter, LoadRunner, Gatling (δοκιμές απόδοσης).
- OWASP ZAP, Burp Suite (δοκιμές ασφαλείας).
- Βιβλιοθήκες για γλώσσες προγραμματισμού (Rest Assured για Java, Requests για Python κ.ά.).
-
Αναφορές:
- Καταγραφή των ευρημάτων με λεπτομερή περιγραφή των βημάτων αναπαραγωγής, αναμενόμενων και πραγματικών αποτελεσμάτων, δεδομένων αιτήματος/απάντησης, κατάστασης HTTP και καταγραφών.
- Σύνταξη αναφορών προόδου δοκιμών.
Παράδειγμα αυτοματοποιημένης δοκιμής σε Java με χρήση Rest Assured:
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
class UserServiceTest {
@Test
void testGetUserById() {
int userId = 1;
given()
.baseUri("http://api.example.com") // Βασική διεύθυνση URL της υπηρεσίας
.when()
.get("/users/" + userId) // Μέθοδος και endpoint
.then()
.statusCode(200) // Έλεγχος κωδικού κατάστασης
.body("id", equalTo(userId)) // Έλεγχος πεδίου στο σώμα απάντησης
.body("name", equalTo("John Doe")); // Έλεγχος άλλου πεδίου
}
@Test
void testCreateUser() {
String requestBody = "{\n" +
" \"name\": \"Jane Smith\",\n" +
" \"email\": \"jane.smith@example.com\"\n" +
"}";
given()
.baseUri("http://api.example.com")
.contentType("application/json") // Ορισμός τύπου περιεχομένου
.body(requestBody) // Αποστολή σώματος αιτήματος
.when()
.post("/users") // Μέθοδος και endpoint για δημιουργία
.then()
.statusCode(201) // Έλεγχος κωδικού κατάστασης "Created"
.body("name", equalTo("Jane Smith"))
.body("id", org.hamcrest.Matchers.notNullValue()); // Έλεγχος ότι δημιουργήθηκε ID
}
}