ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

สวัสดีทุกคน เอาล่ะ ทดสอบ Mace! บางทีหลายคนอาจรู้จักเราจาก ของเรา ก่อนหน้า บทความ. สำหรับผู้ที่เพิ่งเข้าร่วม: เรากำลังพัฒนา IDE เพื่อทำงานร่วมกับ TestMace API คำถามที่ถูกถามบ่อยที่สุดเมื่อเปรียบเทียบ TestMace กับผลิตภัณฑ์คู่แข่งคือ “คุณแตกต่างจากบุรุษไปรษณีย์อย่างไร” เราตัดสินใจว่าถึงเวลาที่จะต้องให้คำตอบโดยละเอียดสำหรับคำถามนี้ ด้านล่างนี้เราได้สรุปข้อดีของเราไว้แล้ว บุรุษไปรษณีย์.

แยกออกเป็นโหนด

หากคุณทำงานร่วมกับบุรุษไปรษณีย์ คุณจะรู้ว่าอินเทอร์เฟซคำขอมีฟังก์ชันที่จำเป็นทั้งหมด มีสคริปต์ การทดสอบ และจริงๆ แล้วมีการสืบค้นด้วย ซึ่งจะทำให้ง่ายขึ้นสำหรับผู้เริ่มต้น แต่ในสถานการณ์ขนาดใหญ่ วิธีการนี้ไม่ยืดหยุ่น จะทำอย่างไรถ้าคุณต้องการสร้างการสืบค้นหลายรายการและดำเนินการรวมเข้าด้วยกัน จะเป็นอย่างไรถ้าคุณต้องการเรียกใช้งานสคริปต์โดยไม่มีการร้องขอหรือสคริปต์ที่แยกออกจากกันหลาย ๆ สคริปต์ในแถว? ท้ายที่สุด เป็นความคิดที่ดีที่จะแยกการทดสอบออกจากสคริปต์ยูทิลิตี้ทั่วไป นอกจากนี้ วิธีการ "เพิ่มฟังก์ชันการทำงานทั้งหมดลงในโหนดเดียว" ไม่สามารถปรับขนาดได้ - อินเทอร์เฟซจะโอเวอร์โหลดอย่างรวดเร็ว

TestMace เริ่มแบ่งการทำงานทั้งหมดออกเป็นโหนดประเภทต่างๆ คุณต้องการจะทำการร้องขอหรือไม่? นี่สำหรับเธอ ขั้นตอนขอ โหนด คุณต้องการเขียนสคริปต์หรือไม่? นี่สำหรับเธอ ต้นฉบับ โหนด ต้องการการทดสอบหรือไม่? โปรด - การยืนยัน โหนด โอ้ ใช่แล้ว คุณยังคงสามารถสรุปเรื่องทั้งหมดนี้ได้ โฟลเดอร์ โหนด และทั้งหมดนี้สามารถนำมารวมกันได้อย่างง่ายดาย แนวทางนี้ไม่เพียงแต่มีความยืดหยุ่นมากเท่านั้น แต่ยังสอดคล้องกับหลักการของความรับผิดชอบเดียว ช่วยให้คุณใช้เฉพาะสิ่งที่คุณต้องการจริงๆ ในขณะนี้เท่านั้น เหตุใดฉันจึงต้องมีสคริปต์และการทดสอบหากฉันเพียงต้องการส่งคำขอ

รูปแบบโครงการที่มนุษย์สามารถอ่านได้

มีความแตกต่างทางแนวคิดระหว่าง TestMace และ Postman ในลักษณะการจัดเก็บ ในบุรุษไปรษณีย์ คำขอทั้งหมดจะถูกเก็บไว้ที่ไหนสักแห่งในที่จัดเก็บในตัวเครื่อง หากมีความจำเป็นต้องแชร์คำขอระหว่างผู้ใช้หลายคน คุณจะต้องใช้การซิงโครไนซ์ในตัว อันที่จริงนี่เป็นแนวทางที่ยอมรับกันโดยทั่วไป แต่ก็ไม่ใช่ว่าไม่มีข้อเสีย แล้วความปลอดภัยของข้อมูลล่ะ? ท้ายที่สุดแล้ว นโยบายของบางบริษัทอาจไม่อนุญาตให้จัดเก็บข้อมูลกับบุคคลที่สาม อย่างไรก็ตาม เราคิดว่า TestMace มีสิ่งที่ดีกว่าที่จะนำเสนอ! และชื่อของการปรับปรุงนี้คือ “รูปแบบโครงการที่มนุษย์สามารถอ่านได้”

