TestMace - IDE yang berkuasa untuk bekerja dengan API

Hai semua! Hari ini kami ingin membentangkan kepada orang ramai IT produk kami - IDE untuk bekerja dengan API TestMace. Mungkin sebahagian daripada anda sudah mengetahui tentang kami dari artikel sebelumnya. Walau bagaimanapun, tiada semakan menyeluruh terhadap alat itu, jadi kami menangani kekurangan malang ini.

TestMace - IDE yang berkuasa untuk bekerja dengan API

Motivasi

Saya ingin bermula dengan bagaimana, sebenarnya, kami datang ke kehidupan ini dan memutuskan untuk mencipta alat kami sendiri untuk kerja lanjutan dengan API. Mari kita mulakan dengan senarai kefungsian yang perlu ada pada produk, yang pada pendapat kami, kita boleh mengatakan bahawa ia adalah "IDE untuk bekerja dengan API":

  • Mencipta dan melaksanakan pertanyaan dan skrip (urutan pertanyaan)
  • Menulis pelbagai jenis ujian
  • Penjanaan ujian
  • Bekerja dengan perihalan API, termasuk mengimport daripada format seperti Swagger, OpenAPI, WADL, dsb.
  • Permintaan mengejek
  • Sokongan yang baik untuk satu atau lebih bahasa untuk menulis skrip, termasuk penyepaduan dengan perpustakaan popular
  • dan lain-lain

Senarai boleh dikembangkan mengikut citarasa anda. Selain itu, adalah penting untuk mencipta bukan sahaja IDE itu sendiri, tetapi juga infrastruktur tertentu, seperti penyegerakan awan, alat baris arahan, perkhidmatan pemantauan dalam talian, dll. Akhirnya, trend beberapa tahun kebelakangan ini menentukan kepada kami bukan sahaja kefungsian aplikasi yang berkuasa, tetapi juga antara muka yang menyenangkan.

Siapa yang memerlukan alat sedemikian? Jelas sekali, semua mereka yang sekurang-kurangnya entah bagaimana berhubung dengan pembangunan dan ujian API adalah pembangun dan penguji =). Lebih-lebih lagi, jika untuk yang pertama selalunya cukup untuk melaksanakan pertanyaan tunggal dan skrip mudah, maka untuk penguji ini adalah salah satu alat utama, yang, antara lain, harus memasukkan mekanisme yang kuat untuk menulis ujian dengan keupayaan untuk menjalankannya dalam CI.

Jadi, mengikut garis panduan ini, kami mula mencipta produk kami. Mari kita lihat apa yang telah kita capai pada peringkat ini.

Permulaan yang cepat

Mari kita mulakan dengan kenalan pertama dengan permohonan itu. Anda boleh memuat turunnya di laman web kami. Pada masa ini, kesemua 3 platform utama disokong - Windows, Linux, MacOS. Muat turun, pasang, lancarkan. Apabila anda melancarkannya buat kali pertama, anda mungkin melihat tetingkap berikut:

TestMace - IDE yang berkuasa untuk bekerja dengan API

Klik pada tanda tambah di bahagian atas kawasan kandungan untuk membuat permintaan pertama anda. Tab pertanyaan kelihatan seperti ini:

TestMace - IDE yang berkuasa untuk bekerja dengan API

Mari kita lihat dengan lebih terperinci. Antara muka permintaan sangat serupa dengan antara muka pelanggan rehat yang popular, yang menjadikan pemindahan daripada alat serupa lebih mudah. Mari buat permintaan pertama ke url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - IDE yang berkuasa untuk bekerja dengan API

Secara umum, pada pandangan pertama, panel tindak balas juga tidak menimbulkan sebarang kejutan. Walau bagaimanapun, saya ingin menarik perhatian anda kepada beberapa perkara:

  1. Badan respons diwakili dalam bentuk pokok, yang pertama sekali menambah kandungan maklumat dan kedua membolehkan anda menambah beberapa ciri menarik tentang yang di bawah
  2. Terdapat tab Penegasan, yang memaparkan senarai ujian untuk permintaan yang diberikan

Seperti yang anda lihat, alat kami boleh digunakan sebagai pelanggan rehat yang selesa. Walau bagaimanapun, kami tidak akan berada di sini jika keupayaannya terhad hanya untuk menghantar permintaan. Seterusnya, saya akan menggariskan konsep asas dan fungsi TestMace.

Konsep dan Ciri Asas

Simpul

