Bu eğitim, Karate Framework kullanarak API Testine giriş niteliğindedir. Karate Test Komut Dosyasının yapısı ve ilk test komut dosyasını oluşturma adımları hakkında bilgi edinin:

API, Uygulama Programlama Arayüzü anlamına gelen bir kısaltmadır. Basit bir ifadeyle, uygulamalar arasında iletişime izin veren bir yazılım aracısı olarak tanımlayabiliriz.

API testine ihtiyacımız var çünkü:

  • Sonuçlar daha hızlı yayınlanır, dolayısıyla API'nin düzgün çalışıp çalışmadığını görmek için daha fazla beklemek gerekmez.
  • Daha hızlı yanıtla birlikte, bu API'lerin dağıtımı da daha hızlı hale gelir ve dolayısıyla hızlı geri dönüş süresi sağlar.
  • Uygulamanın kullanıcı arayüzü oluşturulmadan önce bile erken arıza tespiti, riskleri azaltmamıza ve hataları düzeltmemize olanak tanır.
  • Daha kısa sürede büyük ölçekli teslimat mümkün.

API Testi üzerinde çalışabilmek için piyasada Postman, Mocha ve Chai gibi çeşitli araçlar mevcuttur. Bunlar API'leri test etmek için iyi sonuçlar ve etkili kullanım göstermiştir, ancak bunlar büyük ölçüde koddan etkilenmektedir. Bunları kullanabilmek için teknik olarak sağlam ve programlama dillerine aşina olmak gerekir.

Karate Framework, kendinden önceki yazılım araçlarının bu sorununu güzel bir şekilde çözüyor.

Karate Çerçevesi Nedir

Karate? Karate konuşalım. Japonya'dan mı? Ne düşünüyorsun? Büyük Bruce Lee bunu boş zamanlarında geliştirmiş olabilir.

Karate'nin ilginç köklerini araştırmak istesek de, şimdilik Karate'nin Karate aleti tarafından geliştirilen Peter Thomas API test uzmanlarının imdadına yetişen harika araçlardan biri.

Karate çerçevesi, BDD yaklaşımını izleyen Cucumber program yazma stilini takip eder. Sözdiziminin programcı olmayanlar tarafından anlaşılması kolaydır. Ve bu çerçeve, API Otomasyonunu ve performans testini tek bir bağımsız araçta birleştiren tek API test aracıdır.

Kullanıcılara test senaryolarını Paralel olarak yürütme ve JSON & XML kontrollerini gerçekleştirme olanağı sağlar.

Bu bilgilerle, Karate aletini daha ayrıntılı olarak anlamak için bazı kilit noktalar çıkarılabilir:

  • Karate, TDD yerine bir BDD test çerçevesidir.
  • Programcı olmayanlar için kolay olacak şekilde tasarlanmıştır. Bu özellik, teknik geçmişleri veya kapasiteleri ne olursa olsun birçok kişi tarafından daha fazla kullanım ve erişime izin verdiği için ezber bozan bir özelliktir.
  • Anlaşılması çok kolay olan testi yazmak için Cucumber özellik dosyasını ve Gherkins dilini kullanır.

Tüm bu özellikler onu bugün mevcut olan en uygun otomasyon araçlarından biri haline getiriyor.

Karate Çerçevesinin Tarihçesi

Tarafından oluşturuldu ' Peter Thomas'ın Bu yazılım 2017 yılında test işlevlerini herkes için hazır hale getirmeyi amaçlamaktadır. Java dilinde yazılmıştır ve çoğu insan dosyalarının da aynı dilde olmasını beklemektedir, ancak neyse ki durum böyle değildir.

Bunun yerine, Cucumber çerçevesi ile ilişkisinin bir sonucu olan Gherkins dosyalarını kullanır. Otomasyon yazılımı Cucumber'ın bir uzantısıdır, bu nedenle çalışmasında Gherkins dosyasının kullanımını miras alır. İkisi arasındaki en büyük fark, Karate'nin test sırasında Java kullanmaması, ancak Cucumber'ın kullanmasıdır.

Gherkins sözdizimi süper okunabilir ve kapsamlı olduğu için programcı olmayanlara hitap etmesinin nedeni budur. Bu, Karate'nin otomatik API testi dünyasına giriş yapmak için en uygun ve önerilen nedenidir.

