İhtiyaca uygun test yöntemi, tüm şirketi buluşturuyor
Öncelik ve ihtiyaçlara uygun, sürekli uygulanan test mekanizmaları bu başlıkta hedeflere ulaşmak adına önem taşıyor. Ayrıca test süreçlerinin sadece BT biriminin işi olduğunu düşünmemek şart. Tersine, şirket bütününün bu süreçlerde yer alması esas faydanın da anahtarı.
Daha az bütçe ile daha hızlı iş çıkartılması istenen ve iş gereksinimlerinin her zaman değiştiği hızlı bir iş hayatının hâkim olduğu bir dünyada yaşıyoruz. Yani tüm sektörler için geçerli olan bir kural söz konusu. Bu nedenle BT birimleri ve diğer birimler, kendi aralarındaki siloları kaldırmalı, yeni çözümler ve hizmetler üretmek adına görevler arası bir platform oluşturmalı. IBM Türk Yazılım Grubu Rational Ürün Müdürü Mehmet Çağrı Elibol, günümüzde takip edilen iki ana test yöntemine dikkat çekti: Geleneksel ve çevik. Bu test yöntemlerinin kullanımları açısından gözlemlenen bir konu; test süreçlerinin her iki süreç içinde birbirine yaklaştığı. Test süreci, gereksinimlerin oluşturulmasıyla başlıyor ve Elibol’a göre, her iki yöntemde de, test ekipleri, gereksinimleri bir alt çizgi olarak alıp, test aktivitelerine hızlı bir şekilde başlamak için otomasyondan faydalanırlar. Elibol, bunu bir örnek ile şöyle açıkladı:
“Test yöneticileri, ellerindeki gereksinimleri baz alarak ve otomasyonu kullanarak test durumları yaratır ve her yeni test durumunu bir test elemanına atarlar. Böylece gereksinimler ve test durumları arasında halihazırda bir bağlantı oluşmuş olur ve bu da test ekiplerinin hayatını kolaylaştırır. Bu bağlantıyı istedikleri şekilde kullanabilecek olan test ekipleri de böylelikle hangi gereksinim hangi test durumu ile ilişkili diye düşünmek durumunda kalmazlar. İlgili test ekipleri daha sonra gerekli test senaryolarını oluşturur ve testlerin işletimine başlarlar. Test ekiplerinin büyük bir bölümü, Test Yaşam Döngüsü için otomasyonun çok etkili olduğunu söyleyecektir. Bu yüzden, otomasyon ve sürekli test çalışmaları, şirketlerin kritik test senaryolarını işlettikleri test döngülerinin sürelerinin kısaltılmasına ve testlerin tamamının kapsanmasına yardımcı olur.”
Sistematik olmak, fayda sağlıyor
Sektörde çok bilinen bir yaklaşım var ve UXservices Yönetici Ortağı Koray Yitmen bunu şöyle örnekledi:
“Projenin sonunda 50 kişi ile kullanılabilirlik testi yapacağınıza, projenin başında 1 kişi ile kullanılabilirlik testini yapın, daha fazla katma değer yaratın. Kullanılabilirlik testleri de diğer testler gibi kurumun tüm birimleri arasında iyi bir işbirliğini ve takım oyununu gerektiriyor. Kullanılabilirlik test ekipleri, analistlerden gereksinimleri almadan, proje yöneticisi ile koordine olmadan, bulduğu hataları yazılımcılara düzelttirmeden aslında pek bir anlam kazanamamakta.”
Kullanılabilirlik testlerinden en fazla verimi elde etmenin yolu, bu testleri sistematik bir şekilde belli teknik ve standartlar rehberliğinde hayata geçirmekten geçiyor. Sistematik ve belli teknikleri kullanmadan yapılacak kullanılabilirlik testleri Yitmen’e göre, boşa kürek çekilmesine neden olur. Yitmen şu hatırlatmayı da yapmadan geçmedi:
“İyi bir kullanıcı deneyimi yaratmak yazılım geliştirme yaşam döngüsüne sadece bir adım olarak kullanılabilirlik testlerini ekleyerek olacak bir şey değil. Kullanılabilirliğin yazılım geliştirme yaşam döngüsüne dahil olan tüm paydaşların ruhuna, iş yapış şekillerine nüfuz etmiş bir alışkanlık olması ve her bir adımda bunu düşünmeleri gerek. Şunu net bir şekilde söyleyebiliriz ki; kullanılabilirlik sadece test ekibinin sorumluluğu değil, tüm şirketin sahip çıkması gereken bir olgu.”
Kuruma uygun test yapısı oluşturulmalı
Yazılım test ekiplerinin etkin ve verimli bir şekilde uygulamaların, yazılımların kalitesinin artmasına yardımcı olabilmeleri için yönetimsel olarak geliştirme, analiz, tasarım gibi diğer BT ekiplerinden bağımsız olarak yönetilen bir organizasyon şeklinin benimsenmesinde fayda var. Bağımsız bir işleyiş ve yönetim şekli sağlanmayan durumlarda ise 4S Test Hizmetleri Grup Yöneticisi Okan Çakmak’ın da dikkat çektiği gibi, test faaliyetlerinin en riskli projelerde dahi sekteye uğrayabildiği görülüyor. ‘Yazılım test alanında verim ve fayda elde etmek için mutlaka şu süreç izlenmeli’ şeklinde bir ifade kullanmaktan kesinlikle kaçındıklarının altını çizen Çakmak’a göre, organizasyonların düştükleri yanılgıların başında başka bir organizasyonda verimli olduğu gözlemleniyor ya da popüler bir kitapta belirtiliyor diye belirli bir test sürecini olduğu gibi kabul edip uygulamaya çalışmak geliyor. Oysa organizasyonun yapısı, ekipler arası ilişkiler, şirketin vizyonu ve misyonu, organizasyonun rakipleriyle olan rekabet agresifliği, çalışanların mevcut bilgi ve kabiliyetleri, bütçesel limitler, geliştirilen teknolojiler gibi pek çok kriter analiz edilerek kuruma özel bir süreç belirlenmesi en sağlıklı yöntem. Konunun ‘süreklilik’ başlığına ise Çakmak şu sözlerle dikkat çekti: “Test yapılarında süreklilik sağladığımız organizasyonlarda hem yazılım ve uygulama kalitesinde hem de bu yazılım ve uygulamaların üretilmesini sağlayan tüm süreçlerde sürekli bir iyileşmenin olduğunu görürüz.”
Kaliteyi artırmanın şartı testler
Test ve yazılım kalitesi süreci bulunmayan bir firmanın ilk olarak bu anlamda gereken adımları atmasının gerekli olduğu görülüyor. Percom Bilişim Sistemleri Satış Yöneticisi Duygu Çolak, bu süreçlerin oturduğu firmalarda ise verimlilik artışı için test otomasyonu, yük testleri, güvenlik testleri, test süreç yönetimi ve hata yönetimi yazılımları gibi farklı alanlarda yatırım yapılmasının tercih edilebileceği kanısında. Bu noktada, Çolak’ın da belirttiği gibi, firmanın test stratejisi, aslında ne kadar kaliteli ürün üretmek istediği, kısaca ürüne verdiği önemle doğrudan ilgili. Kaliteyi arttırmak için gerçekleştirilen bu testlerin sürekliliği ise yazılımın kalitesinden emin olunmasını sağlar. Test süreçleri, iyileştirme potansiyeli bulunan süreçler. “Günümüzde testlerin tamamlanması için çok fazla manuel çalışmaya ihtiyaç duyuluyor” diyen Çolak’a göre, test ekiplerinin ve test uzmanlarının iş yükleri devamlı artarken, doğru teknolojileri kullanarak iş yoğunluğunu makul seviyelerde, iş kalitesini kabul edilebilir sınırlar içinde tutabilmek gerek.
Hataları önlemek işin temeli
Test alanında verim ve fayda için en başta kapsamlı bir test planı hazırlanmalı ve iş yönetimi, teknik gibi detaylarda tüm beklentiler net bir şekilde ortaya konulmalı. Test sürecinde bu plana göre hareket edilmeli ve belirli dönemlerde bu plan revize edilmeli. “Süreçte mümkün olduğunca otomasyon araçları kullanılmalı” eklemesini yapan Univera Yazılım ve Teknoloji Müdürü Seçkin Karabacakoğlu’ na göre, bu sayede zamandan tasarruf edilir ve insana dayalı hataların önüne geçilmiş olur. Analiz süreci ile başlayan test çalışmaları; hem kurgu hem de yazılım geliştirme aşamalarında olası hataları daha önceden ortaya çıkarmaya yardımcı olur. “Bir yazılım için en maliyetli hata; sahada kullanılmaya başlandığı anda oraya çıkan hatadır” uyarısını yapan Karabacakoğlu’na göre, işte bu nedenle düzensiz aralıklarla yapılan testler zaman ve maliyet tasarrufu sağlar. Yazılımdaki hataları en aza indirmek için atılması gereken en önemli adımı Karabacakoğlu şöyle özetledi: “Hataları bulmak değil, hataları önlemek üzerine yoğunlaşmak gerek.” Bu kapsamda sistematik, zamana yayılmış ve gelişen bir yazılım geliştirme süreci oluşturulması önemli. Böylece hem ürünün kalitesi iyileştirilir hem de geliştirme, bakım maliyetleri en aza indirilir.
Tüm birimler arasında köprü
Yazılım test ekiplerinin projelere ilk günden itibaren dahil edilmesi önemli. Zira, yazılım süreçlerinde test ekiplerinin gereksinim analizi ve tasarım süreçlerine dahil edilmemesi, hem test etkinliğini düşürüyor hem de hataların erken fazlarda tespitine engel oluyor. Bu yorumu yapan Keytorc Yönetici Ortağı Barış Sarıalioğlu’na göre, test ekipleri aldıkları sorumluluk itibariyle tüm BT departmanlarıyla etkin bir iletişim kurmalı, hatta iş birimleri ve diğer kurumsal departmanlarla BT arasında köprü vazifesi görmeli. Bir tarafta da, projelerin başarılı tamamlanması için, test ekiplerinin iletişim ve analiz yetkinliklerinin artırılması ve aldıkları sorumlulukların bu paralelde belirlenmesi gerektiğini unutmamak gerek. Testlerden verim ve fayda elde edebilmek için öncelikle doğru kişileri test ekiplerinde istihdam etmek gerekiyor. Doğru kişileri seçtikten sonra ise, doğru organizasyon modellerini kurmak, doğru test tekniklerini kullanmak, test süreçlerini yeni teknolojiler ve gelişmeler ışığında sürekli iyileştirmek ve doğru test araçlarını konumlamak; testlerdeki verimlilik ve faydayı artıracak diğer önemli faktörler. Yazılım testinde hassas noktalar ise Sarıalioğlu’na göre, şöyle sıralanıyor: Doğru sayıda ve yetkinlikte test mühendislerinin istihdam edilmesi, yazılım test alanında kurum içi kariyer yollarının ve organizasyonların belirlenmesi, bireysel ve kurumsal eğitim ve sertifikasyonların alınması, dışkaynak kullanımında doğru seçimlerin doğru zamanlama ile yapılması, test otomasyon araçlarının seçimi, temini ve etkin kullanılması ile yazılım test süreçlerinin standartlaştırılması ve sürekli iyileştirilmesi.
Doğru yaklaşımlarla yol alın
Yazılım geliştirme ya da uygulama testlerinin kendi içinde farklı tarz açık ve hataları ortaya çıkarmak üzere çok farklı çeşitleri bulunuyor. Farklı test tipi için farklı ekiplerin farklı süreçlerle ilerlemesi bu nedenle önem kazanıyor. “Test edilen sistemin rolünden, ilgili kurumun doğasına kadar birçok faktör verimli test sürecinin nasıl olması gerektiğini etkileyebilen faktörler” detayını paylaşan Netsis Başkan Yardımcısı Yalçın Tarkan’a göre, tek bir sihirli formül söz konusu değil. Ancak endüstriyel standart haline gelmiş ve ilgili alanda dünyada yaygın olarak kullanılan sistematik yaklaşımların uygulanması çoğu durumda en doğru yönteme ulaşma anlamında yol gösterici olabiliyor. Tüm yazılım ve uygulamaların dinamik bir ekosistem içerisinde değişken ve etkileşimli bir yapısı olduğu göz önüne alındığında, tüm sistemlerin gerek kendileri üzerinde gerekse ilişkili oldukları diğer sistemlerde ya da ortamlarda gerçekleşen her türlü değişim için süregelen bir test sürecinden geçirilmesi olası riskleri en aza indirgemede önemli bir faktör. Yazılım testinde hassas noktalarda öne çıkan başlıkları ise Tarkan şöyle sıraladı: “En öne çıkan temel faktör olarak birçok kurumsal olmayan firmada test yapıyormuş gibi görünmenin ötesinde, çok da bir faydası olmayan gelişigüzel yaklaşımlardan uzak durmanın önemi diyebiliriz. Sistematik bir yaklaşım ve kuruma göre özelleştirilmiş de olsa bir endüstriyel standardı baz alan bir test metodolojisinin uygulanıyor olması, en kritik nokta. Bunun yanında, her bir test tipi için çok sayıda dikkat edilmesi gereken farklı hassas nokta sayılabilir ve bunları vaka bazlı değerlendirmek gerekir.”
‘Test mühendisliği’ ön plana çıkmalı
Test süreçlerini yazılımın sonrasında bir işlem olarak görmemek, yazılımın bir parçası olarak planlayarak, verimlilik açısından yazılım başlangıcından itibaren paralel olarak yürütmek gerektiği açıkça ortada. Servisnet Bilgi Teknolojileri Direktörü Turgay Memiş’in de belirttiği gibi, test yapılarında süreklilik önemli bir kavram. Bu noktada yazılımın konumlandırıldığı ortamda üstlendiği risk ne kadar fazlaysa, test sıklığı bu oranda yüksek olmalı. Çıkan hataların fazla olması ve bu hataların düzeltilme maliyetinin riske göre oldukça yüksek olabileceği göz önüne alınırsa, bunun öneminin daha iyi anlaşılacağını belirten Memiş, sektörün istihdamı konusunda da şu yorumu yaptı:
“Aslında test uzmanlığından çok ‘test mühendisliği’ kavramı ön plana çıkarılmalı. Ancak test mühendisliği Türkiye için oldukça yeni bir kavram. Bu alanda üniversitelerin test mühendisi gibi bir bölümü yok ve bu, birkaç üniversitede sadece ders olarak okutuluyor. Sonuç olarak yazılım geliştirmeye ciddi yatırım yapan firmalar, yazılım test mühendisliği alanında da ciddi yatırım yapmalı, bu alanda çalışacak kişileri kendi bünyelerine kattıktan sonra iş alanları çerçevesinde testleri içerecek eğitim ve sertifikasyonları almalarını sağlamaları ve şirket içinde gerekli organizasyonu yapmaları gerek.”
DÜZENLİ KONTROL, VERİM SAĞLIYOR
Yazılım test ekipleri, BT departmanı ve diğer kurumsal birimler arasındaki ilişki söz konusu olduğunda, öncelikle bu sürece dahil olan her bir birimin ihtiyaçları iyi kavraması, strateji ve test kapsamını iyi belirlemesi gerekiyor. Test hizmetini dış tedarik olarak alan şirketlerin de ilgili birimlerinin hizmet sağlayıcısı firmayla sürekli ilişki içinde olması Atos Uygulama Yönetimi ve Testing Birim Yöneticisi Tuncay Margılıç’a göre önem taşıyor. Ancak bu şekilde testlerin stratejik bir şekilde gerçekleştirilmesi, düzenli aralıklarla kontrol edilmesi ve hedefe ulaşması sağlanabilir. Test yazılımları, aynı zamanda önemli bir istihdam alanına dönüşmüş durumda. Gençlere bu konuda başarılı bir kariyer planı sunulabiliyor. Yazılım test uzmanı olarak işe başlayıp, deneyim ve uzmanlıkla ‘kıdemli yazılım test analistliğine’ kadar yükselmek mümkün. Bu konuda işbirlikleri ve çalışanlara özel gelişim programları olduğunu söyleyen Margılıç, “Yakın dönem hedefimiz Düzce’yi Türkiye’nin yazılım merkezine dönüştürmek. Bu nedenle test hizmetleriyle ilgili operasyon merkezimizi Düzce’de açmayı uygun gördük” bilgisini ekledi.
“Test ekipleri, yazılım geliştirme ekiplerinden bağımsız olarak, proje veya ürün takımları içerisinde diğer departmanlarla birlikte çalışan gruplardır” tanımını yapan Pozitron Kurucu CEO’su Fatih İşbecer’e göre, burada özellikle ekibin analist ve yazılım geliştiricilerle sıkı iletişim içinde olması ve istenilen gereksinimlerin kabul kriterlerinin iyi anlaşılması şart. Sonuçta test metodolojisinin; test ekiplerinin diğer ekipler ile işbirliği içinde çalışmasına olanak veren bir teknikte olması test verimliliğini artırır. İşbecer, testte maksimum verimin gerekliliklerini de şöyle anlattı:
“Test sürecinin birincil amacı tüm özelliklerin düzgün çalıştığını ve yazılımın çökmediğini kontrol etmek. Bu doğrulamayı yapmak için yazılımlar üç aşamadan oluşan bir test sürecine tabi tutulur. Bu aşamalar planlama, uygulama ve raporlama. Öncelikle olgunluk seviyelerine göre yazılımların test döngüleri planlanır. Planlama aşamasında yazılımların olgunluk seviyelerinin belirlenmesi verim artırımını sağlar. Uygulama aşamasında yapılan test seviyesi ve niteliğine göre manuel testlerin otomasyon testler ile desteklenmesi projeye yine zaman ve işgücü kazancı sağlar. Son aşama olan raporlama aşamasında ise otomatikleştirilmiş test kayıtları, raporlamayı kolaylaştırır.”
Yapılan araştırmalar, yazılım projelerinin başarısızlık sebeplerinin yüzde 20’sinin test kaynaklı olduğunu ortaya koyuyor. Bu nedenle testlerin kalitesinin arttırılması organizasyonlar için önemli. Bu kapsamda, test faaliyetlerini yürüten bireylerin test metodolojileri konusunda yetkin kişiler tarafından eğitilmesi test faaliyetlerinin kalitesini arttıracak faktörlerin başında geliyor. “Ayrıca, testlerin otomatik olarak sürekli ve eksiksiz yapılmasını sağlayan otomasyon çözümlerinden faydalanarak testlerin kalitesi arttırılabilir” diyen ACM’de Agile Takım Lideri Onur Özcan’a göre, ‘manuel’ olarak koşulan testlerden çok daha hızlı ve zahmetsiz test yapılmasını sağlayan otomasyon çözümlerinin gelecekte ‘manuel’ testleri büyük oranda geri planda bırakması öngörülüyor. Bu nedenle test faaliyetlerinden sorumlu bireylerin otomasyon çözümleri konusunda bilgi sahibi olması ve bu çözümleri mevcutta ‘manuel’ olarak yapılan testleri ikame edecek hale getirmesi için gerekli yatırım ve desteklerin sağlanması önemli. Özcan, yazılım testinden sorumlu olacak bireylerde aranması gereken bilgi ve özellikleri ise şöyle sıraladı: İletişim, problem çözme, analitik düşünme gibi ‘soft’ yetkinlikler, alan (domain) bilgisi, kalite odağı, test metodolojileri / otomasyon araçları konusunda bilgi, veritabanı bilgisi ve programlama bilgisi.
Bir şirkette bağımsız bir test ekibinin kurulması o şirketteki tüm test aktivitelerinin bu ekip tarafından gerçekleştirileceği anlamına gelmiyor. “Yazılım ve iş analizi gibi diğer birimlerin de test sürecinde önemli rolü var” hatırlatmasını yapan BA Works Yönetici Ortağı Emrah Yayıcı, test süreçlerinden tam olarak fayda sağlamak için test tekniklerini bilen, testi kendisine kariyer yolu olarak seçmiş motive bir test ekibinin ilk koşul olduğu kanısında. Daha sonra ise regresyon testleri ve performans testleri gibi testlerin doğru strateji ve doğru araçlarla otomasyonu en önemli unsur oluyor. Ayrıca test sürecinin uçtan uca optimize edilebilmesi için iş analistleri ve yazılımcıların da test teknikleri ve tipleri konusunda bilgi sahibi olması şart. Yayıcı ekledi: “Şirketlerin proje bazlı, düzensiz olarak yapılan testler yerine, o şirketteki tüm sistemlerin kalitesini sürekli olarak güvence altına alacak bir test yapısı kurmaları gerekiyor.”
Artık ürünlerde bulunan bir hatanın giderilmesi veya ürüne yeni özelliklerin eklenmesi durumunda meydana gelen değişikliklerin çok iyi test edilmesi gerekiyor. Bunun yolu da, bu çalışma içinde yer alan bütün grupların çok iyi iletişim kurmasından ve bilgi paylaşımından geçiyor. “Test ve ürün geliştirme ekiplerinin birbirlerine ihtiyaç duydukları anda ulaşabilmeleri çok önemli hale geldi” yorumunu yapan Logo Yazılım İcra Kurulu Başkanı M. Buğra Koyuncu, test yapılarında sürekliliğin önemini ise şöyle anlattı:
“Birçok işte olduğu gibi, test çalışmaları için de planlama ve ölçüm yapmak, oyunun temel kuralı haline geldi. Her testin bir başlangıç ve bitiş kriteri olması gerekiyor. Bu planlamanın ardından, yaptığınız testlerin hedefine ulaşıp ulaşmadığını ölçmelisiniz. Bu ölçümleri yapmak için kullanabileceğiniz alternatif “code coverage” araçları mevcut. Test çalışmalarının verimini gösteren diğer bir gösterge de müşteriden gelen hataların takibi oluyor. Test ekibinin bulduğu hatalar ve ekibin bulamadığı ama sahada müşterinin karşılaştığı hatalar beraber değerlendirilerek, test sürecinizin hata giderme etkinliği ölçülmeli. Tüm bu ölçümler periyodik olarak yapılmalı ve eksik ya da yetersiz görülen alanlarda iyileştirmeye gidilmeli. Kurumsal bir çözüm için test yapma alışkanlığı en önemli unsurlardan biri. Günümüzde kurumlar; yazılım projesi sözleşmelerinde yazılımın belirli bir sürece göre geliştirilmesi, test edilmesi ve bu çalışma adımlarıyla ilgili kanıt sunulmasını şart koşuyor. İç veya dış müşteriye yazılım geliştiren tüm firmaların belirli bir test politikası ve yaklaşımı oluşturması lazım. Firmaların belirleyeceği test yaklaşımı, hitap ettikleri sektöre ve müşteri kitlesine göre değişiklik gösterebilir. Ama test süreçlerinin yazılım geliştirme sürecinin bir parçası olduğu düşünülmeli, test için mutlaka zaman ve kaynak planlamasında gereken pay ayrılmalı.”