Fungsi TestMace dibahagikan kepada pelbagai jenis nod. Dalam contoh di atas, kami menunjukkan operasi nod RequestStep. Walau bagaimanapun, jenis nod berikut kini turut tersedia dalam aplikasi:

  • RequestStep. Ini adalah nod di mana anda boleh membuat permintaan. Ia hanya boleh mempunyai satu nod Penegasan sebagai elemen anak.
  • Penegasan. Nod digunakan untuk menulis ujian. Hanya boleh menjadi nod anak bagi nod RequestStep.
  • folder. Membolehkan anda mengumpulkan nod Folder dan RequestStep dalam diri mereka sendiri.
  • Projek. Ini ialah nod akar, dicipta secara automatik apabila projek dibuat. Jika tidak, ia mengulangi kefungsian nod Folder.
  • Pautan. Pautan ke nod Folder atau RequestStep. Membolehkan anda menggunakan semula pertanyaan dan skrip.
  • dan lain-lain

Nod terletak dalam calar (panel di bahagian bawah sebelah kiri, digunakan untuk membuat pertanyaan "sekali sahaja" dengan cepat) dan dalam projek (panel di sebelah kiri atas), yang akan kami bincangkan dengan lebih terperinci.

Projek

Apabila anda melancarkan aplikasi, anda mungkin melihat baris Projek tunggal di penjuru kiri sebelah atas. Ini adalah akar pokok projek. Apabila anda memulakan projek, projek sementara dibuat, laluannya bergantung pada sistem pengendalian anda. Pada bila-bila masa anda boleh memindahkan projek ke tempat yang sesuai untuk anda.

Tujuan utama projek adalah keupayaan untuk menyimpan perkembangan dalam sistem fail dan menyegerakkannya lagi melalui sistem kawalan versi, menjalankan skrip dalam CI, menyemak perubahan, dsb.

Pembolehubah

Pembolehubah adalah salah satu mekanisme utama aplikasi. Anda yang bekerja dengan alatan seperti TestMace mungkin sudah mempunyai idea tentang perkara yang kami bincangkan. Jadi, pembolehubah ialah cara untuk menyimpan data biasa dan berkomunikasi antara nod. Analog, sebagai contoh, adalah pembolehubah persekitaran dalam Posmen atau Insomnia. Walau bagaimanapun, kami pergi lebih jauh dan mengembangkan topik tersebut. Dalam TestMace, pembolehubah boleh ditetapkan pada tahap nod. mana-mana. Terdapat juga mekanisme untuk mewarisi pembolehubah daripada nenek moyang dan pembolehubah bertindih dalam keturunan. Di samping itu terdapat beberapa pembolehubah terbina dalam, nama pembolehubah terbina dalam bermula dengan $. Berikut adalah sebahagian daripada mereka:

  • $prevStep β€” pautan ke pembolehubah nod sebelumnya
  • $nextStep β€” pautan ke pembolehubah nod seterusnya
  • $parent - perkara yang sama, tetapi hanya untuk moyang
  • $response - respons daripada pelayan
  • $env - pembolehubah persekitaran semasa
  • $dynamicVar - pembolehubah dinamik yang dicipta semasa skrip atau pelaksanaan pertanyaan

$env - ini pada asasnya pembolehubah tahap nod Projek biasa, bagaimanapun, set pembolehubah persekitaran berubah bergantung pada persekitaran yang dipilih.

Pembolehubah diakses melalui ${variable_name}
Nilai pembolehubah boleh menjadi pembolehubah lain, atau bahkan keseluruhan ungkapan. Sebagai contoh, pembolehubah url boleh menjadi ungkapan seperti
http://${host}:${port}/${endpoint}.

Secara berasingan, perlu diperhatikan kemungkinan menetapkan pembolehubah semasa pelaksanaan skrip. Sebagai contoh, selalunya terdapat keperluan untuk menyimpan data kebenaran (token atau keseluruhan pengepala) yang datang daripada pelayan selepas log masuk yang berjaya. TestMace membolehkan anda menyimpan data tersebut ke dalam pembolehubah dinamik salah satu nenek moyang. Untuk mengelakkan perlanggaran dengan pembolehubah "statik" sedia ada, pembolehubah dinamik diletakkan dalam objek yang berasingan $dynamicVar.

Senario

Menggunakan semua ciri di atas, anda boleh menjalankan keseluruhan skrip pertanyaan. Contohnya, mencipta entiti -> menanyakan entiti -> memadamkan entiti. Dalam kes ini, sebagai contoh, anda boleh menggunakan nod Folder untuk mengumpulkan beberapa nod RequestStep.

Autolengkap dan penyerlahan ekspresi

Untuk kerja mudah dengan pembolehubah (dan bukan sahaja) autolengkap diperlukan. Dan sudah tentu, menyerlahkan nilai ungkapan untuk menjadikannya lebih mudah dan lebih mudah untuk menjelaskan maksud pembolehubah tertentu. Ini betul-betul berlaku apabila lebih baik untuk melihat sekali daripada mendengar seratus kali:

TestMace - IDE yang berkuasa untuk bekerja dengan API