เริ่มจากข้อเท็จจริงที่ว่าโดยหลักการแล้วใน TestMace จะมีเอนทิตี "โปรเจ็กต์" และแอปพลิเคชันได้รับการพัฒนาในขั้นต้นโดยคำนึงถึงการจัดเก็บโปรเจ็กต์ในระบบควบคุมเวอร์ชัน: แผนผังโปรเจ็กต์เกือบจะฉายแบบตัวต่อตัวบนโครงสร้างไฟล์, yaml ใช้เป็นรูปแบบการจัดเก็บข้อมูล (โดยไม่ต้องใช้วงเล็บปีกกาและเครื่องหมายจุลภาคเพิ่มเติม) และ การแสดงไฟล์ของแต่ละโหนดมีการอธิบายรายละเอียดในเอกสารประกอบพร้อมความคิดเห็น แต่ในกรณีส่วนใหญ่ คุณจะไม่ดูที่นั่น - ชื่อฟิลด์ทั้งหมดมีชื่อตรรกะ

สิ่งนี้ให้อะไรแก่ผู้ใช้? สิ่งนี้ช่วยให้คุณเปลี่ยนขั้นตอนการทำงานของทีมได้อย่างยืดหยุ่นโดยใช้แนวทางที่คุ้นเคย ตัวอย่างเช่น นักพัฒนาสามารถจัดเก็บโปรเจ็กต์ไว้ในพื้นที่เก็บข้อมูลเดียวกันกับแบ็กเอนด์ได้ ในสาขา นอกเหนือจากการเปลี่ยนฐานโค้ดแล้ว นักพัฒนายังสามารถแก้ไขสคริปต์การสืบค้นและการทดสอบที่มีอยู่ได้ หลังจากทำการเปลี่ยนแปลงพื้นที่เก็บข้อมูล (git, svn, mercurial - อะไรก็ได้ที่คุณชอบที่สุด) CI (รายการโปรดของคุณ ไม่ได้กำหนดโดยใครก็ตาม) จะเปิดตัวยูทิลิตี้คอนโซลของเรา testmace-cliและรายงานที่ได้รับหลังการดำเนินการ (เช่น ในรูปแบบ Junit ซึ่งได้รับการสนับสนุนใน testmace-cli ด้วย) จะถูกส่งไปยังระบบที่เหมาะสม และปัญหาด้านความปลอดภัยที่กล่าวมาข้างต้นก็ไม่ใช่ปัญหาอีกต่อไป

อย่างที่คุณเห็น TestMace ไม่ได้กำหนดระบบนิเวศและกระบวนทัศน์ของมัน แต่กลับเข้ากับกระบวนการที่กำหนดไว้ได้อย่างง่ายดาย

ตัวแปรไดนามิก

TestMace ยึดถือแนวคิดแบบไม่ใช้โค้ด: หากปัญหาสามารถแก้ไขได้โดยไม่ต้องใช้โค้ด เราจะพยายามให้โอกาสนี้ การทำงานกับตัวแปรนั้นเป็นฟังก์ชันประเภทหนึ่งที่โดยส่วนใหญ่คุณสามารถทำได้โดยไม่ต้องเขียนโปรแกรม

ตัวอย่าง: เราได้รับการตอบกลับจากเซิร์ฟเวอร์ และเราต้องการบันทึกส่วนหนึ่งของการตอบกลับลงในตัวแปร ใน Postman ในสคริปต์ทดสอบ (ซึ่งก็แปลกในตัวมันเอง) เราจะเขียนดังนี้:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

