🔎 F4 · Schema Okuma: required, type, enum, example

F4 · Schema Okuma: required, type: Bir OpenAPI şeması, bir **başvuru formunun kılavuzudur**: `required` hangi alanları BOŞ bırakamayacağını söyler (kırmızı yıldızlı alanlar), `ty

Bir OpenAPI şeması, bir **başvuru formunun kılavuzudur**: `required` hangi alanları BOŞ bırakamayacağını söyler (kırmızı yıldızlı alanlar), `type` her alanın hangi tür veri beklediğini söyler (isim mi, sayı mı), `enum` bir alanın sadece BELİRLİ değerleri kabul ettiğini söyler (bir açılır liste gibi), `example` ise formun nasıl doldurulacağına dair örnek bir doldurulmuş kopyadır. Peki bu 4 kelimeyi neden tek tek bilmek gerekiyor — "şemaya bak" demek yeterli değil mi? Çünkü her biri FARKLI bir test senaryosu DOĞURUR: `required` eksikse "bu alan olmadan ne olur?" testi, `type` yanlışsa "yanlış tipte veri gönderirsem ne olur?" testi, `enum` dışı bir değer "tanımsız bir değer gönderirsem ne olur?" testi. Java'da bunun karşılığı Bean Validation annotation'larıdır: `required` ≈ `@NotNull`/`@NotBlank`, `type` ≈ alanın Java tipi (`String`, `Integer`), `enum` ≈ bir Java `enum` sınıfı veya `@Pattern`. QA açısından bir şemayı OKUMAK, bir test senaryosu LİSTESİ üretmenin en hızlı yoludur — F6'da tam olarak bunu, sistematik bir şekilde yapacaksın.

🎬 Bir Şema Satırından Bir Test Senaryosuna

enum: [LOW..CRITICAL]

3 test senaryosu doğar

Tester şemayı okur: `required: ["title", "severity", "reporter"]`.

Bu satır tek başına bir test senaryosu doğurur: "title olmadan POST atarsam 400 mü alırım?"

`type: "string"` başka bir senaryo doğurur: "title yerine bir sayı gönderirsem ne olur?"

`enum: [LOW,MEDIUM,HIGH,CRITICAL]` bir üçüncü senaryo doğurur: "severity: 'URGENT' gönderirsem ne olur (tanımsız değer)?"

Ders — Şemadaki her kısıt, sistematik olarak en az bir negatif test senaryosuna dönüşür; şema okumak aslında bir test tasarım tekniğidir.

Bir Şemayı Test Senaryosuna Çevirme Sırası

required alanlarını listele…

Her zorunlu alan için "onsuz gönderirsem?" negatif testi tasarla.

type uyumsuzluğunu dene…

Beklenen tipin dışında bir değer (sayı yerine metin) göndererek test et.