Eğer test edilmemişse çalışmıyor demektir

Belkide çok üzüntülere yol açacak bir başlık ama test edilmemiş bir özelliğin çalışmadığını ve ürününüze yada firmanıza vereceği zararları bir düşünün. Bugün Sourceforge’dan bir modül indirirken ne kadar test yapıldığına bakıyorum. Eğer testler eksik ise ekliyorum yada o modülü hiç kullanmıyorum.

Eskiden yazdığımız bir programı test etmek için ihtiyaç duyulan şeylere bir göz atalım

  •         Test için kullanılacak ağın oluşturulması
  •         Test kullanıcılarına hesap açılması ve gerekli hakların verilmesi
  •         Gerekli verinin veritabanlarına yüklenmesi
  •         Farklı senaryolar için farklı veri oluşturulması
  •         Tüm programın derlenip test ortamına kurulması
  •         Test senaryolarının yazılması
  •         Test sonuçlarının analizi
  •         Hata ve isteklerin kaydı ve organizasyonu

Bu anlattıklarım bugün dahi yapılıyor ama entegrasyon yada kullanıcı kabul testleri için. Ünite testleri için bu kadar teferruata girmeye gerek yok. Bugün yazdığımız bir program için test oluşturmaya kalkarsak bunu NUnit veya VSTS ile rahatça yapabiliyoruz. Ayrıca oluşturulan testler hem yönetmesi hemde çalıştırması kolay testler oluyor. Kazandığımız zaman ve artan kalite de cabası. Bu durumda yazılım uzmanı yazdığı kodun testlerini de oluşturacak, testleri çalıştıracak ve diğer testlerin etkilenmediğini de kontrol edecektir. Bu olay artık bizim (yazılım uzmanlarının) sorumluluğumuzda olan bir olaydır.

TFS bu olayı bir adım öne alarak şöyle bir özellik eklemiş. Check-out edilen kod ancak ünite testlerinden geçerse TFS’e geri gönderilebiliyor. Bu kapatılıp açılabilen özellik sayesinde TFS üzerindeki kodun her zaman ünite testlerinden geçeceğini düşünebiliriz.

Sanıyorum bu tür araçlar arttıkça, süreç iyileştirme için uygulamamız gereken işlemleri günlük hayatımıza sokmak daha da kolaylaşıyor. Peki bir yazılım firmasında sırf TFS ve iyi bir yazılım süreci kullandığınızda 3. seviye CMMI sertifikası almanın kolaylaştığını biliyor musunuz?

Bundan bir kaç zaman önce bir grup toplantısında NUnit testlerinin ürün ile birlikte verilmesini tartışıyorduk. Böylece ürünü alan müşteriler testleri çalıştırarak ürünün kalitesi hakkındaki sorularını cevaplayabilirlerdi. Müşterinin teknik konulardaki yetersizliğini dikkate almadık. Her zaman konudan anlayan bir programcıyı bünyelerine katıp yeni bir iş sahası oluşturabilirler. Testleri kendi çalıştıran müşterinin ürüne olan güveni biraz daha artar hatta tavsiyelerde bulunabilir. Böylece ürün geliştirmek için harcayacağınız ArGe finansmanını da bilgisayarları güncellemek için kullanabilirsiniz.

Sizce nasıl olmalı? Yazdığınız programlarda ünite testlerini de dahil ediyor musunuz? Bu sistemleri otomatize ettiniz mi? Yazdığınız programın kaçta kaçı ünite testlerine tabii tutuluyor? Deneyimlerinizi duymak isterim…

Posted in Bilişim, Türkçe.