Aşağıda Karate Testing Framework'ün bazı özellikleri yer almaktadır:

  • Anlaşılması kolay Gherkins dilini kullanır.
  • Java gibi teknik programlama bilgisi gerektirmez.
  • Popüler Cucumber standartlarına dayanmaktadır.
  • Bir çerçeve oluşturmak kolaydır.
  • Paralel test, Karate'nin kendisi tarafından sağlanan temel işlevselliktir, bu nedenle Maven, Gradle vb.
  • Testte hata ayıklama için kullanıcı arayüzü.
  • Bir özellik dosyasını başka bir dosyadan çağırma.
  • Şirket içinde oluşturulan Veri Sürücüsü Testi için destek sağlar, bu nedenle harici çerçevelere bağlı kalmaya gerek yoktur.
  • Yerleşik Native Rest Raporları. Ayrıca, daha iyi UI Raporları ve daha fazla netlik için Cucumber ile entegre edilebilir.
  • Farklı test ortamlarında (QA, Stage, Prod, Pre-Prod) yapılandırmayı değiştirmek için kurum içi destek sağlar.
  • Faydalı olabilecek CI/CD entegrasyonu için sorunsuz destek.
  • Çeşitli HTTP çağrılarını işleme yeteneğine sahiptir:
    • Web Soket desteği
    • SOAP isteği
    • HTTP
    • Tarayıcı çerezi işleme
    • HTTPS
    • HTML-form verileri
    • XML isteği

Karate ile Rest-Assured Karşılaştırması

İçiniz Rahat Olsun : REST hizmetlerini test etmek için Java tabanlı bir kütüphanedir. Kod satırlarını yazmak için Java dilini kullanır. Çok sayıda istek kategorisinin test edilmesine yardımcı olur ve bu da farklı iş mantığı kombinasyonlarının doğrulanmasıyla sonuçlanır.

Karate Çerçevesi : SOAP & REST servislerini test etmek için kullanılan Cucumber/Gherkins tabanlı bir araç.

Aşağıdaki tabloda Rest-Assured & Karate Framework arasındaki birkaç önemli fark daha listelenmiştir:

S.No Temel Karate Çerçevesi REST Güvenceli
1 Dil Salatalık ve Kornişon Turşu kombinasyonu kullanılır Java dilini kullanır
2 Kod Boyutu Genellikle kod satırı daha azdır, çünkü Cucumber benzeri bir yapı izler Java dilinin kullanımını içerdiği için kod satırı daha fazladır
3 Gerekli Teknik Bilgi Programcı olmayanlar Gherkins kodunu kolayca yazabilir Java kodu yazmak için teknik bilgi gereklidir
4 Veri Odaklı Test Aynı şeyi desteklemek için TestNG veya eşdeğerini kullanmanız gerekir Kurum içi etiketler veri testini desteklemek için kullanılabilir
5 SOAP çağrı desteği sağlıyor mu Evet, sağlıyor Yalnızca bir REST isteği ile ilgilidir
6 Paralel Test Evet, paralel testler paralel rapor oluşturma ile de kolayca desteklenir Büyük ölçüde değil. İnsanlar bunu yapmayı denemiş olsa da, başarısızlık oranı başarı oranından daha fazladır
7 Raporlama Şirket içi raporlama sağlar, bu nedenle harici eklentilere bağımlı olması gerekmez. Daha iyi kullanıcı arayüzü için Cucumber raporlama eklentisi ile bile entegre edebiliriz. Junit, TestNG gibi Harici Eklentilere bağımlı olması gerekir
8 Harici Veriler için CSV desteği Evet, Karate 0.9.0'dan Hayır, Java Kodu veya kütüphanesi kullanmak zorundasınız
9 Web UI Otomasyonu Evet, Karate 0.9.5'ten itibaren Web-UI Otomasyonu mümkündür Hayır, desteklenmiyor
10 Örnek GET Verilen param val1 = 'name1'

Ve param val2 = 'name2'

Ve 'somelocation' yolu

Yöntem elde edildiğinde

Ardından eşleşme yanıtı 'OKAY' içerir

given().

param("val1", "name1").

param("val2", "name2").

when().

get("/bazı\konum").

then().

body(containsString("OKAY"));

Dolayısıyla, yukarıdaki farklılıkların da gösterdiği gibi, Karate'nin herkesin yapabileceği en kolay şeylerden biri olduğunu söyleyebiliriz.

Karate Framework ile Çalışmak İçin Gerekli Araçlar

Şimdi, Karate Framework hakkındaki temel bilgilerimizi edindiğimize göre, Karate ortamını kurmak için gereken süreçlere ve araçlara bakalım.

#1) Eclipse

