
Halo semuanya, dengan sentuhan TestMace ! Mungkin banyak orang tahu tentang kita dari artikel kita sebelumnya . Bagi mereka yang baru saja terhubung: kami sedang mengembangkan IDE untuk bekerja dengan TestMace API. Pertanyaan yang paling sering diajukan ketika membandingkan TestMace dengan produk pesaing adalah "Apa bedanya Anda dengan Postman?" Kami memutuskan bahwa sudah waktunya untuk memberikan jawaban terperinci untuk pertanyaan ini. Di bawah ini kami telah merinci keunggulan kami di atas tukang pos .
Subdivisi
Jika Anda bekerja dengan tukang pos, maka Anda tahu bahwa antarmuka permintaan berisi semua fungsi yang diperlukan. Ada skrip, tes, dan, pada kenyataannya, permintaan itu sendiri. Ini menyederhanakan pekerjaan untuk pemula, tetapi untuk skenario besar pendekatan ini tidak fleksibel. Bagaimana jika Anda ingin membuat beberapa permintaan dan menggabungkannya? Bagaimana jika Anda ingin menjalankan skrip tanpa permintaan atau beberapa skrip yang dipisahkan secara logis dalam satu baris? Pada akhirnya, alangkah baiknya untuk memisahkan tes dari skrip utilitarian biasa. Selain itu, pendekatan "tambahkan semua fungsionalitas ke satu simpul" tidak dapat diskalakan - antarmuka dengan cepat menjadi kelebihan beban.
TestMace awalnya membagi semua fungsi menjadi berbagai jenis node. Ingin membuat permintaan? Inilah simpul langkah permintaan . Apakah Anda ingin menulis skrip? Inilah simpul skrip untuk Anda. Perlu tes? Tolong - Node penegasan . Oh ya, Anda masih bisa membungkus semuanya ini dalam folder node. Dan semua ini mudah dikombinasikan satu sama lain. Pendekatan ini tidak hanya sangat fleksibel, tetapi, sesuai dengan prinsip keunikan tanggung jawab, memungkinkan Anda untuk hanya menggunakan apa yang benar-benar Anda butuhkan saat ini. Mengapa saya perlu skrip dan tes jika saya hanya ingin mengajukan permintaan?
Ada perbedaan konseptual dalam cara penyimpanan antara TestMace dan Postman. Di tukang pos, semua permintaan disimpan di suatu tempat di penyimpanan lokal. Jika ada kebutuhan untuk berbagi permintaan antara beberapa pengguna, maka Anda perlu menggunakan sinkronisasi bawaan. Sebenarnya, ini adalah pendekatan yang diterima secara umum, bukan tanpa cacat. Bagaimana dengan keamanan data? Memang, kebijakan beberapa perusahaan mungkin tidak mengizinkan penyimpanan data dari pihak ketiga. Namun, kami percaya TestMace memiliki sesuatu yang lebih baik untuk ditawarkan! Dan nama peningkatan ini adalah "format proyek yang dapat dibaca manusia."
Untuk mulai dengan, TestMace pada dasarnya memiliki entitas proyek. Dan aplikasi ini awalnya dikembangkan dengan mata menyimpan proyek dalam sistem kontrol versi: pohon proyek diproyeksikan hampir satu-ke-satu ke struktur file, yaml digunakan sebagai format penyimpanan (tanpa tanda kurung tambahan dan koma), dan representasi file dari setiap node dijelaskan secara rinci dalam dokumentasi dengan komentar . Tetapi dalam kebanyakan kasus Anda tidak akan melihat di sana - semua nama bidang memiliki nama logis.
Apa ini memberi pengguna? Ini memungkinkan Anda untuk secara fleksibel mengubah tim alur kerja, menggunakan pendekatan yang biasa. Misalnya, pengembang dapat menyimpan proyek dalam repositori yang sama dengan backend. Di cabang, selain mengubah basis kode secara langsung, pengembang dapat memperbaiki skrip dan tes kueri yang ada. Setelah melakukan perubahan pada repositori (git, svn, lincah - yang paling Anda sukai) CI (favorit Anda, tidak dikenakan pada siapa pun) meluncurkan utilitas konsol testmace-cli kami , dan laporan diterima setelah eksekusi (misalnya, dalam format junit, yang juga didukung dalam testmace-cli) dikirim ke sistem yang sesuai. Dan masalah keamanan yang disebutkan di atas tidak lagi menjadi masalah.
Seperti yang Anda lihat, TestMace tidak memaksakan ekosistem dan paradigmanya. Sebaliknya, ini mudah diintegrasikan ke dalam proses yang sudah mapan.
Variabel dinamis
TestMace mengikuti konsep no-code: jika masalah dapat diselesaikan tanpa menggunakan kode, kami mencoba memberikan kesempatan ini. Bekerja dengan variabel hanyalah fungsi itu, di mana dalam banyak kasus Anda dapat melakukannya tanpa pemrograman.
Contoh: kami menerima respons dari server, dan kami ingin menyimpan bagian dari respons dalam suatu variabel. Di Postman, kita akan menulis sesuatu seperti itu dalam skrip uji (yang aneh pada dirinya sendiri):
var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("data", jsonData.data);
Namun menurut pendapat kami, menulis naskah untuk naskah yang sederhana dan sering digunakan seperti itu tampak berlebihan. Oleh karena itu, di TestMace dimungkinkan untuk menetapkan sepotong respons ke variabel menggunakan antarmuka grafis. Lihatlah betapa sederhananya:

