Friday, September 28, 2012

Yazılım Ekiplerinde Performansı Olumsuz Etkileyen 1 Numaralı Etken

Son 10 senedir yazılım projelerinde çalışarak edindiğim deneyim sonucu diyebilirim ki, bir proje ekibinin günlük performansını en çok olumsuz etkileyen faktör, çalışanın kısa süreli aralıklarla bölünmesidir.
Yüksek bir seviyede odaklanma gerektiren diğer işlerde de olduğu gibi, özellikle yazılım geliştirme (kodlama) ve test (doğrulama ve geçerleme) aktiviteleri de yoğun bir konsantrasyon gerektirmektedir.

Her 3-5 dakikada bir çalışması bölünen kişinin gün içindeki performansı aşırı derecede düşmesi de kaçınılmazdır. Bu performans kaybının hem üretkenliği hem çalışan memnuniyetini hem de nihai ürünün kalitesini olumsuz etkilediğini rahatlıkla söyleyebilirim.

Yazılımda Bulunan Hata, Kimin Hatası?

Bir ürünü geliştiren kişi yeterli bilgiye sahip olmayabilir, dikkatsiz davranmış olabilir, önemsememiş olabilir, ..., en nihayetinde üründe bir hataya sebebiyet verilmiş olabilir.
Evet, ürünü geliştiren kişinin bu hatada payı vardı, fakat bulunan hata gerçekten de sadece geliştirene mi aittir?

Nihai bir yazılım ürününde bulunan bir hatayı sadece o uygulama kodunu geliştiren kişiye atfedebilir miyiz?
Hayır !

Çünkü, her ne kadar geliştirme/yazma işini yapan kişinin gözünden bu hata kaçmışsa da, o yazılım kodunu gözden geçirmekle, birim testlerini yapmakla, fonksiyonel testlerini yapmakla, gerekli kaynakları sağlamakla sorumlu kişiler de bu hatayı kaçırmış demektir !

Dolayısıyla, (daha önceden de yazdığım gibi) üründe yapılmış olan hata, sadece ilgili kod parçasını yazan kişinin değil, proje ekibinindir.

Ve eğer proje ekibi, üründe bulunan hatalara bu bakış açısıyla yaklaşırsa, kimseyi rencide etmeden, ekibin motivasyon ve performansını olumsuz etkilemeden süreci yönetmiş olacaktır.

Yazılım Testinde İletişim Ne Kadar Önemli?

Sosyal olma ve kolay iletişim kurabilme bir yazılım test uzmanı için hayati öneme sahiptir; özellikle de müşterili projelerde...

Test uzmanları şirket içinde projenin müşterisi rolünü üstlenirler. Bu rol sebebiyle tam olarak nihai müşterinin istediği ürünün teslim edildiğine ikna olana kadar ürünleri sorgulamak durumundadırlar.
Test uzmanı, geliştirilen projeyi nihai müşteriye kabul ettirecek kişidir. Bu sebeple, kabul testlerinde herhangi bir sorun / aksama olmaması için, şirket içindeki testlerde gereksinimlerin tam olarak karşılandığından ve üründe (bilinen) herhangi bir hata olmadığından emin olmak zorundadır; aksi halde ürünün teslimatı gecikecek ve hem şirket hem de müşteri zarara uğrayacaktır.


Bu sorgulama süreci, yazılım geliştirme ekibi ile sürtüşmelere sebep olabilir; özellikle uygulamada bulunan bir uygunsuzluğun hata olarak değerlendirilip değerlendirilemeyeceği konusunda...

Gerek şirket içerisinde gerekse de müşteri ile olan iletişimde esas önemli olan empati kurabilmektir.
Projelerde yazılım geliştirme ekipleri, bir ürünün analizi, tasarımı, kodlaması, birim testi, dokümantasyonu, hataların giderilmesi gibi pek çok konuda yoğun ve stresli bir şekilde çalışmak durumda kalabilirler; özellikle kısa takvime sahip projelerde...
Böyle stresli durumlarda iletişim kurulan kişilerin bu durumlarını da göz önünde bulundurarak, üzerinde konuşulan konu ne ise, karşı tarafı suçlamadan ve çözüm odaklı bir şekilde müşteri isteğinin karşılanması esastır.
Bu noktada bir test uzmanına düşen görev, bildirdiği uygunsuzluğun içeriği, gerekli veri setleri, uygulama çıktıları, ekran görüntüleri ve müşteri isteğinin ne olduğu, sistemin hangi özelliğini veya özelliklerini etkilediğini anlaşılır bir şekilde yazılım ekibine iletmektir; bildirilen uygunsuzluk ne kadar anlaşılır tanımlanmış ise ilgili geliştirici de uygunsuzluğu o kadar hızlı tespit edip, düzeltecektir.
Uygulamada bulunan hatayı herhangi bir çalışana adreslemek (senin hatan izlenimini vermek) yanlıştır. Gerçekte de, hata bir kişinin değil, proje ekibinindir.

