SoapUI Open Source ve servis testleri için bir amme hizmeti ile daha karşınızdayım. Kurumsal test hayatında SOAP ve Rest servis testleri için kullandığımız SoapUI uygulamasında oluşturduğunuz bir Excel veri setinden data çekerek nasıl Data testi yapacağınızı detaylı bir şekilde bu makalede anlatacağım. Aynı işlemin daha basit yolunu SoapUI programının ücretli versiyonu yani Enterprise ürünü olan ReadyAPI ile daha basit yapılabiliyor. Ben Data Driven Testing işlemlerini ücretsiz versiyon olan SoapUI Open Source üzerinden sizlere anlatacağım. Anlatacağım işlemi evde kendi kişisel bilgisayarınızda önce tatbik ediniz sonra iş yerinde aynı mantık ile ufak değişiklikler ile profesyonel olarak kullanabilirsiniz. Bir önceki SoapUI Open Source makalemde Test Suite oluşturma ve kişisel bilgisayarınıza SoapUI Open Source uygulamasını nasıl kurabileceğinizi anlatmıştım. İşlem yapacağımız servis için Data Driven Testing yaparken de önce servisimiz için bir Test Suite oluşturmamız gerekecektir. Bu işlemleri bu makalemde anlatmayacağım bu yüzden SoapUI Open Source Test Suite Oluşturmak isimli bir önceki makalemi okuyabilirsiniz. Burada hem kurulumdan hem de bir SOAP servisi için Test Suite oluşturmadan detaylı bahsetmiştim, buradaki yönergeleri izleyerek Data testi yapacağınız SOAP servisi için bir Test Suite oluşturabilirsiniz. Eğer SoapUI Open Source kurulumu ve Test Suite işlemlerini tamamladıysanız artık Data Driven Testing işlemlerine geçebiliriz.
SOAP Data Driven Testing işlemine geçmeden önce ilk olarak sizlere evde kullanabileceğiniz bazı Public SOAP (WSDL) adreslerini paylaşmak istiyorum. Herkese açık olan bu servisler üzerinden işlemler yapabilir, fonksiyonları inceleyebilir, evde çalışabilir ve becerileriniz geliştirebilirsiniz.
1) Hesap Makinesi (Calculator) Servisi: http://www.dneonline.com/calculator.asmx?wsdl
2) Detaylı Football Servisi: https://ws.footballpool.dataaccess.eu/info.wso?WSDL
3) Sayı Çevirici (NumberConversion) Servisi: https://www.dataaccess.com/webservicesserver/NumberConversion.wso?WSDL
Yukarıdaki üç servis Public SOAP (WSDL) servisleri olup örnek olarak üçüncü servis olan NumberConversion olanını kullanacağım. Bu servis basit olarak iki fonksiyon barındırır. İkinci fonksiyon olan NumberToWords'un çalışma biçimi ise Integer değerinde verdiğiniz bir sayının adını String olarak size Response'da dönmektedir. Örneğin resimdeki gibi Request alanına 10 değerini girerseniz cevap olarak bunun String formatı Ten olarak size dönen basit bir fonksiyondur.
SOAP'da Data Driven Testing işlemlerine başlamak için öncelikle gerekli dosyaları sizle paylaşmak istiyorum. Makalede bir kod parçacığı paylaşmayacağım bütün gerekli dosyalar, Groovy kodları, hazır XML Import kalıbı gibi tüm her şeyi aşağıdaki Github adresimden indirebilirsiniz. Buradaki kodları güncel tutmaya çalışacağım ve aynı Repo içerisine başka SOAP Data Driven Testing örnekleri atabilirim bu yüzden adresi Github'da paylaştığım Repo yolunu güncel olarak takip edebilir ve Fork ederek paylaşım yapabilirsiniz.
Github Data Driven Testing: https://github.com/burakavcioglu/SoapUIDataDrivenTesting
İlk olarak SoapUI Open Source uygulamasında bir Excel dosyasını okuyabilmek için JXL.JAR dosyasına ihtiyacımız vardır ve bu dosyayı SoapUI Open Source uygulamasının kurulu olduğu dizin altındaki "bin\ext" klasörü içerisine atmanız gerekir. İlgili dosyayı ben Github içerisine ekledim fakat son versiyonunu isteyen internet üzerinde Java JXL File olarak aratıp indirebilir. İndirdiğiniz dosyanın adını "jxl" yapmayı unutmayınız. SoapUI Open Source uygulamasının kurulu olduğu dizine gitmek içinse masaüstünde bulunan SoapUI 5.7.0 ikonuna sağ tıklayın ve Open File Location sekmesine tıklayınız. Açılan pencerede "ext" klasörünü göreceksiniz bunun içerisine girip JXL dosyasını içerisine atınız. Bu JAR dosyası sayesinde Excel dosyalarını okuyabiliyoruz. Aynı zamanda ileri de Oracle Database yani veri tabanı bağlantısı yapmak isterseniz aynı "ext" klasörü altına "ojdbc.jar" gibi dosyaları atmanız gerekmektedir. Anlayacağınız gibi SoapUI'da Java kütüphanesi kullanmak için dosyaları bu dizine atıyoruz.
İsterseniz Data setimiz yani Excel dosyamızı oluşturalım. Fakat Excel dosyası oluştururken eski versiyon olan Microsoft Excel (XLS) uzantısını sadece çalıştırabiliyoruz. Java'da yaptığım araştırmada yeni nesil Excel versiyonu olan XLSX uzantısını çalıştırabilmek için Apache POI JAR dosyalarını buraya Import etmek lazım fakat bizim kodumuzda sadece JXL (Java Excel API Library) Import ettiğimiz için şimdilik eski versiyondan işlemlerimizi yapacağız. Bu arada oluşturduğunuz Excel dosyası eğer yeni versiyonda ise Farklı Kaydet diyerek Kayıt Türünü Excel 97-2003 olarak seçerseniz dosyanızı XLS uzantısında oluşturacaktır ve bu dosyayı SoapUI Open Source'da kullanabilirsiniz.
Yukarıda örnek olarak Excel'de oluşturabileceğiniz iki adet Data Seti örneği oluşturdum. Bu makalede ilk örneği kullanacağız. Number kolonu bildiğiniz gibi Request kolonu olup Word kolon ise Response yani beklediğimiz cevap kolonudur. Sırayla tüm satırları Loop şeklinde döndürerek kontrol sağlayacağız. Aynı durumu bir Kimlik servisi içinde yapabilirsiniz. Örneğin bir kimlik servisini test ediyorsunuz ve kimlikNo alanına gireceğiniz değer ile Response'da o kimliğin kime ait olduğunun kimlikAd değerinin kontrolünü aynı yöntemle sağlayabilirsiniz. İkinci Excel örneğini fikir amaçlı verdim buna benzer kurumsal test hayatında senaryolar karşınıza çıkabilir. Excel formatında Data Setimizi oluşturduktan sonra Test Suite altında Groovy kodlarımızı ve Properties dosyamızı oluşturabiliriz.
Resimdeki gibi Test Steps içerisinde otomatik bir adet Request oluşacaktır. Request dosyasının adını SOAPRequest olarak güncelledim sizde bu şekilde yapabilirsiniz sonrasında içini dolduracağız. Test Steps üzerine gelip sağ tıklayın ve Add Step kısmından 3 adet Groovy Script ve 1 adet Properties dosyası ekleyiniz. Resimdeki gibi Groovy Script dosyalarının adını DataTestExcel, DataTestExcel ve PropertiesClean olarak güncelledim sizde bu şekilde yapabilirsiniz. İlk olarak Properties dosyasını düzenlemek ile başlayalım. Properties dosyası aslında değişken tuttuğumuz bir dosya olup bunun içerisine değişkenin adı (Name) ve değer (Value) alanlarını doldurarak kullanırız. Excel’de Data çekip ve kontrol edeceğimiz tüm kolon adlarını buraya Null olarak giriniz. Örnek ben Number ve Word alanlarını buraya ekledim. Sonra her satırın otomatik kontrolünün sağlanması ve Loop komutu içerisine girmesi için bir sayaç yani Counter eklememiz lazım ve bunun değerini 0 olarak atayınız. İşlem bitince kaç adet kontrol sağlandığının bilgisi ise Total değişkeninde tutulacaktır bu değişkenin değerini Null olarak ekleyiniz. Son olarak End değişkeni ekleyip False olarak değerini giriniz.
Properties alanında sonra Excel'den veri çekmek için kullanacağımız ana Groovy dosyası olan DataTestExcel dosyasının içerisini doldurabiliriz. Resimde de göreceğiniz gibi FilePath alanı Excel dosyasının bulunduğu dizin yolu olup burayı düzenlemelisiniz. Read the Excel test data kısmına ise ikiden fazla kolon eklemek isterseniz Field3, Field4 olarak ekleyebilirsiniz. DataLoop dosyası ise Excel içerisinde bulunan her satırı SOAPRequest olarak gönderir ve işlem tamamlanınca diğer satıra geçer bu sayede tüm veri seti bir döngü içerisinde test edilmiş olur. PropertiesClean dosyası her satırda döngüye giren veri aslında Properties dosyasında Cash olarak tutulur ve işlem bitince en son Properties dosyasındaki Cash temizlemek amaçlı yazılmıştır. Temelde üç Groovy kodumuz bu şekilde olup başka örnekler Github Reposunun içerisine atacağım. Github projesi içerisinde bulunan RAR dosyasını direkt indirebilir ve içerisindeki XML dosyasını SoapUI Open Source’da Import ederek inceleyebilirsiniz.
Son dosya olarak SOAPRequest dosyasını düzenleyeceğiz. Servis üzerinden Data göndereceğimiz SOAP dosyasını açarsanız Request kısmında Data olarak göndereceğimiz alan yani Tag içerisine “${Properties#Number}” yazmanız gerekmektedir. Örneğin Kimlik örneğimizi yapacak olsaydık burayı “${Properties#Kimlik}” şeklinde yazmamız gerekirdir. Number kolonundaki verileri bu şekilde etiketleyerek alıyoruz. Response kısmında ise kontrolü sağlamak için Test Suite oluşturma makalesinde daha önceden de sizlere bahsettiğim Assertions alanına bir adet Contains ekliyoruz ve Content kısmına Response kolonundaki veriyi kontrol etmek için "${Properties#Word}" değişkenini yazıyoruz. Ignore Case seçeneğinde bu kısımda seçili olabilir. Bu değişiklileri yaptıktan sonra artık Test Suite projemizi çalıştırabilir ve Data Driven Testing yapabiliriz.
Resimde göreceğiniz gibi Test Suite dosyamın adı SoapUIDataDrivenTesting olup buna iki defa tıklayarak Test Viewer ekranı açabilirsiniz. Hiçbir ayar yapmadan direkt sol köşedeki yeşil Run tuşuna basarak tüm Excel içerisindeki veri kontrolünü sağlayabilir ve Data Testini tamamlayabilirsiniz. TestCase Log kısmında başarılı ve başarısız sonuçları göreceksiniz. Örneğin resimdeki başarısız sonuçta ben Excel dosyasında Number kısmını 15 verdim ve Word yani Response olarak kontrol edeceği kısmı fifteen yazmak yerine BURAK yazdım ve gördüğünüz gibi hata aldı. Aldığınız hatayı loga tıklayarak Message Viewer penceresinden detaylı inceleyebilirsiniz. Tüm Data doğru ise kırmızı uyarı Failed vermeyecek ve tüm senaryolar başarılı şekilde sonuçlanıp yeşil yani Passed olarak dönecektir. Bu şekilde Data Driven Testing işlemlerini SoapUI Open Source üzerinden rahatlıkla yapabilirsiniz. Testi yeniden başlatmadan önce silgi simgesi olan Clears The Log ikonuna tıklayarak bir önceki testten kalan log bilgilerini silmeyi unutmayınız.
Makalenin başlığında belirttiğim ikinci konu ise Test Suite üzerinde değişken tanımlama işlemidir. Resimde de göreceğiniz gibi bir Test Suite projesinde bir değişken tanımlamak için direkt Test Suite ana proje ikonuna tıklayıp sol alt taraftaki Custom Properties alanındaki Name ve Value kısmından değişken tanımlayabilirsiniz. Buraya tanımladığınız her değişkeni komple Test Suite altında oluşturduğunuz tüm dosyalar içerisinde kullanabilirsiniz. Örneğin ben Username, ClientCode ve SAYI adında değişkenler tanımlamışım ve bunlara bir değer vermişim. Request kısmında ilgili Taglar arasına bu değişkenleri ${#TestSuite#Username}, ${#TestSuite#ClientCode}, ${#TestSuite#SAYI} şeklinde tanımlamanız yeterli olacaktır.
Peki bu özellik ne işimize yarıyor diye soracak olursanız; örneğin servis testi yaparken bildiğiniz gibi Header alanı kullanırız. Buradaki alanda genelde Username, Password, Kurum Kod gibi kullandığımız sabit alanlar vardır. Bu alanlardaki bilgiler test ortamlarına göre değişiklik gösterebilir. Siz Test Suite içerisinde yazdığınız bu kısımları güncellemek için tek tek her test senaryosunu değiştirmek yerine değişkenin değerini tek bir noktadan değiştirmeniz tüm senaryolarda güncellenmesini sağlayacaktır. Bu sebeple bu özelliği kullanıyoruz. Benim önerim TestSuite çatısı içerisine bu değişkeni tanımlamanız ve bu şekilde kullanmanızdır.
<Username>${#TestSuite#Username}</Username>
<ClientCode>${#TestSuite#ClientCode}</ClientCode>
Tanım yaptıktan sonra yukarıdaki gibi değişeceğini düşündüğünüz Taglar arasına parametreyi bu şekilde yazarak ilgili özelliği tüm Test Suite projesi altında kullanabilirsiniz. Umarım SoapUI Open Source için anlattığım iki konu olan Data Driven Testing ve Test Suite Custom Properties tanımı işinize yaramıştır. Bir sonraki makalelerde SoapUI uygulamasının yeni özelliklerini öğrendikçe sizlerle paylaşacağım. Data Driven Testing konusunu internet üzerinden güzel makale ve YouTube videoları paylaşan Inder P. Singh isimli Blogger'dan referans aldım. Kendisinin aynı zamanda Yazılım Test üzerine yazdığı Software Testing Space blog adresi olup incelemek isteyenler göz gözdirebilir.
Burak AVCI
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.