TestMace - IDE yang kuat untuk bekerja dengan API

Halo semua! Hari ini kami ingin memperkenalkan produk kami kepada publik TI - sebuah IDE untuk bekerja dengan API TesGada. Mungkin sebagian dari Anda sudah mengetahui tentang kami dari artikel sebelumnya. Namun, belum ada tinjauan komprehensif terhadap alat ini, jadi kami mengatasi kekurangan yang disayangkan ini.

TestMace - IDE yang kuat untuk bekerja dengan API

Motivasi

Saya ingin memulai dengan bagaimana, sebenarnya, kami memasuki kehidupan ini dan memutuskan untuk membuat alat kami sendiri untuk pekerjaan tingkat lanjut dengan API. Mari kita mulai dengan daftar fungsionalitas yang harus dimiliki suatu produk, yang menurut pendapat kami, dapat kami katakan sebagai "IDE untuk bekerja dengan API":

  • Membuat dan mengeksekusi kueri dan skrip (urutan kueri)
  • Menulis berbagai macam tes
  • Generasi tes
  • Bekerja dengan deskripsi API, termasuk mengimpor dari format seperti Swagger, OpenAPI, WADL, dll.
  • Permintaan mengejek
  • Dukungan yang baik untuk satu atau lebih bahasa untuk menulis skrip, termasuk integrasi dengan perpustakaan populer
  • dan lain-lain

Daftarnya dapat diperluas sesuai selera Anda. Selain itu, penting untuk membuat tidak hanya IDE itu sendiri, tetapi juga infrastruktur tertentu, seperti sinkronisasi cloud, alat baris perintah, layanan pemantauan online, dll. Pada akhirnya, tren beberapa tahun terakhir tidak hanya menentukan fungsionalitas aplikasi yang kuat, tetapi juga antarmukanya yang menyenangkan.

Siapa yang butuh alat seperti itu? Jelasnya, semua orang yang setidaknya terhubung dengan pengembangan dan pengujian API adalah pengembang dan penguji =). Selain itu, jika untuk yang pertama sering kali cukup menjalankan kueri tunggal dan skrip sederhana, maka bagi penguji ini adalah salah satu alat utama, yang, antara lain, harus mencakup mekanisme yang kuat untuk menulis pengujian dengan kemampuan untuk menjalankannya di CI.

Jadi, dengan mengikuti panduan ini, kami mulai membuat produk kami. Mari kita lihat apa yang telah kita capai pada tahap ini.

Mulai cepat

Mari kita mulai dengan perkenalan pertama dengan aplikasi tersebut. Anda dapat mengunduhnya di situs web kami. Saat ini, ketiga platform utama didukung - Windows, Linux, MacOS. Unduh, instal, luncurkan. Saat Anda meluncurkannya untuk pertama kali, Anda mungkin melihat jendela berikut:

TestMace - IDE yang kuat untuk bekerja dengan API

Klik tanda tambah di bagian atas area konten untuk membuat permintaan pertama Anda. Tab kueri terlihat seperti ini:

TestMace - IDE yang kuat untuk bekerja dengan API

Mari kita lihat lebih detail. Antarmuka permintaan sangat mirip dengan antarmuka klien lain yang populer, yang membuat migrasi dari alat serupa menjadi lebih mudah. Mari kita buat permintaan pertama ke url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - IDE yang kuat untuk bekerja dengan API

Secara umum, sekilas, panel respons juga tidak memberikan kejutan apa pun. Namun, saya ingin menarik perhatian Anda pada beberapa hal:

  1. Isi respons direpresentasikan dalam bentuk pohon, yang pertama menambahkan konten informasi dan kedua memungkinkan Anda menambahkan beberapa fitur menarik yang akan dijelaskan di bawah ini
  2. Ada tab Pernyataan, yang menampilkan daftar pengujian untuk permintaan tertentu

Seperti yang Anda lihat, alat kami dapat digunakan sebagai klien istirahat yang nyaman. Namun, kami tidak akan berada di sini jika kemampuannya hanya sebatas mengirimkan permintaan. Selanjutnya, saya akan menjelaskan konsep dasar dan fungsionalitas TestMace.

Konsep dan Fitur Dasar

Knot

