Tasarım her şeydir. Her şey!

– Paul Rand

 

Herhangi bir yazılımın sıkı proje süreleri ve bütçeleri dahilinde %100 test edilemeyeceği ve testleri tasarlamanın tüm yazılım test yaşam döngüsünün en hayati unsurlarından biri olduğu konusunda benimle aynı fikirde olacağınıza inanıyorum. Herhangi bir yazılımı çalıştıran sonsuz sayıda test durumu olabilir (ayrıntılı testlerle sonuçlanır) ve bir testçinin zorluğu, en akıllı, en uygun ve en kusur tespit edenleri bulmaktır (seçici testle sonuçlanır). Bu oyunu oynuyorsanız okyanusu akvaryuma sığdırmanız gerekiyor.

 

 

Test tasarımı, her test organizasyonunun endişesi olduğundan, teknikleri, ipuçlarını ve püf noktalarını açıklayan çok sayıda kaynak bulabilirsiniz. Bu kitapta test tasarım tekniklerinin ISTQB (International Software Testing Qualifications Board) versiyonunu takip etmeyi tercih ediyorum. Elbette küçük özelleştirmeler olacak ve mobil testlerle ilgili bazı geliştirmeleri gözlemleyeceksiniz.

Test tasarım tekniklerinin ana sınıflandırması temel olarak statik ve dinamik test olacaktır. Bu test tasarım teknikleri, uygulandıkları iş ürünlerine (gereksinimler, özellikler, kod, test edilen sistem, son ürün vb.) ve sahip oldukları yürütme temeline göre farklılık gösterir. Konuyu daha da derinleştirip daha fazla ayrıntı vereyim:

Statik test (yürütülemeyen test), test esasını, planlamayı, analiz ve tasarım belgelerini (çalışma ürünleri) ve kodu inceler.

  • İzlenecek yol, her türlü gereksinim, tasarım veya proje planı üzerinde gerçekleştirilen statik bir test tekniğidir (resmi veya gayri resmi) ve genellikle iş ürününün sahibi tarafından yönetilir. İnsanları eğitmek ve fikir birliği oluşturmak için de izlenebilir.
  • Resmi olmayan inceleme, her türlü gereksinim, tasarım, kod veya proje planı üzerinde gerçekleştirilen resmi olmayan bir statik test tekniğidir. Gayri resmi inceleme sırasında, çalışma ürünü bir alan uzmanına verilir ve geri bildirim/yorumlar sahip/yazar tarafından incelenir.
  • Teknik inceleme, her türlü gereksinim, tasarım, kod veya proje planı üzerinde gerçekleştirilen ve genellikle teknik lider tarafından yönetilen statik bir test tekniğidir. Teknik inceleme, resmi bir statik test türüdür ve iş ürününün teknik özellikleri/standartları karşılayıp karşılamadığını gözlemlemek için yapılır.
  • Yönetim incelemesi, proje planı, risk yönetmeliği, denetim raporu veya herhangi bir ilerleme raporu üzerinde gerçekleştirilen statik bir test tekniğidir ve genellikle bir proje yöneticisi veya lider tarafından yönetilir. Katılımcılar karar vericidir ve ilgili dokümanlar yeterlilik ve tutarlılık açısından değerlendirilir.
  • Denetim, her türlü gereksinim, tasarım veya proje planı üzerinde gerçekleştirilen statik bir test tekniğidir ve genellikle harici bir uzman ekibi tarafından yönetilir. Değerlendiricilerin genellikle dışarıdan gelmesi nedeniyle, denetimler en bağımsız statik test türü olarak kabul edilebilir. İş ürünleri, belirli düzenlemelere, standartlara, yönergelere ve/veya resmi prosedürlere uygunlukları açısından değerlendirilir.
  • İnceleme, her türlü gereksinim, tasarım, kod veya proje planı üzerinde gerçekleştirilen ve genellikle bir moderatör tarafından yönetilen statik bir test tekniğidir. Muayene en resmi statik test türü olduğundan, okuma/izleme, kaydetme, yönetme ve gözden geçirme için belirli roller vardır.

 

 