แต่ในความเห็นของเรา การเขียนสคริปต์สำหรับสถานการณ์ที่เรียบง่ายและใช้บ่อยนั้นดูซ้ำซ้อน ดังนั้นใน TestMace จึงเป็นไปได้ที่จะกำหนดส่วนหนึ่งของคำตอบให้กับตัวแปรโดยใช้อินเทอร์เฟซแบบกราฟิก ดูว่ามันง่ายแค่ไหน:

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

และตอนนี้ทุกครั้งที่มีการร้องขอ ตัวแปรไดนามิกนี้จะได้รับการอัปเดต แต่คุณสามารถคัดค้านได้ โดยโต้แย้งว่าแนวทางของบุรุษไปรษณีย์มีความยืดหยุ่นมากกว่า และช่วยให้คุณไม่เพียงแต่ทำการบ้านเท่านั้น แต่ยังดำเนินการประมวลผลล่วงหน้าบางอย่างได้อีกด้วย ต่อไปนี้เป็นวิธีแก้ไขตัวอย่างก่อนหน้านี้:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

เพื่อจุดประสงค์นี้ TestMace จึงมี ต้นฉบับ โหนดซึ่งครอบคลุมสถานการณ์นี้ ในการทำซ้ำเคสก่อนหน้านี้ แต่ TestMace ดำเนินการแล้ว คุณต้องสร้างโหนดสคริปต์ตามคำขอและใช้โค้ดต่อไปนี้เป็นสคริปต์:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

อย่างที่คุณเห็น องค์ประกอบของโหนดก็ทำหน้าที่ได้ดีเช่นกัน และสำหรับกรณีง่ายๆ ตามที่อธิบายไว้ข้างต้น คุณสามารถกำหนดนิพจน์ได้ ${crypto.MD5($response.data)} ตัวแปรที่สร้างผ่าน GUI!

การสร้างการทดสอบผ่าน GUI

บุรุษไปรษณีย์อนุญาตให้คุณสร้างการทดสอบโดยการเขียนสคริปต์ (ในกรณีของบุรุษไปรษณีย์ นี่คือ JavaScript) วิธีนี้มีข้อดีหลายประการ - ความยืดหยุ่นแทบไม่ จำกัด ความพร้อมใช้งานของโซลูชันสำเร็จรูป ฯลฯ

อย่างไรก็ตาม ความจริงมักจะเป็นเช่นนั้น (เราไม่ได้เป็นเช่นนั้น ชีวิตเป็นเช่นนั้น) ที่ผู้ทดสอบไม่มีทักษะการเขียนโปรแกรม แต่เขาต้องการสร้างประโยชน์ให้กับทีมในตอนนี้ ในกรณีดังกล่าว ตามแนวคิดที่ไม่มีโค้ด TestMace ช่วยให้คุณสร้างการทดสอบง่ายๆ ผ่าน GUI โดยไม่ต้องพึ่งการเขียนสคริปต์ ตัวอย่างเช่นนี่คือกระบวนการสร้างการทดสอบที่เปรียบเทียบค่าเพื่อความเท่าเทียมกัน:

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

อย่างไรก็ตาม การสร้างการทดสอบในโปรแกรมแก้ไขกราฟิกไม่ได้ทำให้ความเป็นไปได้หมดไป การเขียนการทดสอบในโค้ด. ไลบรารีเดียวกันทั้งหมดอยู่ที่นี่เช่นเดียวกับในโหนดสคริปต์และ ชัย สำหรับการเขียนแบบทดสอบ

