
Sveiki visiem, esmu šeit ! Iespējams, daudzi no jums mūs zina no . Tieši šiem, kas tikko pieslēdzās: mēs izstrādājam IDE darbam ar API TestMace. Visbiežāk uzdotais jautājums, salīdzinot TestMace ar konkurējošiem produktiem, ir: "Kā mēs atšķiramies no Postman?" Mēs nolēmām, ka ir pienācis laiks sniegt detalizētu atbildi uz šo jautājumu. Zemāk mēs punktu pa punktam aprakstījām savas priekšrocības pret .
Dalīšana mezglos
Ja jūs strādājat ar Postman, tad zināt, ka pieprasījuma saskarne satur visu nepieciešamo funkcionalitāti. Te ir skripti, testi un paši pieprasījumi. Tas atvieglo darbu iesācējiem, tomēr lielos scenārijos šāds pieejas veids nav pielāgojams. Ko darīt, ja vēlies izveidot vairākus pieprasījumus un veikt to agregāciju? Ko darīt, ja vēlies izpildīt skriptu bez pieprasījuma vai vairākus loģiski atdalītus skriptus pēc kārtas? Galu galā, būtu labi atdalīt testus no parastajiem utilitārajiem skriptiem. Turklāt pieejas "visi funkcionalitāti pievienot vienā mezglā" ir neizmantojama — saskarne ātri kļūst pārblīvēta.
TestMace sākotnēji dalās visā funkcionalitātē dažādos mezglos. Vēlies veikt pieprasījumu? Lūk, tev mezgls. Vēlies uzrakstīt skriptu? Lūk, tev mezgls. Nepieciešami testi? Lūdzu — mezgls. Ak jā, tu arī vari visu to ietīt mezglā. Un viss šis ir viegli savienojams savā starpā. Šāda pieeja ne tikai ir ļoti elastīga, bet arī, saskaņā ar atbildības vienotības principu, ļauj izmantot tikai to, kas tev tiešām nepieciešams šobrīd. Kāpēc man vajadzētu skriptus un testus, ja es vēlos vienkārši veikt pieprasījumu?
Cilvēka lasāmā projekta forma
Starp TestMace un Postman pastāv konceptuāla atšķirība uzglabāšanas veidā. Postman visi pieprasījumi tiek glabāti kaut kur lokālajā krātuvē. Ja ir nepieciešams kopīgot pieprasījumus starp vairākiem lietotājiem, jāizmanto iebūvētā sinhronizācija. Patiesībā tas ir vispārpieņemts pieejas veids, kam nav trūkumu. Kā ir ar datu drošību? Galu galā, dažu uzņēmumu politika var neļaut glabāt datus trešās pusēs. Tomēr mēs uzskatām, ka TestMace var piedāvāt kaut ko labāku! Un šī uzlabošanās nosaukums ir "cilvēka lasāmā projekta forma".
Sāksim ar to, ka TestMace būtībā ir „projekta” jēdziens. Un lietotne tika izstrādāta, ņemot vērā projektu glabāšanu versiju kontroles sistēmās: projekta struktūra praktiski vienādā veidā tiek atspoguļota failu struktūrā, glabāšanas formāts ir yaml (bez liekām iekavām un komatiem), un katra mezgla faila attēlojums ir detalizēti aprakstīts dokumentācijā ar komentāriem. Taču lielākajā daļā gadījumu jūs tajā nebūsiet iegrimuši — visi lauku nosaukumi ir loģiski.
Ko tas dod lietotājam? Tas ļauj ļoti elastīgi mainīt komandas darba plūsmu, izmantojot ierastos pieeju. Piemēram, izstrādātāji var glabāt projektu tajā pašā repozitorijā, kur ir arī backend. Zaru ietvaros, papildus kodu bāzes maiņai, izstrādātājs var labot esošos pieprasījumu scenārijus un testus. Pēc izmaiņu fiksēšanas repozitorijā (git, svn, mercurial — kā jums labāk patīk) CI (jūsu iecienītā, nevienam neuzspiestā) palaistu mūsu komandrindas rīku , un pēc izpildes saņemtā atskaite (piemēram, junit formātā, ko arī atbalsta testmace-cli) tiek nosūtīta atbilstošajā sistēmā. Un iepriekš minētā drošības problēma vairs nav problēma.
Kā redzat, TestMace neuzspiež savu ekosistēmu un paradigmu. Tā vietā tas viegli integrējas jau ieviestos procesos.
Dinamiskie mainīgie
TestMace ievēro no-code konceptu: ja problēmu var atrisināt bez koda izmantošanas, mēs cenšamies dot šādu iespēju. Darbs ar mainīgajiem ir tieši tā funkcionalitāte, kur vairumā gadījumu var iztikt bez programmēšanas.
Piemērs: mums ir saņemts atbildes no servera, un mēs vēlamies saglabāt daļu no atbildes mainīgajā. Postman mēs rakstītu testēšanas skriptā (kas vien jau ir dīvaini) kaut ko tādā garā:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);Taču mūsuprāt, skripta rakstīšana tik vienkāršam un bieži izmantotam scenārijam izskatās pārmērīgi. Tāpēc TestMace ir iespēja piešķirt mainīgajam atbildes daļu, izmantojot grafisko interfeisu. Apskatiet, cik tas ir vienkārši:

Un tagad, katru reizi veicot pieprasījumu, šī dinamiskā mainīgā tiks atjaunināta. Bet jūs varat iebilst, argumentējot, ka Postman pieeja ir elastīgāka un ļauj ne tikai veikt piešķiršanu, bet arī veikt kādu priekšapstrādi. Lūk, kā var modifikēt iepriekšējo piemēru:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Kas attiecas uz to, TestMace ir modulis, kas aptver šo scenāriju. Lai atkārtoti izspēlētu iepriekšējo gadījumu, bet jau TestMace izpildē, pēc pieprasījuma jāizveido script modulis un kā skripts jāizmanto šāds kods:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Kā redzat, moduļu kompozīcija šeit tika labi izmantota. Šādam vienkāršam gadījumam, kā aprakstīts iepriekš, jūs varat vienkārši piešķirt izteiksmi ${crypto.MD5($response.data)} mainīgajam, kas tiek izveidots caur grafisko saskarni!
Testu izveidošana caur GUI
Postman ļauj izveidot testus, rakstot skriptus (Postman gadījumā tās ir JavaScript). Šai pieejai ir tikai priekšrocības — gandrīz neierobežota elastība, jau gatavi risinājumi utt.
Tomēr realitāte bieži ir tāda (ne mēs tādi, dzīve tāda), ka testētājam nav programmēšanas prasmju, bet komandai gribētos sniegt ieguvumu jau tagad. Tādiem gadījumiem, sekojot no-koda koncepcijai, TestMace ļauj izveidot vienkāršus testus caur grafisko saskarni, neizmantojot skriptu rakstīšanu. Lūk, piemēram, kā izskatās testa izveides process, kas salīdzina vērtības vienlīdzībai:

Tomēr testu izveide grafiskajā redaktorā neizslēdz iespēju . Šeit ir tās pašas bibliotēkas, kas script modulī, un testu rakstīšanai.
Iespēja palaist jau esošu scenāriju pēc saites (Link modulis)
Bieži rodas situācijas, kad noteikts pieprasījums vai pat vesels scenārijs ir jāizpilda vairākas reizes dažādās projekta daļās. Šādu pieprasījumu piemērs var būt pielāgota daudzposmu autentifikācija, vides sagatavošana pareizajā stāvoklī utt. Ja runājam programmēšanas valodu terminos, vēlētos, lai būtu funkcijas, kuras var izmantot dažādās lietojumprogrammas daļās. TestMace šo funkciju veic mezgls. To izmantot ir ļoti vienkārši:
1) izveidojiet pieprasījumu vai skriptu
2) izveidojiet Link tipa mezglu
3) iestatījumos norādiet saiti uz skriptu, kas izveidots pirmajā solī
Vairāk attīstītā variantā varat norādīt, kuras dinamiskās mainīgās no skripta pārvietot uz augstāku līmeni attiecībā uz saiti. Izskatās sarežģīti? Pieņemsim, ka esam izveidojuši Folder ar nosaukumu izveidot-pasta, kurā uz šo mezglu tiek piešķirts dinamiskais mainīgais postId. Tagad Link mezglā create-post-link jūs varat skaidri norādīt, ka mainīgais postId tiek piešķirts priekštečam create-post-link. Šo mehānismu (atkal, runājot programmēšanas valodā) var izmantot, lai atgrieztu rezultātu no 'funkcijas'. Kopumā forši, DRY pilnā augstumā un vēlreiz neviena koda rindiņa netika skarta.

