Sobes.tech
Junior

Qanday qilib to'g'ri maydonlarni qaytarilganligini tekshirasiz?

sobes.tech AI

AIdan javob

Javobda faqat kerakli maydonlar qaytarilishini tekshirish uchun, javob turi (JSON, XML va boshqalar), ishlatiladigan vosita va test qilish darajasiga (API, E2E) qarab, bir nechta usul mavjud:

  1. Javob sxemasini tekshirish (Schema Validation):

    • Eng ishonchli usul.
    • Kutilayotgan javobning tuzilishi va ma'lumot turlarini tavsiflovchi sxema (JSON Schema, XML Schema) yaratiladi.
    • Javob ushbu sxemaga mos kelishi uchun tekshiriladi.
    • Maydonlarning mavjudligi/mavjud emasligi, ularning turlari va ixtiyoriy ravishda qiymatlar uchun muntazam ifodalar kafolatlanadi.
    // Foydalanuvchi uchun JSON Schema misoli
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Maydonlarning mavjudligi/mavjud emasligini va qiymatlarni to'g'ridan-to'g'ri tekshirish (Field Presence and Value Assertion):

    • Javobni tahlil qilish.
    • Har bir kutilyotgan maydon mavjudligini tekshirish.
    • Nomaqbul maydonlar mavjud emasligini tekshirish.
    • Maydonlarning ma'lumot turlarini tekshirish.
    • Maydonlarning qiymatlarini tekshirish (belgilangan qiymatga, muntazam ifodaga, diapazonga mos kelishini).
    # Python'da JSON javobini tekshirish misoli (requests va pytest bilan)
    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()
    
        # Maydonlarning mavjudligini tekshirish
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Nomaqbul maydonlar mavjud emasligini tekshirish (masalan, 'password')
        assert "password" not in data
    
        # Maydonlarning ma'lumot turlarini tekshirish
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Qiymatlarni tekshirish (misol)
        assert data["id"] > 0
        assert "@" in data["email"]  # Oddiy email format tekshiruvi
    
  3. Oltin standart bilan taqqoslash (Golden Master / Snapshot Testing):

    • To'g'ri javob (referensiya) saqlanadi.
    • Hozirgi javob referensiya bilan taqqoslanadi.
    • Tuzilmaning barqarorligini tekshirish uchun foydalidir, ammo ma'lumotlardagi kutilayotgan o'zgarishlarga nisbatan kamroq moslashuvchan.
  4. Maxsus kutubxonalar/frameworklardan foydalanish:

    • RestAssured (Java)
    • Postman (Newman): JavaScriptda test yozishga imkon beradi, sxema va maydonlarni tekshirishni o'z ichiga oladi.
    • Pytest/unittest va JSON/XML bilan ishlash uchun kutubxonalar.

Usul tanlovi javob tuzilmasining murakkabligi, tekshirish aniqligi talablari va ishlatiladigan texnologik stekga bog'liq. Sxema validatsiyasi API testlari uchun oltin standart bo'lib, u tuzilma va ma'lumot turlarining barcha jihatlarini qamrab oladi.