Yazılım Testi Teknikleri ve Sınıflandırılması

Merhaba Arkadaşlar,
Mobilhanem.com üzerinden anlattığımız Yazılım Testi Eğitimi serisinin üçüncü dersimizde sizlere Yazılım Testi Teknikleri ve Sınıflandırılması konusundan  bahsetmeye çalışacağız.

Birçok yazılım testi tekniği ve sınıflandırması ile karşılaşmışsınızdır. Benim sınıflandırmalar arasında en çok beğendiğim ‘Lessons Learned in Software Testing: A Context-Driven Approach – Bret Pettichord, James Bach, Cem Kaner’ kitabında bahsedilen ‘Beş Boyutlu Test Sistemi (Five-fold Testing System)’. Bu sınıflandırmayı özetle aktarmaya çalışacağım.

Uygulamaya çalıştığınız herhangi bir yazılım testi aslında beş boyut içermektedir. Bunlar:

  • Testi Yapanlar: Yazılımı testi işlemini kim yapıyor?
  • Kapsam: Yazılım testi ile neler test edilecek?
  • Potansiyel Problemler: Neden yazılım testi uygulanıyor (Hangi risklere bakılıyor)?
  • Aktiviteler: Yazılım testi nasıl yapılacak?
  • Değerlendirme: Yazılım testinin geçtiği ya da kaldığı nasıl belirlenecek?

Daha önce de belirttiğim gibi tüm yazılım testleri beş boyuta da dokunur. Test teknikleri ise bir ya da birkaç boyutu ele alır. Yazılım testi işleminden istediğiniz sonucu almak için farklı boyutlara dokunan yazılım testi tekniklerini harmanlamanız gerekebilir. Yazılım testi işi şirketlerde aldığınız göreve göre size sadece bir boyutta atanmış olabilir. Buna rağmen siz fark etmeseniz de yazılım testi görevinin beş boyutunu da ele alırsınız. Şirkette birisinin size gelip uygulamanın fonksiyonel testinin yapılmasını istediğini düşünelim. Bu noktada size verilen bilgi neyin test edileceğidir yani kapsam boyutundan bahsedilmiştir. Fakat yazılım testi görevinin tamamlanması için hala karar vermeniz ya da sormanız gereken sorularınız vardır:

  • Testi kim yapacak? (Kişiler)
  • Hangi tip hataları arıyoruz? (Potansiyel Problemler)
  • Her bir özellik nasıl test edilecek? (Aktiviteler)
  • Uygulamanın başarılı olup olmadığına nasıl karar verilecek? (Değerlendirme)

Teste başlamadan önce bu beş boyutu aklımızın bir köşesinde tutmakta fayda var. Bu sayede daha kapsayıcı ve tamamlayıcı bir yazılım testi uygulayabiliriz.

Testi Yapanlara Göre Yazılım Testi Teknikleri

Testi Yapanlara Göre Yazılım Testi Teknikleri
Kim?

Kullanıcı Testi: Ürünü kullanacak kullanıcılar tarafından uygulanan test

Alfa Testi: Şirket içerisinde test takımı-sadece test uzmanları olmayabilir- tarafından yapılan test

Beta Testi: Ürün hedef kitlesi içerisinde yer alan ama şirketinizde yer almayan kişiler tarafından yapılan test

Hata Günü: Şirket içerisinde programcılar, pazarlamacılar, satış elemanları kısaca uygun kim varsa yazılımın artık iyice hazır olduğu durumda yapılan genellikle yarım gün süren test

Alan Uzmanı Testi: Ürünü alan uzmanının ellerine bırakıp yazılım için geri bildirim alınan test türü

Eşli Test: İki testçinin birlikte çalışarak hataları bulması. Genellikle tek bir bilgisayar kullanarak yaparlar.

Kendi Pişir Kendin Ye: Şirketin kendi ürününü henüz dışarıya açmadan kullanması

Kapsama Göre Yazılım Testi Teknikleri

Kapsama Göre Yazılım Testi Teknikleri
Ne?

Fonksiyonel Test: Her bir fonksiyonun tek tek test edilmesi. İki ana türü vardır. Beyaz kutu fonksiyon testi genellikle birim testi olarak anılır ve koddaki fonksiyonlara konsantre olur. Kara kutu fonksiyon testi kullanıcının işletebildiği komutlara ya da kullanabildiği özelliklere odaklanır.

