Yazılım Test 1

Soru 01 / 10

🎓 Yazılım Test 1 - Ders Notu

Bu ders notu, "Yazılım Test 1" sınavında karşılaşabileceğiniz temel kavramları, test seviyelerini ve yaygın test tekniklerini sade bir dille özetlemektedir. Amacımız, yazılım test dünyasına sağlam bir giriş yapmanızı sağlamaktır.

📌 Yazılım Testi Nedir ve Neden Önemlidir?

Yazılım testi, bir yazılımın beklendiği gibi çalışıp çalışmadığını, hatalar içerip içermediğini ve gereksinimleri karşılayıp karşılamadığını kontrol etme sürecidir. Bu süreç, ürün kalitesini artırmak ve kullanıcı memnuniyetini sağlamak için kritik öneme sahiptir.

  • Amaç: Yazılımdaki kusurları (hataları) bulmak, yazılımın kalitesini doğrulamak ve riskleri azaltmak.
  • Kusur (Defect/Bug): Yazılımın gereksinimleri karşılamayan veya yanlış çalışan bir durumu.
  • Hata (Error): Bir geliştiricinin kod yazarken yaptığı insan hatası.
  • Başarısızlık (Failure): Kusurun, yazılımın çalışması sırasında ortaya çıkması ve beklenen sonucu vermemesi.

💡 İpucu: Test süreci, sadece hata bulmak değil, aynı zamanda yazılımın doğru çalıştığını onaylamak için de yapılır.

📌 Yazılım Testinin Temel Prensipleri

Etkili bir test stratejisi oluşturmak için bilmeniz gereken bazı evrensel prensipler vardır. Bu prensipler, test faaliyetlerinizi daha verimli hale getirmenize yardımcı olur.

  • Kusurlar Erken Bulunur: Test ne kadar erken başlarsa, kusurları düzeltme maliyeti o kadar düşük olur.
  • Kapsamlı Test İmkansızdır: Her olası durumu test etmek mümkün değildir; risk odaklı test yapılmalıdır.
  • Kusur Kümelenmesi: Çoğu kusur, yazılımın küçük bir bölümünde yoğunlaşır (Pareto Prensibi).
  • Pestisit Paradoksu: Aynı testler tekrar tekrar yapılırsa yeni kusurlar bulunamayabilir; test senaryoları güncellenmelidir.
  • Bağlama Bağlıdır: Test yaklaşımı, yazılımın türüne ve projenin bağlamına göre değişir.

⚠️ Dikkat: "Kapsamlı test imkansızdır" prensibi, her şeyi test etmeye çalışmak yerine akıllıca test stratejileri geliştirmenin önemini vurgular.

📌 Test Seviyeleri: Yazılımı Katman Katman Test Etmek

Yazılım geliştirme sürecinde farklı aşamalarda yapılan testlere "test seviyeleri" denir. Her seviyenin kendine özgü hedefleri ve odak noktaları vardır. Bu seviyeler genellikle bir hiyerarşi içinde ilerler.

  • Birim Testi (Unit Testing): Yazılımın en küçük parçası (fonksiyon, metot) ayrı ayrı test edilir. Genellikle geliştiriciler tarafından yapılır ve her bir birimin doğru çalıştığını doğrulamayı hedefler.
  • Entegrasyon Testi (Integration Testing): Birleştirilen birimlerin veya modüllerin birbirleriyle doğru iletişim kurup kurmadığı test edilir. Amaç, modüller arası arayüz sorunlarını bulmaktır.
  • Sistem Testi (System Testing): Tüm sistemin, gereksinimleri karşılayıp karşılamadığı bütünsel olarak test edilir. Hem fonksiyonel hem de fonksiyonel olmayan gereksinimler bu seviyede test edilir.
  • Kabul Testi (Acceptance Testing): Son kullanıcının veya müşterinin, yazılımın kendi ihtiyaçlarını karşılayıp karşılamadığını doğrulamasıdır. Yazılımın iş gereksinimlerini karşıladığını ve kullanıma hazır olduğunu onaylamayı amaçlar.

💡 İpucu: Test seviyeleri, bir bina inşa etmeye benzer. Önce tuğlaları (birimler) kontrol eder, sonra duvarları (entegrasyon), sonra tüm binayı (sistem) ve en son da bina sahibinin beklentilerini (kabul) test edersiniz.

📌 Test Teknikleri: Yazılımı Farklı Açılardan İncelemek

