TestMace neden Postman'dan daha iyidir?

TestMace neden Postman'dan daha iyidir?

Herkese merhaba, buyurun TestTopuzu! Belki birçok kişi bizi biliyor bizim önceki makaleler. Yeni katılanlar için: TestMace API ile çalışacak bir IDE geliştiriyoruz. TestMace'i rakip ürünlerle karşılaştırırken en sık sorulan soru "Postacı'dan ne farkınız var?" sorusudur. Bu soruya ayrıntılı bir cevap vermenin zamanının geldiğine karar verdik. Aşağıda avantajlarımızı özetledik. Postacı.

Düğümlere bölünme

Postman ile çalışıyorsanız istek arayüzünün gerekli tüm işlevleri içerdiğini bilirsiniz. Komut dosyaları, testler ve aslında isteklerin kendisi var. Bu, yeni başlayanlar için işi kolaylaştırır ancak büyük senaryolarda bu yaklaşım esnek değildir. Birkaç sorgu oluşturup bunlar üzerinde toplama işlemi gerçekleştirmek isterseniz ne olur? Bir komut dosyasını istek olmadan veya mantıksal olarak ayrılmış birkaç komut dosyasını arka arkaya çalıştırmak istiyorsanız ne olur? Sonuçta testleri normal yardımcı program komut dosyalarından ayırmak iyi bir fikir olacaktır. Ayrıca, "tüm işlevleri tek bir düğüme ekleme" yaklaşımı ölçeklenebilir değildir; arayüz hızla aşırı yüklenir.

TestMace başlangıçta tüm işlevleri farklı düğüm türlerine ayırır. Bir talepte bulunmak ister misiniz? Bu senin için istek adımı düğüm Senaryo yazmak ister misin? Bu senin için senaryo düğüm Testlere mi ihtiyacınız var? Lütfen - Iddia düğüm Ah evet, yine de tüm bunları kapatabilirsin dosya düğüm Ve tüm bunlar birbiriyle kolayca birleştirilebilir. Bu yaklaşım çok esnek olmasının yanı sıra tek sorumluluk ilkesine uygun olarak yalnızca o anda gerçekten ihtiyacınız olanı kullanmanıza olanak tanır. Yalnızca bir istekte bulunmak istiyorsam neden komut dosyalarına ve testlere ihtiyacım var?

İnsan tarafından okunabilen proje formatı

TestMace ve Postman arasında saklanma biçimleri açısından kavramsal bir fark vardır. Postman'da tüm istekler yerel depolamada bir yerde saklanır. İsteklerin birden fazla kullanıcı arasında paylaşılması gerekiyorsa yerleşik senkronizasyonu kullanmanız gerekir. Aslında bu genel olarak kabul edilen bir yaklaşımdır, ancak dezavantajları da vardır. Peki ya veri güvenliği? Sonuçta bazı şirketlerin politikası verilerin üçüncü şahıslarla saklanmasına izin vermeyebilir. Ancak TestMace'in daha iyi bir şey sunabileceğini düşünüyoruz! Bu gelişmenin adı da “insan tarafından okunabilen proje formatı”dır.

TestMace'de prensip olarak bir "proje" varlığı olduğu gerçeğiyle başlayalım. Uygulama başlangıçta projeleri sürüm kontrol sistemlerinde depolamak amacıyla geliştirildi: proje ağacı dosya yapısına neredeyse bire bir yansıtılıyor, depolama formatı olarak yaml kullanılıyor (fazladan parantez ve virgül olmadan) ve Her düğümün dosya gösterimi, belgelerde yorumlarla birlikte ayrıntılı olarak açıklanmaktadır. Ancak çoğu durumda oraya bakmazsınız; tüm alan adlarının mantıksal adları vardır.

