Sobes.tech
Middle

Πώς θα ελέγξετε την υπηρεσία ιστού;

sobes.tech AI

Απάντηση από AI

Ο έλεγχος μιας υπηρεσίας web περιλαμβάνει αρκετά βασικά στάδια και τύπους δοκιμών:

  1. Κατανόηση απαιτήσεων και προδιαγραφών:

    • Μελέτη της τεκμηρίωσης (Swagger/OpenAPI, WSDL, λειτουργικές προδιαγραφές).
    • Διευκρίνιση ασαφών σημείων με την ομάδα ανάπτυξης ή τους επιχειρηματικούς αναλυτές.
  2. Σχεδιασμός δοκιμών:

    • Καθορισμός της στρατηγικής δοκιμών.
    • Επιλογή μεθόδων και εργαλείων δοκιμών.
    • Προγραμματισμός του όγκου δεδομένων δοκιμών.
  3. Λειτουργικές δοκιμές:

    • Θετικά σενάρια: Έλεγχος της αναμενόμενης συμπεριφοράς με σωστά δεδομένα εισόδου.
    • Αρνητικά σενάρια: Έλεγχος επεξεργασίας λανθασμένων δεδομένων, σφαλμάτων, ορίων.
    • Δοκιμές όλων των λειτουργιών (GET, POST, PUT, DELETE κ.ά.).
    • Επικύρωση της δομής των αιτημάτων και απαντήσεων (JSON, XML).
    • Έλεγχος καταστάσεων HTTP (2xx - επιτυχία, 4xx - σφάλμα πελάτη, 5xx - σφάλμα διακομιστή).
    • Επανεκκίνηση του διακομιστή κατά τη διάρκεια λειτουργίας (για αρνητικά σενάρια).
  4. Δοκιμές ολοκλήρωσης:

    • Έλεγχος αλληλεπίδρασης της υπηρεσίας web με άλλες υπηρεσίες ή συστήματα.
    • Χρήση εργαλείων που μπορούν να εξομοιώσουν απαντήσεις εξαρτώμενων υπηρεσιών (mock-servers).
  5. Δοκιμές απόδοσης:

    • Φόρτωση: Έλεγχος της συμπεριφοράς της υπηρεσίας υπό αναμενόμενη φόρτωση.
    • Άγχος: Έλεγχος λειτουργίας υπό μεγαλύτερη φόρτωση από την αναμενόμενη για τον προσδιορισμό του σημείου αποτυχίας.
    • Δοκιμές αντοχής (Endurance testing): Έλεγχος λειτουργίας υπό φόρτωση για μεγάλο χρονικό διάστημα.
    • Μέτρηση χρόνου απόκρισης και διαπερατότητας.
  6. Δοκιμές ασφαλείας:

    • Έλεγχος αυθεντικοποίησης και εξουσιοδότησης.
    • Επικύρωση εισόδων για την αποτροπή SQL injection, XSS και άλλων ευπαθειών.
    • Έλεγχος παρουσίας HTTPS.
  7. Δοκιμές δεδομένων:

    • Έλεγχος ορθότητας των δεδομένων που επιστρέφονται από την υπηρεσία.
    • Έλεγχος ακεραιότητας δεδομένων σε λειτουργίες δημιουργίας, ενημέρωσης και διαγραφής.
    • Δοκιμές με μεγάλα όγκους δεδομένων.
  8. Αυτοματοποίηση δοκιμών:

    • Αυτοματοποίηση επαναλαμβανόμενων λειτουργικών δοκιμών.
    • Χρήση βιβλιοθηκών και πλαισίων για αυτοματοποίηση API δοκιμών (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Ρύθμιση CI/CD για αυτόματη εκτέλεση δοκιμών.
  9. Εργαλεία:

    • Postman, Insomnia (χειροκίνητες και αυτοματοποιημένες δοκιμές).
    • Apache JMeter, LoadRunner, Gatling (δοκιμές απόδοσης).
    • OWASP ZAP, Burp Suite (δοκιμές ασφαλείας).
    • Βιβλιοθήκες για γλώσσες προγραμματισμού (Rest Assured για Java, Requests για Python κ.ά.).
  10. Αναφορές:

    • Καταγραφή των ευρημάτων με λεπτομερή περιγραφή των βημάτων αναπαραγωγής, αναμενόμενων και πραγματικών αποτελεσμάτων, δεδομένων αιτήματος/απάντησης, κατάστασης 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
    }
}