Dinamik test (yürütülebilir test), çalışan (kodlamanın bittiği) bir yazılım ürününü veya bir bileşeni test eder.

  • Spesifikasyon tabanlı (gereksinim tabanlı) yazılı prosedürlere, spesifikasyonlara, gereksinimlere, kullanım kılavuzlarına, kullanım senaryolarına, ekran prototiplerine ve iş süreçlerine dayalı dinamik bir test tekniğidir. Aynı zamanda kara kutu testi olarak da tanımlanabilir ve denklik paylaştırma, sınır değer analizi, ikili test, durum geçiş testi, kullanım senaryosu testi, kullanıcı hikayesi testi, karar tablosu testi, kombinatoryal test, sınıflandırma ağacı testi gibi birçok alt tekniği vardır.
  • Yapı tabanlı (kod tabanlı), kodun, veritabanının, mimarinin veya sistem akışının dahili yapısını temel alan dinamik bir test tekniğidir. Beyaz kutu testi olarak tanımlanabilir ve deyim testi, karar testi, çoklu koşul testi, yol testi, dal testi ve API testi gibi birçok alt tekniği vardır. Bu teknikler sahip oldukları kapsam kriterlerine göre birbirlerinden farklılık göstermektedir.
  • Model tabanlı, yazılım ürününün model temsillerine dayanan dinamik bir test tekniğidir. Test senaryoları, kaynak koddan değil, modellerden tasarlanmıştır; sonuç olarak, modele dayalı test, beyaz kutu test etkinliği olarak alınamaz. Bunun yerine modeller, test edilen sistemin kısmi ve soyut sunumları olarak kabul edilebilir.
  • Risk tabanlı, yazılım ürününün risklerine dayalı dinamik bir test tekniğidir. Riskleri iyi tespit edebilmek için geliştiriciler, yardım masası/çağrı merkezi temsilcileri, denetçiler, kullanıcılar, iş analistleri, testçiler ve operasyon personeli gibi çeşitli paydaşlar dahil edilmeli ve görüşleri dikkate alınmalıdır. Ayrıntılı bir risk tanımlaması için beyin fırtınası oturumları, risk çalıştayları, geçmiş projelerden kıyaslama metrikleri, uzman görüşmeleri ve geriye dönük toplantılar gibi teknikleri kullanabilirsiniz.
  • Kusur tabanlı, kusurların türüne, sınıflandırmasına ve kümelenmesine dayalı dinamik bir test tekniğidir. Arayüz hataları, zamanlama sorunları, hesaplama sorunları, metin alanı sorunları, tarih alanı sorunları ve veriyle ilgili sorunlar gibi hata kategorileri, hataya dayalı test için temel olarak alınabilir.
  • Deneyime dayalı, testçinin belirli bir alandaki uygulamasına dayalı dinamik bir test tekniğidir. Hata tahmini, kontrol listesi tabanlı testler, saldırılar ve keşif testleri, deneyime dayalı test tasarım teknikleri olarak alınabilir.
  • Platform tabanlı, farklı mobil platformların özelliklerine ve kısıtlamalarına dayanan dinamik bir test tekniğidir. İşletim sistemi ayarları, platforma özgü özellikler, uygulama mağazası davranışı ve çoklu görev özellikleri, bir testçinin odaklanması gereken platforma özgü nitelikler olarak alınabilir.
  • Cihaz tabanlı; akıllı telefonlar, özellikli telefonlar, tabletler veya tabletler (akıllı telefon ve tablet işlevlerini birleştirmek için tasarlanmış cihazlar) gibi farklı mobil cihazların özelliklerine ve kısıtlamalarına dayalı dinamik bir test tekniğidir. Cihaz ayarları, gizli özellikler, kesintiler, bildirimler, pil kullanımı, hareketler, oturum sıklığı, oturum süresi ve cihaza özel özellikler, bir test kullanıcısının odaklanması gereken cihaz tabanlı nitelikler olarak alınabilir.

Yazılım dünyasında birçok değişken ve çeşitlilik olduğu için test senaryoları tasarlamak giderek daha karmaşık hale geldi. Google’da iyiyseniz, yukarıdaki test tasarım tekniklerini daha ayrıntılı olarak açıklayan birçok değerli kaynak bulabilirsiniz. Bu tekniklerin bazılarının eski moda olduğunu düşünmenize rağmen, yine de herhangi bir test tasarım faaliyetinin temeli olarak hizmet edebilirler ve önünüzdeki zorluklarla başa çıkmanıza yardımcı olurlar.