TestMace - API'lerle çalışmak için güçlü bir IDE

Herkese selam! Bugün BT kamuoyuna ürünümüzü sunmak istiyoruz - API'lerle çalışmaya yönelik bir IDE TestTopuzu. Belki bazılarınız bizi zaten biliyordur önceki makaleler. Ancak aracın kapsamlı bir incelemesi yapılmadığından bu talihsiz eksikliği gideriyoruz.

TestMace - API'lerle çalışmak için güçlü bir IDE

Motivasyon

Aslında bu hayata nasıl geldiğimizle ve API ile ileri düzey çalışmalar için kendi aracımızı oluşturmaya karar verdiğimizle başlamak istiyorum. Bir ürünün sahip olması gereken işlevlerin bir listesiyle başlayalım ve bizce bunun "API'lerle çalışmak için bir IDE" olduğunu söyleyebiliriz:

  • Sorgular ve komut dosyaları (sorgu dizileri) oluşturma ve yürütme
  • Çeşitli testlerin yazılması
  • Test oluşturma
  • Swagger, OpenAPI, WADL vb. formatlardan içe aktarma da dahil olmak üzere API açıklamalarıyla çalışma.
  • Alaycı istekler
  • Popüler kütüphanelerle entegrasyon da dahil olmak üzere, komut dosyaları yazmak için bir veya daha fazla dil için iyi destek
  • vb

Liste zevkinize göre genişletilebilir. Üstelik sadece IDE'nin kendisini değil aynı zamanda bulut senkronizasyonu, komut satırı araçları, çevrimiçi izleme hizmeti vb. gibi belirli bir altyapıyı da oluşturmak önemlidir. Sonuçta son yılların trendleri bize yalnızca uygulamanın güçlü işlevselliğini değil aynı zamanda hoş arayüzünü de dikte ediyor.

Böyle bir araca kimin ihtiyacı var? Açıkçası, API'lerin geliştirilmesi ve test edilmesiyle en azından bir şekilde bağlantılı olanların tümü geliştiriciler ve test uzmanlarıdır =). Dahası, birincisi için genellikle tek sorguları ve basit komut dosyalarını yürütmek yeterliyse, o zaman test uzmanları için bu, diğer şeylerin yanı sıra, bunları çalıştırma yeteneğine sahip testler yazmak için güçlü bir mekanizma içermesi gereken ana araçlardan biridir. CI.

Bu yönergeleri takip ederek ürünümüzü oluşturmaya başladık. Bakalım bu aşamada neler başardık.

Hızlı başlangıç

Uygulamayı ilk kez tanıyarak başlayalım. İndirebilirsin web sitemizde. Şu anda 3 ana platformun tümü desteklenmektedir - Windows, Linux, MacOS. İndirin, yükleyin, başlatın. İlk kez başlattığınızda aşağıdaki pencereyi görebilirsiniz:

TestMace - API'lerle çalışmak için güçlü bir IDE

İlk isteğinizi oluşturmak için içerik alanının üst kısmındaki artı işaretine tıklayın. Sorgu sekmesi şuna benzer:

TestMace - API'lerle çalışmak için güçlü bir IDE

Gelin buna daha detaylı bakalım. İstek arayüzü, popüler dinlenme istemcilerinin arayüzüne çok benzer, bu da benzer araçlardan geçişi kolaylaştırır. URL'ye ilk isteği yapalım https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - API'lerle çalışmak için güçlü bir IDE

Genel olarak ilk bakışta yanıt paneli de herhangi bir sürpriz sunmuyor. Ancak bazı noktalara dikkatinizi çekmek isterim:

  1. Yanıtın gövdesi, ilk olarak bilgi içeriği ekleyen ve ikinci olarak aşağıda hakkında bazı ilginç özellikler eklemenizi sağlayan bir ağaç biçiminde temsil edilir.
  2. Belirli bir istek için testlerin listesini görüntüleyen bir İddialar sekmesi vardır

