---
title: 'Teslimat Modelleri ve Test'
source: 'https://academia.sh/tr/kurslar/test-temelleri/teslimat-modelleri-ve-test'
course: 'Kalite ve Test Temelleri'
language: tr
updated: '2026-08-17T18:10:53+00:00'
license: 'CC BY-SA 4.0'
---

# Teslimat Modelleri ve Test

Testin ayrı bir aşama mı yoksa süreç boyunca süren bir etkinlik mi olduğu sorusu, geri bildirim noktasının gecikme ve aday değişiklik sayısına etkisi ve kümenin süresinin yerleşimini belirlemesi.

Buraya kadar test, tek bir kişinin bir işlevle baş başa kaldığı bir etkinlik gibi ele
alındı. Gerçekte testin ne zaman yazıldığı, kimin yazdığı ve sonucunun kime ne kadar sürede
ulaştığı çalışma biçimine bağlıdır. Aynı denetim kümesi sürümün sonunda tek seferde
koşturulduğunda ile her değişiklikte koşturulduğunda farklı değer taşır.

Bu ders o farkı ölçülebilir kılar. Ölçülen şey testin kendisi değil, bir kusurun ortaya
çıkmasıyla fark edilmesi arasındaki mesafedir.

## Teslimat Modeli Testin Yerini Belirler

**Şelale modelinde** (waterfall) çalışma aşamalara bölünür ve her aşama bir sonrakine
belge devreder: çözümleme, tasarım, geliştirme, test, teslim. Test burada bir **aşamadır**
— önceden bitmiş bir ürünün üzerinde, sonda yapılır. Modelin gücü, her aşamanın kendi
çıktısını yazılı bırakmasıdır; zayıflığı, geçerleme sorusunun en sona ertelenmesidir.

**Artımlı ve yinelemeli modelde** (incremental and iterative) ürün çalışan parçalar hâlinde
büyür. Her yineleme kendi içinde çözümleme, geliştirme ve testi barındırır. Test bir
aşamadan çok, her yinelemenin içine dağılmış bir etkinliğe dönüşür.

**Sürekli teslimde** (continuous delivery) her değişiklik teslim edilebilir bir aday
sayılır; teslimin önündeki tek engel, otomatik denetim kümesinin sonucudur. Test burada
etkinlik olmaktan da çıkıp bir **kapıya** dönüşür: kümesi geçmeyen değişiklik ilerlemez.

İkinci derste anılan V modelinin eşleştirmesi üç modelde de geçerlidir — her karar
düzeyinin karşılık gelen bir sınama düzeyi vardır. Değişen şey eşleştirme değil, iki ucun
arasındaki süredir.

## Geri Bildirim Noktası

Bir kusur, kodun yazıldığı anda doğar. Fark edilmesi ise kümesinin koşturulduğu ilk noktada
olur. Aradaki mesafenin iki ölçüsü vardır: **gecikme**, kusurun doğmasıyla haberin gelmesi
arasındaki süre; **aday değişiklik sayısı**, o sürede biriken ve kusurun kaynağı olabilecek
değişikliklerin sayısı.

```js
// geri-bildirim.mjs — ayni denetim kumesinin farkli noktalarda verdigi geri bildirim
const NOKTALAR = [
  { ad: 'kaydetmede', gecikmeDk: 0.5, biriken: 1 },
  { ad: 'gonderim oncesi', gecikmeDk: 3, biriken: 4 },
  { ad: 'tumlestirme', gecikmeDk: 20, biriken: 12 },
  { ad: 'gece kosusu', gecikmeDk: 720, biriken: 40 },
  { ad: 'surum oncesi', gecikmeDk: 20160, biriken: 380 },
];

for (const n of NOKTALAR) {
  console.log(`${n.ad.padEnd(16)}: ${String(n.gecikmeDk).padStart(7)} dk gecikme, ${String(n.biriken).padStart(3)} degisiklik aday`);
}

const ilk = NOKTALAR[0];
const son = NOKTALAR[NOKTALAR.length - 1];
console.log(`oran: gecikme ${son.gecikmeDk / ilk.gecikmeDk} kat, aday ${son.biriken / ilk.biriken} kat`);
```

```
kaydetmede      :     0.5 dk gecikme,   1 degisiklik aday
gonderim oncesi :       3 dk gecikme,   4 degisiklik aday
tumlestirme     :      20 dk gecikme,  12 degisiklik aday
gece kosusu     :     720 dk gecikme,  40 degisiklik aday
surum oncesi    :   20160 dk gecikme, 380 degisiklik aday
oran: gecikme 40320 kat, aday 380 kat
```

Tablodaki sayılar bir kitaplık ekibinin çalışma temposunu temsil eden varsayımlardır;
ölçülmüş değerler değil, model girdileridir. Modelden çıkan sonuç ise sayılara pek bağlı
değildir: geri bildirim noktası geriye kaydıkça gecikme ve aday sayısı birlikte büyür.

İki büyümenin etkisi ayrıdır. Gecikme, kusuru yazan kişinin bağlamını kaybetmesine yol
açar; iki hafta önceki kararın gerekçesi hatırlanmaz. Aday sayısı ise ayıklama işini
büyütür: tek bir değişiklik varken sorun onda, üç yüz seksen değişiklik varken sorun
aralarında bir yerdedir ve bulunması ayrı bir arama problemidir.