Eclipse, bilgisayar programlama alanında kullanılan bir Entegre Geliştirme Ortamıdır. Çoğunlukla Java Programlama için kullanılır. Daha önce de belirtildiği gibi, Karate Java ile yazılmıştır, bu nedenle Eclipse'in API test yazılımı için neden IDE olduğu daha mantıklıdır. Diğer bir neden ise açık kaynaklı bir araç olmasıdır ve bu, bu aracı tercih etmek için oldukça güçlü bir nedendir.

Not: IntelliJ, Visual Studio ve piyasada bulunan diğer farklı editörleri bile kullanabiliriz.

#2) Maven

Bu, öncelikle Java projeleri oluşturmak için kullanılan bir derleme otomasyon aracıdır. Bir Karate ortamı kurmanın ve kod yazmanın bir yoludur. Eclipse'inizi Maven gereksinimleri ile ayarlamak için Maven kurulumu için buraya tıklayabilirsiniz.

Maven'da çalışırken, Karate Framework'ü desteklemenize yardımcı olacak Maven bağımlılıklarını kullanın.

Aşağıdaki bağımlılıklar pom.xml'de Maven ile kullanılacaktır.

 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Not: En son sürümler Maven deposunda mevcut olabilir.

#3) Gradle

Gradle, Maven'a bir alternatiftir ve eşit kapasitede kullanılabilir. Benzerlikleri ve farklılıkları vardır, ancak Karate kodlarımız için bir ortam oluşturmada eşit derecede kullanılabilir.

Kullanımı daha kolay, esnektir ve uygulamamızın bir grup eklenti ile bazı modülerleştirme ve yönetim gereksinimleri olduğunda kullanılması önerilir. Gradle kurulum kodu aşağıdaki gibi görünecektir,

 testCompile 'com.intuit.karate:karate-junit4:0.6.0' testCompile 'com.intuit.karate:karate-apache:0.6.0' 

Not: Ya kullanabilirsin MAVEN veya SINIF.

#4) Sisteminizde Java Ortamı kurulumu

Karate Framework betiklerini kullanmaya başlamak için JDK ve JRE ortamını kurmanız gerekir.

Karate Test Senaryosunun Yapısı

Bir Karate test betiği ".feature" uzantısına sahip olmasıyla bilinir. Bu özellik Cucumber'dan miras alınmıştır. Dosyaların Java kurallarına göre düzenlenmesine de aynı şekilde izin verilir. Dosyalarınızı Java paket kurallarına göre düzenlemekte özgürsünüz.

Bununla birlikte, Maven yönergeleri Java olmayan dosyaların depolanmasının ayrı olarak yapılmasını söyler. src/test/resources yapısı altında tutulur. Java dosyaları ise src/main/java .

Ancak Karate Framework'ün yaratıcılarına göre, hem Java hem de Java olmayan dosyaları yan yana tutmamız gerektiğine inanıyorlar. Onlara göre, *.java ve *.feature dosyalarını bir arada tuttuklarında, standart Maven yapısını takip etmek yerine aramak çok daha kolaydır.