Gördüğünüz gibi aracımız uygun bir dinlenme istemcisi olarak kullanılabilir. Ancak yetenekleri yalnızca istek göndermekle sınırlı olsaydı burada olmazdık. Daha sonra TestMace'in temel kavramlarını ve işlevlerini özetleyeceğim.

Temel Kavramlar ve Özellikler

düğüm

TestMace işlevselliği farklı düğüm türlerine ayrılmıştır. Yukarıdaki örnekte, requestStep düğümünün çalışmasını gösterdik. Ancak uygulamada artık aşağıdaki düğüm türleri de mevcuttur:

  • İstekAdım. Bu, bir istek oluşturabileceğiniz düğümdür. Alt öğe olarak yalnızca bir Onaylama düğümüne sahip olabilir.
  • İddia. Düğüm testleri yazmak için kullanılır. Yalnızca requestStep düğümünün alt düğümü olabilir.
  • Dosya. Folder ve requestStep düğümlerini kendi içlerinde gruplandırmanıza olanak tanır.
  • Proje. Bu, proje oluşturulduğunda otomatik olarak oluşturulan kök düğümdür. Aksi takdirde, Klasör düğümünün işlevselliğini tekrarlar.
  • Bağlantı. Folder veya requestStep düğümüne bağlantı. Sorguları ve komut dosyalarını yeniden kullanmanıza olanak tanır.
  • vb

Düğümler çiziklerde (sol alttaki panel, hızlı bir şekilde "tek seferlik" sorgular oluşturmak için kullanılır) ve üzerinde daha ayrıntılı olarak duracağımız projelerde (sol üstteki panel) bulunur.

Proje

Uygulamayı başlattığınızda sol üst köşede yalnız bir Proje satırı görebilirsiniz. Bu proje ağacının köküdür. Bir projeye başladığınızda, yolu işletim sisteminize bağlı olan geçici bir proje oluşturulur. İstediğiniz zaman projeyi size uygun bir yere taşıyabilirsiniz.

Projenin temel amacı, dosya sistemindeki gelişmeleri kaydetme ve bunları sürüm kontrol sistemleri aracılığıyla daha da senkronize etme, CI'da komut dosyaları çalıştırma, değişiklikleri inceleme vb. yeteneğidir.

Değişkenler

Değişkenler bir uygulamanın temel mekanizmalarından biridir. TestMace gibi araçlarla çalışanlar zaten neden bahsettiğimiz hakkında bir fikre sahip olabilir. Dolayısıyla değişkenler, ortak verileri depolamanın ve düğümler arasında iletişim kurmanın bir yoludur. Örneğin bir analog, Postacı veya Uykusuzluk'taki ortam değişkenleridir. Ancak biz daha da ileri giderek konuyu geliştirdik. TestMace'de değişkenler düğüm düzeyinde ayarlanabilir. Herhangi. Ayrıca değişkenlerin atalardan miras alınmasına ve değişkenlerin torunlarda örtüşmesine yönelik bir mekanizma da vardır. Ek olarak çok sayıda yerleşik değişken vardır; yerleşik değişkenlerin adları ile başlar $. İşte bunlardan bazıları:

  • $prevStep — önceki düğümün değişkenlerine bağlantı
  • $nextStep — sonraki düğümün değişkenlerine bağlantı
  • $parent - aynı şey, ancak yalnızca ata için
  • $response - sunucudan gelen yanıt
  • $env - mevcut ortam değişkenleri
  • $dynamicVar - komut dosyası veya sorgu yürütme sırasında oluşturulan dinamik değişkenler

$env - bunlar aslında sıradan Proje düğümü düzeyindeki değişkenlerdir, ancak ortam değişkenleri kümesi seçilen ortama bağlı olarak değişir.

