---
title: 'Etki Değerlendirmesi'
source: 'https://academia.sh/tr/kurslar/sizma-testi/etki-degerlendirmesi'
course: 'Güvenlik Araçları ve Sızma Testi'
language: tr
updated: '2026-08-17T18:08:41+00:00'
license: 'CC BY-SA 4.0'
---

# Etki Değerlendirmesi

61 kanıtlanmış bulgu önce teknik ağırlıkla, sonra iki ayrı iş bağlamında puanlanıyor. İki iş sıralaması arasında aynı sırada kalan tek bulgu yok, ortalama kayma 22,23 sıra ve ilk on listeleri ortak tek bulgu içermiyor; ikili karşılaştırmaların yüzde 41,6'sı ters dönüyor. 40 adam-günlük bütçede teknik sıralama 12 bulgu düzeltip saha bağlamının yüzde 24,6'sını kapatırken kendi sırası yüzde 28,8'ini kapatıyor, iş puanını düzeltme gününe bölen sıralama ise yüzde 39,4'ünü.

Bir önceki ders 61 kanıt, 9 askıda aday ve doğrulanmadan bırakılmış bir liste üretti. Bu küme bir
düzeltme kuyruğuna girecekse sıraya konmak zorundadır. Sıralama teknik ölçütlerle yapılabilir:
açığa dışarıdan mı yoksa ancak içeriden mi ulaşılıyor, kaç kalemi etkiliyor, ne kadar yetki
kazandırıyor. Bu üç ölçüt tek bir sayı verir ve o sayı bir sıra üretir.

Bu ders o sıranın tek sıra olmadığını gösterir. Aynı bulgu, hangi işi taşıyan bir varlıkta
durduğuna göre farklı ağırlık taşır, ve "hangi iş önemlidir" sorusunun yanıtı kuruma göre değişir.
**İş etkisi** (business impact), bulgunun teknik ağırlığının o varlığın taşıdığı işle
çarpılmasıdır. Ölçülecek şey iki puanlamanın hangisinin doğru olduğu değil, aynı listeyi **kaç
sırada farklı dizdikleridir**.

- **TS19.** Bulgu kümesi önceki dersin 61 kanıtıdır ve her bulgu beş varlık sınıfından birine
  bağlıdır. Küme de ağırlıklar da **kurgudur**.
- **TS20.** Teknik puan üç bileşenden gelir: erişim düzeyi (ağırlık 0,45), etki genişliği (0,30)
  ve kazanılan yetki (0,25). Sonuç 0 ile 10 arasına ölçeklenir.
- **TS21.** **İş ağırlığı**, bir varlık sınıfının o bağlamdaki değeridir. İki bağlam tanımlıdır:
  gelir ve abone verisi önceliği ile saha kesintisizliği önceliği.
- **TS22.** İş puanı, teknik puan ile iş ağırlığının çarpımıdır. Aynı bulgu iki bağlamda iki ayrı
  iş puanı taşır ve teknik puanı ikisinde de aynı kalır.
- **TS23.** İki sıralamanın farkı dört ölçüyle yazılır: aynı sırada kalan bulgu sayısı, ortalama
  sıra kayması, ilk on listesinin ortak üyesi ve ters düşen ikili karşılaştırma oranı.
- **TS24.** Düzeltme bütçesi 40 adam-gündür ve bütün küme 286 adam-gün tutar. Kuyruk sıradan
  alır, bütçeye sığmayan bulguyu atlar.

## Bir Liste, Üç Sıra

