🛠️ QA Shop Kurulum Rehberi
Sıfırdan başlıyoruz. Makinende hiçbir şey kurulu olmasa bile: Docker kurulumundan gerçek bir veritabanına, API sözleşmesinden komut satırından koşan bir test paketine kadar her adım tek tek.
Kendi makinende gerçek bir PostgreSQL ve REST API ayağa kaldır: Docker kurulumu, DBeaver bağlantısı, OpenAPI sözleşmesi ve Postman ile uç testi, adım adım.
Bu laboratuvar ayrı bir veritabanı ve ayrı bir sunucu süreci olarak çalışır. Sitenin üyelik, ilerleme ve rozet verisiyle hiçbir bağlantısı yoktur — buradaki hiçbir işlem gerçek kullanıcı verisine dokunamaz.
Bu sayfada neler öğreneceksin
- Docker'ı kur ve pratik stack'ini çalıştır — Bir veritabanını doğrudan kurmak şu zinciri gerektirir: kurulum sihirbazından geç, sürüm seç, servisi başlat, kullanıcı ve parola tanımla, sonra şemayı ve veriyi elle yükle. Bu zincirin her halkası makineden makineye değişir ve bir halka kayarsa hata çoğu zama
- Veritabanına bağlan (DBeaver) — Arayüz "Sipariş oluşturuldu" der ve yeşil bir onay gösterir. Bu cümle, siparişin toplamının satır toplamlarıyla tuttuğunu söylemez. Stoğun düştüğünü de söylemez. Kuponun sayacının arttığını da. Arayüzün gösterebileceği tek şey kendi ekranıdır; verini
- API sözleşmesini oku (Swagger / OpenAPI) — Sözleşmesi okunmadan yazılan API testi, aslında API'nin o anki davranışını kopyalar. Bug varsa testi de bug ile birlikte yazılmış olur ve test sonsuza kadar yeşil kalır. Sözleşme, "olması gereken"i "olan"dan ayıran tek belgedir. Önce onu ok
- Endpoint'leri test et — önce elle, sonra Postman — Otomasyon, bildiğin bir işi tekrarlar. Bilmediğin bir işi otomatikleştirmeye çalışmak, hatayı da otomatikleştirmektir. Akışı bir kez elle geçtiğinde hangi ucun hangi veriyi ürettiğini, hangi değerin bir sonraki isteğe taşınması gerektiğini ve nerede yanlış gid
- A1 · Mutabakat — Siparişin genel toplamı, kendi bileşenlerinden (ara toplam, indirim, kargo) türetiliyor mu.
- A2 · Mutabakat — Sipariş başlığında yazan ara toplam, o siparişin satır toplamlarının toplamıyla aynı mı.
- A3 · Mutabakat — Her sipariş satırının kendi toplamı, o satırın adedi ile birim fiyatının çarpımına eşit mi.
- A4 · Mutabakat — Başarılı ya da iade edilmiş bir ödemenin tutarı, bağlı olduğu siparişin genel toplamıyla aynı mı.
- B1 · Referans bütünlüğü ve tenant izolasyonu — Bir sipariş satırının tenant kapsamı, bağlı olduğu siparişin kapsamıyla aynı mı.
- B2 · Referans bütünlüğü ve tenant izolasyonu — Bir sepet satırının tenant kapsamı, bağlı olduğu sepetin kapsamıyla aynı mı.
- B3 · Referans bütünlüğü ve tenant izolasyonu — Bir varyantın tenant kapsamı, bağlı olduğu ürünün kapsamıyla aynı mı.
- B4 · Referans bütünlüğü ve tenant izolasyonu — Hiç satırı olmayan bir sipariş başlığı var mı.
- B5 · Referans bütünlüğü ve tenant izolasyonu — Her varyantın bir envanter kaydı var mı.
- C1 · İş kuralı ihlalleri — Bir varyantta rezerve edilmiş adet, eldeki stok adedini aşıyor mu.
- C2 · İş kuralı ihlalleri — Bir kuponun kullanım sayısı, tanımlı üst sınırını aşmış mı.
- C3 · İş kuralı ihlalleri — İndirim almış siparişlerde kupon, siparişin verildiği ANDA geçerlilik aralığının içinde miydi.
- C4 · İş kuralı ihlalleri — İndirim uygulanmış siparişlerde sepet tutarı, kuponun istediği alt sınırı karşılıyor mu.
- C5 · İş kuralı ihlalleri — İptal edilmiş bir siparişe bağlı kargo kaydı var mı.
- C6 · İş kuralı ihlalleri — Kargolanmış ya da teslim edilmiş her siparişin başarılı bir ödemesi var mı.
- C7 · İş kuralı ihlalleri — Onaylı yorumlardan hesaplanan ortalama ile tüm yorumlardan hesaplanan ortalamanın ayrıştığı ürünleri listeler.
- C8 · İş kuralı ihlalleri — Pasif (soft delete edilmiş) ürünlerden geçmişte sipariş verilmiş olanları listeler.
- D1 · Veri kalitesi — Yalnızca büyük/küçük harf yazımıyla ayrışan e-postaları gruplar. Veritabanının UNIQUE kısıtı harf duyarlıdır.
- D2 · Veri kalitesi — Marka bağlantısı NULL olan ürünlerin sayısını verir. INNER JOIN kullanan bir listede bu ürünler sessizce kaybolur.
- D3 · Veri kalitesi — Fiyatı sıfır ya da negatif olan ürünler.
- D4 · Veri kalitesi — Her kullanıcının varsayılan adres sayısı tam olarak bir mi.
- D5 · Veri kalitesi — Sipariş tarihi şu andan ileride olan kayıtlar.
- E1 · Log analizi — İşlem (action) başına toplam ve hatalı istek sayısını, hata yüzdesine göre sıralar.
- E2 · Log analizi — Tek bir correlation_id’nin tüm log satırlarını zaman sırasıyla getirir.
- E3 · Log analizi — Her işlemin kendi p95 eşiğini hesaplar ve o eşiğin üstünde kalan istekleri listeler.
- E4 · Log analizi — Hataları saat kovalarına bölerek yoğunlaştıkları saatleri gösterir.
- G1 · Analiz ve raporlama — İptal ve iade dışındaki siparişlerden ürün başına ciroyu hesaplar, window function ile sıra numarası verir.
- G2 · Analiz ve raporlama — Ay kovalarına göre sipariş adedi, ciro ve ortalama sepet tutarı.
- G3 · Analiz ve raporlama — Hiçbir siparişe bağlanmamış kullanıcılar (LEFT JOIN + IS NULL kalıbı).
- G4 · Analiz ve raporlama — Üst-alt kategori çiftlerini ve alt kategori başına aktif ürün sayısını (self-join).