Fungsionalitas TestMace dibagi menjadi beberapa jenis node. Pada contoh di atas, kami mendemonstrasikan pengoperasian node RequestStep. Namun, jenis node berikut kini juga tersedia di aplikasi:

  • PermintaanLangkah. Ini adalah simpul yang melaluinya Anda dapat membuat permintaan. Ia hanya dapat memiliki satu node Assertion sebagai elemen turunannya.
  • Tuntutan. Node digunakan untuk menulis tes. Hanya dapat menjadi node anak dari node RequestStep.
  • Map. Memungkinkan Anda mengelompokkan node Folder dan RequestStep di dalamnya.
  • Proyek. Ini adalah node root, yang dibuat secara otomatis saat proyek dibuat. Jika tidak, ini akan mengulangi fungsi node Folder.
  • Tautan. Tautan ke node Folder atau RequestStep. Memungkinkan Anda menggunakan kembali kueri dan skrip.
  • dan lain-lain

Node-node tersebut terletak di goresan (panel di kiri bawah, digunakan untuk membuat kueri "satu kali" dengan cepat) dan dalam proyek (panel di kiri atas), yang akan kita bahas lebih detail.

Proyek

Saat Anda meluncurkan aplikasi, Anda mungkin melihat satu-satunya baris Proyek di sudut kiri atas. Ini adalah akar dari pohon proyek. Saat Anda memulai sebuah proyek, proyek sementara dibuat, jalurnya bergantung pada sistem operasi Anda. Kapan saja Anda dapat memindahkan proyek ke tempat yang nyaman bagi Anda.

Tujuan utama dari proyek ini adalah kemampuan untuk menyimpan pengembangan dalam sistem file dan menyinkronkannya lebih lanjut melalui sistem kontrol versi, menjalankan skrip di CI, meninjau perubahan, dll.

Variabel

Variabel adalah salah satu mekanisme utama suatu aplikasi. Anda yang bekerja dengan alat seperti TestMace mungkin sudah memiliki gambaran tentang apa yang sedang kita bicarakan. Jadi, variabel adalah cara untuk menyimpan data umum dan berkomunikasi antar node. Analoginya, misalnya, adalah variabel lingkungan di Postman atau Insomnia. Namun, kami melangkah lebih jauh dan mengembangkan topik tersebut. Di TestMace, variabel dapat diatur di tingkat node. Setiap. Ada pula mekanisme pewarisan variabel dari nenek moyang dan tumpang tindih variabel pada keturunannya. Selain itu ada beberapa variabel bawaan, nama variabel bawaan diawali dengan $. Inilah beberapa di antaranya:

  • $prevStep β€” tautan ke variabel dari node sebelumnya
  • $nextStep β€” tautan ke variabel dari node berikutnya
  • $parent - Hal yang sama, tetapi hanya untuk nenek moyang
  • $response - respon dari server
  • $env - variabel lingkungan saat ini
  • $dynamicVar - variabel dinamis yang dibuat selama eksekusi skrip atau kueri

$env - ini pada dasarnya adalah variabel tingkat node Proyek biasa, namun kumpulan variabel lingkungan berubah tergantung pada lingkungan yang dipilih.

Variabel diakses melalui ${variable_name}
Nilai suatu variabel dapat berupa variabel lain, atau bahkan keseluruhan ekspresi. Misalnya, variabel url dapat berupa ekspresi seperti
http://${host}:${port}/${endpoint}.

Secara terpisah, perlu diperhatikan kemungkinan menetapkan variabel selama eksekusi skrip. Misalnya, sering kali ada kebutuhan untuk menyimpan data otorisasi (token atau keseluruhan header) yang datang dari server setelah login berhasil. TestMace memungkinkan Anda menyimpan data tersebut ke dalam variabel dinamis salah satu nenek moyang. Untuk menghindari benturan dengan variabel β€œstatis” yang sudah ada, variabel dinamis ditempatkan pada objek terpisah $dynamicVar.

Skenario

Dengan menggunakan semua fitur di atas, Anda dapat menjalankan seluruh skrip kueri. Misalnya, membuat entitas -> menanyakan entitas -> menghapus entitas. Dalam kasus ini, misalnya, Anda dapat menggunakan simpul Folder untuk mengelompokkan beberapa simpul RequestStep.

Pelengkapan otomatis dan penyorotan ekspresi

Untuk pekerjaan yang mudah dengan variabel (dan tidak hanya) pelengkapan otomatis diperlukan. Dan tentu saja, menyorot nilai suatu ekspresi agar lebih mudah dan nyaman untuk memperjelas apa yang setara dengan variabel tertentu. Inilah yang terjadi ketika lebih baik melihat sekali daripada mendengar seratus kali:

TestMace - IDE yang kuat untuk bekerja dengan API

Perlu dicatat bahwa pelengkapan otomatis diimplementasikan tidak hanya untuk variabel, tetapi juga, misalnya, untuk header, nilai header tertentu (misalnya, pelengkapan otomatis untuk header Tipe Konten), protokol, dan banyak lagi. Daftar ini terus diperbarui seiring berkembangnya aplikasi.

