REST Assured ve JMeter: REST Test Araçlarının Karşılaştırması

Yayınlanan: 2022-03-11

Otomatik test, yazılım kalite güvence sürecinin kritik bir bileşenidir. Ancak temsili durum aktarımı (REST) ​​API'lerini test etmek zor bir iş olabilir. REST API'lerini manuel olarak test etmeye başvuranların çoğu, ayrıntıları gözden kaçırıyor ve zamandan tasarruf edebilecekleri yolları kaçırıyor.

Düzgün bir şekilde test edilen herhangi bir REST API hizmeti şu alanları kapsayacaktır:

  • API hizmetinin REST standartlarına uyup uymadığının test edilmesi
  • API hizmeti yanıt kodlarının test edilmesi
  • API hizmeti yanıt içeriğinin onaylanması
  • API hizmetinin performans kıyaslaması

REST testi için araçlar

Bunun için doğru araçlara ihtiyacınız var. Apache JMeter ve REST Assured, REST API hizmetlerini test etmek için iki popüler REST test aracıdır. Bunları pratikte nasıl kullanabileceğiniz hakkında daha fazla bilgiyi buradan ve buradan öğrenebilirsiniz.

Bu makalede, bu araçların her ikisinin de artılarını ve eksilerini ve mevcut REST API projelerinizde en iyi nereye oturduklarını öğreneceksiniz.

Kurulum Kolaylığı

Bir ön koşul vardır: Hem JMeter hem de REST Assured Java gerektirir, bu nedenle JMeter veya REST Assured'ı çalıştırmak için bilgisayarınızda Java yüklü olmalıdır.

Apache JMeter'i kurmak çok basittir: İndirme sayfasına gidin, ZIP veya TAR'ı seçin, arşivi indirin, paketinden çıkarın ve artık hazırsınız.

Arşivi paketinden çıkardığınız klasöre gidin, bin alt klasörüne gidin ve jmeter.bat çalıştırın (veya Windows dışındaysa işletim sisteminiz için benzer). Apache JMeter'in nasıl kurulacağı hakkında daha ayrıntılı bilgi için bu sayfaya bakın.

REST Assured'ı kurmak biraz farklı bir deneyim. REST Assured, bağımsız bir araç değildir. Bu bir Java kütüphanesidir. Kullanmak için yeni bir Java projesi kurmanız ve projenize kütüphane olarak eklemeniz gerekir. Tabii ki, birçok derleme aracı için destek var, bu nedenle bağımlılık çözümleyicinizi bazı genel (Maven) depolarına yönlendirebilirsiniz. REST Assured'ın nasıl kurulacağı hakkında daha ayrıntılı bilgiyi burada bulabilirsiniz.

belgeler

Apache JMeter belgeleri resmi JMeter web sitesinde bulunabilir. Başlangıçtan dinleyiciler gibi karmaşık özelliklere kadar oldukça kapsamlı belgeler sağlar. Ayrıca resmi JMeter web sitesinde video eğitimleri gibi çok zengin kaynaklara bağlantılar bulabilirsiniz. Okumaya daha az, izlemeye daha yatkınsanız, bu kesinlikle sizin için bir artı.

REST Assured belgeleri, araç/kütüphanenin kendisi gibi Github deposunda bulunabilir. Bir şeye nasıl ulaşılacağına dair çok ayrıntılı açıklamalarla birlikte çevrimiçi belgelerde listelenen büyük bir özellik listesine sahiptir. Bununla birlikte, belgelerin tamamı büyük bir web sayfasıdır - bir aracı keşfetmenin en kullanıcı dostu yolu değildir.

Otomatik REST Test Oluşturma ve Bakım

Apache JMeter, grafiksel kullanıcı arayüzüne (GUI) sahip bağımsız bir uygulama olarak, GUI'den testlerinizi oluşturmanıza olanak tanır. Bu, özellikle JMeter'den tanıtılan varlıklar hiyerarşisi nedeniyle kullanışlı olabilir; testinizin içinde oluşturduğunuz her şey JMeter GUI'de ağaç benzeri bir temsilde gösterilecektir.

Bir test oluşturmak için herhangi bir kodlama becerisine sahip olmak gerekmez. Ancak GUI, test planlamasıyla ilgili olasılıkların hiçbirini sınırlamaz. Yine de bazı özel programlama/akış eklemek istiyorsanız, BeanShell bileşen(ler)i bunu yapmanıza izin verecektir.

JMeter GUI Ekran Görüntüsü