Bu kullanıcıya ne sağlar? Bu, tanıdık yaklaşımları kullanarak ekibin iş akışını çok esnek bir şekilde değiştirmenize olanak tanır. Örneğin geliştiriciler bir projeyi arka uçla aynı depoda saklayabilir. Dallarda geliştirici, kod tabanını değiştirmenin yanı sıra mevcut sorgu komut dosyalarını ve testleri de düzeltebilir. Depoda değişiklikler yaptıktan sonra (git, svn, mercurial - en çok sevdiğiniz şey), CI (en sevdiğiniz, kimse tarafından empoze edilmeyen) konsol yardımcı programımızı başlatır testmace-clive yürütme sonrasında alınan rapor (örneğin, testmace-cli'de de desteklenen junit formatında) uygun sisteme gönderilir. Ve yukarıda bahsettiğimiz güvenlik sorunu artık sorun olmaktan çıkıyor.

Gördüğünüz gibi TestMace kendi ekosistemini ve paradigmasını empoze etmiyor. Bunun yerine yerleşik süreçlere kolaylıkla uyum sağlar.

Dinamik Değişkenler

TestMace, kodsuz konsepti takip ediyor: Eğer bir sorun kod kullanılmadan çözülebiliyorsa, bu fırsatı sağlamaya çalışıyoruz. Değişkenlerle çalışmak, çoğu durumda programlama olmadan yapabileceğiniz türden bir işlevselliktir.

Örnek: Sunucudan bir yanıt aldık ve yanıtın bir kısmını bir değişkene kaydetmek istiyoruz. Postman'da bir test komut dosyasında (ki bu başlı başına tuhaftır) şöyle bir şey yazardık:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Ancak bizce bu kadar basit ve sıklıkla kullanılan bir senaryoya senaryo yazmak gereksiz görünüyor. Bu nedenle TestMace'te grafik arayüzü kullanarak cevabın bir kısmını bir değişkene atamak mümkündür. Bakın ne kadar basit:

TestMace neden Postman'dan daha iyidir?

Ve şimdi her istekte bu dinamik değişken güncellenecektir. Ancak Postacı yaklaşımının daha esnek olduğunu ve yalnızca bir ödev vermenize değil, aynı zamanda bazı ön işlemler yapmanıza da olanak sağladığını öne sürerek itiraz edebilirsiniz. Önceki örneği nasıl değiştireceğiniz aşağıda açıklanmıştır:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Peki, bu amaçla TestMace'in senaryo Bu senaryoyu kapsayan düğüm. Önceki durumu yeniden oluşturmak, ancak zaten TestMace tarafından yürütülmek için, isteği takiben bir komut dosyası düğümü oluşturmanız ve komut dosyası olarak aşağıdaki kodu kullanmanız gerekir:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Gördüğünüz gibi düğümlerin bileşimi burada da işe yaradı. Yukarıda açıklandığı gibi basit bir durum için basitçe ifadeyi atayabilirsiniz. ${crypto.MD5($response.data)} GUI aracılığıyla oluşturulan değişken!

GUI aracılığıyla testler oluşturma

Postman, komut dosyaları yazarak testler oluşturmanıza olanak tanır (Postman durumunda bu JavaScript'tir). Bu yaklaşımın birçok avantajı vardır - neredeyse sınırsız esneklik, hazır çözümlerin kullanılabilirliği vb.

Ancak gerçek şu ki çoğu zaman (biz öyle değiliz, hayat böyledir) bir testçinin programlama becerisi yoktur, ancak şu anda takıma fayda sağlamak ister. Bu gibi durumlarda, kodsuz konsepti takip eden TestMace, komut dosyası yazmaya başvurmadan bir GUI aracılığıyla basit testler oluşturmanıza olanak tanır. Örneğin, eşitlik için değerleri karşılaştıran bir test oluşturma süreci şöyle görünür:

TestMace neden Postman'dan daha iyidir?

Ancak testleri bir grafik düzenleyicide oluşturmak, bu olasılığı ortadan kaldırmaz. kodda testler yazmak. Komut düğümünde olduğu gibi aynı kitaplıkların tümü buradadır ve chai Test yazmak için.

Genellikle belirli bir sorgunun veya hatta bir komut dosyasının tamamının projenin farklı bölümlerinde birkaç kez yürütülmesi gerektiğinde ortaya çıkan durumlar vardır. Bu tür taleplerin bir örneği, özel çok aşamalı yetkilendirme, ortamın istenen duruma getirilmesi vb. olabilir. Genel olarak programlama dilleri açısından konuşursak, uygulamanın farklı bölümlerinde yeniden kullanılabilecek işlevlere sahip olmak isteriz. TestMace'de bu işlev şu şekilde gerçekleştirilir: Link düğüm Kullanımı çok kolaydır:
1) bir sorgu veya komut dosyası oluşturun
2) Bağlantı türünde bir düğüm oluşturun
3) parametrelerde, ilk adımda oluşturulan komut dosyasına bir bağlantı belirtin

