Sobes.tech
Junior

Ինչպե՞ս կստուգեք, որ ճիշտ դաշտերը վերադարձրել եք:

sobes.tech AI

Պատասխան AI-ից

Տուգտել, որ վերադարձված են հենց անհրաժեշտ դաշտերը, հնարավոր է մի քանի եղանակով՝ կախված պատասխանների տիպից (JSON, XML և այլն), օգտագործվող գործիքի և թեստավորման մակարդակից (API, E2E).

  1. Պատասխանային սխեմայի վավերացում (Schema Validation):

    • Ամենահավատարիմ մեթոդն է:
    • Ստեղծվում է սխեմա (JSON Schema, XML Schema), որը նկարագրում է սպասվող պատասխանների կառուցվածքը և տվյալների տիպերը:
    • Պատասխանն վավերացվում է այդ սխեմայի համաձայն:
    • Գերաշխավորում է դաշտերի առկայությունը/չլինելը, դրանց տիպերը և, ցանկության դեպքում, կանոնավոր արտահայտությունները արժեքների համար:
    // Օրինակ JSON սխեմա օգտվողի պատասխանին
    {
      "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"] # Պարզ ստուգում էլ.փոստի ձևաչափի
    
  3. Համեմատություն ստանդարտի հետ (Golden Master / Snapshot Testing):

    • Նախապես պահվում է ճիշտ պատասխան (ստանդարտ):
    • Ներկա պատասխանն համեմատվում է ստանդարտի հետ:
    • Օգտակար է կառուցվածքի կայունությունը ստուգելու համար, բայց ավելի քիչ ճկուն է սպասվող փոփոխությունների դեպքում:
  4. Մասնագիտացված գրադարանների/ֆրեյմվորկների օգտագործում:

    • RestAssured (Java)
    • Postman (Newman): թույլ է տալիս գրել JavaScript-ով, ներառյալ սխեմաների և դաշտերի ստուգումները:
    • Pytest/unittest՝ JSON/XML աշխատելու գրադարաններով:

Ընտրությունը կախված է պատասխանների կառուցվածքի բարդությունից, ճշգրտության պահանջներից և օգտագործվող տեխնոլոգիական ստեկից: Սխեմայի վավերացումը համարվում է API թեստավորման ոսկե ստանդարտ, քանի որ այն ընդգրկում է կառուցվածքի և տվյալների տիպերի բոլոր ասպեկտները։