Attiecībā uz Postman, tad funkciju pieprasījums par pieprasījumu atkārtotu izmantošanu , un šķiet, ka pat ir , ka pie šīs problēmas strādā. Pašreizējā formā Postman noteikti nodrošina izpildes plūsmas maiņu, kas teorētiski varbūt ļauj īstenot līdzīgu uzvedību, bet tas drīzāk ir netīrs hack, nevis patiešām darboties spējīgs risinājums.
Citi atšķirības
- Lielāka kontrole pār mainīgo redzamību. Mazākais apgabals, kurā var noteikt mainīgo Postman, ir kolekcija. TestMace ļauj noteikt mainīgos jebkuram pieprasījumam vai mapē. Postman Share kolekcija ļauj eksportēt tikai kolekcijas, savukārt TestMace koplietošana darbojas jebkuram mezglam.
- TestMace atbalsta , kas pēc noklusējuma var tikt iekļauti bērnu pieprasījumos. Par šo jautājumu Postman ir , un tas pat ir slēgts, bet kā risinājums tiek ieteikts... . TestMace visu to konfigurē caur GUI un ir iespējams opcionalizēt mantojuma galvenos noteiktos konkrētiem pēcnācējiem.
- Undo/Redo. Tas darbojas ne tikai rediģējot mezglus, bet arī pārvietojot, dzēšot, pārdēvējot un citās darbībās, kas maina projekta struktūru.
- Faili, kas pievienoti pieprasījumiem, kļūst par projekta daļu un tiek glabāti kopā ar to, tajā pašā laikā lieliski sinhronizējoties, atšķirībā no Postman. (Jā, vairs nav jāizvēlas faili katru reizi manuāli katras palaišanas laikā un jānosūta kolēģiem arhīvos.)
Funkcijas, kuras jau tuvojas
Mēs nespējām pretoties kārdinājumam nedaudz atklāt noslēpumu par nākamajiem laidieniem, jo īpaši, kad darbība ir ļoti pievilcīga un jau notiek pirmslaika apstrāde. Tātad, iepazīstieties.
Funkcijas
Kā zināms, vērtību ģenerēšanai Postman tiek izmantotas tā dēvētās dinamiskās mainīgās. un lielākā daļa funkciju tiek izmantotas viltotu vērtību ģenerēšanai. Piemēram, lai ģenerētu nejaušu e-pastu, nepieciešams uzrakstīt:
{{$randomEmail}}Tomēr, tā kā tās ir mainīgās (pat ja dinamiskas), tās nevar izmantot kā funkcijas: tās nav parametrizējamas, līdz ar to nav iespējams iegūt virsmas atslēgu no virknes.
TestMace mēs plānojam pievienot "godīgas" funkcijas. Tieši ${} iekšienē būs iespējams ne tikai piekļūt mainīgajam, bet arī izsaukt funkciju. T.i., ja nepieciešams ģenerēt vēlamo viltoto e-pastu, mēs vienkārši uzrakstīsim
${faker.internet.email()}Papildus tam, ka tā ir funkcija, var ievērot, ka ir iespējams izsaukt objekta metodi. Un vietā, kur ir liels plakanās dinamisko mainīgo saraksts, mums ir loģiski grupēti objektu kopums.
Bet ko darīt, ja mēs vēlamies aprēķināt virsmas atslēgu no virknes? Viegli!
${crypto.MD5($dynamicVar.data)}Var ievērot, ka parametriem pat var nodot mainīgās! Šajā brīdī inquisitīvais lasītājs var sākt šaubīties...
JavaScript izmantošana izteiksmēs
... Un ne bez iemesla! Izstrādājot prasības funkcijām, mēs pēkšņi nonācām pie secinājuma, ka izteiksmēs ir jāļauj rakstīt derīgu java-script. Tāpēc tagad jūs varat brīvi rakstīt izteiksmes garā:
${1 + '' + crypto.MD5('asdf')}Un viss tas bez skriptiem tieši ievades laukos!
Kas attiecas uz Postman, šeit var izmantot tikai mainīgās, un, mēģinot uzrakstīt kaut ko līdzīgu izteiksmei, validators protestē un atsakās to aprēķināt.
![]()
Sarežģīta automātiskā pabeigšana
Pašlaik TestMace ir standarta automātiskā pabeigšana, kas izskatās šādi:

Šeit, papildus automātiski pabeigšanai, norādīts, kam pieder šī rindiņa. Šis mehānisms darbojas tikai izteiksmēs, kas ir iekļautas ${} klauzās.
Kā var pamanīt, ir pievienoti vizuālie marķieri, kas norāda uz mainīgā tipu (piemēram, virkne, skaitlis, masīvs utt.). Tāpat var mainīt automātiskā pabeigšanas režīmus (piemēram, var izvēlēties automātisko pabeigšanu ar mainīgajiem vai virsrakstiem). Taču pat tas nav vissvarīgākais!
Pirmkārt, automātiskā pabeigšana darbojas pat izteiksmēs (kur tas ir iespējams). Lūk, kā tas izskatās:

Un otrkārt, tagad automātiskā pabeigšana ir pieejama arī skriptu izpildei. Apskatiet, kā tas darbojas!

Nav jēgas salīdzināt šo funkcionalitāti ar Postman — tur automātiskā pabeigšana ierobežojas tikai ar statiskiem mainīgo, virsrakstu un to vērtību sarakstiem (lūdzu, labojiet mani, ja es kaut ko aizmirsu). Skripti netiek automātiski pabeigti 🙁
Secinājums
Oktobrī pagāja gads kopš mūsu produkta izstrādes uzsākšanas. Šajā laikā mēs esam izdarījuši daudz un noteiktos parametros sasnieguši savus konkurentus. Bet, kā nekā, mūsu mērķis ir izveidot patiešām ērti lietojamu rīku darbam ar API. Mums priekšā ir vēl daudz darba, šeit ir aptuvens mūsu projekta attīstības plāns tuvākajam gadam: .
Jūsu atsauksmes ļaus mums labāk orientēties daudzu funkciju izpratnē, bet jūsu atbalsts — piešķir mums spēku un pārliecību, ka mēs darām pareizo lietu. Tā nu sanāk, ka šodien ir svarīga diena mūsu projektam — TestMace publicēšanas diena uz . Lūdzu, atbalstiet mūsu projektu, tas mums ir ļoti svarīgi. Jo īpaši tāpēc, ka mūsu PH lapā šodien ir pievilcīgs piedāvājums, un tas ir ierobežots
Avots: habr.com