Batalkan/ulangi

Membatalkan/mengulangi perubahan adalah hal yang sangat mudah, tetapi karena alasan tertentu hal ini tidak diterapkan di semua tempat (dan alat untuk bekerja dengan API tidak terkecuali). Tapi kami bukan salah satu dari mereka!) Kami telah menerapkan undo/redo di seluruh proyek, yang memungkinkan Anda untuk membatalkan tidak hanya pengeditan node tertentu, tetapi juga pembuatan, penghapusan, pemindahan, dll. Operasi yang paling kritis memerlukan konfirmasi.

Membuat tes

Node Assertion bertanggung jawab untuk membuat pengujian. Salah satu fitur utamanya adalah kemampuan untuk membuat pengujian tanpa pemrograman, menggunakan editor bawaan.

Node Pernyataan terdiri dari sekumpulan pernyataan. Setiap pernyataan mempunyai jenisnya masing-masing, saat ini terdapat beberapa jenis pernyataan

  1. Bandingkan nilai - cukup bandingkan 2 nilai. Ada beberapa operator perbandingan: sama, tidak sama, lebih besar dari, lebih besar atau sama dengan, kurang dari, kurang dari atau sama dengan.

  2. Berisi nilai - memeriksa kemunculan substring dalam sebuah string.

  3. XPath - memeriksa apakah pemilih dalam XML berisi nilai tertentu.

  4. Penegasan JavaScript adalah skrip javascript arbitrer yang mengembalikan nilai benar jika berhasil dan salah jika gagal.

Saya perhatikan bahwa hanya yang terakhir yang memerlukan keterampilan pemrograman dari pengguna, 3 pernyataan lainnya dibuat menggunakan antarmuka grafis. Di sini, misalnya, dialog untuk membuat pernyataan nilai perbandingan terlihat seperti:

TestMace - IDE yang kuat untuk bekerja dengan API

Yang paling menarik adalah pembuatan pernyataan dengan cepat dari tanggapan, lihat saja!

TestMace - IDE yang kuat untuk bekerja dengan API

Namun, pernyataan tersebut memiliki keterbatasan yang jelas, sehingga Anda mungkin ingin menggunakan pernyataan javascript untuk mengatasinya. Dan di sini TestMace juga menyediakan lingkungan yang nyaman dengan pelengkapan otomatis, penyorotan sintaksis, dan bahkan penganalisis statis.

Deskripsi API

TestMace memungkinkan Anda tidak hanya menggunakan API, tetapi juga mendokumentasikannya. Selain itu, deskripsinya sendiri juga memiliki struktur hierarki dan cocok secara organik dengan keseluruhan proyek. Selain itu, saat ini dimungkinkan untuk mengimpor deskripsi API dari format Swagger 2.0/OpenAPI 3.0. Deskripsi itu sendiri tidak hanya menjadi bobot mati, tetapi terintegrasi erat dengan sisa proyek, khususnya, pelengkapan otomatis URL, header HTTP, parameter kueri, dll. tersedia, dan di masa mendatang kami berencana untuk menambahkan pengujian untuk kepatuhan respons dengan deskripsi API.

Node berbagi

Kasus: Anda ingin membagikan permintaan yang bermasalah atau bahkan seluruh skrip dengan rekan kerja atau sekadar melampirkannya ke bug. TestMace juga mencakup kasus ini: aplikasi ini memungkinkan Anda membuat serialisasi node apa pun dan bahkan subpohon dalam URL. Salin-tempel dan Anda dapat dengan mudah mentransfer permintaan ke komputer atau proyek lain.

Format penyimpanan proyek yang dapat dibaca manusia

Saat ini, setiap node disimpan dalam file terpisah dengan ekstensi yml (seperti halnya node Assertion), atau dalam folder dengan nama node dan file index.yml di dalamnya.
Sebagai contoh, seperti inilah tampilan file request yang kami buat pada ulasan di atas:

indeks.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 diinginkan, format ini dapat dengan mudah diedit secara manual.

Hirarki folder dalam sistem file sepenuhnya mengulangi hierarki node dalam proyek. Misalnya skrip seperti:

TestMace - IDE yang kuat untuk bekerja dengan API

Memetakan sistem file ke struktur berikut (hanya hierarki folder yang ditampilkan, tetapi intinya jelas)

TestMace - IDE yang kuat untuk bekerja dengan API

Hal ini membuat proses peninjauan proyek menjadi lebih mudah.