JMeter projenizi kaydettiğinizde, oluşturduğunuz her şey tek bir büyük XML dosyasına ( .jmx uzantılı) kaydedilecektir. Genel olarak, testlerden birinde küçük bir değişiklik için bile, değişikliği yapmak için (büyük olasılıkla) projeyi GUI'de yeniden açmanız gerekecektir.

Aynı JMeter proje dosyası üzerinde başkalarıyla işbirliği yapmanız gerekiyorsa, bu büyük XML dosyasının herhangi bir kaynak kontrol yönetimi (SCM) sistemini (Git, SVN, Perforce, vb.) kullanarak bakımı kolay olmayacaktır.

REST Assured ise testleri oluşturmak için Java kodlama becerileri gerektirir. Test oluşturma için kullanıcı dostu bir GUI yoktur. Bununla birlikte, REST Assured, testleri Gherkin dilini (Given-When-Then sözdizimi) kullanarak yazmanıza izin verir, böylece bazı Java kodlama becerilerine ihtiyacınız olsa bile, testler oldukça insan tarafından okunabilir.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

REST Assured bir kütüphane olduğundan ve testler aslında Java ile yazıldığından, testlerinizi ayrı Java dosyalarında düzenleyebilirsiniz, böylece bir testi değiştirmeniz gerektiğinde, sadece bir dosya açmanız yeterlidir. Bir GUI'ye ihtiyacınız yoktur, bu nedenle testi bir SSH terminali aracılığıyla bile kolayca düzenleyebilirsiniz. Başkalarıyla işbirliği yapmak oldukça basittir çünkü herhangi bir SCM kullanarak Java dosyalarının bakımı kolaydır.

REST Testi Türleri

JMeter, web uygulamalarını ve hizmetlerini test etmek için bir performans test aracı olarak bilinir. Kutudan çıktığı gibi, performans testi metriklerini göstermek için kullanabileceğiniz farklı grafik türleriyle güzel raporlama seçeneklerine sahiptir.

JMeter Yanıt Süreleri Ekran Görüntüsü

Öte yandan, JMeter için birincil kullanım senaryosu da değildir. Yanıt onaylama dahil olmak üzere JMeter ile REST API'leri için işlevsel testler oluşturabilirsiniz.

REST Assured'ın birincil kullanım senaryosu, REST API hizmetlerinin işlevsel testi içindir. Hatta kendi yanıt onaylama mekanizması (Gherkin sözdizimi) ile birlikte gelir. REST Assured bir Java kütüphanesi olduğu için birim testleri ile kolayca entegre edilebilir.

Performans testi söz konusu olduğunda, REST Assured kutudan çıktığı haliyle performans testini desteklemez. Bununla birlikte, bunu performans testi için kullanmak isterseniz, REST Assured çevresinde performans testi için kendi özel çerçevenizi geliştirmeniz gerekir.

Test uygulaması

JMeter testleri iki şekilde çağrılabilir.

Çalıştır düğmesine tıklayarak kullanıcı arayüzünden:

JMeter Çalıştır Düğmesi Ekran Görüntüsü

Komut satırından:

 jmeter -n -t your_script.jmx

JMeter'in resmi tavsiyesi, testler komut satırından çalıştırmaya kıyasla daha yavaş çalışacağından (saniyedeki istek sayısı açısından) performans testlerini GUI kullanarak çalıştırmamaktır.

Öte yandan REST Assured, ayrı bir test çalıştırıcısı gerektirir, örneğin jUnit veya TestNG (veya Java kodunu yürütmek için başka bir yol).

TestNG kullanarak Eclipse'den:

REST Assured Eclipse Ekran Görüntüsü

Örneğin, Ant oluşturma aracını kullanarak komut satırından:

 ant run-tests

Rapor Türleri

Apache JMeter, birincil amacı nedeniyle, testlerinizin sonuçlarından oluşturabileceğiniz çok sayıda rapor türüne sahiptir. JMeter'den performans testleri çalıştırabileceğiniz için performans ölçümleri genellikle aşağıdaki gibi grafikler kullanılarak gösterilir:

JMeter Performans Raporu

JMeter raporları ve oluşturabileceğiniz rapor türleri hakkında buradan daha fazla bilgi edinebilirsiniz.

REST Assured'ın kendisi herhangi bir rapor oluşturmaz, bu yüzden size ve seçtiğiniz bir test çerçevesine bağlıdır. Ancak, bazı birim test çerçeveleri ile entegre edildiğinde, HTML, metin veya XML formatlarında oldukça kullanışlı raporlar alabilirsiniz.