Bu, pom.xml dosyanızı aşağıdaki gibi değiştirerek kolayca yapılabilir (Maven için):

 src/test/java **/*.java ... 

Aşağıda Karate Framework'ün genel yapısının ana hatları verilmiştir:

Şimdi, bu Karate Framework, özellik dosyalarını çalıştırmak için Cucumber'da da gerekli olan Runner dosyasını kullandığından, yazının çoğu Cucumber standartlarını takip edecektir.

Ancak, Cucumber'ın aksine, adımlar Karate'de net bir tanım gerektirmez ve bu da esnekliği ve işlem kolaylığını artırır. Cucumber çerçevesini takip ettiğimizde genellikle eklememiz gereken ekstra yapıştırıcıyı eklememize gerek yoktur.

"Runner" sınıfı çoğu zaman şu şekilde adlandırılır TestRunner.java.

Daha sonra TestRunner.java dosyası şu şekli alacaktır:

 import com.intuit.karate.junit4.Karate; import org.junit.runner.RunWith; @RunWith(Karate.class) public class TestRunner { } 

Ve hakkında konuşmak .özellik dosyası, API'nin beklenen gereksinimlere göre çalıştığından emin olmak için test edilmesi gereken tüm test senaryolarını içerir.

Genel bir *.feature dosyası aşağıda gösterildiği gibi görünür:

 Özellik: Kullanıcı Ayrıntılarını getirme Senaryo: Kullanıcı Ayrıntıları için get çağrısını test etme Verilen url '//reqres.in/api/users/2' Yöntem GET olduğunda Durum 200 

İlk Temel Karate Test Komut Dosyasının Oluşturulması

Bu bölüm, API'leri bir Karate çerçevesi biçiminde dönüştürmenize yardımcı olacak ilk Test Komut Dosyanızı oluşturmaya başlamanıza yardımcı olacaktır.

Temel Karate test komut dosyalarını yazmadan önce, lütfen aşağıdaki gereksinimleri makinenize yükleyin:

  • Eclipse IDE
  • Maven. Uygun Maven yolunu ayarlayın.
  • JDK & JRE. Uygun yolu ayarlayın.

Şimdi adım adım yaklaşıma bir göz atalım:

#1) Yeni bir MAVEN Eclipse Editöründe Proje

  • Açık Eclipse
  • Dosya'ya tıklayın. Yeni Proje'yi seçin.

  • Maven Projesini Seçin

  • Çalışma Alanı konumunu seçin.
  • Arketipi seçin (genellikle " Maven-archetype-quickstart 1.1 " basit Maven projeleri için).
  • Group ID & Artifact ID'yi girin (örneğimizde aşağıdaki değerleri kullandık).
    • Grup Kimliği : Karate
    • Obje kimliği: KarateTestScriptsSample
  • Kurulumu tamamlamak için Son'a tıklayın.

#2) Oluşturulduktan sonra, artık Proje Gezgini penceresinde aşağıdaki yapıyı görebileceksiniz.

#3) Tüm Bağımlılıklarınızı dahil edin.

İlk adımımız, kurulumdan sonra şunları yapmak olacak tüm bağımlılıkları içerir Tüm etiketleri POM.xml altında tutacağız (POM.xml kullanımını zaten bildiğinizi varsayarak).

  • POM.xml dosyasını açın ve aşağıdaki kodu bağımlılık etiketinin altına kopyalayıp dosyayı kaydedin.
 com.intuit.karate karate-apache 0.9.5 test com.intuit.karate karate-junit4 0.9.5 test 

Kaynak için buraya tıklayın.

#4) Senaryo üzerinde beyin fırtınası yapalım, bu Karate Temel Test Kodunda neyi test edeceğiz.

Senaryo:

Bu URL ile bir API test edeceğiz.

Yol: api/kullanıcılar/2

Yöntem: GET

Ve biz doğrulamak gerekir , isteğin bir Başarı kodu (200) ya da değil.

Basit bir ifadeyle, başarılı bir şekilde yürütülüp yürütülmediğini görmek için örnek bir API'yi test edeceğiz.

Not: Test için mevcut olan örnek bir API alıyoruz. Herhangi bir PATH seçebilir veya API'nize başvurabilirsiniz.

Kaynak için buraya tıklayın.

#5) Şimdi bir sonraki adımımız bir .özellik Dosya.

Giriş bölümünde tartışıldığı üzere .feature dosyası Cucumber'dan miras alınan özelliktir. Bu dosyada, API Testini gerçekleştirmek için yürütülmesi gereken test senaryolarını yazacağız.

  • Klasöre Git src/test/java projenizde.

  • Üzerine sağ tıklayın ve yeni bir dosya oluşturun - userDetails.feature. Ardından Son düğmesine tıklayın.

Şimdi klasörün altında aşağıdaki dosyayı göreceksiniz src/test/java

Bu Yeşil renkli simge benzer .feature fi le Cucumber'da yeni oluşturduğumuz.

  • Dosya oluşturulduktan sonra, şimdi bir sonraki bölümde ele alınacak olan test senaryolarımızı yazacağız.

#6) Elimizde senaryo ve boşluk olduğuna göre. özellik dosyası hazır, şimdi ilk betiğimize başlayalım. Kodlamaya başlayalım

Adım #5'te oluşturduğumuz userDetails.feature dosyası altına aşağıdaki Kod satırını yazın:

 Özellik: Kullanıcı Ayrıntılarını getirme Senaryo: Kullanıcı Ayrıntıları için get çağrısını test etme Verilen url '//reqres.in/api/users/2' Yöntem GET olduğunda Durum 200 

Yukarıdaki dosyada yazılı olan bileşenleri anlamaya çalışalım:

  • Özellik: Anahtar kelime, test ettiğimiz özelliğin adını açıklar.
  • Arka plan: Bu, Önkoşul bölümü olarak ele alınan isteğe bağlı bir bölümdür. API'yi test etmek için gereken her şeyi tanımlamak için kullanılabilir. HEADER, URL & PARAM seçenekler.
  • Senaryo: Göreceğiniz her özellik dosyası en az bir özelliğe sahip olacaktır (ancak çoklu senaryoları). Test senaryosunun açıklamasıdır.
  • Verildi: Diğer herhangi bir test adımı gerçekleştirilmeden önce yürütülmesi gereken adımdır. Gerçekleştirilmesi zorunlu bir eylemdir.
  • Ne zaman? Bir sonraki test adımını gerçekleştirmek için karşılanması gereken koşulu belirtir.
  • Sonra: Burada belirtilen koşulun gerçekleşmesi durumunda ne olması gerektiği anlatılmaktadır. Ne zaman tatmin oldu.

Not: Yukarıda bahsedilen tüm anahtar kelimeler Gherkins dilindendir. Bunlar Cucumber kullanarak test komut dosyaları yazmanın standart yoludur.

Özellik dosyasında kullanılan diğer bazı kelimeler ise şunlardır:

  • 200: Beklediğimiz durum/cevap kodudur (Durum kodlarının listesi için buraya tıklayın)
  • GET: POST, PUT, vb. gibi API yöntemidir.

Umarız bu açıklama sizin için kolay olmuştur. Artık yukarıdaki dosyada tam olarak ne yazdığını anlayabileceksiniz.

Şimdi bir TestRunner.java dosyası oluşturmamız gerekiyor

Yukarıdaki bölümde açıklandığı gibi, Cucumber'ın çalıştırmak için gerekli olacak bir Runner dosyasına ihtiyacı vardır .özellik test senaryolarını içeren dosya.

  • Klasöre Git src/test/java projenizde

  • Üzerine sağ tıklayın ve bir Yeni Java dosyası oluşturun: TestRunner.java
  • Dosya oluşturulduktan sonra, altına aşağıdaki kod satırlarını yerleştirin:
 import org.junit.runner.RunWith; import com.intuit.karate.junit4.Karate; @RunWith(Karate.class) public class TestRunner { } 
  • Test Runner, Adım #5 altında yazılmış olan istenen senaryoyu gerçekleştirmek için şimdi çalıştırılacak olan dosyadır.

#7) Şimdi her iki dosya ile de hazırız TestRunner.Java ve userDeatils.feature. Bize kalan tek görev Koşmak Senaryo.

  • TestRunner.java dosyasına gidin ve aşağıdaki resimde gösterildiği gibi dosyaya sağ tıklayın.

  • Farklı Çalıştır'ı Seçin -> Junit Test
  • Şimdi, seçildikten sonra, test senaryosunun artık başladığını gözlemlemeye başlayacaksınız.
  • Test komut dosyasının yürütülmesini bekleyin. Tamamlandığında, pencerenizde aşağıdaki resimde gösterildiği gibi bir şey gözlemleyeceksiniz.

  • Son olarak, ilk temel yazılımımızı başarıyla oluşturduğumuzu söyleyebiliriz. Test Senaryosu kullanarak Karate Çerçevesi.

#8) Son olarak, Karate çerçevesi gerçekleştirilen yürütme için bir HTML rapor sunumu da sağlar.

  • Hedef Klasör'e gidin -> surefire-reports-> Burada açabileceğiniz HTML raporunuzu göreceksiniz.

** Daha iyi bir görünüm ve his için aynısını Chrome Tarayıcısını kullanarak açmanızı da öneririz.

  • Aşağıdaki HTML Raporu size gösterilecektir Senaryolar & Test söz konusu senaryo için yürütülmüştür:

Sonuç

Bu eğitimde API testi, piyasada bulunan farklı test araçları ve Karate Framework'ün benzerlerine kıyasla nasıl daha iyi bir seçenek olduğu konularını ele aldık.

İlk temel test betiğimizi oluşturmak için adım adım bir yaklaşım izledik. Temel bir test betiği oluşturarak başladık Eclipse IDE'de Maven projesi tüm test senaryosunu içeren bir .feature dosyası ve .feature dosyasında belirtilen test senaryosunu yürütmek için bir Runner dosyası oluşturmak için.

Çoklu adımların sonunda, test sonuçlarının yürütme raporunu görebiliyorduk.

Umarız bu eğitim, yeni başlayanlar için Karate Framework kullanarak ilk test betiklerini nasıl oluşturacaklarını ve API Testlerini nasıl gerçekleştireceklerini öğrenmelerinde yardımcı olmuştur. Bu ayrıntılı adım adım yaklaşım, API üzerinde çeşitli testleri çalıştırmak ve yürütmek için harika bir yoldur.

SONRAKİ>>

Başa dön