TestMace - API ilə işləmək üçün güclü IDE

Hamıya salam! Bu gün biz məhsulumuzu İT icmasına təqdim etmək istərdik — API ilə işləmək üçün IDE. TestMaceBəziləriniz bizim haqqımızda artıq bilirsiniz əvvəlki məqalələrBununla belə, alətin hərtərəfli nəzərdən keçirilməsi yox idi, ona görə də bu uğursuz çatışmazlığı aradan qaldırırıq.

TestMace - API ilə işləmək üçün güclü IDE

Motivasiya

Mən bu nöqtəyə necə gəldiyimizi və qabaqcıl API işi üçün öz alətimizi qurmaq qərarına gəldiyimizi izah etməklə başlamaq istərdim. Məhsulun "APİ-lərlə işləmək üçün IDE" kimi uyğunlaşmalı olduğu xüsusiyyətlərin siyahısı ilə başlayaq:

  • Sorğuların və skriptlərin yaradılması və icrası (sorğu ardıcıllığı)
  • Müxtəlif növ testlərin yazılması
  • Test nəsli
  • API təsvirləri ilə işləmək, o cümlədən Swagger, OpenAPI, WADL və s. kimi formatlardan idxal etmək.
  • İstehza tələbləri
  • Məşhur kitabxanalarla inteqrasiya da daxil olmaqla bir və ya bir neçə skript dili üçün yaxşı dəstək
  • və s.

Siyahı zövqünüzə uyğun olaraq genişləndirilə bilər. Yalnız IDE-nin özünü deyil, həm də bulud sinxronizasiyası, komanda xətti alətləri, onlayn monitorinq xidməti və s. kimi xüsusi bir infrastruktur yaratmaq vacibdir. Nəhayət, son tendensiyalar yalnız güclü proqram funksionallığı deyil, həm də istifadəçi dostu interfeysi diktə edir.

Belə bir vasitə kimə lazımdır? Aydındır ki, API inkişafı və sınaqları ilə məşğul olan hər kəs - tərtibatçılar və testçilər. =) Birincisi tez-tez yalnız tək sorğular və sadə ssenariləri yerinə yetirməli olsa da, sınaqçılar üçün bu, digər şeylərlə yanaşı, onları CI-də işə salmaq imkanı olan güclü test yazma mexanizmini ehtiva edən əsas vasitədir.

Beləliklə, bu təlimatlara əməl edərək məhsulumuzu yaratmağa başladıq. İndiyə qədər nələrə nail olduğumuza nəzər salaq.

Tez başlanğıc

Proqrama girişlə başlayaq. Onu buradan yükləyə bilərsiniz veb saytımızdaHazırda hər üç əsas platforma dəstəklənir: Windows, Linux və MacOS. Yükləyin, quraşdırın və işə salın. İlk işə saldığınız zaman aşağıdakı pəncərəni görəcəksiniz:

TestMace - API ilə işləmək üçün güclü IDE

İlk sorğunuzu yaratmaq üçün məzmun sahəsinin yuxarısındakı artı işarəsinə klikləyin. Sorğu nişanı belə görünür:

TestMace - API ilə işləmək üçün güclü IDE

Gəlin buna daha yaxından nəzər salaq. Sorğu interfeysi məşhur REST müştərilərinin interfeysinə çox bənzəyir, bu da oxşar alətlərdən miqrasiyanı asanlaşdırır. Gəlin URL-ə ilk sorğu verək https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - API ilə işləmək üçün güclü IDE

İlk baxışdan cavab paneli heç bir sürpriz təklif etmir. Bununla belə, bir neçə şeyi qeyd etmək istərdim:

  1. Cavab orqanı ilk növbədə məlumat əlavə edən və ikincisi aşağıda müzakirə olunan bəzi maraqlı xüsusiyyətlərin əlavə edilməsinə imkan verən ağac şəklində təmsil olunur.
  2. Verilmiş sorğu üçün testlərin siyahısını göstərən Təsdiqlər sekmesi var.