Daha gelişmiş bir sürümde, komut dosyasındaki hangi dinamik değişkenlerin bağlantıya göre daha yüksek bir düzeye aktarılacağını belirtebilirsiniz. Kafa karıştırıcı mı geliyor? Diyelim ki adında bir Klasör oluşturduk oluştur-yayınBu düğüme dinamik bir değişkenin atandığı postId. Şimdi Bağlantı düğümünde bağlantı sonrası oluştur değişkenin açıkça belirtebilirsiniz postId bir ataya atanmış bağlantı sonrası oluştur. Bu mekanizma (yine programlama dilinde) bir “fonksiyondan” sonuç döndürmek için kullanılabilir. Genel olarak sorun yok, DRY tüm hızıyla devam ediyor ve yine tek bir kod satırı bile hasar görmedi.

TestMace neden Postman'dan daha iyidir?

Postacıya gelince, isteklerin yeniden kullanılmasına yönelik bir özellik isteği var 2015'ten beri asılıhatta öyle görünüyor ki bazı ipuçlarıbu sorun üzerinde çalıştıklarını söyledi. Şu anki haliyle, Postman elbette yürütme akışını değiştirme yeteneğine sahip, bu da teoride muhtemelen benzer davranışların uygulanmasını mümkün kılıyor, ancak bu gerçekten işe yarayan bir yaklaşımdan çok kirli bir hack.

Diğer farklılıklar

  • Değişkenlerin kapsamı üzerinde daha fazla kontrol. Postman'da bir değişkenin tanımlanabileceği en küçük kapsam koleksiyondur. TestMace, herhangi bir sorgu veya klasör için değişkenleri tanımlamanıza olanak tanır. Postman Share koleksiyonunda yalnızca koleksiyonları dışa aktarmanıza izin verilirken TestMace'de paylaşım herhangi bir düğüm için çalışır
  • TestMace'in destekleri devralınabilen başlıklar, varsayılan olarak alt sorguların yerine kullanılabilir. Postacının bununla ilgili bir şeyi var: görevHatta kapalı ama çözüm olarak sunuluyor... komut dosyalarını kullan. TestMace'de bunların tümü GUI aracılığıyla yapılandırılır ve belirli alt öğelerdeki devralınan başlıkları isteğe bağlı olarak devre dışı bırakma seçeneği vardır.
  • Geri al/Yinele. Yalnızca düğümleri düzenlerken değil, taşırken, silerken, yeniden adlandırırken ve projenin yapısını değiştiren diğer işlemlerde de çalışır
  • İsteklere eklenen dosyalar projenin bir parçası haline gelir ve Postman'ın aksine mükemmel bir şekilde senkronize edilirken projeyle birlikte saklanır. (Evet, artık her başlatışınızda dosyaları manuel olarak seçmenize ve bunları arşivlerdeki iş arkadaşlarınıza aktarmanıza gerek yok)

Zaten yolda olan özellikler

Sonraki sürümlerde gizlilik perdesini kaldırma isteğine karşı koyamadık, özellikle de işlevsellik çok lezzetliyse ve zaten sürüm öncesi cilalama aşamasındaysa. Öyleyse buluşalım.

fonksiyonlar

Bildiğiniz gibi Postman, değer üretmek için dinamik değişkenler olarak adlandırılan değişkenleri kullanıyor. Bunların listesi etkileyici ve işlevlerin büyük çoğunluğu sahte değerler üretmek için kullanılıyor. Örneğin, rastgele bir e-posta oluşturmak için şunu yazmanız gerekir:

{{$randomEmail}}

Ancak bunlar değişkenler olduğundan (dinamik de olsa), işlev olarak kullanılamazlar: parametrelendirilemezler, bu nedenle bir dizeden karma değeri almak mümkün olmayacaktır.