Şelale modelinin pratikteki maliyeti buradadır. Test aşaması sürüm sonunda tek noktada
toplandığında, bütün kusurlar en pahalı geri bildirim noktasında ortaya çıkar.

## Kümenin Süresi Yerleşimini Belirler

Geri bildirim noktası özgürce seçilemez. Bir denetim kümesi her kaydetmede
koşturulabiliyorsa süresi saniyenin altında olmalıdır; kümenin süresi arttıkça noktası
geriye kayar. Süre burada bir yerleşim ölçütüdür.

```js
// bekleme.mjs — dis kaynaga erisimi taklit eden engelleyen bekleme
export function bekle(ms) {
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
}
```

```js
// kume-suresi.mjs — iki denetim kumesinin suresi ve ait olduklari geri bildirim noktasi
import assert from 'node:assert/strict';
import { bekle } from './bekleme.mjs';

const ucret = (gun) => Math.min(Math.max(gun - 3, 0) * 2, 20);

const HIZLI = [
  () => assert.equal(ucret(0), 0),
  () => assert.equal(ucret(3), 0),
  () => assert.equal(ucret(4), 2),
  () => assert.equal(ucret(13), 20),
  () => assert.equal(ucret(99), 20),
];

const YAVAS = [
  () => { bekle(400); assert.equal(ucret(10), 14); },
  () => { bekle(400); assert.equal(ucret(20), 20); },
  () => { bekle(400); assert.equal(ucret(1), 0); },
];

const ESIK_MS = 1000;
for (const [ad, kume] of [['hizli', HIZLI], ['yavas', YAVAS]]) {
  const bas = performance.now();
  for (const denetim of kume) denetim();
  const sure = performance.now() - bas;
  const yer = sure < ESIK_MS ? 'her kaydetmede kosturulabilir' : 'gonderim oncesine tasinir';
  console.log(`${ad} kume (${kume.length} denetim): ${ESIK_MS} ms esigi — ${yer}`);
}
```

```
hizli kume (5 denetim): 1000 ms esigi — her kaydetmede kosturulabilir
yavas kume (3 denetim): 1000 ms esigi — gonderim oncesine tasinir
```

İki kümenin sınadığı kural aynıdır; ayrıldıkları yer, yavaş kümedeki her denetimin dış bir
kaynağa erişimi taklit eden bir bekleme içermesidir. Beş denetimli küme üç denetimli
kümeden hızlıdır, çünkü denetim sayısı değil dış bağımlılık belirleyicidir. Bu ölçüm engelli
bekleme kullandığı için her makinede aynı yargıyı verir; yalnız ham süre ortama bağlıdır.

Çıkan kural pratiktir: bir kümenin geri bildirim noktası, denetim sayısına değil, en yavaş
bağımlılığına göre belirlenir. Kümenin bir bölümünü hızlı tutmak istiyorsa, dış
bağımlılığın oradan çıkarılması gerekir. Sonraki kursun konusu tam olarak budur.

## Modelin Getirdiği Pratikler

Teslimat modeli yalnız zamanlamayı değil, hangi test pratiklerinin gerekli olduğunu da
belirler.

Sürüm sonunda tek noktada test yapılan bir modelde **sürüm dondurma** (code freeze) dönemi
kaçınılmazdır: kusurları bulmak ve gidermek için değişikliklerin durdurulduğu bir aralık
gerekir. Değişiklik her an teslim edilebilir olduğunda böyle bir aralık yoktur; onun yerine
her değişikliğin geçmesi gereken bir **kabul kapısı** (quality gate) tanımlanır.

Geri bildirim noktası geride olduğunda kusur toplu hâlde bulunur ve önceliklendirme ayrı
bir iş kalemi olur; ileride olduğunda kusur tek tek bulunur ve çoğu anında giderilir. Bu
yüzden hata kaydı tutma disiplini de modele göre ağırlık değiştirir.

Ortak nokta şudur: hiçbir model testi ucuzlatmaz. Modelin belirlediği şey, aynı sınamanın
ne zaman ve hangi maliyetle yapılacağıdır.

## Özet

- Şelalede test bir aşama, artımlı modelde her yinelemenin içine dağılmış bir etkinlik,
  sürekli teslimde ilerlemenin önündeki bir kapıdır.
- Geri bildirim noktası iki büyüklükle ölçülür: gecikme ve aday değişiklik sayısı; nokta
  geriye kaydıkça ikisi birlikte büyür.
- Gecikme bağlam kaybına, aday sayısının artması ayıklamanın ayrı bir arama problemine
  dönüşmesine yol açar.
- Bir kümenin geri bildirim noktası denetim sayısına değil en yavaş bağımlılığına göre
  belirlenir; örnekte beş denetimli küme üç denetimli kümeden hızlı çıktı.
- Model, testi ucuzlatmaz; aynı sınamanın ne zaman ve hangi maliyetle yapılacağını belirler.

## Sonraki Adım

Bu konu kalitenin ne olduğunu, hangi sorularla sınandığını ve sürecin bu sınamayı nasıl
konumlandırdığını kurdu. Eksik olan, sınamanın kendi iç düzenidir: bir denetim neyi
kapsıyor, nereye kadar uzanıyor, hangi bilgiyle yazılıyor? Sonraki konu testleri
sınıflandırır. İlk soru kapsamla ilgilidir — aynı kusur tek bir işlevi sınayan bir testle
de, bütün sistemi ayağa kaldıran bir testle de yakalanabilir; ikisinin maliyeti ve
söylediği şey aynı değildir.