```js
// puan.mjs — ayni kanitlanmis bulgu kumesi teknik agirlikla ve iki ayri is
// baglaminda puanlanir. MODELDIR; bulgu kumesi ve agirliklar kurgudur.
export const TOHUM = 20260222, N = 61;
const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };
const r = uretec(TOHUM);

// Bir onceki dersin 61 kaniti. Her bulgu bir varlik sinifina baglidir.
export const VARLIK = ["abone verisi", "faturalama", "olcum dogrulugu", "saha operasyonu",
  "ic yonetim"];
const ERISIM = { dis: 1.0, kimlik: 0.6, ic: 0.3 };
export const BULGU = Array.from({ length: N }, (_, i) => {
  const e = ["dis", "kimlik", "ic"][Math.floor(r() * 3)];
  const genislik = Math.round(r() * 18) / 20, yetki = Math.round(r() * 20) / 20;
  return { no: i + 1, varlik: VARLIK[Math.floor(r() * VARLIK.length)], erisim: e,
    genislik, yetki, gun: 1 + Math.floor(r() * 8),   // duzeltme maliyeti (adam-gun)
    teknik: +(10 * (0.45 * ERISIM[e] + 0.30 * genislik + 0.25 * yetki)).toFixed(2) };
});

// Is agirligi: bir varlik sinifinin o baglamdaki agirligi. Ayni bulgu, ayni teknik
// puanla, iki baglamda farkli is etkisi tasir.
export const BAGLAM = {
  "gelir ve abone verisi": { "abone verisi": 1.0, "faturalama": 0.9, "olcum dogrulugu": 0.6,
    "saha operasyonu": 0.35, "ic yonetim": 0.3 },
  "saha kesintisizligi": { "abone verisi": 0.4, "faturalama": 0.45, "olcum dogrulugu": 0.85,
    "saha operasyonu": 1.0, "ic yonetim": 0.5 },
};
export const isPuan = (b, ad) => +(b.teknik * BAGLAM[ad][b.varlik]).toFixed(2);

// Siralama: puana gore azalan; esitlikte bulgu numarasi.
export const sirala = (anahtar) => [...BULGU]
  .sort((a, b) => anahtar(b) - anahtar(a) || a.no - b.no).map((b) => b.no);
export const yer = (s) => new Map(s.map((no, i) => [no, i + 1]));

// Iki siralama arasindaki fark: ayni sirada kalan, ortalama kayma, en buyuk kayma,
// ilk on ortak ve ters cift orani.
export function fark(s1, s2) {
  const y1 = yer(s1), y2 = yer(s2);
  const kayma = s1.map((no) => Math.abs(y1.get(no) - y2.get(no)));
  const ilk10 = new Set(s1.slice(0, 10));
  let ters = 0, cift = 0;
  for (let i = 0; i < s1.length; i++) for (let j = i + 1; j < s1.length; j++) {
    cift++;
    if ((y1.get(s1[i]) - y1.get(s1[j])) * (y2.get(s1[i]) - y2.get(s1[j])) < 0) ters++;
  }
  return { ayni: kayma.filter((k) => k === 0).length, enBuyuk: Math.max(...kayma),
    ort: kayma.reduce((a, k) => a + k, 0) / kayma.length,
    ortak10: s2.slice(0, 10).filter((no) => ilk10.has(no)).length,
    ters: +(100 * ters / cift).toFixed(1) };
}

if (import.meta.url === `file://${process.argv[1]}`) {
  const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
    : String(v).padEnd(B[0]))).join("");
  const ADLAR = Object.keys(BAGLAM);
  const y1 = gen([18, 8, 12, 23, 21]);
  console.log(`model (tohum ${TOHUM}): ${N} kanitlanmis bulgu, ${VARLIK.length} varlik sinifi`);
  console.log("\n" + y1(["varlik sinifi", "bulgu", "ort teknik", ...ADLAR]));
  for (const v of VARLIK) {
    const l = BULGU.filter((b) => b.varlik === v);
    const ot = l.reduce((a, b) => a + b.teknik, 0) / l.length;
    console.log(y1([v, l.length, ot.toFixed(2), ...ADLAR.map((ad) => BAGLAM[ad][v].toFixed(2))]));
  }

  const sT = sirala((b) => b.teknik), sA = sirala((b) => isPuan(b, ADLAR[0]));
  const sB = sirala((b) => isPuan(b, ADLAR[1]));
  const y2 = gen([24, 10, 12, 12, 14, 13]);
  console.log("\n" + y2(["karsilastirma", "ayni sira", "ort kayma", "en buyuk", "ilk 10 ortak",
    "ters cift %"]));
  for (const [ad, x, y] of [["teknik - gelir baglami", sT, sA],
    ["teknik - saha baglami", sT, sB], ["gelir - saha baglami", sA, sB]]) {
    const f = fark(x, y);
    console.log(y2([ad, f.ayni, f.ort.toFixed(2), f.enBuyuk, `${f.ortak10}/10`, f.ters]));
  }

  const yT = yer(sT), yA = yer(sA), yB = yer(sB);
  const y3 = gen([8, 18, 9, 8, 9, 9, 9]);
  console.log("\n" + y3(["bulgu", "varlik", "teknik", "sira T", "sira A", "sira B", "A-B fark"]));
  const ilgi = [...BULGU].sort((a, b) => Math.abs(yA.get(b.no) - yB.get(b.no)) -
    Math.abs(yA.get(a.no) - yB.get(a.no))).slice(0, 6);
  for (const b of ilgi) {
    console.log(y3([b.no, b.varlik, b.teknik.toFixed(2), yT.get(b.no), yA.get(b.no),
      yB.get(b.no), yA.get(b.no) - yB.get(b.no)]));
  }
}
```

```
model (tohum 20260222): 61 kanitlanmis bulgu, 5 varlik sinifi

