LearnQA.dev › API Testing
🚫 G5 · Negatif Test Setleri
G5 · Negatif Test Setleri: Negatif test setleri, F4/F6'da şemadan TÜRETTİĞİN checklist'in Postman'de HAYATA GEÇİRİLMESİDİR: her `required`/`type`/`enum` ihlali artık bir Postman
Negatif test setleri, F4/F6'da şemadan TÜRETTİĞİN checklist'in Postman'de HAYATA GEÇİRİLMESİDİR: her `required`/`type`/`enum` ihlali artık bir Postman klasöründe AYRI bir request'tir. Java'da bunun karşılığı, bir metodun her geçersiz girdi kombinasyonu için AYRI bir `@Test` yazmaktır (`@ParameterizedTest` ile bile). Peki neden bunları AYRI request'ler olarak tutuyoruz, tek bir request'te birleştirmiyoruz? Çünkü her negatif senaryo AYRI bir kanıt üretmelidir — biri başarısız olduğunda HANGİSİNİN başarısız olduğu belirsiz kalmamalıdır; birleştirilmiş bir request "bir şey yanlış" der, ayrı request'ler "TAM OLARAK bu kural ihlal edildi" der. **Derin negatif test tasarımı için → `/postman` sayfasına bak.**
🎬 Bir Şema Kısıtından Bir Postman Klasörüne
F6: şema checklist'i
"Negatif Testler" klasörü
Her ihlal için ayrı kanıt
F6'da şemadan türetilen checklist elimizde: eksik title, enum dışı severity, geçersiz email...
Her checklist maddesi Postman'de AYRI bir request/klasör öğesi olur — "Negatif Testler" klasörü doğar.
Koşum sonrası hangi kuralın ihlal edildiğinde sunucunun HATA VERDİĞİ, hangisinde SESSİZCE KABUL ETTİĞİ netleşir.
Şemadan Negatif Test Klasörüne
F6'da şemadan türetilen negatif senaryo listesini kullan.
Her madde bir request olsun…
Her ihlal için ayrı bir Postman request'i oluştur, ilgili pm.test'i yaz.
Sonuçları karşılaştır…
Hangi kuralın gerçekten uygulandığını, hangisinin sessizce geçtiğini gör.
Bu dersin diğer bölümleri
📤 A2 · HTTP Request Anatomisi
📥 A3 · HTTP Response Anatomisi
🔧 A4 · HTTP Metotları: GET / POST / PUT / PATCH / DELETE
🚦 A5 · Status Kodları: 2xx / 3xx / 4xx / 5xx
📋 A6 · Header'lar: Content-Type, Accept, Authorization
🧩 A7 · JSON Yapısı: object, array, nested, null
☕ B1 · Proje İskeleti: Maven, spring-boot-starter-web
🏷️ B2 · Model/Entity: Bug sınıfı, enum, alan tipleri
🗄️ B3 · Repository Katmanı: in-memory Map
⚙️ B4 · Service Katmanı: iş kuralları nerede yaşar
🎛️ B5 · Controller: @RestController, path/query param
✅ B6 · POST + @Valid: Bean Validation
🧯 B7 · Exception Handling: @RestControllerAdvice
🔢 B8 · Status Kodu ve ResponseEntity: 200/201/204
🟢 C1 · Kurulum: npm init, express, nodemon
🛣️ C2 · Route Tanımı: app.get/post, req.params/query
⛓️ C3 · Middleware Zinciri: express.json(), sıra
🛡️ C4 · Validation: express-validator / zod
🚨 C5 · Error Handling Middleware: (err, req, res, next)
⚖️ C6 · Java ↔ Express Karşılaştırma
🐈 D1 · Nest CLI ve Modül Mimarisi
🎀 D2 · Controller Decorator'ları: @Get, @Post, @Body
📦 D3 · DTO + class-validator + ValidationPipe
🧱 D4 · Exception Filter ve HttpException
🔀 D5 · NestJS ↔ Spring Boot Karşılaştırması
🔍 E1 · Network Paneli Anatomisi
🎚️ E2 · Fetch/XHR Filtresi: gürültüyü ayıklamak
📖 E3 · Bir Request'i Okumak: Headers / Payload / Preview / Response / Timing
⏱️ E4 · Timing Sekmesi: TTFB, Waiting, Download
🐞 E5 · Network'ten Defect Yakalama
🔗 E6 · Copy as cURL → Postman Import
📜 F1 · OpenAPI Spec Nedir? Sözleşme kavramı
🏭 F2 · Swagger Üretimi: springdoc / @nestjs/swagger
👆 F3 · Swagger UI "Try it out": ilk elle test
🔎 F4 · Schema Okuma: required, type, enum, example
⚠️ F5 · Contract Defect'leri
🧾 F6 · Swagger'dan Test Senaryosu Türetmek
📁 G1 · Collection ve Klasör Yapısı
🌍 G2 · Environment + Variable: {{baseUrl}}, {{bugId}}
🧪 G3 · pm.test ile Assertion
🔗 G4 · Pre-request Script ve Test Zinciri
⚡ G6 · Collection Runner + Newman ile CI
🎬 H1 · Bağımlılıklar ve İlk Test: given/when/then
✔️ H2 · Response Doğrulama: statusCode, jsonPath
🔄 H3 · POJO Serialization/Deserialization
📐 H4 · JSON Schema Validation ile contract testi
♻️ H5 · RequestSpecification ile tekrarı yok etmek
🔁 H6 · JUnit 5/TestNG entegrasyonu + CI
🎭 I1 · request fixture ve APIRequestContext
🟩 I2 · expect(response).toBeOK() ve JSON assertion
🔀 I3 · Hibrit Güç: API ile kur, UI'da doğrula
🔑 I4 · storageState ile API üzerinden login
⚔️ I5 · REST Assured ↔ Playwright Karşılaştırması
🚨 J · Yaygın Hatalar ve Çözümleri
💼 K · Mülakat Soruları