Sobes.tech
Junior

Πώς θα ελέγξετε ότι επιστρέψατε τα σωστά πεδία;

sobes.tech AI

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

Ο έλεγχος ότι επιστρέφονται ακριβώς τα απαραίτητα πεδία μπορεί να γίνει με διάφορους τρόπους, ανάλογα με τον τύπο της απάντησης (JSON, XML κ.λπ.), το εργαλείο που χρησιμοποιείται και το επίπεδο δοκιμής (API, E2E):

  1. Επικύρωση σχήματος απάντησης (Schema Validation):

    • Ο πιο αξιόπιστος τρόπος.
    • Δημιουργείται ένα σχήμα (JSON Schema, XML Schema) που περιγράφει τη δομή και τους αναμενόμενους τύπους δεδομένων.
    • Η απάντηση επικυρώνεται σύμφωνα με αυτό το σχήμα.
    • Εγγυάται την παρουσία/απουσία πεδίων, τους τύπους τους και, προαιρετικά, κανονικές εκφράσεις για τις τιμές.
    // Παράδειγμα JSON Schema για μια απάντηση χρήστη
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Άμεσος έλεγχος παρουσίας/απουσίας πεδίων και τιμών (Field Presence and Value Assertion):

    • Ανάλυση της απάντησης.
    • Έλεγχος ότι κάθε αναμενόμενο πεδίο υπάρχει.
    • Έλεγχος ότι ανεπιθύμητα πεδία δεν υπάρχουν.
    • Έλεγχος των τύπων δεδομένων των πεδίων.
    • Έλεγχος των τιμών των πεδίων (σε σχέση με μια συγκεκριμένη τιμή, κανονική έκφραση, εύρος κ.λπ.).
    # Παράδειγμα ελέγχου JSON απάντησης σε Python (με requests και pytest)
    import requests
    import pytest
    
    def test_user_response_fields():
        response = requests.get("http://api.example.com/users/1")
        assert response.status_code == 200
        data = response.json()
    
        # Έλεγχος παρουσίας πεδίων
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Έλεγχος ότι ανεπιθύμητα πεδία δεν υπάρχουν (π.χ., 'password')
        assert "password" not in data
    
        # Έλεγχος τύπων πεδίων
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Έλεγχος τιμών (παράδειγμα)
        assert data["id"] > 0
        assert "@" in data["email"]  # Απλός έλεγχος μορφής email
    
  3. Σύγκριση με χρυσό πρότυπο (Golden Master / Snapshot Testing):

    • Αποθηκεύεται μια γνωστή σωστή απάντηση (πρότυπο).
    • Η τρέχουσα απάντηση συγκρίνεται με το πρότυπο.
    • Χρησιμοποιείται για τον έλεγχο της σταθερότητας της δομής, αλλά είναι λιγότερο ευέλικτο σε αναμενόμενες αλλαγές στα δεδομένα.
  4. Χρήση εξειδικευμένων βιβλιοθηκών/πλαισίων:

    • RestAssured (Java)
    • Postman (Newman): επιτρέπει τη συγγραφή δοκιμών σε JavaScript, συμπεριλαμβανομένων ελέγχων σχήματος και πεδίων.
    • Pytest/unittest με βιβλιοθήκες για JSON/XML.

Η επιλογή της μεθόδου εξαρτάται από την πολυπλοκότητα της δομής της απάντησης, τις απαιτήσεις ακρίβειας ελέγχου και το τεχνολογικό στοίβα που χρησιμοποιείται. Η επικύρωση σχήματος είναι το χρυσό πρότυπο για δοκιμές API, καθώς καλύπτει όλες τις πτυχές της δομής και των τύπων δεδομένων.