28 Ekim 2017

Test Otomasyonu Yazarken HTML Attributes(Tagları) Özelliklerini Kullanmak


Önyüz (UI) Test otomasyonu yazarken XPath Helper veya Locator Spy gibi araçlar kullanarak yazılımın hangi teknoloji ile yazıldığını ve HTML parametrelerini görmeye imkanımız olur. HTML tagları ilgili Widget'a ulaşmamız için bize ipucu verir ve test otomasyonu kodlarken bu bilgileri kullanırız.

Bu HTML tagları her Widget için aynı da olabilir veya farklı Case’lere göre farklılık da gösterebilir. Örneğin Silk Test ürününün Silk4NET Framework’ünü kullanarak Locator Spy üzerinden durumu daha detaylı inceleyelim. Desktop bir uygulama olan TeamViewer üzerinden anlatacak olursak;


Yukarıda Connect to partner butonunun Locator’ını aşağıda aldım. Bu buton Locator Attribute kısmında birçok HTML parametresi almış. Burada testçinin ön yüzden de anlayabileceği, basitçe kullanabileceği ve Test yazarken yararlanacağı parametreler caption ve Text taglarıdır.

Fakat bu parametrelerin değişme olasılığı Dynamics-Uniqe(Tekil) olan parametrelerden (windowid ve priorlabel gibi) daha fazla olduğu için yazılan test otomasyonunun bunları da desteklemesi gerekir. Çünkü tekil parametredeki değeri değiştirmek ön yüz parametresini değiştirmekten daha riskli ve maliyetlidir.

Siz bir butonun içindeki Text bilgisini sadece Front-End kısımdan View sınıfında değiştirerek ilerleyebilirsiniz. Fakat tekil olan bir parametreyi (Örnekle Müşteri Numarası CustomerNumber) değiştirdiğiniz zaman hem ön yüzde hemde ondan beslenen BackEnd, Orta katmandaki sınıflarda da güncelleme yapmanız gerekebilir.

Otomasyon testlerinizin çok değişmesini istemiyorsanız Uniqe olan parametreleri daha çok tercih edebilirsiniz.


KeyTorc’un Kullanıcı Ara yüzündeki Değişikliklere Karşı Dayanıklı Olan Otomasyon Testleri Oluşturun yazısından alıntı;

Kodlanarak oluşturulan otomasyon testleri veya anahtar sözcük testleri test edilmekte olan uygulamayla ilişkilidir. Uygulamanın kullanıcı arayüzü Build'ler arasında değişebilir, özellikle de erken evrelerde. Bu değişiklikler test sonuçlarını etkileyebilir veya otomasyon testleriniz uygulamanın ileri ki sürümleri ile uyumlu çalışmayabilir. Sorun şu ki otomasyon test araçları nesneleri tanımlamak ve belirlemek için bir dizi özellik kullanır. Bazen bir test aracı nesneyi bulmak için o nesnenin yerleşim koordinatlarını kullanır. Örneğin, kontrol başlığı veya yerleşimi değiştiyse, otomasyon testi bu nesneyi bulamayacaktır ve test başarısız olacaktır.

Otomasyon testlerini başarılı bir şekilde koşabilmek için, testi uygulamanın yeni sürümü ile koşmadan önce, bütün projede eski isimleri yeni isimlerle değiştirmeniz gerekebilir. Ancak, kontroller için eşsiz (Unique, eşi olmayan) isimler atarsanız, bu, otomasyon testlerinizi arayüz değişikliklerine karşı dirençli yapar ve testin kendisini değiştirmeden otomasyon testlerinizin düzgün çalışmasını sağlar.

Bu genel tavsiye (Best Practice) aynı zamanda otomasyon test aracının yerleşim koordinatlarını kullanmasını da önler; yerleşim koordinatı kullanma yöntemi daha az tutarlıdır ve kolayca bozulabilir.

Peki Testlerimiz de Otomasyon Tagını(Attribute) Nasıl Kullanabiliriz?

Örnek olarak aşağıdan Kendo UI Framework’e ait bir Combobox’dan Locator Spy ile HTML taglarını aldım.





Kelime güdümlü otomasyon yazmanın en pratik yolu, ilgili Widget’ın içindeki HTML Taglarını kullanmak veya otomasyon adında bir Tag ekleyerek otomasyonu yazmaktır. Bu Tag Widget’ın yapısını bozmayacaktır.

Çünkü sadece otomasyon için kullanılacağı için hem Development Team tarafından Test dışında bir şeyiçin değiştirilmeyecektir hemde kullanmaya gerek olmadığı zaman Default boş bırakılacaktır.
Siz yazılımcı olarak otomasyon parametresi içine ister yukarıdaki gibi Uniqe(Tekil, Ekranda hiç olmayan) bir değer verebilir (KullaniciIDtest) veya (KullaniciIDotomasyon)

otomasyon="KullaniciIDtest"

otomasyon="KullaniciID"

otomasyon="KullaniciIDotomasyon"

Diğer seçenek olarak o Widget’ın ön yüzde görünen Text adını da verebilirsiniz. Tabi bunu verdiğiniz zaman Keyword katmanındaki Locator sadece otomasyon tagına göre kodlanmalı dır. Öbür türlü ekranda aynı değere sahip olan başka Text, caption, title, alt veya textContents’leri  de algılar.

Bunu aşmanın yolu otomasyon içine yazacağınız Text bilgisini hem okunur hemde Tekil şu şekilde yapabilirsiniz. Örneğin ekranda birden fazla Devam yazısı olsun, siz ikinci yazının Tagına Devam2 adında değer verirseniz bu hem Uniqe olur hemde testçi için daha anlaşılır olacaktır.

otomasyon="Devam2"

Test yazımını daha da sadeleştirmek için şunu da önerebilirim. Ön Yüzde genelde metin olarak Text ve textContents içeriğindeki değer ekranda gözükür. Siz Widget'daki otomasyon etiketine Devamotomasyon yazıp Keyword veya Unit Test kısmındaki Locator kodlamanızı aşağıdaki gibi yaparsanız Cross Browser arayüzüne de Test mühendisinin sadece Devam metnini yazdırmasını isteyebilirsiniz (Ekranda göründüğü gibi)

"//BUTTON[@otomasyon='" + value + "otomasyon']"

Bu sayede hem ekranda görünen Text içeriği bilgisini sadece kullanmış olursunuz hemde işlem yapacağınız Widget'ı tekilleştirmiş olursunuz arka planda.

Temel olarak test otomasyonu yazılımı ile uğraşan arkadaşlar için yararlı olabilecek bu dokümanı yazmak istedim. Otomasyon yazarken tekil değerlerin hem hızlı hemde işimizi daha da kolaylaştıracağına biraz olsun değinmiş oldum.

Burak AVCI