Özellik -Entegre Fonksiyon- Testi: Birden fazla fonksiyonun birlikte nasıl çalıştığının test edilmesi

Menü Turu: Arayüz üzerinde tüm menülerde ve diyaloglarda gezme

Girdi Alanı Test Kataloğu ya da Matrisleri: Her bir girdi alanı için standart bir test durumu listesi oluşturulması ve üründeki benzer alanlar da ve/veya sonraki ürünlerde bu matrisin kullanılması

Mantık Testi: Programlarda değişkenler birbirleri ile genelde ilişkilidir. Örneğin öğrencinin bir dersten ortalama notu 60 ise ve öğrenci vize ile finale girmişse dersten geçebilir. Mantık testi programdaki tüm mantıksal ilişkilerin kontrol edilmesidir.

Durum Temelli Test: Programlar bir durumdan diğer duruma geçerler. Durum temelli testte program içerisindeki durum geçişleri test edilir ve her bir sonuç dikkatli bir şekilde kontrol edilir.

Satır ve Dal Kapsamı: Eğer kodunuzdaki tüm satırları işleten testleriniz varsa 100% şekilde satır kapsamını sağlarsınız. Eğer tüm dalları ve satırları kapsayan testleriniz varsa satır ve dal kapsamını 100% olarak sağlamış olursunuz.

Konfigürasyon Kapsamı: Genel olarak, konfigürasyon kapsamı; çalışan konfigürasyon testlerinin planladığınız tüm konfigürasyon testlerine yüzdesel oranıdır.

Özellik Tabanlı Test: Kullanım kılavuzunda, pazarlama/satış dokümanlarında ve müşterilere sağlanan teknik destek dokümanlarında belirtilen özelliklerin test edilmesi

Gereksinim Tabanlı Test: Gereksinim dokümanında belirtilen tüm gereksinimlerin sağlandığının test edilmesi

Kombinasyon Testi: İki veya daha fazla değişkenin birbirleriyle olan kombinasyonları ile programın test edilmesi.

Potansiyel Problemlere Göre Yazılım Testi Teknikleri

Potansiyel Problemlere Göre Yazılım Testi Teknikleri
Neden?

Girdi Kısıtları: Kısıt, programın işleyebileceği şeyin sınırıdır. Örneğin uygulama sadece 32 basamaklı sayıları ele alabiliyorsa, programcı 32 basamak kısıtının dışında kalan sayıların tespit edilmesi ve program tarafından reddedilmesini sağlayan koruyucu önlemleri almalıdır. Bu önemlerin alındığını kontrol eden testler için kullanılan teknik girdi kısıtları tekniğidir.

Çıktı Kısıtları: Girdiler geçerli olsa bile onların fonksiyonlarda kullanılması sonrasında çıktıların limitleri geçtiği veya kısıtları aştığı durumlar olabilir. Girdi kısıtları tekniğinde olduğu gibi çıktı kısıtları tekniğinde de koruyucu önlemlerin alındığının test edilmesi gerekir.

Hesaplama Kısıtları: Girdiler ve çıktılar geçerli olsa bile hesaplama işlemlerinde program hata verebilir. Hesaplamalarda oluşacak hatalar için koruyucu önlemlerin alındığının test edilmesidir.

Depolama Kısıtları: Girdiler, çıktılar ve hesaplamalar geçerli olabilir. Fakat programın işlemesi esnasında bellek yetersizliği gibi depolama sorunlarının oluşup oluşmadığının test edilmesidir.

Aktivitelere Göre Yazılım Testi Teknikleri

Aktivitelere Göre Yazılım Testi Teknikleri
Nasıl?

Regresyon Testi: Regresyon testi aynı testlerin değişiklikler sonrası tekrar kullanılmasıdır. Üç tip regresyon testi vardır.

  1. Hatanın raporlanması ve çözüldüğüne dair bilginin gelmesinden sonra yapılan çözümün doğruluğunu kontrol eden düzeltilmiş hata regresyonu,
  2. Uygulamada yapılan değişiklikler sonrası eski bir hatanın tekrar gelmediğini kontrol eden geçmiş hata regresyonu,
  3. Yapılan değişiklikler sonrası uygulamanın önemli kısımlarının bozulmadığını kontrol eden yan etki regresyonu

Betikleştirilmiş Test: Bildiğimiz manuel test. Belirli test prosedürlerinin adım adım işletilerek yazılım testi işleminin gerçekleştirilmesidir.

Duman Testi: Yan etki regresyon test tekniğinin bir çeşididir. Bir sürümden diğer sürüme geçişte kullanılan, genelde otomatik ve standartlaştırılmış testlerden oluşurlar. Ana fonksiyonların doğru olarak çalışmasını garanti altına alırlar.

Keşif Testi: Test uzmanının ürünü, ürünün pazarını, ürünün potansiyel problemlerini ve daha önce hata alınmış testlere ilişkin bilgileri öğrenmesi üzerine dayalıdır. Her seferinde yeni testler oluşturulur ve uygulama üzerinde çalıştırılır. Test uzmanının sürekli artan bilgisi üzerine kurulu oldukları içim bu testler önceki testlerden daha güçlüdür. Test uzmanı özelliklerin duruma göre davranışı anlar ve yeni test senaryoları üretmeye odaklanır.

Gerilla Testi: Uygulamanın hızlı bir şekilde yıkıcı yaklaşımlar ile test edilmesi. Özünde keşif testinin bir biçimidir. Keşif testine ek olarak belirli bir zaman aralığında uzman bir keşif testçisi tarafından uygulanır.

Senaryo Testi: Uygulamanın kullanım durumlarının değerlendirilmesini amaçlar. Dört özelliği vardır.

  1. Kullanıcıların uygulama üzerinde gerçekten yapacakları aktivitelere odaklanır.
  2. Karmaşık olmalı ve birden fazla özelliğin kontrolünü barındırmalıdır.
  3. Çabuk ve kolay bir şekilde uygulamanın başarılı ya da başarısız olduğunu belirtmelidir.
  4. Uygulamanın testten geçmemesi durumunda ilgili paydaşın programı şiddetle düzeltmesi gerektiğini öne sürmesini sağlamalıdır.

Kurma Testi: Uygulamanın farklı ortamlara doğru şekilde kurulduğunun test edilmesidir.

Yük Testi: Uygulamanın ya da programın birçok kaynak talebi ile karşı karşıya olan bir sistem üzerinde çalıştırılarak sistemin sınırlarının test edilmesidir.

Performans Testi: Sistemin belirli bir yük altındaki performansının ölçülmesi ve istenilen performansa ulaşıp ulaşmadığının kontrol edilmesidir. Bir başka deyişle programın ne kadar hızlı çalıştığını ve nereler için optimizasyon gerektiğinin belirlenmesini amaçlayan test tekniğidir.

Değerlendirmeye Göre Yazılım Testi Teknikleri

Değerlendirmeye Göre Yazılım Testi Teknikleri
Değerlendirme

Kaydedilmiş Sonuçlar ile Kıyaslama: Daha önceki elde edilmiş uygulama çıktıları ile hali hazırdaki uygulama çıktılarının karşılaştırılmasıdır.

Spesifikasyon ile Kıyaslama: Kullanım kılavuzlarında, pazarlama/satış dokümanlarında ve müşterilere sağlanan teknik destek dokümanlarında belirtilen özellikler ile olan uyumun test edilmesidir.

Sezgisel Tutarlılık: Beş alt başlıkta ele alınabilir.

  • Geçmiş ile olan uyum: Uygulamanın güncel davranışının geçmişteki davranışı ile olan uyumunun test edilmesi
  • Karşılaştırılan ürünler ile uyum: Uygulama davranışlarının rakip ürünlerde olan benzer davranışlar ile olan uyumun test edilmesi
  • Talepler ile uyum: Uygulama davranışının paydaşların belirtiği şekilde olduğunun test edilmesi
  • Kullanıcı beklentileri ile uyum: Uygulama davranışının kullanıcıların beklentileri ile (ne istedikleri ile ) olan uyumu
  • Amaç ile uyum: Uygulamanın ana amacı ile davranışının tutarlı olduğunun test edilmesi

Bir sonraki yazımız Kara Kutu Test Tekniği hakkındadır.

Konu hakkında soru , cevap ve görüşlerinizi alt taraftaki yorum alanından veya Soru&Cevap sitemizden bizlere iletebilirsiniz.

Tüm Yazılım Testi dersleri için tıklayınız.

15

Sabri Mutluçağ

Test Engineer @Udemy

1 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?