Gördüyünüz kimi, alətimiz rahat REST müştərisi kimi istifadə edilə bilər. Lakin onun imkanları sorğu göndərməklə məhdudlaşsaydı, biz burada olmazdıq. Aşağıda mən TestMace-in əsas anlayışlarını və funksionallığını təsvir edəcəyəm.

Əsas anlayışlar və imkanlar

Node

TestMace funksionallığı müxtəlif node tiplərinə bölünür. Yuxarıdakı nümunədə biz RequestStep qovşağını nümayiş etdirdik. Bununla belə, indi tətbiqdə aşağıdakı node növləri də mövcuddur:

  • Request Step. Bu sorğu yaratmaq üçün istifadə edilən qovşaqdır. Uşaq olaraq yalnız bir Təsdiq nodu ola bilər.
  • Təsdiq. Bu qovşaq testlərin yazılması üçün istifadə olunur. Bu, yalnız RequestStep nodeunun uşaq qovşağı ola bilər.
  • Qovluq. Qovluq və RequestStep qovşaqlarını öz daxilində qruplaşdırmağa imkan verir.
  • Layihə. Bu, layihə yaradılan zaman avtomatik olaraq yaradılan kök nodedur. Əks halda, o, Qovluq qovşağının funksionallığını təkrarlayır.
  • Link. Qovluq və ya RequestStep qovşağına keçid. Sorğuların və skriptlərin təkrar istifadəsinə imkan verir.
  • və s.

Qovşaqlar cızıqlarda (aşağı soldakı panel, tez “birdəfəlik” sorğular yaratmaq üçün istifadə olunur) və daha ətraflı müzakirə edəcəyimiz layihədə (yuxarı soldakı panel) yerləşir.

Layihə

Tətbiqi işə saldığınız zaman yuxarı sol küncdə tək Layihə xəttini görmüsünüz. Bu layihə ağacının köküdür. Layihəni işə saldığınız zaman keçici layihə yaradılır, onun yolu əməliyyat sisteminizdən asılıdır. İstənilən vaxt layihəni əlverişli yerə köçürə bilərsiniz.

Layihənin əsas məqsədi inkişaf işlərini fayl sistemində saxlamaq və sonra onu versiyaya nəzarət sistemləri, CI skriptləri, dəyişikliklər rəyləri və s. vasitəsilə sinxronizasiya etməkdir.

Dəyişənlər

Dəyişənlər proqramın əsas mexanizmlərindən biridir. TestMace kimi alətlərlə işləyənlər nə haqqında danışdığımızı artıq başa düşə bilərlər. Dəyişənlər paylaşılan məlumatları saxlamaq və qovşaqlar arasında əlaqə yaratmaq üçün bir yoldur. Məsələn, Postman və ya Yuxusuzluqdakı mühit dəyişənlərinə bənzər. Bununla belə, biz bu mövzuda daha da irəli getdik və genişləndik. TestMace-də dəyişənlər qovşaq səviyyəsində təyin edilə bilər. İstənilən node. Dəyişənləri əcdadlardan miras almaq və nəsillərdə dəyişənləri ləğv etmək üçün bir mexanizm də var. Bundan əlavə, bir sıra daxili dəyişənlər var; adları ilə başlayır $. Onlardan bəzilərini təqdim edirik:

  • $prevStep — əvvəlki node dəyişənlərinə istinad
  • $nextStep — növbəti node dəyişənlərinə istinad
  • $parent - eyni, ancaq əcdad üçün
  • $response — serverdən cavab
  • $env — cari mühit dəyişənləri
  • $dynamicVar — skript və ya sorğunun icrası zamanı yaradılmış dinamik dəyişənlər

$env — bunlar mahiyyətcə müntəzəm Layihə qovşağı səviyyəli dəyişənlərdir, lakin ətraf mühit dəyişənləri dəsti seçilmiş mühitdən asılı olaraq dəyişir.