Test teknikleri, yazılımı test etmek için kullanılan farklı yaklaşımları ve yöntemleri ifade eder. Bunlar genellikle "kara kutu" ve "beyaz kutu" olarak iki ana kategoriye ayrılır.

  • Kara Kutu Testi (Black-Box Testing): Yazılımın iç yapısı veya kodu bilinmeden, sadece dışarıdan görünen işlevselliği test edilir. Gereksinimler ve spesifikasyonlar temel alınır. Örnekler: Eşdeğerlik Bölümleme, Sınır Değer Analizi.
  • Beyaz Kutu Testi (White-Box Testing): Yazılımın iç yapısı, kodu ve tasarımı bilinerek test edilir. Kodun tüm yollarını, döngülerini ve koşullarını test etmeyi hedefler. Örnekler: Deyim Kapsamı (Statement Coverage), Karar Kapsamı (Decision Coverage).
  • Eşdeğerlik Bölümleme (Equivalence Partitioning): Giriş verilerini, aynı davranışı göstermesi beklenen gruplara (bölümlere) ayırarak test senaryoları oluşturma tekniğidir. Her bölümden sadece bir değer seçilerek test edilir. Örnek: Yaş girişi için (0-18, 19-65, 66-120) gibi bölümler oluşturmak.
  • Sınır Değer Analizi (Boundary Value Analysis): Eşdeğerlik bölümlerinin sınır noktalarındaki değerleri test etme tekniğidir. Hataların genellikle sınır değerlerinde ortaya çıktığı varsayımına dayanır. Örnek: Yaş girişi için 0, 1, 18, 19, 65, 66, 120, 121 gibi değerleri test etmek.

⚠️ Dikkat: Kara kutu testleri genellikle son kullanıcı bakış açısıyla yapılırken, beyaz kutu testleri daha çok geliştirici bakış açısıyla kodun kalitesini artırmayı hedefler.

📌 Fonksiyonel Olmayan Test Türleri

Yazılımın "ne yaptığını" test eden fonksiyonel testlerin yanı sıra, "nasıl yaptığını" test eden fonksiyonel olmayan testler de büyük önem taşır. Bu testler, yazılımın performans, güvenlik, kullanılabilirlik gibi özelliklerini değerlendirir.

  • Performans Testi: Yazılımın belirli bir iş yükü altında ne kadar hızlı ve stabil çalıştığını ölçer. (Örn: Bir web sitesinin aynı anda 1000 kullanıcıyı kaldırıp kaldıramaması.)
  • Güvenlik Testi: Yazılımın yetkisiz erişimlere, veri ihlallerine veya diğer kötü niyetli saldırılara karşı ne kadar dirençli olduğunu test eder.
  • Kullanılabilirlik Testi: Yazılımın son kullanıcılar için ne kadar kolay öğrenilebilir, anlaşılabilir ve etkili olduğunu değerlendirir. (Örn: Bir uygulamanın menülerinin ne kadar sezgisel olduğu.)
  • Yük Testi (Load Testing): Yazılımın normal ve beklenen yük altında nasıl davrandığını test eder.
  • Stres Testi (Stress Testing): Yazılımın aşırı ve normalin üzerindeki yükler altında ne kadar dayanıklı olduğunu ve ne zaman çöktüğünü test eder.

💡 İpucu: Fonksiyonel testler "doğru şeyi mi yapıyoruz?" sorusuna, fonksiyonel olmayan testler ise "şeyi doğru mu yapıyoruz?" sorusuna cevap arar.

📌 Test Süreci ve Dokümantasyon

Her test faaliyeti belirli bir süreç içinde ve uygun dokümantasyonla yürütülmelidir. Bu, testlerin planlı, izlenebilir ve tekrarlanabilir olmasını sağlar.

  • Test Planı: Test faaliyetlerinin kapsamını, hedeflerini, kaynaklarını, zaman çizelgesini ve risklerini belirleyen resmi bir belgedir. Ne test edilecek, nasıl test edilecek, kim test edecek gibi sorulara cevap verir.
  • Test Senaryosu (Test Case): Belirli bir fonksiyonu veya gereksinimi test etmek için adım adım yönergeler içeren bir dokümandır. Giriş verileri, beklenen sonuçlar ve test adımları yer alır.
  • Hata Raporu (Defect Report): Bulunan bir kusurun detaylarını (hatalı davranış, adımlar, ekran görüntüleri, öncelik, ciddiyet) içeren belgedir. Geliştiricilerin hatayı anlamasına ve düzeltmesine yardımcı olur.

📝 Unutmayın: İyi dokümantasyon, test sürecinin şeffaflığını artırır ve gelecekteki testler için değerli bir referans kaynağı olur.

↩️ Testi Çözmeye Devam Et
✨ Konuları Gir, Yapay Zeka Saniyeler İçinde Sınavını Üretsin!
1 2 3 4 5 6 7 8 9 10
Ana Konuya Dön:
Geri Dön