YAZILIM TESTİ
2014 yılında 25 ülkeden 1543 katılımcıyla yapılan endüstri anketinde yazılım şirketlerinde test ve kalite güvence harcamalarının BT bütçesinin yaklaşık %26’sına tekabül ettiği gözlemlenmiştir ama test yapmamanın maliyeti daha yüksektir [1]. 2013 yılında Cambridge Üniversitesi’nin yaptığı bir araştırmada yazılımlardaki açıkları bulma ve kaldırma maliyetlerinin küresel olarak 312 Milyar Dolar’a yükseldiği ve bu maliyetin ortalama yazılım geliştirme süresini yarıya düşürdüğü saptanmıştır [2].
Yazılım testi için bazı standartlar mevcuttur. Önde gelen yazılım test standartları şu şekildedir;
- ISO 9126
- ISO 9241-11
- ISO 25000:2005
- ISO 12119
Başlıca yazılım testlerine ve kısa tanımlarına bakacak olursak [3]:
Kabul Testleri: Bir sistemin kabul kriterlerini yerine getirip getirmediğini belirlemek ve yazılımı kabul etmek için müşteri uygulanan test türüdür. Genellikle müşteri tarafından gerçekleştirilir.
Erişilebilirlik Testi: Kullanılabilirliği belirleyen test tipidir. Değerlendirme süreci engelli olan kişiler tarafından yapılır.
Aktif Testi: Test verilerini tanıtan ve yürütme sonuçlarını analiz oluşan test tipi. Genellikle test ekipleri tarafından yapılır.
Çevik Testi: Sistemini kullanacak müşterilerin, çevik manifesto ilkelerini uygulayarak test etmedir. Genellikle test ekipleri tarafından gerçekleştirilir.
Ad-hoc Testi: Genellikle yapılacak bütün testlerin sürelerinin belirlenmesini amaçlar. Bu test ekipleri tarafından gerçekleştirilir.
Alfa Testi: Geliştirici tarafında yapılan bir yazılım test türüdür. Ürün veya sistemi test tipidir.
Onaylama Testi: Ürün gereksinimlerini teyit eden, doğrulayan test tipidir. Test ekipleri tarafından gerçekleştirilir.
API Testi: Kod seviyesinde yapılan test tipidir. Herhangi bir uygulamanın belli işlevlerini diğer uygulamalarında kullanabilmesi için oluşturulmuş bir modülün testidir.
Otomatik Test (Test Otomasyon): Otomatik yapılan test yürütme işlemidir ve sonuçların raporlanması, kontrol, otomasyon test araçları kullanılarak yapılır.
Geriye Dönük Uyumluluk Testi (Backward Compatibility Testing) : Test ortamında eski sürümleri ile geliştirilen yazılımın davranışını doğruluğunu ölçen test türüdür.
Beta Testi: Yazılımın ilk sürümündeki sistem testlerinden ve eksiklik testlerinden geçirilmeyi belirtir. Bu sürümde amaçlanan farklı donanımlar altında yazılımı sorunsuz çalıştırmadır. Tüm kullanıcılar tarafından gerçek verilerle test edilen yazılımın test sonuçları, yazılım testçileri tarafından yakından takip edilir. Demo ile karıştırılmamalıdır.
Deney Testi: Belirli bir konfigürasyonda bilgisayar donanım ve yazılım performansını değerlendirmek için tasarlanmış programların ve verilerin temsili setleri kullanılarak yapılan test türüdür.
Entegrasyon Testi: Her şey hazır olduğunda sadece bireysel program modülleri entegre yapıldığı test tekniğidir.
Branch (Bölüm) Testi: Program kaynak kodundaki tüm bölümlerin en az bir kez test edildiği test tekniğidir. Bu testler geliştirici tarafından yapılır.
Kara Kutu Testi: Uygulamanın kodu / içyapısını özel bilgiye sahip olmadan bir uygulamanın işlevselliğini doğrulayan yazılım test yöntemidir. Testler, gereksinimleri ve işlevselliği test etmeye dayanmaktadır. Kalite kontrol ekipleri tarafından gerçekleştirilir
Kod Odaklı Test: Çeşitli koşullar altında beklendiği gibi kod çeşitli bölümleri hareket olup olmadığını belirlemek için izin (örneğin xUnit gibi) test çerçeveler kullanan Test tekniğidir. Bu geliştirme ekipleri tarafından gerçekleştirilir.
Uyumluluk(Compatibility) Testi: Yazılan kodun uyumluluğunu kontrol eder. Donanım / Yazılım / İşletim Sistemi / Ağ ortamında ne kadar iyi performansa sahip olduğunu tespit eder, doğrular. Bu test ekipleri tarafından gerçekleştirilir.
Karşılaştırma Testi: Önceki sürümleri ya da diğer benzer ürünleri, güçlü ve zayıf yönlerini karşılaştıran test tekniğidir. Test uzmanları, geliştiriciler, ürün yöneticileri veya ürün sahipleri tarafından yapılabilir.
Bileşen (Component) Testi: Bileşen kodların testlerini ifade eder. Test sadece doğrudan belirli bir yöntem ile uygulama bağlamlılığı taşır. Test ve geliştirme ekipleri tarafından yapılabilir.
Yapılandırma Testi: Donanım ve yazılım yapılandırmasını (ekleme ya da bellek, disk sürücüleri ve CPU gibi kaynakların) değiştirerek etkisini belirleyen test tekniğidir.
Durumu Kapsama Test: Her durum en az bir kez çeşitli yollardan test edilir, doğru ve yanlış yaparak yürütülen yazılım test tipidir. Genellikle otomasyon test ekipleri tarafından yapılır.
Uygunluk (Compliance) Testi: Sistem standartları, prosedürleri ve esaslara uygun olarak geliştirilip geliştirilmediğini denetleyen test tipidir. Genellikle “Sertifikalı OGC Uyumlu” harici şirketler tarafından yapılır.
Eşzamanlılık Test: Çoklu kullanıcı testler, aynı uygulama kodu, modül veya veri tabanı kayıtları erişen etkilerini belirleyen test tipidir. Genellikle performans mühendisleri tarafından yapılır.
Uygunluk Testi: Prosedüre uygun olup olmadığı konusunda yapılan test tipidir. Test ekipleri tarafından yapılır.
Kaynak Güdümlü Test (Context Driven Testing): Test olanaklarının sürekli ve yaratıcı değerlendirmeni savunan bir Çevik Test tekniğidir. Genellikle Çevik test ekipleri tarafından gerçekleştirilir.
Dönüşüm Testi: Prosedürel olarak var olan sistemin başka bir sistem ile olan bütünlüğünü ve doğruluğunu test eder. Genellikle QA ekipleri tarafından gerçekleştirilir.
Karar Kapsama Testi: Her koşulu doğru/yanlış üzerine yürütülerek yapılan yazılım test tipidir. Genellikle otomasyon test ekipleri tarafından yapılır.
Bağımlılık Testi: Uygun işlevselliği korumak için önceden var olan yazılımı, yapılandırmayı uygulanan test türüdür. Genellikle test ekipleri tarafından gerçekleştirilir.
Dinamik Test: Kodun dinamik davranışını tanımlamak için yazılım mühendisliğinde kullanılan terimdir. Test ekipleri tarafından gerçekleştirilir.
Alan Testi: Beyaz kutu test tekniği programı geçerli girişi kabul kontrollerin içerir. Genellikle yazılım geliştirme ekipleri tarafından ve bazen otomasyon test ekipleri tarafından yapılır.
Hata Taşıma Testi: Hataların düzgün giderilip giderilmediğini denetleyen test türüdür. Genellikle test ekipleri tarafından gerçekleştirilir.
Uçtan Uca Test: sistemlere uygulanan başlangıç ve son bulunan noktalarda yapılan test türüdür. QA ekipleri tarafından gerçekleştirilir.
Dayanıklılık Testi: Sisteme yapılan load test yük testi türüdür. Uzun süreli yürütme ile gerçekleştirilir. Genellikle performans mühendisleri tarafından gerçekleştirilir.
Hata Enjeksiyon Testi: Uygulama durumları ele alınarak hataların çözümleri ile test edilmesidir. QA ekipleri tarafından gerçekleştirilir.
Doğrulama Testi: Şartnameye uygun olarak yapılan testtir. Genellikle QA ekipleri tarafından gerçekleştirilir.
Fonksiyonel Test: Yazılım bileşenlerini, özelliklerini test eden bir test tipidir. Kara kutu testi tipine örnektir. Test takımı tarafından gerçekleştirilir.
Gri Kutu Testi: Black Box ve Beyaz Kutu test metodolojileri kombinasyonudur. Geliştirme veya test ekipleri tarafından test yapılabilir.
Cam Kutu Testi: Beyaz kutu testi benzer bir uygulamanın kodunun iç mantığının bilgiye dayalı halidir. Geliştirme ekipleri tarafından gerçekleştirilir.
GUI Yazılım Testi: Arayüz testidir. Bu normalde test ekipleri tarafından yapılır.
Küreselleşme Testi: Ürünün uygun işlevselliğini denetleyen test türüdür. Test ekibi tarafından gerçekleştirilir.
Arayüz Testi: Sistemleri veya bileşenleri birbirine doğru kontrol etme testidir. Genellikle test ve geliştirme ekipleri tarafından gerçekleştirilir.
Uluslararasılaşma (Internationalization) Testi: Farklı dil ve yerel ayar kullanıldığında ürünün işlevselliğini test etme türüdür. Genellikle test ekipleri tarafından gerçekleştirilir.
Yükleme Testi: Sistemlere yapılan yüklemenin testidir. Belirli kapasiteyi ölçmeye yarayan test türüdür. Genellikle performans test mühendisleri tarafından yürütülür.
Yerelleştirme Testi: Belirli bir kültür / yerel ayara uyarlanmış uygulamanın testidir. Yazılım test sürecinin bir parçasıdır. Test ekipleri tarafından yapılır.
Loop Test: Program döngülerinin belirli aralıklarla test edilmesidir. Geliştirme ekipleri tarafından gerçekleştirilir.
Manuel Scripted Test: Test olgusunu geliştirmek için tasarlanmıştır. Bu manuel test ekipleri tarafından yapılır.
Manuel-Destek Testi: Test tekniği verilerini hazırlamak ve otomatik sistemden bu verileri kullanarak insanlar tarafından gerçekleştirilen tüm fonksiyonların testidir. Test ekipleri tarafından yürütülür.
Model Tabanlı Test: Tasarımı ve yazılım testleri gerçekleştirmek için gerekli eserler yürütülmesi için model tabanlı tasarım uygulamasıdır. Genellikle test ekiplerince gerçekleştirilir.
Modülerlik Güdümlü Test: Test altında modülleri, bölümleri ve uygulama işlevlerini temsil eden küçük, bağımsız komut oluşturulmasını gerektiren yazılım test tekniğidir. Genellikle test ekibi tarafından gerçekleştirilir.
Fonksiyonel Olmayan Test: Fonksiyonel olmayan gereksinimleri için bir yazılım uygulaması test üzerinde durulduğu test tekniğidir. Performans mühendisleri tarafından veya manuel test ekipleri tarafından yapılabilir.
Negatif Test: Aynı zamanda “başarısız test” olarak bilinen – testlerin amacı bileşen veya sistem çalışmıyor gösterimidir. Manuel veya otomasyon testi ile yapılır.
Operasyonel Test: Operasyonel ortamda, bir sistem veya bileşenleri değerlendirmek için yapılan test tekniğidir. Genellikle test ekiplerince gerçekleştirilir.
Pasif Test: Herhangi bir özel test verisi olmadan çalışan bir sistemin sonuçlarını izleme ile oluşan test tekniğidir. Test ekibi tarafından gerçekleştirilir.
Paralel Test: Eski sürüm yerine yeni bir uygulama kurulduktan ve düzgün çalıştığından emin olmak için. Bu test ekibi tarafından yürütülmektedir.
Yol Testi: program sayesinde her mantıksal yolu için kapsama kriterlerini karşılamak için hedefi vardır Tipik beyaz kutu testi. Genellikle geliştirme ekibi tarafından gerçekleştirilir.
Penetrasyon Test: Kötü niyetli bir kaynaktan bir saldırı simüle ederek bir bilgisayar sistemi veya ağ güvenliğini değerlendirir yöntemini test. Genellikle uzman penetrasyon test şirketleri tarafından yapılır.
Performans Testleri: Belirtilen performans gereksinimleri ile bir sistemin veya bileşenin uygunluğu değerlendirmek için yapılan çalışma testleri. Genellikle performans mühendisi tarafından yapılır.
Yeterlilik Testi: Genellikle tüketici için geliştirici tarafından yürütülen bir önceki sürümü özelliklerine, karşı test yazılımı, belirtilen gereksinimleri karşıladığından emin göstermek için.
Rampa Testi: Sistem çöker kadar sürekli bir giriş sinyali yükselterek oluşan test türü. Bu test ekibi veya performans mühendisi tarafından yapılabilir.
Regresyon Testi: program değişiklikleri (örneğin, hata düzeltmeleri veya yeni işlevler) programı tekrar test ile yapıldıktan sonra yazılım hatalarını ortaya çıkarmak istiyor yazılım test türü. Bu test ekipleri tarafından gerçekleştirilir.
Kurtarma Testi: Bir sistem çöker, donanım arızaları, ya da diğer felaket sorunlardan kurtarır ne kadar iyi değerlendirir tekniği test. Bu test ekipleri tarafından gerçekleştirilir.
Gereksinimler Testi: Gereksinimleri, eksiksiz, doğru kesin ve mantıksal olarak tutarlı olduğunu doğrular ve bu gereksinimleri test durumlarda gerekli ve yeterli bir set tasarımı veriyor tekniği test. Bu QA ekipleri tarafından gerçekleştirilir.
Güvenlik Testi: Bir işlem bir bilgi sistemi verileri korur ve amaçlandığı gibi işlevleri koruduğunu belirlemek için. Bu test ekipleri tarafından veya özel güvenlik şirketleri tarafından test yapılabilir.
Sanity Testi: Yeni bir yazılım sürümü önemli bir test çaba için kabul kadar iyi performans gösterdiğini belirler tekniği test. Bu test ekipleri tarafından gerçekleştirilir.
Senaryo Testi: Bir kişi bir test ortamı için karmaşık bir problem ya da sistem üzerinden düşünmek yardımcı varsayımsal bir hikayeye dayanan senaryolar kullanan aktiviteyi test. Bu test ekipleri tarafından gerçekleştirilir.
Ölçeklenebilirlik Testi: büyütmek için kapasitesini ölçmek için bir yazılım uygulaması test işlevsel olmayan testlerin pilin kısmı – kullanıcı yükü desteklenen olacak, işlem sayısı, vb veri hacmi bu performansı ile yapılır mühendis.
Statik Test: Yazılım aslında kullanılmaz yazılım test bir form kodu, algoritma veya belgenin aklı esas denetler. Bu kodu yazmış geliştirici tarafından kullanılır.
Stabilite Testi: Bir uygulamanın çökmesine eğer belirlemeye çalışır tekniği test. Genellikle performans mühendisi tarafından yapılır.
Duman Testi: düzgün çalışmasını sağlamak için bir yazılım sisteminin tüm temel bileşenleri inceler tekniği test. Tipik olarak, duman testi bir yazılım kurmak yapılır hemen sonra, test ekibi tarafından yürütülmektedir.
Depolama Testi: Test tipi doğru dizinleri test verileri saklar dosyaları altında programı doğrular ve uzay eksikliğinden kaynaklanan beklenmedik fesih önlemek için yeterli alan saklı tuttuğunu. Genellikle test ekibi tarafından gerçekleştirilir.
Stres Testi: ya da belirtilen şartlara sınırlarının ötesinde bir sistem veya bileşeni değerlendirir tekniği test. Genellikle performans mühendisi tarafından yapılır.
Yapısal Test: hesaba bir sistemin veya bileşenin iç yapısını alır ve her program deyimi amaçlanan işlevini yerine sağlar Beyaz kutu test tekniği. Genellikle program geliştiriciler tarafından gerçekleştirilir.
Sistem Test: sistem belirtilen gereksinimleri karşıladığından emin doğrulamak için entegre bir donanım ve yazılım sistemi test süreci. Bu gelişme ve hedef ortamda hem de test ekipleri tarafından gerçekleştirilir.
Sistem Entegrasyonu Testi: diğerleri ile bir yazılım sisteminin bir arada yaşama egzersizleri süreci test. Genellikle test ekipleri tarafından gerçekleştirilir.
Konu Testi: bileşenlerin aşamalı entegrasyon gereksinimleri alt uygulanmasını izler yukarıdan aşağıya test tekniğinin bir varyasyonu. Genellikle test ekipleri tarafından gerçekleştirilir.
Yükseltme Test: eski sürümleri ile oluşturulan varlıklar düzgün kullanılabilir ve bu kullanıcının öğrenme meydan değilse doğrular test tekniği. Bu test ekipleri tarafından gerçekleştirilir.
Unit Testing: Yazılım doğrulama ve programcı testleri kaynak kodu bireysel üniteler kullanıma uygun olup olmadığını hangi doğrulama yöntemi. Genellikle geliştirme ekibi tarafından yürütülmektedir.
Kullanıcı Arabirimi Testi: Uygulama nasıl kullanıcı dostu kontrol etmek için yapılır test türü. Bu takımları test gerçekleştirilir.
Kullanılabilirlik Testi: Bir kullanıcı bir sistemin veya bileşenin çıkışlarını, işletmek için girdileri hazırlamak ve yorumlamak öğrenebilirsiniz hangi ile kolaylığı doğrular tekniği test. Genellikle son kullanıcı tarafından gerçekleştirilir.
Beyaz kutu Testi: Test tekniği bir uygulamanın kodunun iç mantığı bilgiye dayalı ve kod tabloları, şube, yolları, koşulların kapsamı gibi testleri içerir. Bu yazılım geliştiriciler tarafından yapılır.
REFERANSLAR
- Capgemini, HP, and Sogetti, “World Quality Report 2014-2015,” http://www.sogeti.com/solutions/testing/wqr/, Last accessed: Sept.
- Britton, L. Jeng, G. Carver, P. Cheak, and T. Katzenellenbogen, “Reversible Debugging Software,” University of Cambridge, Judge Business School, Tehnical Report, 2013.
- http://www.orhanyener.net/yazilim-testi-2/yazilim-test-cesitleri/