Dəyişən vasitəsilə əldə edilir ${variable_name}
Dəyişənin dəyəri başqa dəyişən, hətta bütün ifadə ola bilər. Məsələn, url dəyişəni formanın ifadəsi ola bilər
http://${host}:${port}/${endpoint}.

Skript icrası zamanı dəyişənləri təyin etmək qabiliyyətini qeyd etmək lazımdır. Məsələn, uğurlu girişdən sonra serverdən alınan avtorizasiya məlumatlarını (token və ya bütün başlıq) saxlamaq çox vaxt lazımdır. TestMace bu cür məlumatları əcdadlardan birinin dinamik dəyişənlərində saxlamağa imkan verir. Mövcud "statik" dəyişənlərlə toqquşmaların qarşısını almaq üçün dinamik dəyişənlər ayrıca obyektdə saxlanılır. $dynamicVar.

Ssenarilər

Yuxarıda göstərilən bütün imkanlardan istifadə edərək, bütün sorğu ssenarilərini icra edə bilərsiniz. Məsələn, obyekt yaradın -> obyekti sorğulayın -> obyekti silin. Bu halda, siz, məsələn, çoxlu RequestStep qovşaqlarını qruplaşdırmaq üçün Qovluq qovşağından istifadə edə bilərsiniz.

Avtomatik tamamlama və ifadə dəyərinin vurğulanması

Avtomatik tamamlama dəyişənlərlə (və digər şeylərlə) rahat işləmək üçün vacibdir. Və təbii ki, ifadə dəyərinin vurğulanması verilən dəyişənin dəyərini aydınlaşdırmağı asanlaşdırır və daha rahat edir. Bu, bir şəklin min sözə dəyər olduğu bir vəziyyətdir:

TestMace - API ilə işləmək üçün güclü IDE

Qeyd etmək lazımdır ki, avtomatik tamamlama yalnız dəyişənlər üçün deyil, həm də başlıqlar, xüsusi başlıq dəyərləri (məsələn, Məzmun Tipi başlıq üçün avtomatik tamamlama), protokollar və daha çox şey üçün həyata keçirilir. Tətbiq böyüdükcə bu siyahı daim genişlənir.

Geri al/təkrar et

Geri al/təkrar etmək çox rahat funksiyadır, lakin nədənsə hər yerdə tətbiq edilmir (o cümlədən API alətləri). Amma biz onlardan deyilik! Geri al/təkrar bütün layihə boyu həyata keçirilir ki, bu da sizə nəinki konkret qovşağın redaktəsini, həm də onun yaradılmasını, silinməsini, hərəkətini və s.-ni ləğv etməyə imkan verir. Ən kritik əməliyyatlar təsdiq tələb edir.

Testlərin yaradılması

Təsdiq nodu testlərin yaradılmasına cavabdehdir. Onun əsas xüsusiyyətlərindən biri proqramlaşdırmadan, daxili redaktorlardan istifadə edərək testlər yaratmaq imkanıdır.

Təsdiq nodu bir sıra təsdiqlərdən ibarətdir. Hər bir iddianın öz növü var; hazırda bir neçə növ iddia var.

  1. Dəyərləri müqayisə edin - sadəcə iki dəyəri müqayisə edin. Bir neçə müqayisə operatoru var: "bərabər", "bərabər deyil", "böyük", "böyük və ya bərabər", "kiçik" və "kiçik və ya bərabər".

  2. Contains value — alt sətirin sətirdə olub olmadığını yoxlayır.

  3. XPath - XML-də selektorun müəyyən bir dəyəri ehtiva etdiyini yoxlayır.

  4. JavaScript təsdiqi müvəffəqiyyətdə doğru, uğursuzluqda isə yalan qaytaran ixtiyari JavaScript skriptidir.

Qeyd edək ki, yalnız sonuncu istifadəçidən proqramlaşdırma bacarığı tələb edir; digər üç təsdiq qrafik interfeysdən istifadə etməklə yaradılmışdır. Müqayisə dəyərləri təsdiqini yaratmaq üçün dialoqun necə göründüyünə bir nümunə:

TestMace - API ilə işləmək üçün güclü IDE

Tortun üzərindəki buzlanma cavabdan tez bir zamanda iddiaların yaradılmasıdır, sadəcə ona baxın!

TestMace - API ilə işləmək üçün güclü IDE

Bununla belə, bu cür iddiaların açıq məhdudiyyətləri var və onlarla qarşılaşdıqda JavaScript təsdiqlərindən istifadə edə bilərsiniz. Burada TestMace həmçinin avtotamamlama, sintaksis işıqlandırma və hətta statik analizator ilə rahat mühit təmin edir.

API Təsviri

TestMace sizə API-dən istifadə etməklə yanaşı, onu sənədləşdirməyə də imkan verir. Təsvirin özü iyerarxik bir quruluşa malikdir və layihənin qalan hissəsinə mükəmməl uyğun gəlir. Bundan əlavə, siz hazırda Swagger 2.0 / OpenAPI 3.0 formatlarından API təsvirlərini idxal edə bilərsiniz. Təsvirin özü sadəcə ölü çəki deyil; o, URL-lərin avtomatik tamamlanması, HTTP başlıqları, sorğu parametrləri və s. daxil olmaqla layihənin qalan hissəsi ilə sıx inteqrasiya edir. Gələcəkdə cavabların API təsvirinə uyğun olduğunu yoxlamaq üçün testlər əlavə etməyi planlaşdırırıq.

Paylaşma qovşaqları

Case: Problemli sorğunu və ya hətta bütün ssenarini həmkarınızla bölüşmək və ya sadəcə onu səhvə əlavə etmək istərdiniz. TestMace bu işi də əhatə edir: proqram istənilən qovşağı və hətta alt ağacı URL-də seriallaşdırmağa imkan verir. Kopyala-yapışdırın və sorğunu asanlıqla başqa maşına və ya layihəyə köçürdünüz.

İnsan tərəfindən oxuna bilən layihə saxlama formatı

Hal-hazırda hər bir qovşaq yml genişləndirilməsi ilə ayrıca faylda (Assertion node-da olduğu kimi) və ya node adı və index.yml faylı olan qovluqda saxlanılır.
Yuxarıdakı baxışda yaratdığımız sorğu faylı belə görünür:

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üyünüz kimi, hər şey aydındır. İstəyirsinizsə, bu format əl ilə redaktə etmək üçün olduqca əlverişlidir.

Fayl sistemindəki qovluq iyerarxiyası layihədəki node iyerarxiyasını tamamilə əks etdirir. Məsələn, belə bir ssenari:

TestMace - API ilə işləmək üçün güclü IDE

Aşağıdakı fayl sistemi strukturuna uyğunlaşdırılıb (yalnız qovluq iyerarxiyası göstərilir, lakin mahiyyət aydındır):

TestMace - API ilə işləmək üçün güclü IDE

Bu da layihənin nəzərdən keçirilməsi prosesini asanlaşdırır.

Poçtalyondan idxal

Yuxarıdakıların hamısını oxuduqdan sonra bəzi istifadəçilər yeni məhsulu sınamaq (doğru?) və ya (kim bilir!) layihələrində ondan tam istifadə etmək istəyəcəklər. Bununla belə, məsələn, Postmanda çox sayda inkişaf miqrasiyaya mane ola bilər. Belə hallar üçün TestMace Postman-dan kolleksiyaların idxalını dəstəkləyir. Hazırda testsiz idxal dəstəklənir, lakin biz də gələcəkdə onları dəstəkləyə bilərik.

Planlar

Ümid edirəm ki, bu günə qədər oxuyan bir çoxunuz məhsulumuzdan zövq aldınız. Ancaq bu, hamısı deyil! Biz hələ də bunun üzərində işləyirik və burada tezliklə əlavə etməyi planlaşdırdığımız bəzi funksiyalar var.

Bulud sinxronizasiyası