Dan sekarang, dengan setiap permintaan, variabel dinamis ini akan diperbarui. Tetapi Anda dapat berdebat, dengan alasan bahwa pendekatan tukang pos lebih fleksibel dan memungkinkan Anda tidak hanya untuk membuat tugas, tetapi juga untuk melakukan beberapa preprocessing. Berikut ini cara mengubah contoh sebelumnya:
var jsonData = JSON.parse(responseBody); postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));
Nah, untuk ini, TestMace memiliki simpul skrip yang mencakup skrip ini. Untuk mereproduksi kasus sebelumnya, tetapi sudah dalam pelaksanaan TestMace, perlu untuk membuat simpul skrip setelah permintaan dan menggunakan kode berikut sebagai skrip:
const data = tm.currentNode.prev.response.body.data; tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));
Seperti yang Anda lihat, komposisi node juga melayani layanan yang baik di sini. Dan untuk kasus sederhana seperti yang dijelaskan di atas, Anda cukup menetapkan ekspresi ${crypto.MD5($response.data)}
variabel yang dibuat melalui antarmuka grafis!
Membuat tes melalui GUI
Tukang pos memungkinkan Anda untuk membuat tes dengan menulis skrip (dalam kasus Tukang pos, ini JavaScript). Pendekatan ini memiliki keunggulan yang solid - fleksibilitas yang hampir tidak terbatas, ketersediaan solusi siap pakai, dll.
Namun, kenyataannya sering seperti itu (kami tidak, hidup seperti itu) sehingga tester tidak memiliki keterampilan pemrograman, dan saya ingin membawa manfaat bagi tim sekarang. Untuk kasus seperti itu, mengikuti konsep tanpa kode, TestMace memungkinkan Anda membuat tes sederhana melalui antarmuka grafis tanpa menggunakan skrip penulisan. Di sini, misalnya, tampak seperti proses membuat tes yang membandingkan nilai untuk kesetaraan:

Namun, membuat tes dalam editor grafis tidak menghalangi kemampuan untuk menulis tes dalam kode . Di sini semua pustaka yang sama seperti pada skrip node, dan chai untuk menulis tes.
Kemampuan untuk menjalankan skrip yang ada dengan referensi (Tautan simpul)
Situasi seperti itu sering muncul ketika permintaan tertentu atau bahkan seluruh naskah perlu dijalankan beberapa kali di berbagai bagian proyek. Contoh dari permintaan tersebut adalah otorisasi multi-tahap khusus, membawa lingkungan ke keadaan yang diinginkan, dll. Secara umum, berbicara dalam hal bahasa pemrograman, saya ingin memiliki fungsi yang dapat digunakan kembali di berbagai bagian aplikasi. Di TestMace, fungsi ini dilakukan oleh simpul tautan . Menggunakannya sangat sederhana:
1) buat kueri atau skrip
2) membuat simpul bertipe Link
3) pada parameter tentukan tautan ke skrip yang dibuat pada langkah pertama
Dalam versi yang lebih maju, Anda dapat menentukan variabel dinamis mana dari skrip yang dilemparkan ke tingkat yang lebih tinggi relatif terhadap tautan. Kedengarannya membingungkan? Misalkan kita membuat Folder bernama create-post , di dalamnya variabel dinamis postId
ditugaskan ke node ini. Sekarang di tautan node create-post-link , Anda dapat secara eksplisit menentukan bahwa variabel postId
ditugaskan ke leluhur create-post-link . Mekanisme ini (sekali lagi, dinyatakan dalam bahasa pemrogram) dapat digunakan untuk mengembalikan hasil dari "fungsi". Secara umum, keren, KERING dalam pertumbuhan penuh dan sekali lagi tidak satu baris kode pun dirugikan.

Adapun Postman, permintaan fitur untuk menggunakan kembali permintaan telah menggantung sejak 2015 , dan tampaknya ada beberapa petunjuk bahwa mereka sedang mengerjakan masalah ini. Dalam bentuknya yang sekarang, Postman, tentu saja, memiliki kemampuan untuk mengubah alur eksekusi, yang secara teori mungkin memungkinkan Anda untuk menerapkan perilaku ini, tetapi ini lebih merupakan hack kotor daripada pendekatan yang benar-benar bekerja.
Perbedaan lainnya
- Kontrol yang lebih besar atas ruang lingkup variabel. Ruang lingkup terkecil di mana Anda dapat mendefinisikan variabel di Postman adalah koleksi. TestMace memungkinkan Anda untuk menentukan variabel untuk kueri atau folder apa pun. Di Postman, koleksi Share memungkinkan Anda untuk mengekspor koleksi saja, sementara di berbagi TestMace berfungsi untuk setiap node.
- TestMace mendukung header yang diwarisi , yang secara default dapat diganti dengan permintaan anak. Dalam Postman, ada tugas dalam hal ini, dan bahkan ditutup, tetapi sebagai solusi diusulkan ... untuk menggunakan skrip . Di TestMace, ini semua dikonfigurasikan melalui GUI dan ada opsi untuk menonaktifkan header bawaan di turunan spesifik
- Undo / Redo. Ia bekerja tidak hanya ketika mengedit node, tetapi juga ketika memindahkan, menghapus, mengganti nama dan operasi lain yang mengubah struktur proyek
- File yang dilampirkan pada permintaan menjadi bagian dari proyek dan disimpan dengan itu, sementara disinkronkan dengan sempurna, tidak seperti Postman. (Ya, Anda tidak perlu lagi memilih file secara manual setiap kali Anda memulai dan mentransfernya ke kolega di arsip)
Fitur yang ada di jalan
Kami tidak bisa menahan godaan untuk membuka tabir kerahasiaan atas rilis berikutnya, terutama ketika fungsionalitasnya sangat lezat dan sudah mengalami penggilingan pra-rilis. Jadi kita bertemu.
Fungsi
Seperti yang Anda ketahui, Postman menggunakan apa yang disebut variabel dinamis untuk menghasilkan nilai. Daftarnya mengesankan dan sebagian besar fungsi berfungsi untuk menghasilkan nilai palsu. Misalnya, untuk menghasilkan email acak, Anda perlu menulis:
{{$randomEmail}}
Namun, karena ini adalah variabel (meskipun yang dinamis), mereka tidak dapat digunakan sebagai fungsi: mereka tidak dapat diparameterisasi, karena itu tidak akan berfungsi untuk mengambil hash dari string.
Di TestMace, kami berencana untuk menambahkan fitur yang jujur. Tepat di dalam $ {} Anda tidak hanya dapat mengakses variabel, tetapi juga memanggil fungsi. Yaitu jika Anda perlu membuat email palsu terkenal, kami hanya menulis
${faker.internet.email()}
Selain fakta bahwa ini adalah fungsi, Anda dapat melihat bahwa ada kemungkinan memanggil metode objek. Dan alih-alih daftar besar variabel dinamis, kami memiliki satu set objek yang dikelompokkan secara logis.
Tetapi bagaimana jika kita ingin menghitung hash dari string? Mudah!
${crypto.MD5($dynamicVar.data)}
Anda mungkin memperhatikan bahwa Anda bahkan dapat meneruskan variabel sebagai parameter! Di tempat ini, pembaca yang ingin tahu mungkin curiga ada yang salah ...
Menggunakan JavaScript dalam ekspresi
... Dan tidak sia-sia! Ketika persyaratan untuk fungsi dibentuk, kami tiba-tiba sampai pada kesimpulan bahwa dalam ekspresi Anda perlu membiarkan javascript yang valid ditulis. Jadi sekarang Anda bebas menulis ekspresi dalam semangat:
${1 + '' + crypto.MD5('asdf')}
Dan semua ini tanpa skrip tepat di kolom input!
Sedangkan untuk Postman, hanya variabel yang dapat digunakan, dan ketika mencoba menulis sedikit ekspresi, validator bersumpah dan menolak untuk menghitungnya.

Penyelesaian otomatis tingkat lanjut
Saat ini, TestMace memiliki pelengkapan otomatis standar, yang terlihat seperti ini:

Di sini, di samping baris lengkapi-otomatis, apa yang termasuk dalam baris ini diindikasikan. Mekanisme ini hanya berfungsi dalam ekspresi yang dibingkai dengan tanda kurung $ {}.
Seperti yang dapat Anda lihat, penanda visual telah ditambahkan yang menunjukkan jenis variabel (misalnya, string, angka, array, dll.). Anda juga dapat mengubah mode penyelesaian otomatis (misalnya, Anda dapat memilih penyelesaian otomatis dengan variabel atau header). Tetapi bahkan ini bukan hal yang paling penting!
Pertama, penyelesaian otomatis berfungsi bahkan dalam ekspresi (jika memungkinkan). Begini tampilannya:

Dan kedua, sekarang pelengkapan otomatis juga tersedia dalam skrip. Lihatlah cara kerjanya!

Tidak masuk akal untuk membandingkan fungsi ini dengan tukang pos - ada penyelesaian otomatis terbatas hanya untuk daftar variabel statis, header dan nilai-nilainya (koreksi saya jika saya lupa itu). Skrip tidak dilengkapi secara otomatis :(
Kesimpulan
Pada bulan Oktober, satu tahun telah berlalu sejak awal pengembangan produk kami. Selama waktu ini, kami berhasil melakukan banyak hal dan dalam beberapa hal berhasil menyusul pesaing kami. Namun bagaimanapun, tujuan kami adalah membuat alat yang sangat nyaman untuk bekerja dengan API. Kami masih memiliki banyak pekerjaan yang harus dilakukan, berikut ini adalah rencana pengembangan kasar untuk proyek kami untuk tahun mendatang: https://testmace.com/roadmap .
Umpan balik Anda akan memungkinkan kami untuk menavigasi dengan lebih baik dalam banyak fitur, dan dukungan Anda akan memberi kami kekuatan dan kepercayaan diri bahwa kami melakukan hal yang benar. Kebetulan hari ini adalah hari yang penting untuk proyek kami - hari penerbitan TestMace di ProductHunt . Tolong dukung proyek kami, ini sangat penting bagi kami. Terlebih lagi, di halaman PH kami hari ini adalah tawaran yang menggiurkan, dan itu terbatas