Bir yazılım geliştirme sürecinde, yazılımı geliştirmek kadar önemli olan işin analizi ve testi adına bilgilendirici güzel bir kitap olmuş.
Kitap yazılım testi ile başlamaktadır. Daha sonra işin analizinden bahsetmiş ve kullanılabilirliğe de değinmiştir. Yazılım testi adına okuduğum bu kitabı kendi araştırmalarımı da ekleyerek aşağıdaki gibi bir içeriği çıkardım.
Bir yazılım testi aşamalarından kısaca bahsedecek olursak bir takım teknikler bulunmaktadır. Öncelikle testi yapan kişi odaklı ilerlenecek ise, bu açıdan bir teknik seçilmelidir. Yapana göre test teknikleri aşağıdaki gibidir.
- Kullanıcı Testi: Ürünü kullanacak kullanıcılar tarafından yapılan testtir.
- Alfa Testi: Şirket içerisinde test takımının gerçekleştirdiği testtir. Test uzmanı olacak diye bir şart yoktur.
- Beta Testi: Ürünü kullanabilecek potansiyelde bir hedef kitlesine test ettirilir ancak bu kişiler şirket içerisinde yer almamalıdır.
- Hata Testi: Şirket içerisinde yazılımcılar, pazarlamacılar, satış elemanları kısacası kim uygunsa yazılımın son haline geldiğinde yapılacak olan yarım günlük testtir. Test işlevselliğe odaklıdır.
- Alan Uzmanı Testi: Ürünü alanında uzman kişiler tarafından test ettirilip geri bildirimlerin alınmasına yönelik bir testtir.
- Eşli Test: Genellikle iki test uzmanının birlikte çalışarak hataları yakalamaya yönelik yaptıkları testtir. Genellikle tek bir bilgisayar üzerinden test gerçekleştirilir.
- Kendin Pişir Kendin Ye: Ürünün henüz dışarıya açılmadan şirket içerisinde kullanılmaya başlanması ile ilerlenen bir yönetimdir.
Kapsamına göre test gerçekleştirilecekse, aşağıdaki gibi teknikler odak noktası olmalıdır.
- İşlevsellik Testi: Test, yazılımın işlevsel olarak çalışabilirliğine odaklanır. Kullanıcının şöyle olsa daha iyi olurdu diyebileceği işlevler göz ardı edilir. Bu testin iki farklı türü vardır.
- Beyaz Kutu: Genellikle birim testi olarak anılır. Yazılımcının yaptığı testtir. Yazdığı kod bloklarının hata fırlatma olasılıklarını değerlendirerek yaptığı testtir.
- Kara Kutu: Kullanıcının ya da test ekibinin yaptığı testtir. Ekran üzerinde yer alan işlevlerin işler durumda olup olmadığına yönelik gerçekleştirilen testtir.
- Özellik Testi: Birden fazla işlevin birlikte test edildiği bir çalışmadır. Bir başka deyişle yazılımın akışı üzerinden gerçekleştirilen testtir.
- Girdi Alanı Testi: Her bir girdi alanı için standart bir test durumu listesi oluşturulmalıdır. Test listesi üzerinden ilerlenen bir süreçtir.
- Mantık Testi: Yazılımın işlevsel olup olmadığı göz ardı edilir. Ne kadar amaca hizmet edip etmediği test edilir.
- Durum Temelli Test: Yazılım içerisindeki durum geçişlerine odaklanarak gerçekleştirilen testtir.
- Satır Testi: Yazılımcıların “debug” olarak isimlendirdiği, kodun satır satır çalışması incelenerek gerçekleştirilen testtir.
- Gereksinim Tabanlı Test: Gereksinim dokümanında belirtilen tüm gereksinimlerin sağlanıp sağlanmadığına yönelik yapılan testtir.
Potansiyel problemlere odaklanarak gerçekleştirilecek bir test için aşağıdaki maddeler göz önünde bulundurularak test yapılmalıdır.
- Girdi Kısıtları: Bir girdinin örneğin sadece rakam mı kabul edeceği, ya da beş karakterden fazla kabul etmeyeceği gibi kuralların test edildiği tekniktir.
- Çıktı Kısıtları: Bir başarılı sonucun doğru tipte bir sonuç dönüp dönmediğine yönelik bir testtir.
- Hesaplama Kısıtları: Girdiler ve çıktılar doğru olabilir ancak hesaplamaların yanlış yapılacağı durumlar olabilir. Örnek verecek olursak sıfırın sıfıra bölünmesi gibi, yuvarlama hatası gibi bir durum yaşanabilir. Bu gibi problemlere odaklanarak gerçekleştirilen testtir.
- Depolama Kısıtları: Her şey doğru olabilir ancak bellek yetersizliği örneğin “stack overflow” hatası gibi durumlara odaklanarak yapılan testtir.
Uygulamaya odaklı bir test gerçekleştirilmek istenirse aşağıdaki başlıklar göz önünde bulundurulmalıdır.
- Regresyon Testi: Aynı testin değişiklikler sonrası tekrar gerçekleştirilmesidir. Üç türü vardır.
- Düzeltilmiş Hata Regresyonu: Varsayalım bir hata olsun. Bu hata çözülmüş olsun. Aynı test uygulanarak hatanın çözülüp çözülmediği, doğru sonucun gelip gelmediğine dair yapılan testtir.
- Geçmiş Hata Regresyonu: Daha önce yaşanılmış bir hatanın uygulamada yapılan değişiklikler sonrası tekrar test edilmesi durumudur.
- Yan Etki Regresyonu: Uygulamada yapılan değişiklikler sonrası, potansiyel bozulabilecek işlevlerin test edilmesi durumudur.
- Betikleştirilmiş Test: Bildiğimiz elle yapılan arayüz testidir. Gerçekmiş gibi veriler girilerek belirli adımların izlenerek tamamlandığı testtir.
- Duman Testi: Uygulamada yapılan değişiklikler sonrası ana işlevlerin çalışıp çalışmadığına dair gerçekleştirilen testtir.
- Keşif Testi: Test uzmanının gerçekleştirdiği testtir. Uygulamada her seferinde standart test sürecini uygular ancak her seferinde uygulamanın amacına yönelik yeni bir bilgi birikimi edineceği için test içerisine yeni adımlar ekler. Keşif testi zaman içerisinde diğer testlere oranla en güçlü test olur.
- Gerilla Testi: Uygulamayı patlatmaya, bozmaya yönelik testtir. Bir anlamda keşif testine benzer.
- Senaryo Testi: Uygulamanın canlıda kullanılacak bir biçimde test edilmesini amaçlar. Karmaşık olmamalıdır. Birden fazla özelliği test edebilecek şekilde planlanmalıdır. Çabuk ve kolay bir şekilde uygulamanın başarısını değerlendirmelidir. Uygulamanın testten geçmemesi durumunda yazılımın ciddi anlamda acilen düzeltilmesi belirtilmelidir.
- Kurma Testi: Uygulamanın farkı ortamlarda düzgün bir şekilde çalışıp çalışmadığı test edilmelidir. Örneğin web uygulamalarında, farklı tarayıcılar üzerinde yapılan test bu başlık altında değerlendirilebilir.
- Yük Testi: Uygulamayı bir çok talebe maruz bırakarak sistemin sınırlarının zorlandığı testtir. Örneğin, bir web uygulamasında, aynı anda milyonlarca isteğe maruz bırakılan uygulamanın ve sunucunun durumunun gözlendiği testtir.
- Performans Testi: Uygulamanın nerelerde hızlı, nerelerde yavaş çalıştığının belirlenmesine yönelik gerçekleştirilen testtir.
[…] Yazılım Testi, İş Analizi, Kullanılabilirlik – Lütfü Koray Yitmen […]