สถานการณ์มักเกิดขึ้นเมื่อต้องดำเนินการค้นหาบางรายการหรือแม้แต่สคริปต์ทั้งหมดหลายครั้งในส่วนต่างๆ ของโปรเจ็กต์ ตัวอย่างของคำขอดังกล่าวอาจเป็นการอนุญาตแบบหลายขั้นตอนแบบกำหนดเอง การนำสภาพแวดล้อมไปสู่สถานะที่ต้องการ เป็นต้น โดยทั่วไปแล้ว ในแง่ของภาษาการเขียนโปรแกรม เราอยากมีฟังก์ชันที่สามารถนำมาใช้ซ้ำในส่วนต่างๆ ของแอปพลิเคชันได้ ใน TestMace ฟังก์ชั่นนี้ดำเนินการโดย ลิงค์ โหนด มันใช้งานง่ายมาก:
1) สร้างแบบสอบถามหรือสคริปต์
2) สร้างโหนดประเภทลิงก์
3) ในพารามิเตอร์ ระบุลิงก์ไปยังสคริปต์ที่สร้างขึ้นในขั้นตอนแรก

ในเวอร์ชันขั้นสูง คุณสามารถระบุตัวแปรไดนามิกจากสคริปต์ที่จะถูกส่งผ่านไปยังระดับที่สูงกว่าที่เกี่ยวข้องกับลิงก์ได้ ฟังดูสับสนใช่ไหม? สมมติว่าเราสร้างโฟลเดอร์ที่มีชื่อ สร้างโพสต์ซึ่งภายในตัวแปรไดนามิกถูกกำหนดให้กับโหนดนี้ postId. ตอนนี้อยู่ในโหนดลิงก์ สร้างโพสต์ลิงก์ คุณสามารถระบุตัวแปรนั้นได้อย่างชัดเจน postId มอบหมายให้บรรพบุรุษ สร้างโพสต์ลิงก์. กลไกนี้ (อีกครั้งในภาษาการเขียนโปรแกรม) สามารถใช้เพื่อส่งคืนผลลัพธ์จาก "ฟังก์ชัน" โดยทั่วไปแล้ว มันเยี่ยมมาก DRY ทำงานได้เต็มประสิทธิภาพและไม่มีโค้ดแม้แต่บรรทัดเดียวเสียหาย

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

สำหรับบุรุษไปรษณีย์นั้นมีการร้องขอคุณสมบัติสำหรับการนำคำขอกลับมาใช้ใหม่ แขวนไว้ตั้งแต่ปี 2015และดูเหมือนว่าจะมีเท่ากัน คำแนะนำบางอย่างว่าพวกเขากำลังแก้ไขปัญหานี้อยู่ ในรูปแบบปัจจุบัน Postman แน่นอนว่ามีความสามารถในการเปลี่ยนเธรดการดำเนินการ ซึ่งในทางทฤษฎีอาจทำให้สามารถใช้พฤติกรรมที่คล้ายกันได้ แต่นี่เป็นแฮ็กที่สกปรกมากกว่าแนวทางการทำงานอย่างแท้จริง

ความแตกต่างอื่นๆ

  • ควบคุมขอบเขตของตัวแปรได้มากขึ้น ขอบเขตที่เล็กที่สุดที่สามารถกำหนดตัวแปรในบุรุษไปรษณีย์ได้คือการรวบรวม TestMace ช่วยให้คุณสามารถกำหนดตัวแปรสำหรับการสืบค้นหรือโฟลเดอร์ใด ๆ ในคอลเลกชัน Postman Share ช่วยให้คุณสามารถส่งออกเฉพาะคอลเลกชัน ในขณะที่การแชร์ TestMace ใช้ได้กับโหนดใดๆ
  • รองรับ TestMace ส่วนหัวที่สืบทอดได้ซึ่งสามารถแทนที่เป็นข้อความค้นหาย่อยได้ตามค่าเริ่มต้น บุรุษไปรษณีย์มีบางอย่างเกี่ยวกับสิ่งนี้: งานและถึงแม้จะปิดไปแล้ว แต่ก็มีการนำเสนอเป็นวิธีแก้ปัญหา... ใช้สคริปต์. ใน TestMace ทั้งหมดนี้ได้รับการกำหนดค่าผ่าน GUI และมีตัวเลือกในการปิดใช้งานส่วนหัวที่สืบทอดมาในลูกหลานที่เฉพาะเจาะจง
  • ยกเลิกทำซ้ำ. ใช้งานได้ไม่เพียงแต่เมื่อแก้ไขโหนดเท่านั้น แต่ยังรวมถึงเมื่อย้าย ลบ เปลี่ยนชื่อ และการดำเนินการอื่น ๆ ที่เปลี่ยนโครงสร้างของโปรเจ็กต์
  • ไฟล์ที่แนบมากับคำขอจะกลายเป็นส่วนหนึ่งของโปรเจ็กต์และจะถูกเก็บไว้พร้อมกับมัน ในขณะที่มีการซิงโครไนซ์อย่างสมบูรณ์แบบ ไม่เหมือนบุรุษไปรษณีย์ (ใช่ คุณไม่จำเป็นต้องเลือกไฟล์ด้วยตนเองอีกต่อไปทุกครั้งที่คุณเริ่มต้นและถ่ายโอนไฟล์เหล่านั้นไปยังเพื่อนร่วมงานในคลังข้อมูล)

