Thursday, October 31, 2002

Görsel Uygulamalar (Swing) Nasıl Test Edilir?

Java bazlı, görsel olmayan kodlarımız için, JUnit ile test yazabiliyoruz. Bu tip kodlar için, aşağıdaki gibi bir ifade yeterli oluyordu...

..
IslemNesnesi i = new IslemNesnesi();
assertEquals(2, i.topla(1, 1));
...


Fakat diyelim ki, elimizde Swing bazlı görsel bir uygulama var. Extreme programcılık dahilinde, müşteri rolünde olan kişinin yeni kodlanan sistem özelliğini kabul edebilmesi (acceptance) için, kabul testleri denilen görsel testleri işletmesi gerekir. Kabul testleri, ya kağıt üzerinde yazılı "önce A'ya bas, sonra B'ye, çıkan metinin X olup olmadığını kontrol et" şeklinde direktifler olur, ya da daha iyisi, bilgisayar tarafından arka arkaya çok hızlı bir şekilde işletilebilen XML bazlı dosyalar olur.

Otomatik olmayan testler için bir altyapıya gerek yok. Otomatik olanlar için, Swing Tıklayıcı adlı geliştirdiğimiz altyapı yardımcı olabilir.

Swing Tıklayıcı

Swing Tıklayıcı programını indirip kurduktan sonra, kullanmaya başlamadan önce birkaç kavramını anlamamız yerinde olur.

Swing Tıklayıcı mimarisi üç bölümden oluşuyor.


* XML testleri (swing-tikla/test/acceptance/tests altındaki dosyalar)
* Görsel birim etiketleri (swing-tikla/test/acceptance/tags)
* Görsel, Java arasında tutkal kodlar (swing-tikla/test/gui)

XML Testleri

Kabul testleri için düğmeye basmak, görsel listeden seçim yapmak gibi işlevleri yapmamızı sağlayan bir "dil" olması lazım. Bu dil söyle olabilir.

<AcceptanceTest>
<startApplication/>
<lookAtWindow name="Stylepad"/>
<enter name="Fatura" value="1000" />
</AcceptanceTest>


Bu teste göre Swing uygulamamızı başlatıyoruz, sonra ekrandaki pencerelerin arasından, başlığı "Stylepad" olan uygulamayı buluyoruz (seçiyoruz). "Fatura" adlı metin kutusuna (TextBox) içine 1000 değerini yerleştiriyoruz.

Etiketlerin Gerçekleştirimi

lookAtWindows (pencereyeBak) olarak gözüken etiketin Java altyapısını tags dizini altında bulabilirsiniz. Kendi etiketlerinizi de bu dizin altına bırakın. Swing Tıkla etiket mimarisinin ilginç bir özelliği, Java Değişken Çâğırım (Introspection) özelliğini kullanarak, etiketlerin içerdiği değerleri tekâbül eden Java nesneleri üzerine direk aktarma yapabilmesidir.

Tutkal Kodlar

Bu dizin altında her Swing nesnesi üzerinde işlem yapabilen tutkal kodlar var. Eğer uygulamanıza özel yeni bir görsel Swing nesnesi mevcut ise, o zaman bu yeni birimi test altyapısına "tutkallamanız" gerekir. GuiAdapter.java dosyası altında bunu gerçekleştirebilirsiniz. Bizim projemiz dahilinde JCTable, vs gibi standart Swing'e dahil olmayan birçok nesne mevcut idi. Bu kodları ayreten tutkallamamamız gerekti.

Kullanılan Örnek

Swing Tıklayıcı ile beraber, bir demo sâglamak açısından Stylepad adlı JDK sürümüne zaten dahil olan bir programı kullandık. Fakat bu programı aslında sıkı bir şekilde testten geçirmiyoruz. Tam teferruatlı testler ileri yazılarda gösterilecek. Şimdilik test altyapısına acil ihtiyacı olanlar için burada sunmayı uygun gördük.

Diğer Mevcut Test Ürünleri

Serbest yazılımlar arasında Maraton programı oldukça kullanışlı. Bu programa da alternatif olarak bakmanızı tavsiye ederim. Maraton, testler için dil olarak bizim XML'imiz yerine, Phyton adlı bir dilde test betikleri üretiyor. Yaklaşımın oldukça benzediğini belirtmeliyim. Bizim projemiz Maraton'a eklenti yapmak bakımından biraz karışık buldu, fakat demo'u için fazla zamanımız yoktu. Bu yüzden Maraton'un içyapısını öğrenip şirket içinde standart haline getirmeye ortam var ise, kullanılabilir olacağını zannediyoruz.

Not: Swing tıklayıcı, yakın zamanda tamamen Türkçeleştirilecektir.

Kaynaklar

arayüzlerini kullanıyor.

* Swing Tıklayıcı
* Maraton
* Görsel tıklayıcı kodlarımız, perde arkasında Jemmy

No comments: