Yarattığımız dünya, bizim düşünme sürecimizdir. Düşüncemizi değiştirmeden değiştirilemez.
Albert Einstein
Bu yazıda, herhangi bir test faaliyetinde farklı perspektiflerin kullanımını keşfedeceğim. Burada “perspektif“, herhangi bir yazılım uygulamasının test senaryolarını tasarlarken bir testçinin davranışı, düşüncesi veya ruh hali anlamına gelir.
Kabul edin ya da etmeyin, herhangi bir yazılım projesinde testçi rolünün önemi oldukça iyi kabul edilmiş olsa da, test tasarlarken farklı ruh halleri arasında geçiş yapmanın etkisi ancak son zamanlarda şirketler tarafından uygulanmaktadır. Bu, geleneksel test tasarlama yönteminin, herhangi bir yazılım test faaliyetinde hala en büyük yeri işgal ettiği anlamına gelir.
Verdiğim yazılım test eğitimi sırasında ve diğer tüm eğitmenlerin yapabileceği gibi, gereksinim tabanlı test, risk tabanlı test, kullanım senaryosu testi, hata tabanlı test, yapı tabanlı test vb. test tasarım tekniklerini öğretiyorum. Bu teknikleri analiz ettiğimizde, herhangi bir test tasarım faaliyetinin bir temeli olduğunu ve olması gerektiğini gözlemliyoruz. Test senaryolarınızı tasarlarken, ister bir gereksinim spesifikasyonuna, bir risk tüzüğüne, bir kullanım senaryosuna, isterse bir kontrol akış şemasına atıfta bulunun, sağlam bir test temeline sahip olmanız gerekir. Bu şekilde, test senaryolarını herhangi bir yazılım spesifikasyonunun gerçek hayattaki yansımaları olarak kabul edebiliriz.
Bunun dışında insanlara her zaman test senaryoları tasarlarken deneyimlerini kullanmayı öğretiyorum. Tüm şirketler gereksinimleri, kullanım senaryolarını, kontrol akışlarını veya kontrol listelerini hazırlama konusunda istekli değildir; çoğu zaman pazara sunma zamanına odaklanırlar, size yarı çalışır durumda test edilmemiş bir ürün verirler ve bu ürünü test temeli olarak kullanmanızı isterler. Başka bir deyişle, test nesneniz test temeliniz olur! Bu gibi durumlarda, test tasarımınızı, var olmayan/hayali herhangi bir yazılım spesifikasyonundan ziyade deneyime dayandırmanız gerekir.
Her halükarda, ister güçlü bir test temeliniz olsun, ister sağlam tecrübeleriniz olsun, kasalarınızı tasarlarken farklı düşünmenizi (ruhunuzu değiştirmenizi) öneririm. Kendinizi herhangi bir analiz veya tasarım aşaması iş ürünü ile sınırlamayın. Tüm test senaryolarının nesnel olarak oluşturulmaması gerektiğini unutmayın; bazıları sezgisel olarak yazılmalıdır. Benim görüşüme göre, iyi bir testçi, yapısal teknikleri deneyimlerle daha iyi ve daha düzgün bir şekilde harmanlayan kişidir. Başka bir deyişle, daha iyi testler tasarlamak istiyorsanız şunları yapmanız gerekir:
- Pozitif düşün
- Olumsuz düşünün
- Acemi bir kullanıcı olarak düşünün
- Uzman bir kullanıcı olarak düşünün
- Objektif düşünün
- Sezgisel düşünün
- Bir bilgisayar korsanı olarak düşünün
- Bir hayran olarak düşünün
- Süreç odaklı düşünün
- Yaratıcı düşünün
- Bir geliştirici olarak düşünün
- Bir iş analisti olarak düşünün
- Bir üst yönetici olarak düşünün
- Bir rakip olarak düşünün
- (Buraya biraz daha perspektif ekleyebilirsiniz)
Test senaryolarınızı tasarlarken ruh halinizi ve düşüncenizi değiştirmek, tarafsız test, daha iyi test kapsamı ve daha gelişmiş bir görünüm gibi sayısız fayda sağlar. Ayrıca, test uzmanlarının test becerilerini geliştirmeleri için daha iyi bir ortam yaratır ve daha iyi yazılım uygulamaları ve daha iyi yazılım test uzmanları ile sonuçlanabilir.
Gerçek testin düşünme ve zihinsel çalışma gerektirdiğini unutmayın. Test tasarımınıza birçok kalıp koyarsanız ve yalnızca yapısal teknikler uygularsanız, testiniz bir denetleyicinin günlük rutin çalışması gibi özerk bir faaliyet haline gelebilir. Yaratıcı bir dokunuş ve eleştirel düşünme olmadan, testler sıkıcı ve sınırlı hale gelir. Ayrıca, sadece kontrol ederseniz kesinlikle tespit edilmemiş hatalara sahip olacaksınız.
Bu açıdan bakıldığında, eğer bir testçiyseniz, düşünmek çok önemlidir. Denetçiysen o kadar da önemli değil.