คุณสมบัติที่กำลังจะมาถึงแล้ว

เราไม่สามารถต้านทานการล่อลวงที่จะเปิดม่านแห่งความลับในการเปิดตัวครั้งต่อไป โดยเฉพาะอย่างยิ่งเมื่อฟังก์ชันการทำงานนั้นดีมาก และอยู่ระหว่างการปรับปรุงก่อนการเปิดตัวจริง งั้นเรามาเจอกันนะ

ฟังก์ชั่น

ดังที่คุณทราบ Postman ใช้สิ่งที่เรียกว่าตัวแปรไดนามิกเพื่อสร้างค่า รายการของพวกเขาน่าประทับใจ และฟังก์ชันส่วนใหญ่ใช้เพื่อสร้างค่าปลอม ตัวอย่างเช่น หากต้องการสร้างอีเมลแบบสุ่ม คุณต้องเขียน:

{{$randomEmail}}

อย่างไรก็ตาม เนื่องจากสิ่งเหล่านี้เป็นตัวแปร (แม้ว่าจะเป็นไดนามิก) จึงไม่สามารถใช้เป็นฟังก์ชันได้: ไม่สามารถกำหนดพารามิเตอร์ได้ ดังนั้นจึงเป็นไปไม่ได้ที่จะดึงแฮชจากสตริง

เราวางแผนที่จะเพิ่มฟังก์ชัน "ซื่อสัตย์" ให้กับ TestMace ภายใน ${} ไม่เพียงแต่จะสามารถเข้าถึงตัวแปรเท่านั้น แต่ยังรวมถึงเรียกใช้ฟังก์ชันด้วย เหล่านั้น. หากคุณต้องการสร้างอีเมลปลอมที่ฉาวโฉ่ เราก็จะเขียนไป

${faker.internet.email()}

นอกเหนือจากความจริงที่ว่ามันเป็นฟังก์ชัน คุณจะสังเกตเห็นว่ามันเป็นไปได้ที่จะเรียกใช้เมธอดบนอ็อบเจ็กต์ และแทนที่จะเป็นรายการตัวแปรไดนามิกขนาดใหญ่ เรามีชุดของอ็อบเจ็กต์ที่จัดกลุ่มตามตรรกะ

จะเป็นอย่างไรถ้าเราต้องการคำนวณแฮชของสตริง? อย่างง่ายดาย!

${crypto.MD5($dynamicVar.data)}

คุณจะสังเกตเห็นว่าคุณสามารถส่งผ่านตัวแปรเป็นพารามิเตอร์ได้! ณ จุดนี้ ผู้อ่านที่อยากรู้อยากเห็นอาจสงสัยว่ามีบางอย่างผิดปกติ...

การใช้ JavaScript ในนิพจน์

... และด้วยเหตุผลที่ดี! เมื่อมีการสร้างข้อกำหนดสำหรับฟังก์ชัน ทันใดนั้นเราก็ได้ข้อสรุปว่าจาวาสคริปต์ที่ถูกต้องควรเขียนเป็นนิพจน์ ตอนนี้คุณสามารถเขียนสำนวนเช่น:

${1 + '' + crypto.MD5('asdf')}

และทั้งหมดนี้ไม่มีสคริปต์ในช่องป้อนข้อมูลโดยตรง!

สำหรับบุรุษไปรษณีย์ คุณสามารถใช้ได้เฉพาะตัวแปรเท่านั้น และเมื่อคุณพยายามเขียนนิพจน์เพียงเล็กน้อย เครื่องมือตรวจสอบจะสาปแช่งและปฏิเสธที่จะคำนวณมัน

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

การเติมข้อความอัตโนมัติขั้นสูง

ปัจจุบัน TestMace มีการเติมข้อความอัตโนมัติมาตรฐานที่มีลักษณะดังนี้:

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

ในที่นี้ นอกเหนือจากบรรทัดเติมข้อความอัตโนมัติแล้ว ยังระบุว่าบรรทัดนี้เป็นของอะไร กลไกนี้ใช้ได้เฉพาะกับนิพจน์ที่ล้อมรอบด้วยวงเล็บ ${} เท่านั้น

อย่างที่คุณเห็น มีการเพิ่มเครื่องหมายภาพซึ่งระบุประเภทของตัวแปร (เช่น สตริง ตัวเลข อาร์เรย์ ฯลฯ ) คุณยังสามารถเปลี่ยนโหมดการเติมข้อความอัตโนมัติได้ (เช่น คุณสามารถเลือกการเติมข้อความอัตโนมัติด้วยตัวแปรหรือส่วนหัว) แต่นี่ไม่ใช่สิ่งที่สำคัญที่สุด!

ประการแรก การเติมข้อความอัตโนมัติทำงานได้แม้ในนิพจน์ (หากเป็นไปได้) นี่คือสิ่งที่ดูเหมือน:

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

และประการที่สอง ขณะนี้การเติมข้อความอัตโนมัติพร้อมใช้งานในสคริปต์แล้ว มาดูกันว่ามันทำงานอย่างไร!

ทำไม TestMace ถึงดีกว่าบุรุษไปรษณีย์

ไม่มีประเด็นในการเปรียบเทียบฟังก์ชันนี้กับบุรุษไปรษณีย์ - การเติมข้อความอัตโนมัตินั้น จำกัด เฉพาะรายการตัวแปรส่วนหัวและค่าคงที่เท่านั้น (แก้ไขฉันหากฉันลืมบางสิ่งบางอย่าง) สคริปต์ไม่ได้เติมข้อความอัตโนมัติ :)

ข้อสรุป

เดือนตุลาคมถือเป็นปีนับตั้งแต่เริ่มพัฒนาผลิตภัณฑ์ของเรา ในช่วงเวลานี้ เราสามารถทำสิ่งต่างๆ มากมายและตามทันคู่แข่งของเราในบางประการ แต่อย่างไรก็ตาม เป้าหมายของเราคือการสร้างเครื่องมือที่สะดวกอย่างแท้จริงสำหรับการทำงานกับ API เรายังมีงานอีกมากที่ต้องทำ นี่คือแผนคร่าวๆ สำหรับการพัฒนาโครงการของเราในปีหน้า: https://testmace.com/roadmap.

ความคิดเห็นของคุณจะช่วยให้เราสำรวจฟีเจอร์ต่างๆ ที่มีอยู่มากมายได้ดียิ่งขึ้น และการสนับสนุนของคุณทำให้เรามีความเข้มแข็งและมั่นใจว่าเรากำลังทำสิ่งที่ถูกต้อง มันบังเอิญว่าวันนี้เป็นวันสำคัญสำหรับโปรเจ็กต์ของเรา - วันที่ TestMace ได้รับการเผยแพร่ ProductHunt. โปรดสนับสนุนโครงการของเรา มันสำคัญมากสำหรับเรา นอกจากนี้ วันนี้ยังมีข้อเสนอที่น่าดึงดูดบนหน้า PH ของเรา และมีจำนวนจำกัด

ที่มา: will.com

เพิ่มความคิดเห็น