Impor dari Tukang Pos

Setelah membaca semua hal di atas, beberapa pengguna mungkin ingin mencoba (kan?) produk baru atau (yang tidak bercanda!) menggunakannya sepenuhnya dalam proyek mereka. Namun, migrasi dapat dihentikan dengan sejumlah besar pembangunan di Postman yang sama. Untuk kasus seperti itu, TestMace mendukung pengimporan koleksi dari Tukang Pos. Saat ini, impor tanpa pengujian didukung, namun kami tidak menutup kemungkinan untuk mendukungnya di masa mendatang.

Rencana

Saya berharap banyak dari mereka yang telah membaca hingga saat ini menyukai produk kami. Namun, bukan itu saja! Pengerjaan produk sedang berjalan lancar dan berikut adalah beberapa fitur yang kami rencanakan untuk segera ditambahkan.

Sinkronisasi awan

Salah satu fitur yang paling banyak diminta. Saat ini, kami mengusulkan penggunaan sistem kontrol versi untuk sinkronisasi, yang mana kami membuat formatnya lebih ramah untuk jenis penyimpanan ini. Namun, alur kerja ini tidak cocok untuk semua orang, jadi kami berencana untuk menambahkan mekanisme sinkronisasi yang familiar bagi banyak orang melalui server kami.

CLI

Seperti disebutkan di atas, produk tingkat IDE tidak dapat berjalan tanpa segala macam integrasi dengan aplikasi atau alur kerja yang ada. CLI adalah hal yang diperlukan untuk mengintegrasikan pengujian yang ditulis dalam TestMace ke dalam proses integrasi berkelanjutan. Pengerjaan CLI sedang berjalan lancar; versi awal akan meluncurkan proyek dengan laporan konsol sederhana. Kedepannya kami berencana menambahkan keluaran laporan dalam format JUnit.

Sistem plugin

Terlepas dari semua kehebatan alat kami, rangkaian kasus yang memerlukan solusi tidak terbatas. Bagaimanapun, ada tugas-tugas yang spesifik untuk proyek tertentu. Oleh karena itu kedepannya kami berencana untuk menambahkan SDK untuk mengembangkan plugin dan setiap pengembang dapat menambahkan fungsionalitas sesuai dengan keinginannya.

Memperluas jangkauan jenis node

Kumpulan node ini tidak mencakup semua kasus yang dibutuhkan oleh pengguna. Node yang rencananya akan ditambahkan:

  • Node skrip - mengonversi dan menempatkan data menggunakan js dan API yang sesuai. Dengan menggunakan node jenis ini, Anda dapat melakukan hal-hal seperti skrip pra-permintaan dan pasca-permintaan di Tukang Pos.
  • Node GraphQL - dukungan graphql
  • Node pernyataan khusus - akan memungkinkan Anda memperluas kumpulan pernyataan yang ada dalam proyek
    Tentu saja, ini bukanlah daftar final; daftar ini akan terus diperbarui, antara lain, karena masukan Anda.

FAQ

Apa bedanya Anda dengan Tukang Pos?

  1. Konsep node, yang memungkinkan Anda menskalakan fungsionalitas proyek tanpa henti
  2. Format proyek yang dapat dibaca manusia dengan menyimpannya dalam sistem file, yang menyederhanakan pekerjaan menggunakan sistem kontrol versi
  3. Kemampuan untuk membuat pengujian tanpa pemrograman dan dukungan js yang lebih canggih di editor pengujian (pelengkapan otomatis, penganalisis statis)
  4. Pelengkapan otomatis tingkat lanjut dan penyorotan nilai variabel saat ini

Apakah ini produk sumber terbuka?

Tidak, saat ini sumbernya ditutup, namun kedepannya kami sedang mempertimbangkan kemungkinan untuk membuka sumbernya

Dari apa kamu hidup?)

Bersamaan dengan versi gratisnya, kami berencana merilis produk versi berbayar. Ini terutama akan mencakup hal-hal yang memerlukan sisi server, misalnya sinkronisasi.

Kesimpulan

Proyek kami bergerak dengan pesat menuju rilis yang stabil. Namun produk tersebut sudah bisa digunakan dan feedback positif dari pengguna awal kami adalah buktinya. Kami secara aktif mengumpulkan masukan, karena tanpa kerja sama yang erat dengan komunitas, tidak mungkin membangun alat yang baik. Anda dapat menemukan kami di sini:

Website resmi

Telegram

Kendur

Facebook

Pelacak masalah

Kami menantikan keinginan dan saran Anda!

Sumber: www.habr.com

Tambah komentar