Farklı yazılım testi türleri, test hedeflerine ve test stratejisine göre birden fazla kategoriye ayrılabilir. Şu anda yazılım test uzmanlarının sıklıkla kullandığı iki ana yazılım testi türü vardır:
Fonksiyonel Test
Fonksiyonel test, yazılımın beklenen çıktıyı verip vermediğini doğrulamak için yapılan bir yazılım testi türüdür. Gerçek çıktının beklenen çıktıyla karşılaştırılmasıyla elde edilir. Test vakaları müşterilerin/kullanıcıların gereksinimlerine göre hazırlanır.
Fonksiyonel testin sağladığı temel kontroller şunlardır:
1. Birim testi (Unit Testing)
Uygulamanın belirli bir birimi üzerinde yapılan test türü birim testi olarak adlandırılır. Bir birim, yazılımın en küçük test edilebilir parçasıdır. Yazılım test uzmanları birim testi için genellikle otomasyon test araçlarından yardım alır. Örneğin, kayıt ol butonunun doğru sayfa bağlantısına yönlendirilip, yönlendirilmediğini test etmek birim testine örnektir.
Birim testi iki ana tür içerir:
Beyaz Kutu Testi: Bu test türünde, uygulamanın iç yapısı veya temel kod tabanı test edilir. Uygulamanın tasarımında herhangi bir hata veya kusurun bulunmasını kolaylaştırır. Beyaz kutu testi çoğunlukla kodu daha iyi hale getirmek için tercih edilir. Koddaki verimsizlikleri, gereksiz kod satırlarını bulmak bu tür testlerde belirlenir. Kod optimizasyonunun ve güvenlik iyileştirmelerinin çoğu bu testin bir sonucu olarak gerçekleşir. Özetle, beyaz kutu testi web uygulamasının nasıl çalıştığına odaklanmaz. Daha çok nasıl daha iyi hale getirilebileceğine odaklanır.
Gorilla Testi: Gorilla testi, bir modülün bazı rastgele girdiler kullanılarak sık sık test edildiği ve modüllerin hatasız olarak kontrol edildiğinden emin olunduğu bir yazılım testi türüdür. Bu test türü, manuel ve tekrarlı bir şekilde yapılır. Kodun her parçası dikkate alınır ve rastgele girdilerle test edilip uygulama çökene kadar denenir. Kısacası Gorilla testi, uygulamanın sağlamlığını kontrol eder.
2. Entegrasyon testi (Integration Testing)
Entegrasyon testi, tüm sistemin entegre bir şekilde gereksinimleri karşıladığından emin olunan test türüdür.
Entegrasyon testinin amacı, sistemdeki modüller arasındaki arayüz, veri akışı ve etkileşimdeki hataları bulmaktır. Test uzmanları, farklı birimlerin nasıl etkileşime girdiğini ve çeşitli senaryolar için nasıl çıktılar verdiğini araştırır.
Entegrasyon testi şu türü içerir:
Big Bang (Büyük Patlama): Tüm uygulama modülleri entegre edilip bir araya getirilerek tam bir sistem oluşturulur. Ardından hatalar için test yapılır.
3. Sistem testi (System Testing)
Sistem testi, tüm entegre edilmiş modüllerin tamamını test etmeyi içerir. Bu test, sistem gereksinimlerinin karşılanıp karşılanmadığını doğrulamak ve onaylamak için test uzmanlarına olanak tanır.
Sistem devreye alındığında bu test çok önemlidir çünkü gerçek zamanlı bir senaryoya benzer bir durumun oluşturulmasına olanak sağlar. Dolayısıyla, bu test uygulamanın davranışını, mimarisini ve tasarımını incelemek için gerçekleştirilir.
Sistem testi, tüm sistemi doğrulayan çeşitli yazılım test kategorilerini içerir. Bu testlerden bazıları şunlardır:
Uçtan Uca (E2E) Test: Uçtan uca test adından da anlaşılacağı gibi yazılım uygulamalarının başlangıçtan sona kadar olan iş akışını doğrulamayı içerir. Bu test türü, sistemin veri bütünlüğü ve entegrasyonu açısından doğrulanması için gerçek kullanıcı senaryolarını taklit etmeyi amaçlar.
Kara Kutu Testi: Kara kutu test yöntemi, yazılımın iç kod yapısının bilinmediği durumlarda işlevsellikleri doğrulamayı amaçlar. Burada ana bilgi kaynağı müşterinin belirlediği gereksinimlerdir. QA ekibi belirli bir işlevi seçer ve doğrulamak için girdi değerleri sağlar. İşlevin beklenen çıktıyı verip vermediği kontrol edilir. Eğer işlev doğru çıktıyı vermezse test başarısız olarak değerlendirilir; aksi halde test başarılı sayılır.
Duman Testi (Smoke Testing): Sistemin temel ve karmaşık işlevlerinin beklendiği gibi çalışıp çalışmadığını doğrulamayı amaçlar. Diğer bir deyişle, geliştiriciler tarafından sağlanan yapı kodunun kararlı olup olmadığını belirlemeye yardımcı olur.
Akıl Sağlığı Testi (Sanity Testing): Bu test, regresyon testinin bir parçasıdır ve yazılımda yapılan kod değişikliklerinin beklendiği gibi çalışıp çalışmadığını kontrol eder.
4. Kabul Testi
Yazılımı test ederken, birim, entegrasyon ve sistem testinin tamamlanmasının ardından bir sonraki adım uygulamanın kalitesini sağlamaktır. QA ekibi, kaliteyi önceden tanımlanmış test durumları ve senaryolarında tanımlamak için kabul testini çalıştırır.
Kabul testinde, QA ekibi tüm sistemi tasarım görünümünden iç işlevlerine kadar inceler. Kabul testi, alfatesti, beta testi, kullanıcı kabul testi ve gerileme testi gibi testleri içerir.
Fonksiyonel Olmayan Test
Bir uygulamanın işlevsel olmayan yönlerinin beklendiği gibi çalışıp çalışmadığını doğrulamak için yapılan yazılım testi türü, fonksiyonel olmayan testtir. Bu test türü güvenilirlik, kullanılabilirlik ve performans gibi parametreleri dikkate alır.
Fonksiyonel olmayan test türleri şunlardır:
1. Performans Testi
Performans testi, yazılım uygulamasının performans hedeflerini, örneğin yanıt süresi ve işlem kapasitesini (throughput) doğrulayan test türüdür. Bu test, ağ gecikmesi, veri tabanı işlem süreci, veri işleme ve sunucular arasındaki yük dengeleme gibi faktörlerin performansa etkisini ortaya çıkarır.
Performans testi altındaki yazılım test türleri şunlardır:
2. KullanılabilirlikTesti
Basitçe, test uzmanı uygulamanın kullanıcı dostu olup olmadığını kontrol eder. Uygulamanın kullanıcı arayüzünün kolayca kullanılabilir olup olmadığını doğrular.
3. GüvenlikTesti
Güvenlik testleri, yazılım uygulamasının risklerini, tehditlerini ve güvenlik açıklarını ortaya çıkarır. Kötü niyetli saldırıları engellemeyi ve yazılım sistemindeki zayıflıkları tespit etmeyi amaçlar.
Güvenlik testi türleri şunlardır:
Fonksiyonel Test
Fonksiyonel test, yazılımın beklenen çıktıyı verip vermediğini doğrulamak için yapılan bir yazılım testi türüdür. Gerçek çıktının beklenen çıktıyla karşılaştırılmasıyla elde edilir. Test vakaları müşterilerin/kullanıcıların gereksinimlerine göre hazırlanır.
Fonksiyonel testin sağladığı temel kontroller şunlardır:
- Test uzmanları uygulamanın nasıl çalıştığını tam olarak anlamalıdır.
- Her zaman doğru ve eksiksiz veri kullanmak gerekir.
- Uygulamanın işlevselliği ile test verileri uyumlu olmalıdır.
- Tüm olası test senaryoları dikkate alınmalıdır.
- Elde edilen sonuçlar, beklenen sonuçlarla karşılaştırılmalı ve kaydedilmelidir.
1. Birim testi (Unit Testing)
Uygulamanın belirli bir birimi üzerinde yapılan test türü birim testi olarak adlandırılır. Bir birim, yazılımın en küçük test edilebilir parçasıdır. Yazılım test uzmanları birim testi için genellikle otomasyon test araçlarından yardım alır. Örneğin, kayıt ol butonunun doğru sayfa bağlantısına yönlendirilip, yönlendirilmediğini test etmek birim testine örnektir.
Birim testi iki ana tür içerir:
Beyaz Kutu Testi: Bu test türünde, uygulamanın iç yapısı veya temel kod tabanı test edilir. Uygulamanın tasarımında herhangi bir hata veya kusurun bulunmasını kolaylaştırır. Beyaz kutu testi çoğunlukla kodu daha iyi hale getirmek için tercih edilir. Koddaki verimsizlikleri, gereksiz kod satırlarını bulmak bu tür testlerde belirlenir. Kod optimizasyonunun ve güvenlik iyileştirmelerinin çoğu bu testin bir sonucu olarak gerçekleşir. Özetle, beyaz kutu testi web uygulamasının nasıl çalıştığına odaklanmaz. Daha çok nasıl daha iyi hale getirilebileceğine odaklanır.
Gorilla Testi: Gorilla testi, bir modülün bazı rastgele girdiler kullanılarak sık sık test edildiği ve modüllerin hatasız olarak kontrol edildiğinden emin olunduğu bir yazılım testi türüdür. Bu test türü, manuel ve tekrarlı bir şekilde yapılır. Kodun her parçası dikkate alınır ve rastgele girdilerle test edilip uygulama çökene kadar denenir. Kısacası Gorilla testi, uygulamanın sağlamlığını kontrol eder.
2. Entegrasyon testi (Integration Testing)
Entegrasyon testi, tüm sistemin entegre bir şekilde gereksinimleri karşıladığından emin olunan test türüdür.
Entegrasyon testinin amacı, sistemdeki modüller arasındaki arayüz, veri akışı ve etkileşimdeki hataları bulmaktır. Test uzmanları, farklı birimlerin nasıl etkileşime girdiğini ve çeşitli senaryolar için nasıl çıktılar verdiğini araştırır.
Entegrasyon testi şu türü içerir:
Big Bang (Büyük Patlama): Tüm uygulama modülleri entegre edilip bir araya getirilerek tam bir sistem oluşturulur. Ardından hatalar için test yapılır.
3. Sistem testi (System Testing)
Sistem testi, tüm entegre edilmiş modüllerin tamamını test etmeyi içerir. Bu test, sistem gereksinimlerinin karşılanıp karşılanmadığını doğrulamak ve onaylamak için test uzmanlarına olanak tanır.
Sistem devreye alındığında bu test çok önemlidir çünkü gerçek zamanlı bir senaryoya benzer bir durumun oluşturulmasına olanak sağlar. Dolayısıyla, bu test uygulamanın davranışını, mimarisini ve tasarımını incelemek için gerçekleştirilir.
Sistem testi, tüm sistemi doğrulayan çeşitli yazılım test kategorilerini içerir. Bu testlerden bazıları şunlardır:
Uçtan Uca (E2E) Test: Uçtan uca test adından da anlaşılacağı gibi yazılım uygulamalarının başlangıçtan sona kadar olan iş akışını doğrulamayı içerir. Bu test türü, sistemin veri bütünlüğü ve entegrasyonu açısından doğrulanması için gerçek kullanıcı senaryolarını taklit etmeyi amaçlar.
Kara Kutu Testi: Kara kutu test yöntemi, yazılımın iç kod yapısının bilinmediği durumlarda işlevsellikleri doğrulamayı amaçlar. Burada ana bilgi kaynağı müşterinin belirlediği gereksinimlerdir. QA ekibi belirli bir işlevi seçer ve doğrulamak için girdi değerleri sağlar. İşlevin beklenen çıktıyı verip vermediği kontrol edilir. Eğer işlev doğru çıktıyı vermezse test başarısız olarak değerlendirilir; aksi halde test başarılı sayılır.
Duman Testi (Smoke Testing): Sistemin temel ve karmaşık işlevlerinin beklendiği gibi çalışıp çalışmadığını doğrulamayı amaçlar. Diğer bir deyişle, geliştiriciler tarafından sağlanan yapı kodunun kararlı olup olmadığını belirlemeye yardımcı olur.
Akıl Sağlığı Testi (Sanity Testing): Bu test, regresyon testinin bir parçasıdır ve yazılımda yapılan kod değişikliklerinin beklendiği gibi çalışıp çalışmadığını kontrol eder.
4. Kabul Testi
Yazılımı test ederken, birim, entegrasyon ve sistem testinin tamamlanmasının ardından bir sonraki adım uygulamanın kalitesini sağlamaktır. QA ekibi, kaliteyi önceden tanımlanmış test durumları ve senaryolarında tanımlamak için kabul testini çalıştırır.
Kabul testinde, QA ekibi tüm sistemi tasarım görünümünden iç işlevlerine kadar inceler. Kabul testi, alfatesti, beta testi, kullanıcı kabul testi ve gerileme testi gibi testleri içerir.
Fonksiyonel Olmayan Test
Bir uygulamanın işlevsel olmayan yönlerinin beklendiği gibi çalışıp çalışmadığını doğrulamak için yapılan yazılım testi türü, fonksiyonel olmayan testtir. Bu test türü güvenilirlik, kullanılabilirlik ve performans gibi parametreleri dikkate alır.
Fonksiyonel olmayan test türleri şunlardır:
1. Performans Testi
Performans testi, yazılım uygulamasının performans hedeflerini, örneğin yanıt süresi ve işlem kapasitesini (throughput) doğrulayan test türüdür. Bu test, ağ gecikmesi, veri tabanı işlem süreci, veri işleme ve sunucular arasındaki yük dengeleme gibi faktörlerin performansa etkisini ortaya çıkarır.
Performans testi altındaki yazılım test türleri şunlardır:
- Yük Testi: Yük testi, yazılımın istikrarını, kullanıcı sayısının hedeflenen seviyeye veya daha azına eşit olduğu durumlarda kontrol eder. Örneğin, yazılımınız 250 kullanıcıyı aynı anda yönetebiliyorsa ve yanıt süresi üç saniye olarak belirlenmişse, yük testi 250 veya daha az kullanıcıyla yapılır. Amaç, üç saniyelik yanıt süresini doğrulamaktır.
- Stres Testi: Bu test, uygulamanın yanıt süresini ve kararlılığını, hedeflenen kullanıcı sayısının üzerinde bir yük uygulayarak kontrol eder.
- Ölçeklenebilirlik Testi: Uygulamanın ölçeklenebilirliğini kontrol etmek için tasarlanan kullanıcı sayısının üzerinde bir yük uygulanarak gerçekleştirilir ve uygulamanın çökebileceği nokta incelenir.
- Flood (Taşkın) Testi: Flood testi, büyük bir veri kümesinin veri tabanına aktarılarak sistemin yanıt süresi ve istikrarını kontrol eder. QA ekibi, veri tabanının veri yönetim kapasitesini incelemek için flood testini kullanır.
2. KullanılabilirlikTesti
Basitçe, test uzmanı uygulamanın kullanıcı dostu olup olmadığını kontrol eder. Uygulamanın kullanıcı arayüzünün kolayca kullanılabilir olup olmadığını doğrular.
3. GüvenlikTesti
Güvenlik testleri, yazılım uygulamasının risklerini, tehditlerini ve güvenlik açıklarını ortaya çıkarır. Kötü niyetli saldırıları engellemeyi ve yazılım sistemindeki zayıflıkları tespit etmeyi amaçlar.
Güvenlik testi türleri şunlardır:
- Sızma Testi: Bu test, yazılım uygulamasının dış saldırılara karşı savunmasız olup olmadığını değerlendirir. Yetkili bir siber saldırı yapılarak sistemin güvenlik sınırlamaları belirlenir.
- Güvenlik Açığı Tarama: Bu test, sistemdeki güvenlik açıklarını taramak için otomatik yazılımlar kullanılarak yapılır.
- Etik Hacking: Etik Hacking testi, bir organizasyonun yazılım sistemini hacklemeyi içerir. Amaç, sistemdeki güvenlik açıklarını ortaya çıkarmaktır.