TestMace'e “dürüst” işlevler eklemeyi planlıyoruz. ${}'ın hemen içinde yalnızca bir değişkene erişmek değil, aynı zamanda bir işlevi çağırmak da mümkün olacaktır. Onlar. Kötü şöhretli sahte e-postayı oluşturmanız gerekiyorsa, basitçe yazacağız

${faker.internet.email()}

Bunun bir fonksiyon olmasının yanı sıra, bir nesne üzerinde bir yöntem çağırmanın da mümkün olduğunu fark edeceksiniz. Ve dinamik değişkenlerin büyük, düz bir listesi yerine, mantıksal olarak gruplandırılmış bir dizi nesnemiz var.

Bir dizenin karmasını hesaplamak istersek ne olur? Kolayca!

${crypto.MD5($dynamicVar.data)}

Değişkenleri parametre olarak bile iletebildiğinizi fark edeceksiniz! Bu noktada meraklı bir okuyucu bir şeylerin ters gittiğinden şüphelenebilir...

İfadelerde JavaScript Kullanmak

... Ve bunun iyi bir nedeni var! Fonksiyonların gereksinimleri oluşturulurken birdenbire ifadelerde geçerli javascript yazılması gerektiği sonucuna vardık. Artık aşağıdaki gibi ifadeler yazmakta özgürsünüz:

${1 + '' + crypto.MD5('asdf')}

Ve tüm bunlar komut dosyaları olmadan, doğrudan giriş alanlarında!

Postman'a gelince, burada sadece değişkenleri kullanabiliyorsunuz ve en ufak bir ifadeyi yazmaya çalıştığınızda doğrulayıcı küfrediyor ve onu hesaplamayı reddediyor.

TestMace neden Postman'dan daha iyidir?

Gelişmiş otomatik tamamlama

Şu anda TestMace'in şuna benzeyen standart bir otomatik tamamlama özelliği vardır:

TestMace neden Postman'dan daha iyidir?

Burada otomatik tamamlama satırına ek olarak bu satırın neye ait olduğu da belirtilmektedir. Bu mekanizma yalnızca ${} paranteziyle çevrelenmiş ifadelerde çalışır.

Gördüğünüz gibi değişkenin tipini belirten görsel işaretleyiciler eklendi (örneğin string, sayı, dizi vb.). Otomatik tamamlama modlarını da değiştirebilirsiniz (örneğin, değişkenler veya başlıklarla otomatik tamamlamayı seçebilirsiniz). Ama bu bile en önemli şey değil!

İlk olarak, otomatik tamamlama (mümkün olduğunda) ifadelerde bile çalışır. Şuna benziyor:

TestMace neden Postman'dan daha iyidir?

İkincisi, otomatik tamamlama artık komut dosyalarında da mevcut. Nasıl çalıştığına bir göz atın!

TestMace neden Postman'dan daha iyidir?

Bu işlevselliği Postacı ile karşılaştırmanın bir anlamı yok - orada otomatik tamamlama yalnızca değişkenlerin, başlıkların ve değerlerinin statik listeleriyle sınırlıdır (bir şeyi unuttuysam beni düzeltin). Komut dosyaları otomatik olarak tamamlanmaz :)

Sonuç

Ekim ayı, ürün geliştirme sürecimizin başlangıcından bu yana geçen bir yıl oldu. Bu süre zarfında pek çok şey yapmayı başardık ve bazı açılardan rakiplerimize yetiştik. Ancak öyle de olsa amacımız API'lerle çalışmak için gerçekten kullanışlı bir araç oluşturmaktır. Hala yapacak çok işimiz var, işte önümüzdeki yıl için projemizin geliştirilmesine ilişkin kaba bir plan: https://testmace.com/roadmap.

Geri bildiriminiz, çok sayıda özellik arasında daha iyi gezinmemize olanak tanıyacak ve desteğiniz, doğru şeyi yaptığımıza dair bize güç ve güven verecektir. Öyle oldu ki bugün projemiz için önemli bir gün; TestMace'in yayınlandığı gün. ProductHunt. Lütfen projemize destek olun, bizim için çok önemli. Üstelik bugün PH sayfamızda cazip bir teklif var ve sınırlıdır

Kaynak: habr.com

Yorum ekle