Ən çox tələb olunan xüsusiyyətlərdən biri. Hal-hazırda, biz versiyaya nəzarət sistemlərindən istifadə edərək sinxronizasiya təklif edirik, buna görə də formatı daha çox istifadəçi dostu edirik. Bununla belə, bu iş axını hər kəs üçün uyğun deyil, ona görə də biz serverlərimiz vasitəsilə daha tanış sinxronizasiya mexanizmi əlavə etməyi planlaşdırırıq.

CLI

Yuxarıda qeyd edildiyi kimi, IDE səviyyəli məhsullar mövcud proqramlar və ya iş axınları ilə hər cür inteqrasiya tələb edir. TestMace-də yazılmış testləri davamlı inteqrasiya prosesinə inteqrasiya etmək üçün CLI vacibdir. CLI üzərində iş tam sürətlə gedir və ilkin versiyalar sadə konsol hesabatı ilə layihənin işə salınmasını əhatə edəcək. Gələcək üçün JUnit formatında hesabatın çıxarılması planlaşdırılır.

Plugin sistemi

Alətimizin gücünə baxmayaraq, həllər tələb edən istifadə hallarının çeşidi sonsuzdur. Nəhayət, bəzi vəzifələr müəyyən bir layihəyə xasdır. Buna görə də biz gələcəkdə plaginlərin inkişafı üçün SDK əlavə etməyi planlaşdırırıq ki, hər bir tərtibatçı öz ehtiyaclarına uyğun funksionallıq əlavə edə bilsin.

Düyün növlərinin diapazonunun genişləndirilməsi

Bu qovşaqlar dəsti istifadəçinin tələb etdiyi bütün istifadə hallarını əhatə etmir. Əlavə edilməsi planlaşdırılan qovşaqlar:

  • Skript nodu JavaScript və müvafiq API istifadə edərək məlumatları çevirir və yerləşdirir. Bu növ qovşaqdan istifadə edərək, Postman-da əvvəlcədən sorğu və sorğu sonrası skriptlərə bənzər şeyləri həyata keçirə bilərsiniz.
  • GraphQL node - graphql dəstəyi
  • Xüsusi təsdiq node - layihədə mövcud təsdiqlər dəstini genişləndirməyə imkan verəcək
    Təbii ki, bu yekun siyahı deyil; rəyiniz də daxil olmaqla, daim yenilənəcəkdir.

FAQ

Poçtalyondan nə ilə fərqlənirsiniz?

  1. Layihənin funksionallığının demək olar ki, sonsuz miqyasına imkan verən qovşaqlar konsepsiyası
  2. Fayl sistemində saxlanılan, versiyaya nəzarət sistemləri ilə işləməyi asanlaşdıran insan tərəfindən oxuna bilən layihə formatı.
  3. Test redaktorunda proqramlaşdırma və daha təkmil JavaScript dəstəyi olmadan testlər yaratmaq imkanı (avtomatik tamamlama, statik analizator)
  4. Təkmil avtomatik tamamlama və cari dəyişən dəyərin vurğulanması

Bu açıq mənbəli məhsuldur?

Xeyr, mənbə kodu hazırda bağlıdır, lakin gələcəkdə mənbə kodunu açmağı düşünürük.

Necə dolanırsınız?

Pulsuz versiya ilə yanaşı, məhsulun pullu versiyasını da buraxmağı planlaşdırırıq. Bu, ilk növbədə sinxronizasiya kimi server tərəfi komponenti tələb edən funksiyaları əhatə edəcək.

Nəticə

Layihəmiz sabit buraxılışa doğru sürətlə irəliləyir. Bununla belə, məhsul artıq istifadəyə yararlıdır və ilk istifadəçilərimizin müsbət rəyləri bunu təsdiqləyir. İcma ilə sıx əməkdaşlıq etmədən yaxşı alət yaratmaq mümkün olmadığı üçün biz fəal şəkildə rəy toplayırıq. Bizi burada tapa bilərsiniz:

Rəsmi saytında

Teleqram

Süstlük

Facebook

Problem izləyicisi

İstək və təkliflərinizi gözləyirik!

Mənbə: www.habr.com

Добавить комментарий