Değişkene şu yolla erişilir: ${variable_name}
Bir değişkenin değeri başka bir değişken, hatta bir ifadenin tamamı olabilir. Örneğin, url değişkeni şöyle bir ifade olabilir:
http://${host}:${port}/${endpoint}.

Ayrı olarak, komut dosyasının yürütülmesi sırasında değişkenlerin atanması olasılığını da belirtmekte fayda var. Örneğin, başarılı bir oturum açma sonrasında sunucudan gelen yetkilendirme verilerinin (belirteç veya başlığın tamamı) kaydedilmesine sıklıkla ihtiyaç duyulur. TestMace, bu tür verileri atalardan birinin dinamik değişkenlerine kaydetmenize olanak tanır. Halihazırda var olan "statik" değişkenlerle çarpışmayı önlemek için dinamik değişkenler ayrı bir nesneye yerleştirilir $dynamicVar.

senaryolar

Yukarıdaki özelliklerin tümünü kullanarak sorgu komut dosyalarının tamamını çalıştırabilirsiniz. Örneğin, bir varlık oluşturmak -> bir varlığı sorgulamak -> bir varlığı silmek. Bu durumda, örneğin, birkaç requestStep düğümünü gruplandırmak için Klasör düğümünü kullanabilirsiniz.

Otomatik tamamlama ve ifade vurgulama

Değişkenlerle (sadece değil) rahat çalışma için otomatik tamamlama gereklidir. Ve tabii ki, belirli bir değişkenin neye eşit olduğunu açıklamayı daha kolay ve kullanışlı hale getirmek için bir ifadenin değerini vurgulamak. Yüz kez duymaktansa bir kez görmenin daha iyi olduğu durum tam da budur:

TestMace - API'lerle çalışmak için güçlü bir IDE

Otomatik tamamlamanın yalnızca değişkenler için değil, aynı zamanda örneğin başlıklar, belirli başlıkların değerleri (örneğin, İçerik Türü başlığı için otomatik tamamlama), protokoller ve çok daha fazlası için de uygulandığını belirtmekte fayda var. Uygulama büyüdükçe liste sürekli güncellenmektedir.

geri al/yinele