varlik sinifi        bulgu  ort teknik  gelir ve abone verisi  saha kesintisizligi
abone verisi            16        5.06                   1.00                 0.40
faturalama              13        5.37                   0.90                 0.45
olcum dogrulugu         14        5.77                   0.60                 0.85
saha operasyonu          5        5.24                   0.35                 1.00
ic yonetim              13        5.94                   0.30                 0.50

karsilastirma            ayni sira   ort kayma    en buyuk  ilk 10 ortak  ters cift %
teknik - gelir baglami           2       14.79          39          5/10         31.3
teknik - saha baglami            1       10.00          30          2/10         20.6
gelir - saha baglami             0       22.23          43          0/10         41.6

bulgu               varlik   teknik  sira T   sira A   sira B A-B fark
6          saha operasyonu     6.40      21       47        4       43
17         saha operasyonu     7.05      17       42        2       40
16         saha operasyonu     3.60      51       58       21       37
33         saha operasyonu     7.50      10       38        1       37
34            abone verisi     5.22      37       13       46      -33
31            abone verisi     5.28      33       12       44      -32
```

İlk tablonun son iki sütunu bu dersin asıl konusudur. Aynı varlık sınıfı, iki bağlamda 0,30 ile
1,00 arasında değişen bir ağırlık taşıyor ve ağırlıklar ortalama teknik puanla hiç ilişkili değil.
En dikkat çeken satır iç yönetim: ortalama teknik puanı 5,94 ile listenin en yükseği, ama iki
bağlamda da en düşük ağırlıklardan birini taşıyor. Teknik sıralamada en üste çıkan kalemler, iş
tarafında en alta düşebilir.

İkinci tablo bunun sayısal karşılığıdır. İki iş bağlamı karşılaştırıldığında **61 bulgunun hiçbiri
aynı sırada kalmıyor**, ortalama sıra kayması 22,23 ve en büyük kayma 43 sıradır. İlk on listeleri
**ortak tek bir bulgu içermiyor**. İkili karşılaştırmaların yüzde 41,6'sı ters dönüyor, yani iki
bulguyu alıp "hangisi daha önemli" diye sorduğunda iki bağlam neredeyse her iki soruda bir ayrı
yanıt veriyor.

Teknik sıralamanın iki bağlama uzaklığı ise eşit değil: gelir bağlamıyla ilk on listesinde 5, saha
bağlamıyla 2 ortak bulgu var; ters ikili oranı yüzde 31,3'e karşı yüzde 20,6. **Bağlamsız
sunulan bir sıralama bağlamsız değildir; sessizce bir bağlam seçmiştir** ve hangi bağlamı seçtiği
raporda yazmaz.

Bu, ağırlık tablosunun kim tarafından doldurulacağı sorusunu doğuruyor. Test ekibi teknik puanı
kendi ölçtüğü verilerden çıkarabilir, ama bir varlık sınıfının kurum için ne kadar değerli olduğunu
ölçemez; o sayı iş tarafından gelir. Buradan çıkan kural biçimseldir: rapor tek bir sıralanmış
liste değil, **teknik puan, varlık sınıfı ve ağırlık tablosu birlikte** verilmelidir. Ağırlıklar
yazılıysa sıralama yeniden üretilebilir; yazılı değilse liste, gerekçesi görünmeyen bir karardır.

Üçüncü tablo tek tek kalemleri gösteriyor. Bulgu 33, saha bağlamında **birinci** sırada duruyor;
teknik sıralamada 10., gelir bağlamında 38. sırada. Bulgu 6 saha bağlamında 4., gelir bağlamında
47. sırada — 43 sıralık bir fark. Bunlar bir puanlama hatası değil, iki farklı sorunun iki farklı
yanıtıdır.

## Bütçe Altında Sıralamanın Bedeli

```js
// butce.mjs — sinirli duzeltme butcesi altinda hangi siralamanin ne kapattigi.
import { BULGU, BAGLAM, isPuan, sirala } from "./puan.mjs";