REST Assured HTML Raporu

Jenkins ile entegrasyon

Test edilen ürünlerin sürekli entegrasyonu söz konusu olduğunda, hem testleri çalıştırmak hem de sonuçları raporlamak için test otomasyon çerçevenizi CI araçlarıyla entegre etmek çok önemlidir.

JMeter otomatik testleri, Oluşturma sonrası eylemleri ayarlamanıza ve bir Jenkins iş sayfasından güzel görünümlü bir pano sayfası elde etmenize olanak tanıyan Performans eklentisi kullanılarak Jenkins ile kolayca entegre edilebilir.

JMeter Jenkins Ekran Görüntüsü

REST Assured, Jenkins ile kolayca entegre edilebilir çünkü Jenkins'in neredeyse tüm test çerçeveleri için eklentileri vardır; örneğin, test sonuçları için yine sağlam bir trend grafiği oluşturabilen TestNG eklentisi.

REST Assured Jenkins Ekran Görüntüsü

Topluluk Etkinliği

Bu, kolayca ölçülemeyen bir kategoridir. Topluluk etkinliği, aracın olgunluğu veya katkıda bulunanların sayısı gibi bir dizi faktöre bağlıdır.

Apache JMeter, günümüzde daha büyük bir topluluğa sahiptir. Bunun nedeni, JMeter'in piyasada uzun zaman önce ortaya çıkması ve web uygulamaları ve hizmetlerinin performans testi söz konusu olduğunda endüstri standardı olarak kabul edilmesidir. JMeter her 5-6 ayda bir resmi bültenler yayınlar. GitHub deposu, günlük olarak yeni taahhütlerle çok aktif. JMeter, sorun izleyici olarak Bugzilla'yı kullanır ve sık sık değişen açık sorunların bir listesine sahiptir. StackOverflow aramasında JMeter için 23000+ sonuç var. Sosyal paylaşım sitelerinden JMeter'in resmi bir Twitter hesabı vardır. Facebook ve LinkedIn'de JMeter için resmi bir hesap yoktur, ancak daha büyük olan bu Facebook grubu ve bu LinkedIn grubu olan birkaç grup vardır.

REST Assured, ana aşamaya doğru ilerliyor ve REST API hizmeti işlevsel testlerinin otomatikleştirilmesi söz konusu olduğunda, birden fazla kaynaktan bir öneri olarak ilk tercih haline geldi. REST Assured, son iki yıldır her 6 ayda bir resmi yayınlar yayınlamaktadır. GitHub deposunun çok sayıda katılımcısı vardır ve JMeter'inkinden biraz daha az aktiftir, ancak aynı zamanda çok aktiftir. REST Assured, GitHub deposundaki sorunları izliyor, bu nedenle hepsi tek bir yerde. StackOverflow'ta REST Assured için 2000'den fazla arama sonucu var, bu nedenle JMeter arama sonuçlarına kıyasla önemli ölçüde daha düşük olduğunu söyleyebiliriz. Sosyal ağ gruplarına gelince, JMeter'e kıyasla önemli ölçüde daha az üyeye sahip olan sadece LinkedIn grubu bulundu. REST Assured topluluğu, JMeter topluluğu kadar büyük olmayabilir, ancak çok aktiftir.

Özet

Hem JMeter hem de REST Assured'ın birbirlerine göre avantajları vardır. Ancak üzerinde çalıştığınız projeye bağlı olarak, REST API test otomasyonunuz için biri diğerinden daha uygun olacaktır. Her ikisi de çok sağlamdır, kullanışlı test seçeneklerine sahiptir, güzel raporlama yeteneklerine sahiptir ve özel test çerçeveleriyle kolayca entegre edilebilir.

Bu iki popüler REST test aracı için bu makalede incelenen tüm karşılaştırma ölçütlerinin bir özetini burada bulabilirsiniz:

Apache J Metre Emin olabilirsiniz
Kodlama becerileri gerektirir Numara Evet (Java)
Kapsamlı belgeler Evet Evet
Fonksiyonel test Evet (ama aşırıya kaçmak) Evet
Performans testi Evet Hayır (kutunun dışında)
SCM için uygun (Git, P4...) Numara Evet
Test raporları Evet Numara
CI araçlarıyla entegrasyon Evet Evet
Birim testleri ile entegrasyon Numara Evet
Test paralelleştirme Evet Evet
Topluluk etkinliği Evet Evet