Değişiklikleri geri almak/yeniden yapmak çok kullanışlı bir şeydir, ancak bazı nedenlerden dolayı her yerde uygulanmaz (ve API'lerle çalışmaya yönelik araçlar da istisna değildir). Ama biz onlardan biri değiliz!) Tüm proje boyunca geri alma/yineleme uyguladık; bu, yalnızca belirli bir düğümü düzenlemeyi değil, aynı zamanda onun oluşturulmasını, silinmesini, taşınmasını vb. de geri almanıza olanak tanır. En kritik operasyonlar onay gerektirir.

Testler oluşturma

Onay düğümü testlerin oluşturulmasından sorumludur. Ana özelliklerden biri, yerleşik düzenleyicileri kullanarak programlamaya gerek kalmadan testler oluşturma yeteneğidir.

Bir Onay düğümü bir dizi iddiadan oluşur. Her iddianın kendi türü vardır; şu anda çeşitli iddia türleri vardır

  1. Değerleri karşılaştırın - yalnızca 2 değeri karşılaştırır. Birkaç karşılaştırma operatörü vardır: eşit, eşit değil, büyüktür, büyüktür veya eşittir, küçüktür, küçüktür veya eşittir.

  2. Değer içerir - bir dizede bir alt dizenin oluşumunu kontrol eder.

  3. XPath - XML'deki seçicinin belirli bir değer içerip içermediğini kontrol eder.

  4. JavaScript onayı, başarı durumunda true, başarısızlık durumunda false değerini döndüren rastgele bir javascript betiğidir.

Yalnızca sonuncusunun kullanıcının programlama becerisini gerektirdiğini, diğer 3 iddianın grafiksel bir arayüz kullanılarak oluşturulduğunu unutmayın. Örneğin, karşılaştırma değerleri iddiası oluşturmaya yönelik iletişim kutusu şöyle görünür:

TestMace - API'lerle çalışmak için güçlü bir IDE

Pastanın kreması, yanıtlardan hızlı bir şekilde iddiaların yaratılmasıdır, sadece şuna bakın!

TestMace - API'lerle çalışmak için güçlü bir IDE

Bununla birlikte, bu tür iddiaların, üstesinden gelmek için bir javascript iddiası kullanmak isteyebileceğiniz bariz sınırlamaları vardır. Ve burada TestMace ayrıca otomatik tamamlama, sözdizimi vurgulama ve hatta statik analizör ile rahat bir ortam sağlar.

API Açıklaması

TestMace yalnızca API'yi kullanmanıza değil, aynı zamanda onu belgelemenize de olanak tanır. Üstelik açıklamanın kendisi de hiyerarşik bir yapıya sahip ve organik olarak projenin geri kalanına uyuyor. Ayrıca Swagger 2.0 / OpenAPI 3.0 formatlarından API açıklamalarını içe aktarmak şu anda mümkün. Açıklamanın kendisi sadece ağırlıkta değildir, aynı zamanda projenin geri kalanıyla yakından entegredir; özellikle URL'lerin, HTTP başlıklarının, sorgu parametrelerinin vb. otomatik olarak tamamlanması mevcuttur ve gelecekte testler eklemeyi planlıyoruz. Yanıtın API açıklamasına uygunluğu için.

Paylaşım düğümü

Durum: Sorunlu bir isteği veya hatta bir komut dosyasının tamamını bir meslektaşınızla paylaşmak veya bunu bir hataya eklemek istiyorsunuz. TestMace bu durumu da kapsar: uygulama, bir URL'deki herhangi bir düğümü ve hatta bir alt ağacı serileştirmenize olanak tanır. Kopyala-yapıştır yaparak isteği başka bir makineye veya projeye kolaylıkla aktarabilirsiniz.

İnsan tarafından okunabilen proje depolama formatı

Şu anda her düğüm, yml uzantılı ayrı bir dosyada (Onay düğümünde olduğu gibi) veya düğümün adının ve içinde index.yml dosyasının bulunduğu bir klasörde depolanır.
Örneğin yukarıdaki incelemede yaptığımız istek dosyası şu şekilde görünüyor:

index.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Gördüğünüz gibi her şey çok açık. İstenirse bu format manuel olarak kolaylıkla düzenlenebilir.

Dosya sistemindeki klasörlerin hiyerarşisi, projedeki düğümlerin hiyerarşisini tamamen tekrarlar. Örneğin, şöyle bir komut dosyası:

TestMace - API'lerle çalışmak için güçlü bir IDE

Dosya sistemini aşağıdaki yapıya eşler (yalnızca klasör hiyerarşisi gösterilir, ancak özü açıktır)

TestMace - API'lerle çalışmak için güçlü bir IDE

Bu, proje inceleme sürecini kolaylaştırır.

Postacıdan içe aktar

Yukarıdakilerin hepsini okuduktan sonra, bazı kullanıcılar yeni bir ürünü denemek (değil mi?) veya (şaka değil!) onu projelerinde tamamen kullanmak isteyecektir. Ancak aynı Postacıda meydana gelen çok sayıda gelişme ile göç durdurulabilmektedir. Bu gibi durumlarda TestMace, koleksiyonların Postman'dan içe aktarılmasını destekler. Şu anda testsiz ithalat destekleniyor ancak gelecekte desteklenmesini de göz ardı etmiyoruz.

Planlar

Umarım bu noktaya kadar okuyanların çoğu ürünümüzü beğenmiştir. Ancak hepsi bu değil! Ürün üzerindeki çalışmalar tüm hızıyla devam ediyor ve yakında eklemeyi planladığımız bazı özellikleri burada bulabilirsiniz.

Bulut senkronizasyonu

En çok istenen özelliklerden biri. Şu anda, senkronizasyon için sürüm kontrol sistemlerini kullanmayı öneriyoruz; bunun için formatı bu tür depolama için daha uygun hale getiriyoruz. Ancak bu iş akışı herkese uygun olmadığından sunucularımız üzerinden birçok kişinin aşina olduğu bir senkronizasyon mekanizması eklemeyi planlıyoruz.

CLI

Yukarıda bahsedildiği gibi IDE düzeyindeki ürünler, mevcut uygulamalarla veya iş akışlarıyla her türlü entegrasyon olmadan yapılamaz. CLI, TestMace'te yazılan testleri sürekli entegrasyon sürecine entegre etmek için tam olarak ihtiyaç duyulan şeydir. CLI üzerindeki çalışmalar tüm hızıyla devam ediyor; ilk sürümler projeyi basit bir konsol raporuyla başlatacak. Gelecekte JUnit formatında rapor çıktısı eklemeyi planlıyoruz.

Eklenti sistemi

Aracımızın tüm gücüne rağmen çözüm gerektiren vakaların sayısı sınırsızdır. Sonuçta belirli bir projeye özel görevler var. Bu nedenle gelecekte eklenti geliştirmek için bir SDK eklemeyi planlıyoruz ve her geliştirici kendi beğenisine göre işlevsellik ekleyebilecek.

Düğüm türleri aralığının genişletilmesi

Bu düğüm kümesi, kullanıcının ihtiyaç duyduğu tüm durumları kapsamaz. Eklenmesi planlanan düğümler:

  • Komut dosyası düğümü - js'yi ve ilgili API'yi kullanarak verileri dönüştürür ve yerleştirir. Bu tür düğümü kullanarak Postman'da ön istek ve istek sonrası komut dosyaları gibi şeyler yapabilirsiniz.
  • GraphQL düğümü - graphql desteği
  • Özel iddia düğümü - projedeki mevcut iddialar kümesini genişletmenize olanak tanır
    Elbette bu nihai bir liste değil; diğer şeylerin yanı sıra geri bildirimleriniz doğrultusunda sürekli olarak güncellenecektir.

SSS

Postacıdan ne farkınız var?

  1. Projenin işlevselliğini neredeyse sonsuz bir şekilde ölçeklendirmenize olanak tanıyan düğüm kavramı
  2. Sürüm kontrol sistemlerini kullanarak çalışmayı kolaylaştıran, dosya sistemine kaydedilen, insan tarafından okunabilen proje formatı
  3. Programlama gerektirmeden testler oluşturabilme yeteneği ve test düzenleyicide daha gelişmiş js desteği (otomatik tamamlama, statik analizör)
  4. Gelişmiş otomatik tamamlama ve değişkenlerin mevcut değerinin vurgulanması

Bu açık kaynaklı bir ürün mü?

Hayır, şu anda kaynaklar kapalı ancak gelecekte kaynakların açılması ihtimalini düşünüyoruz.

Neyle yaşıyorsunuz?)

Ücretsiz sürümün yanı sıra ürünün ücretli sürümünü de yayınlamayı planlıyoruz. Öncelikle senkronizasyon gibi sunucu tarafı gerektiren şeyleri içerecektir.

Sonuç

Projemiz kararlı bir sürüme doğru büyük adımlarla ilerliyor. Ancak ürün halihazırda kullanılabiliyor ve ilk kullanıcılarımızdan aldığımız olumlu geri bildirimler bunun kanıtıdır. Aktif olarak geri bildirim topluyoruz çünkü toplulukla yakın işbirliği olmadan iyi bir araç geliştirmek imkansızdır. Bizi burada bulabilirsiniz:

Resmi web sitesi

Telegram

Gevşeklik

Facebook

Sorun izleyici

Dilek ve önerilerinizi bekliyoruz!

Kaynak: habr.com

Yorum ekle