📚 ISTQB® Sertifikalı Test Uzmanı - Temel Seviye Çalışma Materyali
Kaynak Bilgisi: Bu çalışma materyali, ISTQB® Temel Seviye Ders Programı metinleri ve ilgili ders kaydı transkriptlerinden derlenmiştir.
🚀 Giriş ve Genel Bakış
Bu çalışma materyali, uluslararası yazılım test uzmanı nitelikleri için temel bir çerçeve sunan ISTQB® (Uluslararası Yazılım Test Yeterlilik Kurulu) Temel Seviye Ders Programı'nı kapsamaktadır. Program, yazılım testinin temel kavramlarını, prensiplerini, süreçlerini ve yönetimini anlamak isteyen profesyoneller için tasarlanmıştır. Amacı, yazılım kalitesini değerlendirmek ve yazılım geliştirme yaşam döngüsü boyunca hataların riskini azaltmaktır.
🎯 Hedef Kitle ve Kariyer Yolu
Bu ders programı, test uzmanları, test analistleri, test mühendisleri, test danışmanları, test yöneticileri, yazılımcılar ve geliştirme ekibi üyeleri gibi yazılım testiyle uğraşan herkes için uygundur. Ayrıca proje yöneticileri, kalite yöneticileri, ürün sahipleri ve BT yöneticileri gibi temel bir yazılım testi anlayışına sahip olmak isteyen profesyoneller de hedeflenmektedir. Temel Seviye sertifikası, ISTQB'nin ileri ve uzman seviye programlarına geçiş için bir basamak görevi görür.
✅ Beklenen İş Çıktıları
Temel Seviye sertifikası alan bir profesyonelden beklenen 14 temel iş çıktısı şunlardır:
- Testin ne olduğunu ve neden faydalı olduğunu anlamak.
- Yazılım testinin temel kavramlarını kavramak.
- Testin bağlamına göre uygun test yaklaşımını ve aktivitelerini tanımlamak.
- Dokümantasyon kalitesini değerlendirmek ve iyileştirmek.
- Testin etkinliğini ve verimliliğini artırmak.
- Test sürecini yazılım geliştirme yaşam döngüsüyle uyumlu hale getirmek.
- Test yönetimi prensiplerini anlamak.
- Net ve anlaşılır hata raporları yazmak ve iletmek.
- Testle ilgili öncelik ve eforu etkileyen faktörleri anlamak.
- Disiplinler arası bir ekibin üyesi olarak çalışmak.
- Test otomasyonuyla ilgili riskleri ve faydaları bilmek.
- Test için gerekli becerileri tanımlamak.
- Riskin test üzerindeki etkisini anlamak.
- Testin ilerleme durumu ve test kalitesi hakkında etkin rapor sunmak.
🧠 Öğrenme Hedefleri ve Bilişsel Seviyeler
Sınav kapsamındaki öğrenme hedefleri, iş çıktılarını destekler ve bilişsel seviyelere göre sınıflandırılır:
- K1: Hatırla (Bilgiyi hatırlama)
- K2: Anla (Kavramları açıklama, karşılaştırma)
- K3: Uygula (Bilgiyi yeni durumlara uygulama)
📝 Sınav Kapsamı ve Akreditasyon
Sınav, ders programının giriş ve ekler hariç tüm bölümlerini kapsar. Referans gösterilen standartların (örn. IEEE, ISO) içerikleri, sadece ders programında bahsedildiği ölçüde sınava dahildir. ISTQB® Üye Kurulları, ders materyali bu ders programına uygun olan eğitim kurumlarını akredite edebilir.
1️⃣ Konu 1: Yazılım Testinin Temelleri
📚 Yazılım Testi Nedir?
Yazılım testi, yazılım kalitesini değerlendiren ve kullanım sırasında oluşabilecek hataların riskini azaltan bir aktiviteler bütünüdür. Hata bulmayı ve yazılım geliştirme sırasında üretilen eserlerin kalitesini değerlendirmeyi amaçlar. Test, hem doğrulama (sistemin gereksinimleri karşılayıp karşılamadığını kontrol etme) hem de sağlama (sistemin kullanıcı ve paydaş ihtiyaçlarını karşılayıp karşılamadığını kontrol etme) süreçlerini içerir.
- Dinamik Test: Yazılımın çalıştırılmasını içerir.
- Statik Test: Yazılımı çalıştırmadan kod, dokümantasyon gibi çalışma ürünlerinin incelenmesini içerir (örn. gözden geçirmeler, statik analiz).
🎯 Test Hedefleri
Genel test hedefleri şunlardır:
- Çalışma ürünlerini (gereksinimler, kod vb.) değerlendirmek.
- Arızaları tetiklemek ve hataları bulmak.
- Yazılımın kalite kriterlerini karşılayamama riskini azaltmak.
- Belirtilen gereksinimlerin yerine getirildiğini doğrulamak.
- Paydaşlara sağlıklı kararlar alabilmeleri için bilgi sunmak.
- Test nesnesinin kalitesi hakkında güven oluşturmak.
↔️ Yazılım Testi ve Hata Ayıklama
Test etme ve hata ayıklama farklı aktivitelerdir.
- Test Etme: Hataları bulmaya veya arızaları tetiklemeye odaklanır.
- Hata Ayıklama: Tetiklenen arızaların nedenlerini (hataları) bulma, analiz etme ve giderme sürecidir. Onaylama testleri ve regresyon testleri hata ayıklama sonrası yapılır.
💡 Yazılım Testi Neden Gereklidir?
Test, bir kalite kontrol mekanizması olarak belirlenen kapsam, zaman, kalite ve bütçe kısıtları dahilinde hedeflere ulaşmaya yardımcı olur.
- Hataların maliyet etkin bir şekilde bulunmasını sağlar.
- YGYD'nin çeşitli aşamalarında kalitenin doğrudan değerlendirilmesini sunar.
- Kullanıcıların dolaylı olarak temsil edilmesini sağlar.
- Sözleşmeye bağlı veya yasal gereksinimleri karşılamak için gereklidir.
⚖️ Test Etme ve Kalite Güvence (KG)
- Kalite Kontrol (KK): Ürün odaklı, düzeltici bir yaklaşımdır. Test, KK'nin önemli bir ayağıdır.
- Kalite Güvence (KG): Süreç odaklı, önleyici bir yaklaşımdır. İyi bir sürecin doğru uygulanıp uygulanmadığına odaklanır. KG, hem geliştirme hem de test süreci için geçerlidir ve herkesin sorumluluğundadır.
⚠️ İnsan Hataları, Hatalar, Arızalar ve Kök Nedenler
- İnsan Hatası (Yanlışlık): İnsanların yaptığı hatalar.
- Yazılım Hatası (Kusur/Hata): İnsan hatalarından kaynaklanan, yazılımdaki eksiklik veya yanlışlık.
- Arıza (Başarısızlık): Bir hatanın çalıştırılması sonucu sistemin beklenen işlevini yerine getirememesi.
- Kök Neden: Bir problemin ortaya çıkmasının temel sebebi. Kök neden analizi ile belirlenir ve benzer sorunların önlenmesine yardımcı olur.
7️⃣ Test Prensipleri
- Test hataların varlığını gösterir, yokluğunu değil.
- %100 test imkansızdır.
- Erken test, zaman ve para tasarrufu sağlar.
- Hatalar yazılımın belli alanlarında yoğunlaşır (Pareto Prensibi).
- Antibiyotik direnci: Aynı testler tekrarlandıkça yeni hata bulmada etkinliği azalır.
- Test, projenin bağlamına göre değişiklik gösterir.
- Hatasızlık yanılgısı: Bulunan tüm hatalar çözülse bile yazılım kullanıcı ihtiyaçlarını karşılamayabilir.
🔄 Test Aktiviteleri, Çalışma Ürünleri ve Roller
Test süreci, planlama, gözetim ve kontrol, analiz, tasarım, uyarlama, koşum ve tamamlama gibi ana aktivite gruplarından oluşur. Bu aktiviteler, test planı, test senaryoları, hata raporları gibi çeşitli test çalışma ürünleri üretir. Test sürecinde test yönetimi (planlama, gözetim, tamamlama) ve test etme (analiz, tasarım, koşum) olmak üzere iki ana rol bulunur.
🤝 Test Etme Sürecinde Gerekli Beceriler ve İyi Uygulamalar
Test uzmanları için kritik beceriler arasında test bilgisi, titizlik, iletişim, analitik düşünce, teknik ve alan bilgisi yer alır.
- Tüm Ekip Yaklaşımı: Ekip üyelerinin ortak hedeflere ulaşmak için iş birliği yapması, kaliteden herkesin sorumlu olması.
- Testin Bağımsızlığı: Farklı bakış açıları sunarak hataları daha etkili bulmayı sağlar. Bağımsızlık seviyeleri (yazar, ekip arkadaşı, kurum içi test uzmanı, dış test uzmanı) değişebilir.
2️⃣ Konu 2: Yazılım Geliştirme Yaşam Döngüsü Boyunca Test
🌐 YGYD Bağlamında Test
Testler, seçilen Yazılım Geliştirme Yaşam Döngüsü (YGYD) modeline (sıralı, döngüsel, artımlı) uyarlanmalıdır. YGYD, test aktivitelerinin kapsamını, zamanlamasını, dokümantasyon ayrıntı düzeyini, teknik seçimini ve test uzmanının rolünü etkiler.
✅ İyi Test Uygulamaları
- Her geliştirme aktivitesine karşılık gelen bir test aktivitesi olmalı.
- Farklı test seviyeleri belirli hedeflere sahip olmalı.
- Test analizi ve tasarımı erken başlamalıdır.
- Test uzmanları dokümantasyon gözden geçirme süreçlerine dahil olmalı.
📈 Geliştirmeyi Yönlendiren Test Yaklaşımları
- Test Güdümlü Geliştirme (TDD): Kod yazılmadan önce testler yazılır.
- Kabul Testi Güdümlü Geliştirme (ATDD): Kabul kriterlerinden testler türetilir ve kod yazılmadan önce oluşturulur.
- Davranış Güdümlü Geliştirme (BDD): Uygulamanın istenen davranışı, doğal dilde yazılan test senaryolarıyla ifade edilir.
⚙️ DevOps ve Test Etme
DevOps, geliştirme ve operasyon arasında sinerji oluşturarak hızlı geri bildirim, sürekli entegrasyon (CI) ve sürekli teslimat (CD) ile test otomasyonunu destekler. Test otomasyonu, regresyon riskini azaltır ve kod kalitesi hakkında hızlı geri bildirim sağlar.
⬅️ Shift-Left Yaklaşımı
Testlerin YGYD'nin erken aşamalarında yapılmasını öneren "erken test" prensibidir. Analiz gözden geçirmeleri, kod yazılmadan önce test senaryolarının oluşturulması ve statik analiz gibi uygulamaları içerir.
📊 Geçmişe Dönük Öğeler ve Süreç İyileştirmesi
Proje veya döngü sonunda yapılan toplantılardır. Amaç, başarılı olanları sürdürmek ve başarısız olanları iyileştirmek için dersler çıkarmaktır. Sürekli iyileştirme için kritik öneme sahiptir.
🪜 Test Seviyeleri
Test aktivitelerinin gruplandırılmasıdır.
- Bileşen Testi (Birim Testi): Bileşenleri ayrı ayrı test eder.
- Bileşen Entegrasyon Testi: Bileşenler arasındaki arayüzleri ve etkileşimleri test eder.
- Sistem Testi: Sistem veya ürünün genel davranışına ve yeteneklerine odaklanır.
- Sistem Entegrasyon Testi: Test edilen sistem ile diğer sistemler arasındaki arayüzleri test eder.
- Kabul Testi: Sistemin kullanıcıya sunulmaya hazır olduğunu doğrular (örn. Kullanıcı Kabul Testi - KKT).
🧪 Test Çeşitleri
Gereksinimlerle ilgili test aktivitesi gruplarıdır.
- Fonksiyonel Testler: Bileşen veya sistemin yerine getirmesi gereken fonksiyonları değerlendirir.
- Fonksiyonel Olmayan Testler: Sistem veya bileşenin fonksiyonel gereksinimleri dışındaki özelliklerini (örn. performans, kullanılabilirlik, güvenlik) değerlendirir.
- Kara Kutu Testi: Gereksinim bazlıdır, test nesnesine dışarıdan bakarak testleri elde eder.
- Beyaz Kutu Testi: Yapı bazlıdır, sistemin iç yapısından (kod, mimari) testleri elde eder.
🔁 Onaylama ve Regresyon Testleri
- Onaylama Testi: Bir hatanın başarıyla giderildiğini doğrulamak için yapılır.
- Regresyon Testi: Bir değişikliğin (düzeltme veya yeni özellik) mevcut işlevselliği olumsuz etkilemediğini teyit eder. Genellikle otomatiktir.
🛠️ Bakım Testleri
Mevcut bir sistemde yapılan değişiklikler (düzeltici, uyarlayıcı, geliştirici) sonrası sistemin doğru çalıştığını kontrol eder. Kapsamı, değişikliğin risk derecesine ve boyutuna bağlıdır.
3️⃣ Konu 3: Statik Testler
🔍 Statik Testin Temelleri
Statik test, yazılımı çalıştırmadan kod, süreç, mimari veya diğer çalışma ürünlerini manuel inceleme (gözden geçirme) veya araç yardımıyla (statik analiz) değerlendirir. Kaliteyi yükseltmek, hataları tespit etmek ve okunabilirlik, bütünlük gibi özellikleri değerlendirmek hedeflenir.
📄 Statik Testlerle İncelenebilen Çalışma Ürünleri
Gereksinimler, kaynak kod, test planları, test senaryoları, proje dokümantasyonu, sözleşmeler ve modeller gibi okunup anlaşılabilecek her türlü çalışma ürünü incelenebilir.
🌟 Statik Testin Önemi
- YGYD'nin erken aşamalarında hataları tespit ederek "erken test" prensibini destekler.
- Dinamik testle tespit edilemeyecek hataları (örn. ulaşılamayan kod) bulabilir.
- Çalışma ürünlerinin kalitesini değerlendirir ve paydaşlar arasında ortak bir anlayış oluşturur.
- Hataları erken bulduğu için maliyet etkinliği sağlar.
🆚 Statik Test ve Dinamik Test Arasındaki Farklar
Birbirlerini tamamlarlar. Statik test hataları doğrudan bulurken, dinamik test arızaları tetikler ve hatalar analiz yoluyla belirlenir. Statik testler çalıştırılamayan alanlara uygulanabilirken, dinamik testler yalnızca çalıştırılabilir alanlara uygulanabilir.
🗣️ Geri Bildirim ve Gözden Geçirme Süreci
Erken ve sık paydaş geri bildirimleri, potansiyel kalite problemlerinin erken iletilmesini sağlar. Gözden geçirme süreci; planlama, başlangıç, bireysel gözden geçirme, iletişim ve analiz, düzeltme ve raporlama faaliyetlerini içerir.
👥 Gözden Geçirmede Roller ve Sorumluluklar
Yönetici, yazar, moderatör, katip, gözden geçirici ve gözden geçirme lideri gibi roller bulunur.
📋 Gözden Geçirme Çeşitleri
- Gayri Resmi Gözden Geçirme: Tanımlanmış bir süreç izlenmez, resmi çıktı gerektirmez.
- Üzerinden Geçme (Walkthrough): Yazarın öncülüğünde yapılır, kaliteyi değerlendirme ve eğitim amaçlıdır.
- Teknik Gözden Geçirme: Teknik açıdan nitelikli gözden geçiriciler tarafından, moderatör eşliğinde yapılır.
- Teftiş (Inspection): En resmi gözden geçirme çeşididir, maksimum sayıda anomali bulmayı hedefler.
4️⃣ Konu 4: Test Analizi ve Tasarımı
🛠️ Test Tekniklerine Genel Bakış
Test teknikleri, test analizinde (ne test edilecek) ve test tasarımında (nasıl test edilecek) test uzmanına destek sağlar. Kara kutu, beyaz kutu ve tecrübeye dayalı olarak sınıflandırılırlar.
⚫ Kara Kutu Test Teknikleri
Test nesnesinin iç yapısına bakılmaksızın davranışının analizine dayanır.
- Denklik Paylarına Ayırma (DPA): Verileri denklik paylarına ayırarak her paydan bir değerle test yapar.
- Sınır Değer Analizi (SDA): Denklik paylarının sınır değerlerini test eder (2 değerli ve 3 değerli versiyonları vardır).
- Karar Tablosu Testleri: Koşul kombinasyonlarının farklı çıktılar üretmesini gösterir, karmaşık mantık için etkilidir.
- Durum Geçişi Testleri: Bir sistemin olası durumlarını ve geçerli durum geçişlerini modeller.
⚪ Beyaz Kutu Test Teknikleri
Test nesnesinin iç yapısının ve işlemlerinin analizine dayanır.
- Komut Testleri ve Komut Kapsama Yüzdesi: Çalıştırılabilir komutların ne kadarının test edildiğini ölçer.
- Dal Testi ve Dal Kapsamı: Kod içindeki tüm koşulsuz ve koşullu dalların test edilmesini sağlar. Dal kapsamı, komut kapsamını içerir.
- Beyaz Kutu Testinin Önemi: Kodun tamamının dikkate alınmasını sağlar, objektif kapsam ölçümü sunar.
🧠 Tecrübeye Dayalı Test Teknikleri
Test uzmanlarının bilgi ve deneyimlerini etkin bir şekilde kullanır.
- Hata Tahminleme: Test uzmanının geçmiş bilgilere dayanarak olası hataları tahmin etmesi.
- Keşif Testi: Test uzmanının test nesnesi hakkında bilgi edinirken eş zamanlı olarak testleri tasarlaması, koşması ve değerlendirmesi.
- Kontrol Listesine Dayalı Testler: Bir kontrol listesinde bulunan test koşullarını kapsayacak şekilde testler tasarlanır.
🤝 İş Birliğine Dayalı Test Yaklaşımları
Hataların iş birliği ve iletişim yoluyla önlenmesine odaklanır.
- İş Birliğine Dayalı Kullanıcı Hikayesi Yazımı: Ekip üyelerinin (analiz, geliştirme, test) ortak bir vizyonla kullanıcı hikayeleri oluşturması.
- Kabul Kriterleri: Bir kullanıcı hikayesinin kabul edilmesi için karşılaması gereken koşulları içerir.
- Kabul Testi Güdümlü Yazılım Geliştirme (ATDD): Kullanıcı hikayesini uygulamadan önce test senaryoları oluşturulur.
5️⃣ Konu 5: Test Aktivitelerini Yönetme
📋 Test Planlama
Bir test projesi için hedefleri, kaynakları ve süreçleri belirler. Test bağlamı, varsayımlar, paydaşlar, iletişim, risk kaydı, test yaklaşımı, bütçe ve zaman çizelgesi gibi unsurları içerir.
- Test Uzmanının Katkısı: Risk analizi, efor tahmini, test edilebilirliğin belirlenmesi.
- Giriş ve Çıkış Kriterleri: Bir aktivitenin başlangıç ve bitiş koşullarını tanımlar.
- Tahminleme Teknikleri: Oranlara dayalı, dışdeğerleme, Wideband Delphi, üç noktalı tahminleme.
- Test Senaryosu Önceliklendirme: Risk, kapsam veya gereksinim önceliklerine göre yapılır.
- Test Piramidi: Farklı test seviyelerinin (birim, entegrasyon, UI) farklı ayrıntı ve otomasyon seviyelerine sahip olduğunu gösterir.
- Test Çeyrekleri: Test seviyelerini, test çeşitlerini ve aktivitelerini Çevik geliştirme bağlamında gruplandırır (iş odaklı/teknoloji odaklı, ekibi destekleyen/ürünü eleştiren).
📊 Risk Yönetimi
Organizasyonların hedeflere ulaşma olasılığını artırmasına olanak sağlar.
- Risk Tanımı: Olumsuz bir etkiye neden olacak potansiyel bir olaydır (olasılık ve etki ile karakterize edilir).
- Proje Riskleri: Projenin yönetimi ve kontrolüyle ilgilidir (örn. gecikme, bütçe aşımı).
- Ürün Riskleri: Ürünün gereksinimleriyle ilgilidir (örn. eksik fonksiyonellik, güvenlik açıkları).
- Ürün Riski Analizi: Test eforunu kalan ürün riskini en aza indirecek şekilde yönlendirmeyi amaçlar.
- Ürün Risk Kontrolü: Belirlenen risklere karşı alınan önlemleri (risk azaltma, risk gözetimi) içerir.
📈 Test Gözetimi, Test Kontrol ve Test Tamamlama
- Test Gözetimi: Test ilerlemesini değerlendirmek için bilgi toplar.
- Test Kontrolü: Test gözetiminden elde edilen bilgileri kullanarak düzeltici aksiyonlar sağlar.
- Test Tamamlama: Test projesinde elde edilen deneyimi ve çalışma ürünlerini toplar.
- Test Metrikleri: Proje ilerlemesi, test ilerlemesi, ürün kalitesi, hata, risk ve kapsam gibi alanlarda kullanılır.
- Test Raporları: Test bilgilerini özetler ve paydaşlara iletir (ilerleme raporları, tamamlama raporları).
- Testin Durumunun Bildirilmesi: Sözlü iletişim, gösterge panelleri, elektronik kanallar veya resmi raporlar aracılığıyla yapılır.
🗄️ Yapılandırma Yönetimi (YY)
Test planı, test senaryosu, test sonucu gibi çalışma ürünlerini yapılandırma öğeleri olarak tanımlamak, kontrol etmek ve takip etmek için bir disiplin sağlar. İzlenebilirliği ve versiyon kontrolünü destekler.
🐞 Hata Yönetimi
Hataların keşfedilmesinden kapatılmasına kadar olan iş akışını ve raporlama standartlarını içerir. Hata raporları, sorunu çözmek için yeterli bilgi sağlamalı ve çalışma ürününün kalitesini izlemek için bir araç olmalıdır.
6️⃣ Konu 6: Test Araçları
💻 Yazılım Testleri için Araç Desteği
Test araçları, yönetim, statik test, test tasarımı ve uygulama, test koşumu ve kapsam, fonksiyonel olmayan test, DevOps, iş birliği ve ölçeklenebilirlik gibi birçok test aktivitesini destekler ve kolaylaştırır.
🤖 Test Otomasyonunun Faydaları ve Riskleri
Faydaları:
- Tekrarlayan manuel işleri azaltarak zaman tasarrufu.
- Daha fazla tutarlılık ve tekrarlanabilirlik.
- Daha objektif değerlendirme ve kapsam ölçümleri.
- Test hakkında daha kolay bilgi erişimi.
- Daha erken hata tespiti ve hızlı pazara sürüm süresi.
- Test uzmanlarına daha derin testler için zaman kazandırma.
Riskleri:
- Araçların faydaları konusunda gerçekçi olmayan beklentiler.
- Yanlış zaman, maliyet ve efor tahminleri.
- Manuel testlerin daha uygun olduğu durumlarda otomasyon kullanma.
- Eleştirel düşünmeyi araçlara bırakma eğilimi.
- Satıcıya bağımlılık veya açık kaynaklı araçların bakım sorunları.
- Geliştirme platformuyla uyumsuzluk veya düzenleyici gereksinimlere uymama.








