7.5. Bölüm Sonu Uygulama Görevi (Hands-on Challenge)

Bölüm 7 boyunca bir yazılımın sadece butonlarının çalışmasının yetmediğini; o butonların arkasındaki hızın, dayanıklılığın, emniyetin ve kapsayıcılığın bir ürünü nasıl vezir ya da rezil edebileceğini gördün.

Şimdi bir kalite mühendisi şapkanı takarak, bir bankanın en hassas ekranlarından biri olan “İhtiyaç Kredisi Başvuru Formu” üzerinde fonksiyonel olmayan test mimarisini baştan sona kurgulama vakti!

Görev Senaryosu: “Kredi Başvuru Formu Denetimi”

Bir dijital bankacılık web platformunda yeni tasarlanan “Anında İhtiyaç Kredisi Başvuru Formu” canlıya alınmak üzeredir. Form; T.C. Kimlik No, Cep Telefonu, Talep Edilen Kredi Tutarı, Vade Seçimi, Aylık Net Gelir alanlarından ve en alttaki “Başvuruyu Tamamla” butonundan oluşmaktadır.

Senden İstenenler

  1. Performans SLA’leri Belirle: Bu ekran için profesyonel bir Yük Testi (Load Testing) ve bir Stres Testi (Stress Testing) başarı metriği (SLA) tanımla.

  2. Güvenlik Hijyen Kontrol Listesi (Security Checklist) Hazırla: Formun güvenliğini sınamak için uygulanacak en az 3 maddelik somut bir kontrol listesi oluştur.

  3. Klavye Erişilebilirlik Senaryoları (A11y Test Cases) Yaz: Fareyi eline alamayan bir bireyin bu formu eksiksiz doldurabilmesini teyit eden en az 2 adet adımlı test senaryosu kurgula.

🔍 Görev Çözüm Kılavuzu ve Referans Çizelgesi

Kendi çalışmanı tamamladıktan sonra kurumsal standartlarla kıyasla:

1. Performans Başarı Metrikleri (SLA Tanımları)

  • Yük Testi SLA’i (Normal/Tepe Yük Senaryosu):

    • Koşul: Sistemde eşzamanlı (aynı anda işlem yapan) 3.000 aktif kullanıcı varken;

    • Metrik: Kredi başvuru formu gönderildiğinde ortalama yanıt süresi (Response Time) 2.0 saniyenin altında olmalı, hata oranı (HTTP 5xx Error Rate) %0.1’i aşmamalıdır.

  • Stres Testi SLA’i (Kırılma ve Toparlanma Senaryosu):

    • Koşul: Sisteme kapasitesinin 3 katı (9.000 eşzamanlı kullanıcı) kademeli olarak yüklendiğinde;

    • Metrik: Sistem veri kaybı yaşamadan veya veritabanını kilitlemeden zarifçe koruma moduna geçmeli (HTTP 429 Too Many Requests veya HTTP 503 Service Unavailable uyarı sayfası dönmeli); yük tekrar normal seviyeye (3.000 kullanıcıya) çekildiğinde sistem en geç 45 saniye içinde harici bir insan müdahalesi olmadan kendi kendine toparlanmalıdır (Auto-Recovery).

2. Kredi Formu Güvenlik Kontrol Listesi (Security Checklist)

+---+------------------------------------+---------------------------------------------------------------+
|   | KONTROL NOKTASI                    | DENETİM VE BEKLENEN GÜVENLİ DAVRANIŞ                         |
+---+------------------------------------+---------------------------------------------------------------+
| [ ] 1. SQL Injection / XSS Denetimi    | Tutar veya Gelir kutularına ` ' OR '1'='1 ` veya `<script>`   |
|   |                                    | yazıldığında sistem veritabanı hata kodu dökmemeli; girdiyi   |
|   |                                    | temizlemeli (sanitize) veya geçersiz karakter uyarısı vermeli.|
+---+------------------------------------+---------------------------------------------------------------+
| [ ] 2. Hassas Veri İletimi (URL Sızıntı)| Form gönderildiğinde T.C. Kimlik No veya gelir bilgisi adres  |
|   |                                    | çubuğunda (`GET` parametresi olarak) açıkta taşınmamalı;       |
|   |                                    | şifreli gövdede (`POST` isteği ve HTTPS altında) gitmelidir.  |
+---+------------------------------------+---------------------------------------------------------------+
| [ ] 3. Yetkisiz Doğrudan Erişim       | Tarayıcı geçmişinden veya URL'den doğrudan `/kredi-onay`       |
|   |    (Broken Access Control)         | sayfasına tıklandığında, aktif bir oturum ve onaylı başvuru   |
|   |                                    | yoksa sistem sayfayı açmamalı, giriş ekranına fırlatmalıdır.  |
+---+------------------------------------+---------------------------------------------------------------+

3. Klavye Erişilebilirlik Test Senaryoları (WCAG A11y)

Senaryo 1: Odak Kaybı Olmadan Formu Doldurma (Focus Visible & Tab Order)
  • Ön Koşul: Sayfa açılmış, fare masadan uzaklaştırılmıştır.

  • Adımlar:

    1. Klavyeden Tab tuşuna basarak ilk alan olan “T.C. Kimlik No” kutusuna gelinir.

    2. Her bir Tab basışında odağın sırasıyla Telefon $\rightarrow$ Tutar $\rightarrow$ Vade $\rightarrow$ Gelir $\rightarrow$ Başvur Butonuna mantıksal bir sırada ilerlediği gözlemlenir.

  • Beklenen Sonuç:

    • Üzerinde bulunulan her form alanının etrafında net, ayırt edici mavi bir odak çerçevesi (Focus Indicator) görünmelidir. Odak asla kaybolmamalıdır.

    • Sıralama mantıksal akışı takip etmeli; form ortasından aniden sayfa altındaki alakasız bir linke atlamamalıdır.

Senaryo 2: Klavye Tuzağı Olmadan Açılır Menü (Dropdown) Yönetimi (No Keyboard Trap)
  • Ön Koşul: Tab tuşu ile “Vade Seçimi (Ay)” açılır listesine gelinmiştir.

  • Adımlar:

    1. Açılır menü üzerindeyken klavyeden Boşluk (Space) veya Aşağı Ok (Down Arrow) tuşuna basılarak seçenekler listesi açılır.

    2. Aşağı/Yukarı Ok tuşlarıyla “24 Ay” seçeneği üzerine gelinir ve Enter ile seçim yapılır.

    3. Tab tuşuna basılarak bir sonraki alan olan “Aylık Net Gelir” kutusuna geçilir.

  • Beklenen Sonuç:

    • Menü klavyeyle rahatça açılabilmeli ve ok tuşlarıyla gezilebilmelidir.

    • Kullanıcı açılır kutunun içinde kilitli kalmamalı (Klavye Tuzağı – Keyboard Trap oluşmamalı); Tab tuşuna basıldığı anda odağı başarıyla bir sonraki alana devredebilmelidir.

4. “Bir de Şöyle Düşün” (Kutu İçeriği)

💡 Bir de Şöyle Düşün: Banka Şubesi ve Acil Çıkış Kapısı

Bir banka şubesini fiziksel olarak denetlediğini hayal et:

  • Yük ve Stres: İçeriye aynı anda 50 müşteri girdiğinde vezneler kilitlenmeden hizmet veriyor mu (Yük)? Dışarıda 500 kişilik bir izdiham olduğunda güvenlik kapıyı kontrollü kapatıp sırayla alıyor mu (Stres)?

  • Güvenlik: Gişedeki memurun ekranındaki müşteri bakiyesi yoldan geçen herkes tarafından arkadan okunabiliyor mu (Gizlilik)?

  • Erişilebilirlik: Banka şubesinin giriş kapısı döner kapı ise; tekerlekli sandalyeli biri veya koltuk değnekli yaşlı bir teyze içeri girebiliyor mu? Döner kapının hemen yanında düz bir engelli kapısı ve rampası yoksa, o şube toplumun bir kesimine kapılarını tamamen kapatmış demektir.

Dijital formlar da birer banka şubesidir. Fonksiyonel olmayan testler o şubenin hem izdihama dayanmasını hem kasasının kilitli kalmasını hem de engelli bir vatandaşın kimseden yardım almadan içeri girebilmesini sağlar.

5. Mini Alıştırma

Mülakat Sorusu: Yukarıdaki kredi başvuru formunda bir test mühendisi güvenlik kontrolü yaparken tarayıcının adres çubuğunda şu adresi fark ediyor:

[https://banka.com/api/kredi-basvuru?tcNo=11111111110&gelir=45000&tutar=100000](https://banka.com/api/kredi-basvuru?tcNo=11111111110&gelir=45000&tutar=100000)

Bu durum uluslararası yazılım güvenliği standartlarına göre neden kabul edilemez ağır bir zafiyettir ve yazılım ekibine nasıl düzeltilmesi gerektiği raporlanmalıdır?

Zafiyet Nedir: Hassas kişisel ve finansal veriler (T.C. Kimlik No, gelir ve kredi tutarı) GET metodu kullanılarak URL içine açık metin (cleartext) olarak gömülmüştür. Bu durum; verilerin tarayıcı geçmişine (browser history), proxy sunucu loglarına, internet servis sağlayıcı kayıtlarına ve ekranı gören üçüncü şahıslara sızmasına yol açar (Sensitive Data Exposure).

Düzeltme Önerisi: İstek türü derhal POST metoduna çevrilmeli; hassas veriler URL’den tamamen temizlenerek şifreli HTTP istek gövdesi (Request Body) içinde, TLS/HTTPS koruması altında sunucuya taşınmalıdır.