Her işin doğası gereği iyi bir şekilde yapabilmesi için işi icra eden kişilerde bir takım özelliklere sahip olmak gerekebilir, belkide bunlar doğuştan gelen özellikler olduğu kadar sonradan da kazanılabilecek özellikler olabilir. Fakat kişi bu özelliklere sahip olsa bile işi gerektirdiği gibi yapamayabilir. Bu yüzden bazı şeylerin sonradan öğrenilmesi ve bazılarının ise alışkanlık kazanılarak devamlılığın sağlanması, yokluğunda doğabilecek hatalarından kaçınılması bakımından kişiye ek özellikler katabilecektir. Bu sayede daha işlerin çıkmasına olanak sağlayacaktır. Yazılım testi denildiğinde ise akla hemen "kişi dikkatli olmalı, hata bulduğunda doğru bir şekilde anlatmalı, hatanın anlatımını yeterince teknik dille anlatabilmeli, vb..." özelllikler sıralanabilir fakat bu özellikler test, analiz, yazılım geliştirme gibi akıl, sabır ve fazlaca emek isteyen bir profesyonel alan için yeterli gelmesi mümkün değildir. Test açısından bakıldığında bazı özelliklerin anlamı daha da keskinleşebilir. Örneğin dikkat her işte ihtiyaç duyulan bir özellik olduğu gibi test yapan
kişilerde biraz daha fazla olması gereken bir özelliktir. Sorumluluk
gereği analiz yapan, işi yöneten veya yazılım geliştirmesi yapan kişiler dikkasizlik sonucu küçük veya önemli sayılabilecek
bir noktayı unutabilir veya önemli görmeyebilir, fakat test uzmanı test
yaptığı uygulamanın her türlü eksikliğini görebilecek ve bulduğu hata,
eksik gibi konuları not defterinin bir köşesine yazarak bunu anlatabilecek kişiler olmalıdır. Bu yazımda daha iyi bir yazılım test uzmanı olmak için yapılması gerekenleri anlatmaya çalışacağım.
Dikkatli Olma: Neyi test ettiğinin bilincinde olmalı ve gözden geçirme veya test case hazırlama aşamasında daha detaylı düşünmeli var ise analiz çıktılarını titizlikle okumalı eksik kalan kısımların üzerine daha fazla emek harcayarak olabilecek durumları, gözden kaçan kısımları bulmak için daha farklı ve methodlu inceleme yapamalı. Test caseleri çalıştırma (test yapma) sırasında beklenen ile karşılaşılan durumlar arasındaki farkları dikkatli gözlemlemeli gerekli durumlarda test araçlarından faydalanmalıdır.
Miktar Yerine Kalite Anlayışı: İyi test büyük hataların erken safhada bulunmasıdır. Bu anlayışla bir uygulama kullanıcılara sunulurken özellikle büyük hataların olmaması ğerektiği vurgulanır. Bunu test analojisinde de görebiliriz. Eğer büyük/ciddi hatalar yok ise, küçük hatalar biraz daha göz ardı edilebilir. Büyük hatalardan kasıt ise uygulamanın gerçekten yapması gereken fonksiyonları yapabiliyormu bunu yaparken başka olması gereken fonksiyonların işlevini bozmuşmu şeklinde sorulacak sorularla açıklanabiliecek hatalardır. Erken aşamada büyük hataları bulmak için ise test süreçlerine daha önce başlamak ve daha test aşamasına gelmeden hazırlıklar yapmakla olabilir. Büyük projelerde önceliklendirme çalışması yaparak daha öncelikli olan test caselerden başlayarak zamana göre önceliği düşük olanları sona bırakmak zamanı daha etkin kullanmayı sağlar.
Dikkatli Olma: Neyi test ettiğinin bilincinde olmalı ve gözden geçirme veya test case hazırlama aşamasında daha detaylı düşünmeli var ise analiz çıktılarını titizlikle okumalı eksik kalan kısımların üzerine daha fazla emek harcayarak olabilecek durumları, gözden kaçan kısımları bulmak için daha farklı ve methodlu inceleme yapamalı. Test caseleri çalıştırma (test yapma) sırasında beklenen ile karşılaşılan durumlar arasındaki farkları dikkatli gözlemlemeli gerekli durumlarda test araçlarından faydalanmalıdır.
Miktar Yerine Kalite Anlayışı: İyi test büyük hataların erken safhada bulunmasıdır. Bu anlayışla bir uygulama kullanıcılara sunulurken özellikle büyük hataların olmaması ğerektiği vurgulanır. Bunu test analojisinde de görebiliriz. Eğer büyük/ciddi hatalar yok ise, küçük hatalar biraz daha göz ardı edilebilir. Büyük hatalardan kasıt ise uygulamanın gerçekten yapması gereken fonksiyonları yapabiliyormu bunu yaparken başka olması gereken fonksiyonların işlevini bozmuşmu şeklinde sorulacak sorularla açıklanabiliecek hatalardır. Erken aşamada büyük hataları bulmak için ise test süreçlerine daha önce başlamak ve daha test aşamasına gelmeden hazırlıklar yapmakla olabilir. Büyük projelerde önceliklendirme çalışması yaparak daha öncelikli olan test caselerden başlayarak zamana göre önceliği düşük olanları sona bırakmak zamanı daha etkin kullanmayı sağlar.
İletişim Becerilerini Geliştir: Yazılım projelerinde genelde zaman darlığı yüzünden bilgi akışında sorunlar olabilmektedir veya test yapılacak işle ilgili bilgi toplanan uygulamalarda teknik ve kısa bilgiler girilmiş olabilir. Test uzmanları test yapacakları zaman yeterli bilgi edinemediği durumlarda ise test sonuçlarının iyi çıkması test uzmanın yeteneğine ve birazda şanşına bağlıdır. İyi bir test sonuçları için test uzmanın gerekli bilgilere ulaşmak gibi bir sorumluluğu vardır. Bu gibi durumlarda kısa çay sohbetleri veya ayak üstü yapılan sohbetler bir fırsat olabilir. Yazılım geliştirme yapan kişilerle daha fazla vakit geçirmek bilgi akışını hızlandırabilir.
Kişisel Özellikler: Nesnel olmak hataları değerlendirmede önemlidir. Bilgi dağarçığın yetmediği durumlarda yardım almaktan kaçınılmamalı. Kalite bir süreçtir ve bu sürecin işletilmesi gerçek anlamda bir emek ister bu yüzden test işiyle uğraşan kişiler test süreçlerini özenli bir şekilde işletilmesi konusunda ısrarcı olmalıdır. Şüpheci olunmalı yani test edilmeyen kısımlardan nerelerin hata verebileceği üzerine düşünerek test kapsamına alınmalıdır. Test işi, diğer yazılım işlerine oranla, genel anlamda biraz daha stresli bir iştir demek yanlış olmaz. Gerek SLDC'nin sonunda olmasından, önceki süreçlerde fazla zaman harcanmasından, gerekse tekrar eden işlerin çokluğundan dolayı zaman kısıtı daha fazla kendini gösterir. Bu yüzden olay karşısında espirili, nazik, pozitif olmak iletişimi arttıracaktır ve dolaysıyla test aşamasının başarısını arttıracaktır.
Tutkulu Olmalı: Her işi iyi yapmak için tutku şarttır eğer sadece para kazanmak için yapılıyor ise para kazanıldığı sürece meslek için artı değer üretilemez. Yani teknolojiyle iç-içe olan mesleklerde sektördeki gelişmeleri takip etmemek aslında oturduğun dalı kesmekle aynı anlama gelmektedir. Yazılım testi için düşündüğümüzde belki yüzlerce alet-edavat ve onlarca test tekniği var ve bunlar süreklide artma eğilimindeler. Teknolojinin karmaşıklaşması daha fazla entegrasyon noktlarının çıkmasına neden olmakta ve kullanıcı kitlesi ise sürekli artmaktadır. Bu ise testin temelini oluşturan risk faktörünü arttırmaktadır ve daha detaylı test yapılması zorunluluğunu getirmektedir. Tutku yani mesleği sevme onun için ekstra birşeyler yapma isteği yok ise daha iyi test uzmanı olmak imkansızdır. Mesleği sevmenin getireceği bir baska sorumluluk ise domain bilgisini arttırmaktır. Yani neyi test ediyor isen o alandaki farklı uzmanlık alanları ile ilgili bilgiler edinmektir. Yani biraz yazılım bilmek gerektiğinde yazılımcı gibi düşünmeyi sağlar; biraz sistemle ilgili bilgi edinmek sistem ile ilgili arızlarında hata olarak nitelendirilecek durumu daha iyi kavramaya; analiz ile ilgili bilgi edinmek kullanıcı ihtiyaçlarını ve sistem gereksinimlerini kavrama noktasında yardımcı olacaktır. Zaman-zaman şunu görmek de mümkün "yazılım geliştirme yapamıyorum" veya "asıl amacım sistem analisti olmak" gibi düşünceler mesleği küçümsemek ve hakettiği değeri veremeye sebep olur. Bu durumda ise tutkulu olmayı bir kenara bırakın, ciddi bir iş olan test uzmanlığını yapmamak daha iyidir.
Verileri Kullan: Hata yapmak için herkes için olağan bir durumdur. Hangi deneyim seviyesinde olursan ol hataya karşı önlem alınmadı ise hata yapmak olası bir durumdur. Önemli olan hatalardan ders almak gerekir. Yani bir proje sonlandığında ve kullanıcıya sunulan uygulamadaki hatalara neden olan olgular üzerine araştırma yapmak gerekir. Burada elde edilecek verileri benzer projelerde kullanmak üzere test caseler güncellemek gerekir. Aynı şekilde kullanıcı verileride risk faktörünü azaltmak ve kampsamı (test coverage) arttırmak için kullanılabilir. Örneğin kullanıcıların ortamlarını analiz etmek ve bu veriler ışığında test ortamlarını ayarlamak riskleri azaltıcaktır. Unutulmamlıdır ki %100 test etmek hem zaman açısından hem de fonksiyonları kapsamak açısından imkansızdır, bunun yerine riskleri kontrol etmek bilenen riskleri almak daha mantıklıdır. Test raporu hazırlanırken yine bu verilerden yararlanılabilir ve daha anlaşılır rapor sunulabilir. Raporda mutlaka riskli durumlar üstüne basılarak anlatılmalı ve riskin gerçekleşmesi durumunda ilgili kişilerin yapacağı aktiviteler vurgulanmalıdır.