const BUTCE = 40;                                   // duzeltme butcesi (adam-gun, kurgu)
const ADLAR = Object.keys(BAGLAM);
const kayit = new Map(BULGU.map((b) => [b.no, b]));
const toplam = (ad) => BULGU.reduce((a, b) => a + isPuan(b, ad), 0);

// Butce bitene kadar siradan al; sigmayan bulgu atlanir.
function kuyruk(siraliNo) {
  const secilen = []; let gun = 0;
  for (const no of siraliNo) {
    const b = kayit.get(no);
    if (gun + b.gun <= BUTCE) { secilen.push(b); gun += b.gun; }
  }
  return { secilen, gun };
}

const YOL = [["teknik agirlik", sirala((b) => b.teknik)],
  ["gelir baglami", sirala((b) => isPuan(b, ADLAR[0]))],
  ["saha baglami", sirala((b) => isPuan(b, ADLAR[1]))],
  ["gelir verimi", sirala((b) => isPuan(b, ADLAR[0]) / b.gun)],
  ["saha verimi", sirala((b) => isPuan(b, ADLAR[1]) / b.gun)]];

const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
  : String(v).padEnd(B[0]))).join("");
const yz = gen([17, 12, 7, 24, 22]);
console.log(`butce ${BUTCE} adam-gun; ${BULGU.length} bulgunun tamami ` +
  `${BULGU.reduce((a, b) => a + b.gun, 0)} adam-gun tutuyor`);
console.log(yz(["siralama", "duzeltilen", "gun", `${ADLAR[0]} %`, `${ADLAR[1]} %`]));
const sonuc = {};
for (const [ad, s] of YOL) {
  const { secilen, gun } = kuyruk(s);
  const kapanan = ADLAR.map((x) =>
    100 * secilen.reduce((a, b) => a + isPuan(b, x), 0) / toplam(x));
  sonuc[ad] = kapanan;
  console.log(yz([ad, secilen.length, gun, kapanan[0].toFixed(1), kapanan[1].toFixed(1)]));
}

// Yanlis eksende siralamanin bedeli: her baglamda kendi sirasi ile teknik siralama
// arasindaki kapanan is etkisi farki.
const y2 = gen([24, 14, 18, 14]);
console.log("\n" + y2(["baglam", "teknik ile", "kendi sirasi ile", "kayip puan"]));
for (const [i, ad] of ADLAR.entries()) {
  const t = sonuc["teknik agirlik"][i], k = sonuc[i === 0 ? "gelir baglami" : "saha baglami"][i];
  console.log(y2([ad, `${t.toFixed(1)}%`, `${k.toFixed(1)}%`, `${(k - t).toFixed(1)} puan`]));
}
const enUst = [sirala((b) => isPuan(b, ADLAR[0]))[0], sirala((b) => isPuan(b, ADLAR[1]))[0]];
const yerT = new Map(sirala((b) => b.teknik).map((no, i) => [no, i + 1]));
for (const [i, no] of enUst.entries()) {
  const b = kayit.get(no);
  console.log(`${ADLAR[i]} baglaminda birinci sirada olan bulgu ${no} (${b.varlik}, ` +
    `teknik ${b.teknik.toFixed(2)}) teknik siralamada ${yerT.get(no)}. sirada`);
}
```

```
butce 40 adam-gun; 61 bulgunun tamami 286 adam-gun tutuyor
siralama           duzeltilen    gun gelir ve abone verisi % saha kesintisizligi %
teknik agirlik             12     40                    27.0                  24.6
gelir baglami               9     40                    28.8                  14.1
saha baglami                9     40                    14.5                  28.8
gelir verimi               18     40                    40.8                  31.3
saha verimi                20     40                    33.9                  39.4

baglam                      teknik ile  kendi sirasi ile    kayip puan
gelir ve abone verisi            27.0%             28.8%      1.8 puan
saha kesintisizligi              24.6%             28.8%      4.2 puan
gelir ve abone verisi baglaminda birinci sirada olan bulgu 10 (abone verisi, teknik 9.57) teknik siralamada 1. sirada
saha kesintisizligi baglaminda birinci sirada olan bulgu 33 (saha operasyonu, teknik 7.50) teknik siralamada 10. sirada
```

Bütçe 61 bulgunun yalnız yedide birini karşılıyor, ve tablo bu darlıkta sıralamanın ne kadar iş
yaptığını gösteriyor. İlk üç satır aynı 40 günü üç ayrı biçimde harcıyor. Saha bağlamı kendi
sırasıyla kendi etkisinin yüzde 28,8'ini kapatırken gelir sırasıyla yalnız yüzde 14,1'ini
kapatıyor: **yanlış eksenle sıralamak, aynı bütçeyi yarı verimle harcamak demektir.**

Teknik sıralamanın iki bağlama bedeli de eşit değil. Gelir bağlamında kendi sırasına göre 1,8
puan, saha bağlamında 4,2 puan geride kalıyor. Teknik ağırlık "yansız" görünür, ama yansızlığı bir
bağlama iki katı kadar pahalıya patlıyor.

Son iki satır tek başına daha ilginçtir. İş puanını düzeltme gününe bölen sıralama aynı 40 günde
18 ve 20 bulgu kapatıyor ve **her iki bağlamda da öteki üç sıralamayı geçiyor** — gelir bağlamında
yüzde 40,8, saha bağlamında yüzde 39,4. Nedeni tabloda görünüyor: saf iş etkisiyle sıralamak
bütçeyi dokuz pahalı kaleme yatırıyor, maliyete bölmek ise aynı bütçeye iki katından fazla kalem
sığdırıyor. Bir raporun "kritik" etiketli ilk on kalemi, düzeltme maliyeti yazılmadığında bu
karşılaştırmayı olanaksız kılar.

Son iki satırın gösterdiği bir başka şey de sıralamaların hepsinin aynı yerde başlamadığıdır:
gelir bağlamının birinci kalemi teknik sıralamada da birincidir, saha bağlamının birinci kalemi
ise teknik sıralamada onuncudur. Rapor tek bir sıra dayattığında bu ikinci kalemin dokuz sıra
geride kalması bir karar değil, bir yan etkidir.

## Özet

- Aynı 61 bulgu iki iş bağlamında puanlandığında aynı sırada kalan tek bulgu yok; ortalama sıra
  kayması 22,23, en büyük kayma 43 sıra ve ilk on listeleri ortak üye içermiyor.
- İkili karşılaştırmaların yüzde 41,6'sı iki bağlam arasında ters dönüyor; teknik sıralamanın
  bağlamlara uzaklığı ise eşit değil (5/10 ve 2/10 ortak), yani bağlamsız bir sıra sessizce bir
  bağlam seçmiştir.
- İş ağırlığı ile teknik puan ilişkili değildir: iç yönetim sınıfı 5,94 ile en yüksek ortalama
  teknik puana sahipken iki bağlamda da en düşük ağırlıklardan birini taşıyor.
- 40 adam-günlük bütçede saha bağlamı kendi sırasıyla etkisinin yüzde 28,8'ini, gelir sırasıyla
  yüzde 14,1'ini kapatıyor; yanlış eksenle sıralamak aynı bütçeyi yarı verimle harcatıyor.
- Teknik sıralama gelir bağlamında 1,8, saha bağlamında 4,2 puan geride kalıyor: yansız görünen
  eksenin bedeli bağlama göre iki kat değişiyor.
- İş puanını düzeltme gününe bölen sıralama aynı bütçede 18–20 bulgu kapatıp her iki bağlamda da
  öteki sıralamaları geçiyor; düzeltme maliyeti yazılmayan bir liste bu karşılaştırmayı
  olanaksız kılar.

## Sonraki Adım

Bulgular kanıtlandı ve iki ayrı eksende sıraya kondu. Sıradaki kalem ise bir düzeltme ekibine
gidecek, ve o ekip bulguyu ilk kez okuyacak. Elde kanıt olması, o kanıtın karşı tarafta yeniden
görülebileceği anlamına gelmez: hangi ön koşulla, hangi girdiyle ve hangi ortamda gözlendiği
yazılmamışsa düzeltmenin doğrulanması da olanaksızdır. Sonraki ders raporu **yeniden
üretilebilirlik** cinsinden ölçer: kaç bulgu adım adım yeniden üretilebiliyor, kaçı ortama bağlı
kalıyor ve düzeltme önerisinin kaç kalemi doğrudan uygulanabilir durumda.
