API Servis testleri için piyasada en çok kullanılan SoapUI, Postman, ReadyAPI gibi profesyonel araçlardan ücretsiz olan ve SmartBear Software tarafından geliştirilen SoapUI Open Source aracının Windows makinelerde kurulumundan ve kullanımından bahsedeceğim. Hem SOAP hem de REST servis testleri için kullanabileceğiniz bu uygulamada SOAP servisi için Test Suite oluşturma rehberi de sizler için hazırladım. SoapUI aracını daha profesyonel şekilde kullanmak için buna benzer birkaç makale sizlerle önümüzdeki zamanlarda paylaşmaya çalışacağım. İlk olarak SoapUI Open Source uygulamasını Windows makinelere kurulumu ile yazıma başlamak istiyorum. Google'da SoapUI Open Source Download olarak arattığınızda resimdeki gibi SoapUI'ın resmî sitesine girip ücretsiz sürümü indirebilirsiniz. ReadyAPI uygulaması ise lisanlı bir ürün olup kullanmak için ücret ödemeniz gerekmektedir. SoapUI Open Source üzerinden Basic olarak Load ve Security test senaryoları da ayrıca koşabilirsiniz. Genel anlamda SOAP ve REST servis testleri için kullanışlı bir araçtır. Uygulamayı bilgisayara indirdiğiniz zaman kurulum için EXE dosyasını çalıştırmanız yeterli olacaktır. Güncel sürüm olarak 5.7.0 şu an mevcuttur. Next yönergeleri ile kurulumu ilerletebilirsiniz.
SoapUI Open Source kurulumu sırasında SoapUI ve Tutorials seçenekleri Default olarak gelecektir. Eğer SoapUI uygulamasının kaynak kodunu merak ediyorsanız ayrıca Source kısmını da yükleme esnasında seçebilirsiniz. Ben şimdilik ekstra sadece HermesJMS seçeneğini yüklerken seçeceğim, JMS Testing ile ilgili bir Case oluşması durumunda sizlerle paylaşabilmek adına Source dışındaki tüm seçenekleri seçip kuruluma devam ettiriyorum. Kurulum bittiğinde Finish demeniz yeterlidir. Masaüstünde SoapUI 5.7.0 kısayol ikonu gelecektir. Buradan SoapUI uygulamasına giriş yapabilirsiniz. SoapUI'da yeni bir SOAP servisi eklemeniz için yukarıda bulunan SOAP ikonuna tıklayarak veya File kısmından New SOAP Project diyerek SOAP servisi ekleyebilirsiniz. Servis eklerken mutlaka Service sonunda bulunan WSDL etiketinin olmasına dikkat ediniz. Dışarıya açık yani Public SOAP servisi piyasada pek bulunmadığı için daha önceki SoapUI makalemde anlattığım BLZService Banking SOAP servisini örnek olarak kullanacağım. İlgili makaleden örnek WSDL adresini ve diğer Input değerlerini alabilirsiniz.
SOAP servisi eklerken Initial WSDL kısmına görseldeki gibi WSDL etiketli SOAP servis adresimizin (Endpoint) tam halini yazarız. Project Name kısmına projenin veya servisin adını yazabilirsiniz. Create Requests seçili olmalıdır. Create TestSuite buradan seçmeyiniz onu ayrıca göstereceğim. Son olarak Projedeki tüm dosya yollarını baştan kaydetmek istiyorsanız Relative Paths seçeneğini seçebilirsiniz. Bu seçeneği seçmezseniz sonradan servisi kaydetmek istediğinizde size nereye kaydetmeniz istersiniz şeklinde bir dizin yapısı soracaktır. Bu da aynı yola çıkacağı için başta veya sonradan bu ayarı yapabilirsiniz. Eğer birden fazla SOAP servisi ile çalışıyorsanız bence C dizini altında veya Masaüstünde ulaşabileceğiniz bir yere SoapUITemplates, SoapUIProjects gibi bir klasör oluşturup XML dosyalarınızı buraya kaydetmenizi öneririm. Olurda üzerinde çalıştığınız SoapUI servisi silinir ve SoapUI uygulamasını kaldırıp kurmanız gerekirse kaydettiğiniz ve üzerinde çalıştığınız servisler ve veriler boşuna silinmesin.
SoapUI'de genel olarak konfigürasyonları ve ön yüz ayarlarını ayrıca Preferences sekmesinden yapabilirsiniz. Örneğin SoapUI her açıldığında tanıtım ekranının gelmesini istemiyorsanız Preferences kısmından UI Settings sayfasına gelerek Show Startup Page "Opens startup web page when starting SoapUI" seçeneğini kaldırıp OK demeniz yeterlidir. Bu tip ince ayarları deneyimledikçe sizlerle paylaşıyor olacağım. İsterseniz eklediğimiz SOAP servis için Test Suite oluşturma aşamasına geçebiliriz. Aşağıdaki resimde olduğu için SOAP servisi içerisinde bulunan Binding yani yeşil çift ok ile gösterilen ikona sağ tıklamalısınız. Proje üzerine sağ tıklayıp New TestSuite yapmayınız çünkü bir servis içerisinde birden fazla fonksiyon olduğu için her fonksiyona altında ona ait Test senaryoları ekleyeceğiz. Binding ikonuna sağ tıklayıp Generate TestSuite seçeneğini seçiniz.
Açılan Generate TestSuite oluşturma ekranında Style kısmı One TestCase for each Operation olarak kalsın. Bunu yapmamızın amacı servis içerisindeki her fonksiyon için ayrı bir Test Suite başlığının açılmasıdır. Her fonksiyon (Operation) için ona ait olumlu ve olumsuz true/false bütün senaryoları gireceğiz. Eğer Single TestCase seçerseniz tek tek ve fonksiyon bağımsız test senaryosu eklemek durumunda kalırsınız. İkinci olarak Request Content kısmını Create new empty requests olarak seçiniz. Nasılsa ilk seçenek Default boş olarak geleceği için bir işimize yaramayacaktır. Kendimiz her fonksiyon altında Test senaryolarını zaten oluşturacağız. Operations kısmından Select All ile tüm fonksiyonları seçiniz. Eğer tek bir fonksiyon üzerinde çalışma yapacaksanız Unselect All diyerek sadece çalışacağınız fonksiyonu işaretlemeniz yeterli olacaktır. Son olarak Generate Load Test kısmını şimdilik seçmeyiniz. Load Test ile ilgili senaryoları başka bir makalede sizlere anlatacağım.
TestSuite projenizin adını Regresyon olarak kayıt edebilirsiniz. Ben Banking-Regression olarak size örnek göstermek için kayıt ettim. Buradaki amaç bir Test Otomasyon alt yapısına benzer Regresyon Test Seti oluşturmaktır. Bazı durumlarda API testleri için Test Otomasyon bakımları, Maintenance işlemleri çok maliyetli olabiliyor. Hızlı bir şekilde servisin ayakta olup olmadığını veya ufak bir Fix sonrası yapılan Deployment ile Test veya Preprod ortamda servisin belli başlı bazı true/false senaryolarını hızlı bir şekilde toplu koşmak için Test Suite yapısını kullanabilirsiniz. Test Otomasyon Framework yapısını birçok kurum kendisi için uyarlayıp kullanıyor ve geliştiriyor. Test Datası oluşturma, çok katmanlı veya uçtan uca test senaryolarını SoapUI ara yüzünden yapmanız biraz imkânsız. Fakat basit servis testleri için otomasyon maliyeti ile uğraşmak yerine bu yöntemi kullanabilirsiniz.
Regresyon Suite oluşturduktan sonra her fonksiyon için açılan bir TestCase kısmı oluşacaktır. O fonksiyona ait tüm senaryoları ise resimdeki gibi Test Steps altında oluşturacağız. Ayrıca gördüğünüz üzere Load ve Security Test seçenekleri de mevcuttur. Resimdeki getBank TestCase adını sağ tıklayarak Rename edebilirsiniz. Fonksiyona özgü getBank-Testler şeklinde de adlandırabilirsiniz. Yeni bir senaryo eklemek içinse Test Steps üzerine gelip sağ tıklayın ve Add Step kısmından SOAP Request seçerek devam ediniz. Test ismini öncelikle belirleyiniz. Mesela True senaryo için getBankTrue veya getBankDefault gibi Case isimlendirmesi yapabilirsiniz. Mesela True senaryo için getBankTrue veya getBankDefault gibi Case isimlendirmesi yapabilirsiniz. Diğer bir seçenek olarak Case isimlerinden otomatik get kısmını kaldırarak BankTrue, BankKoduGecersiz, BankKoduHatali gibi spesifik senaryo adı isimlendirmeleri de yapabilirsiniz. Olumsuz yani hata mesajlarını kontrol edeceğiniz senaryolara örnek ise Input alanının boş olma durumu, hatalı değer girme durumu, maksimum karakter kontrolü gibi senaryoları çoğaltarak Test setimizi geliştirebiliriz.
Test ismi belirledikten sonra Case oluşturma alamasında Add SOAP Response Assertion, Add Schema Assertion ve Create Optional Elements seçeneklerini seçebilirsiniz. Add Not SOAP Fault Assertion kısmını seçmeyiniz çünkü False senaryolarda Contains kullanacağımız için hatalı senaryolardaki hata mesajını kontrol etmemizi engeller. Örnek olması açısından olumsuz senaryo olarak getBanksblzNull yani ilgili alanın boş olma durumunu test eden bir Case ekledim. Olumsuz senaryolarda hata mesajını kontrol etmek için Request sayfası altında bulunan Assertions kısmına tıklayın ve yeşil renkli artı ikonuna tıklayıp Property Content seçeneklerinden Contains ekleyin. Ek olarak şunuda belirteyim bazı kurumların WSDL yapısı gereği Add Schema Assertion kısmını işaretlerseniz ve Contains kısmında doğrulamak istediğiniz mesaj Output kısmında gelse bile Schema Compliance aşamasında hata alabilirsiniz. Bu yüzden bu kısmı da işaretlemeden geçebilirsiniz bazı servisler için. Eğer garanti olsun diyorsanız sadece ilk kısım olan Add SOAP Response Assertion ve Create Optional Elements seçeneklerini işaretlemeniz yeterli olacaktır.
Açılan Contains Assetion ekranında Content kısmına ister hata mesajı veya kodunun kendisini veya XML Tag yani etiketi ile birlikte boşluk olmadan ekleyin. Ignore Case kısmı Content içindeki yapının tamamının olup olmadığını kontrol eder ve işaretleyebilirsiniz. Regular Expression ise düzenli ifadeleri temsil eder ve büyük, küçük harf duyarlılığı içindir. Contains yöntemi ile test senaryolarınızı artırabilirsiniz. Son olarak sadece ilgili fonksiyon altındaki testleri koşmak istiyorsanız getBank TestCase veya servise ait tüm fonksiyonlar için oluşturduğunuz Regresyon setini koşmak istiyorsanız Banking-Regression kısımlarına tıklayın ve bir View sayfası açılacaktır. Burada Run tuşuna basmanız yeterli olacak, başarılı dönen senaryolar yeşil renk ve Finished cevabı verecektir. Hata alanlar ise kırmızı renkte Ignore uyarısı verecektir. Bu sayede tüm test setinizi her Fix ve Deployment sonrası hızlıca koşabilirsiniz. Ana Test Suite kısmı olan Banking-Regression altında koşan senaryoların sayısını ve detaylarını görmek içinse pencerenin altındaki TestSuite Log tabına basmanız yeterli olacaktır.
Zaman buldukça Test Suite kısmını biraz daha geliştirmeyi ve yeni ipuçları öğrendikçe sizlerle paylaşmayı düşünüyorum. Bitirmeden önce bu oluşturduğumuz SOAP regresyon setini başka bir arkadaşınıza paylaşmak için ise Projects altındaki ilk oluşturduğumuz Banking projesi yani Folder'a sağ tıklayıp Export Project diyerek oluşacak ZIP dosyasını gönderebilirsiniz. Aynı şekilde sıkıştırılmış dosya içerisindeki XML dosyasını diğer arkadaşınız masaüstüne çıkarıp SoapUI'da File kısmından Import Project diyerek tüm çalışmanızı kendi lokal ortamına almış olur.
Burak AVCI - Update: 28.06.2022
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.