Perlu diingat bahawa autolengkap dilaksanakan bukan sahaja untuk pembolehubah, tetapi juga, sebagai contoh, untuk pengepala, nilai pengepala tertentu (contohnya, autolengkap untuk pengepala Jenis Kandungan), protokol dan banyak lagi. Senarai ini sentiasa dikemas kini apabila aplikasi berkembang.

Buat asal/buat semula

Membuat asal/buat semula perubahan adalah perkara yang sangat mudah, tetapi atas sebab tertentu ia tidak dilaksanakan di mana-mana (dan alat untuk bekerja dengan API tidak terkecuali). Tetapi kami bukan salah seorang daripada mereka!) Kami telah melaksanakan buat asal/buat semula sepanjang keseluruhan projek, yang membolehkan anda membuat asal bukan sahaja mengedit nod tertentu, tetapi juga penciptaan, pemadaman, pergerakan, dsb. Operasi yang paling kritikal memerlukan pengesahan.

Mencipta ujian

Nod Penegasan bertanggungjawab untuk mencipta ujian. Salah satu ciri utama ialah keupayaan untuk membuat ujian tanpa pengaturcaraan, menggunakan editor terbina dalam.

Nod Penegasan terdiri daripada satu set penegasan. Setiap penegasan mempunyai jenisnya sendiri; pada masa ini terdapat beberapa jenis penegasan

  1. Bandingkan nilai - hanya membandingkan 2 nilai. Terdapat beberapa pengendali perbandingan: sama, tidak sama, lebih besar daripada, lebih besar daripada atau sama dengan, kurang daripada, kurang daripada atau sama dengan.

  2. Mengandungi nilai - menyemak kejadian subrentetan dalam rentetan.

  3. XPath - menyemak bahawa pemilih dalam XML mengandungi nilai tertentu.

  4. Penegasan JavaScript ialah skrip javascript sewenang-wenangnya yang mengembalikan benar pada kejayaan dan palsu apabila gagal.

Saya perhatikan bahawa hanya yang terakhir memerlukan kemahiran pengaturcaraan daripada pengguna, 3 pernyataan lain dibuat menggunakan antara muka grafik. Di sini, sebagai contoh, ialah rupa dialog untuk membuat penegasan nilai perbandingan:

TestMace - IDE yang berkuasa untuk bekerja dengan API

Ais pada kek adalah penciptaan cepat penegasan daripada respons, lihat sahaja!

TestMace - IDE yang berkuasa untuk bekerja dengan API

Walau bagaimanapun, penegasan sedemikian mempunyai had yang jelas, yang anda mungkin mahu menggunakan penegasan javascript untuk mengatasinya. Dan di sini TestMace juga menyediakan persekitaran yang selesa dengan autolengkap, penonjolan sintaks dan juga penganalisis statik.

Penerangan API

TestMace membolehkan anda bukan sahaja menggunakan API, tetapi juga untuk mendokumenkannya. Selain itu, penerangan itu sendiri juga mempunyai struktur hierarki dan sesuai secara organik ke dalam keseluruhan projek. Di samping itu, pada masa ini adalah mungkin untuk mengimport perihalan API daripada format Swagger 2.0 / OpenAPI 3.0. Perihalan itu sendiri bukan sahaja terletak pada beratnya, tetapi disepadukan rapat dengan seluruh projek, khususnya, pelengkapan automatik URL, pengepala HTTP, parameter pertanyaan, dll. tersedia, dan pada masa hadapan kami merancang untuk menambah ujian untuk pematuhan respons dengan perihalan API.

Berkongsi nod

Kes: anda ingin berkongsi permintaan yang bermasalah atau bahkan keseluruhan skrip dengan rakan sekerja atau hanya melampirkannya pada pepijat. TestMace merangkumi kes ini juga: aplikasi membenarkan anda untuk mensiri mana-mana nod dan juga subpokok dalam URL. Salin-tampal dan anda boleh memindahkan permintaan dengan mudah ke mesin atau projek lain.

Format storan projek yang boleh dibaca manusia

Pada masa ini, setiap nod disimpan dalam fail berasingan dengan sambungan yml (seperti halnya dengan nod Penegasan), atau dalam folder dengan nama nod dan fail index.yml di dalamnya.
Sebagai contoh, ini adalah rupa fail permintaan yang kami buat dalam semakan di atas:

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

Seperti yang anda lihat, semuanya sangat jelas. Jika dikehendaki, format ini boleh diedit dengan mudah secara manual.

Hierarki folder dalam sistem fail mengulangi sepenuhnya hierarki nod dalam projek. Sebagai contoh, skrip seperti:

TestMace - IDE yang berkuasa untuk bekerja dengan API