Nihai müşteri tarafında ise test uzmanı ürünü müşteriye kabul ettiren kişidir; şüphesiz ki proje yöneticisi, lider yazılım geliştirme uzmanı, kalite güven uzmanı da kabul sürecinde yer alır, ancak kabule esas teşkil edecek testlerin gerçekleştirilmesi ve başarılı olması test uzmanının sorumluluğundadır.
Peki test uzmanı test dokümanlarını kullanarak bir kabul testini gerçekleştirirken müşteri ile ilişkilerinin kabulde ne gibi bir etkisi vardır?
Aynı şirket içerisindeki ekiple iletişim kurduğu gibi müşteri ile de iletişiminde empati kurabilmelidir. Müşteri, belli bir ücret karşılığında şirketinin/kurumunun işlerinde kullanmak üzere bir yazılım sipariş etmiştir ve verdiği paranın tam karşılığını aldığından emin olmak istemektedir.
Test uzmanı nihai müşteri ile sadece kabul testlerinde değil, sözleşmenin imzalanmasından itibaren analiz, ekran tasarımları, prototiplerin kullanımı, ilerleme toplantıları gibi pek çok proje aktivitesinde yakın bir şekilde çalışma imkanı bulur. Bu süreçte sözleşme, konsept dokümanları, analiz dokümanlarında belirtilenlerden öte müşterinin uygulamayı hangi amaçla kullanacağını, müşteri için nelerin kritik olduğunu, hangi tür iş adımlarını daha sık yaptıklarını, uygulamayı kullanacak nihai kullanıcının deneyim ve bilgi seviyesini mümkün olduğunca irdeleyip, "müşterinin ruhu"nu yakalamaya çalışmalıdır.
Böylece, kendisini müşteri yerine koyup, şirket içindeki testlerde, tabii ki gereksinimlere uygun olarak, fakat gereksinimlerde belirtilmemiş kullanım alışkanlıkları, iş adımlarında sık tekrarlanan ve kritik olan özelliklere daha da önem vererek testlerini hazırlaması ve koşturması önemlidir. Çünkü en nihayetinde bir yazılım ürünü kullanıcı gereksinimlerini bire bir karşılıyor olsa da "müşterinin ruhu"nu yakalayamıyorsa, kabul aşamasında sorunlar yaşanması kaçınılmazdır.

Bu nedenlerle bir test uzmanının empati kurarak, müşterinin ruhuna uygun ürünü teslim edebilmek için, hem proje ekibi hem de müşteri ile iyi, yakın ve çözüm odaklı ilişkiler kurması önemlidir.

Thursday, September 27, 2012

Yazılım Testi ve Kalite Güvence Dergisi (İngilizce)

Uzun zamandır takip ettiğim ve çok da başarılı bulduğum bir dergiyi paylaşıyorum.
Software Test and Quality Assurance (Eski adı Software Test and Performance idi):
http://www.softwaretestpro.com/Publication/p/STPM/2012

Geçmiş yıllara ait sayıları da okumanızı öneririm, zira bazı konseptler çok da hızlı değişmiyor.
Ücretsiz üyelik seçeneği de var.

Yazılım Testi Terimler Sözlüğü

Yazılım Testine ait terimlerin (ki yazılım teknolojileri ilerledikçe yeni terimler literatüre giriyor) listesini buraya yazmaktansa iki adet güvenilir (İngilizce) bağlantı paylaşıyorum:

Software Testing Glossary (by ApTest): http://www.aptest.com/glossary.html

ISTQB Glossary of Testing Terms: http://istqb.org/downloads/finish/20/14.html