Petakan sistem fail kepada struktur berikut (hanya hierarki folder ditunjukkan, tetapi intipatinya jelas)

TestMace - IDE yang berkuasa untuk bekerja dengan API

Ini menjadikan proses semakan projek lebih mudah.

Import dari Posmen

Selepas membaca semua perkara di atas, sesetengah pengguna akan mahu mencuba (kan?) produk baharu atau (apa yang bukan main-main!) menggunakannya sepenuhnya dalam projek mereka. Walau bagaimanapun, penghijrahan boleh dihentikan oleh sejumlah besar perkembangan dalam Posmen yang sama. Untuk kes sedemikian, TestMace menyokong mengimport koleksi daripada Postman. Pada masa ini, import tanpa ujian disokong, tetapi kami tidak menolak untuk menyokongnya pada masa hadapan.

Rancangan

Saya harap ramai di antara mereka yang telah membaca sehingga ke tahap ini menyukai produk kami. Namun, bukan itu sahaja! Kerja pada produk sedang giat dijalankan dan berikut ialah beberapa ciri yang kami merancang untuk menambah tidak lama lagi.

Penyegerakan awan

Salah satu ciri yang paling diminta. Pada masa ini, kami mencadangkan menggunakan sistem kawalan versi untuk penyegerakan, yang mana kami menjadikan format lebih mesra untuk jenis storan ini. Walau bagaimanapun, aliran kerja ini tidak sesuai untuk semua orang, jadi kami merancang untuk menambah mekanisme penyegerakan yang biasa kepada ramai melalui pelayan kami.

CLI

Seperti yang dinyatakan di atas, produk peringkat IDE tidak boleh dilakukan tanpa semua jenis penyepaduan dengan aplikasi atau aliran kerja sedia ada. CLI adalah apa yang diperlukan untuk menyepadukan ujian yang ditulis dalam TestMace ke dalam proses penyepaduan berterusan. Kerja pada CLI sedang giat dijalankan; versi awal akan melancarkan projek dengan laporan konsol ringkas. Pada masa hadapan kami merancang untuk menambah output laporan dalam format JUnit.

Sistem pemalam

Walaupun semua kuasa alat kami, set kes yang memerlukan penyelesaian adalah tidak terhad. Lagipun, terdapat tugas yang khusus untuk projek tertentu. Itulah sebabnya pada masa hadapan kami merancang untuk menambah SDK untuk membangunkan pemalam dan setiap pembangun akan dapat menambah fungsi mengikut keinginan mereka.

Memperluas julat jenis nod

Set nod ini tidak meliputi semua kes yang diperlukan oleh pengguna. Nod yang dirancang untuk ditambah:

  • Nod skrip - menukar dan meletakkan data menggunakan js dan API yang sepadan. Menggunakan jenis nod ini, anda boleh melakukan perkara seperti skrip pra-permintaan dan pasca-permintaan dalam Posman.
  • Nod GraphQL - sokongan graphql
  • Nod penegasan tersuai - akan membolehkan anda mengembangkan set penegasan sedia ada dalam projek
    Sememangnya, ini bukan senarai akhir; ia akan sentiasa dikemas kini disebabkan, antara lain, maklum balas anda.

Soalan Lazim

Apakah perbezaan anda dengan Posmen?

  1. Konsep nod, yang membolehkan anda membuat skala kefungsian projek secara hampir tanpa henti
  2. Format projek yang boleh dibaca manusia dengan menyimpannya dalam sistem fail, yang memudahkan kerja menggunakan sistem kawalan versi
  3. Keupayaan untuk membuat ujian tanpa pengaturcaraan dan sokongan js yang lebih maju dalam editor ujian (pelengkapan automatik, penganalisis statik)
  4. Autolengkap lanjutan dan penonjolan nilai semasa pembolehubah

Adakah ini produk sumber terbuka?

Tidak, pada masa ini sumber ditutup, tetapi pada masa hadapan kami sedang mempertimbangkan kemungkinan membuka sumber

Apa yang anda hidup?)

Bersama-sama dengan versi percuma, kami merancang untuk mengeluarkan versi berbayar produk. Ia terutamanya akan merangkumi perkara yang memerlukan bahagian pelayan, contohnya, penyegerakan.

Kesimpulan

Projek kami bergerak dengan pesat ke arah keluaran yang stabil. Walau bagaimanapun, produk itu sudah boleh digunakan, dan maklum balas positif daripada pengguna awal kami adalah buktinya. Kami secara aktif mengumpul maklum balas, kerana tanpa kerjasama rapat dengan komuniti adalah mustahil untuk membina alat yang baik. Anda boleh mencari kami di sini:

Laman web rasmi

Telegram

Slack

Facebook

Penjejak isu

Kami menantikan hasrat dan cadangan anda!

Sumber: www.habr.com

Tambah komen