สวัสดีทุกคน เอาล่ะ
แยกออกเป็นโหนด
หากคุณทำงานร่วมกับบุรุษไปรษณีย์ คุณจะรู้ว่าอินเทอร์เฟซคำขอมีฟังก์ชันที่จำเป็นทั้งหมด มีสคริปต์ การทดสอบ และจริงๆ แล้วมีการสืบค้นด้วย ซึ่งจะทำให้ง่ายขึ้นสำหรับผู้เริ่มต้น แต่ในสถานการณ์ขนาดใหญ่ วิธีการนี้ไม่ยืดหยุ่น จะทำอย่างไรถ้าคุณต้องการสร้างการสืบค้นหลายรายการและดำเนินการรวมเข้าด้วยกัน จะเป็นอย่างไรถ้าคุณต้องการเรียกใช้งานสคริปต์โดยไม่มีการร้องขอหรือสคริปต์ที่แยกออกจากกันหลาย ๆ สคริปต์ในแถว? ท้ายที่สุด เป็นความคิดที่ดีที่จะแยกการทดสอบออกจากสคริปต์ยูทิลิตี้ทั่วไป นอกจากนี้ วิธีการ "เพิ่มฟังก์ชันการทำงานทั้งหมดลงในโหนดเดียว" ไม่สามารถปรับขนาดได้ - อินเทอร์เฟซจะโอเวอร์โหลดอย่างรวดเร็ว
TestMace เริ่มแบ่งการทำงานทั้งหมดออกเป็นโหนดประเภทต่างๆ คุณต้องการจะทำการร้องขอหรือไม่? นี่สำหรับเธอ
รูปแบบโครงการที่มนุษย์สามารถอ่านได้
มีความแตกต่างทางแนวคิดระหว่าง TestMace และ Postman ในลักษณะการจัดเก็บ ในบุรุษไปรษณีย์ คำขอทั้งหมดจะถูกเก็บไว้ที่ไหนสักแห่งในที่จัดเก็บในตัวเครื่อง หากมีความจำเป็นต้องแชร์คำขอระหว่างผู้ใช้หลายคน คุณจะต้องใช้การซิงโครไนซ์ในตัว อันที่จริงนี่เป็นแนวทางที่ยอมรับกันโดยทั่วไป แต่ก็ไม่ใช่ว่าไม่มีข้อเสีย แล้วความปลอดภัยของข้อมูลล่ะ? ท้ายที่สุดแล้ว นโยบายของบางบริษัทอาจไม่อนุญาตให้จัดเก็บข้อมูลกับบุคคลที่สาม อย่างไรก็ตาม เราคิดว่า TestMace มีสิ่งที่ดีกว่าที่จะนำเสนอ! และชื่อของการปรับปรุงนี้คือ “รูปแบบโครงการที่มนุษย์สามารถอ่านได้”
เริ่มจากข้อเท็จจริงที่ว่าโดยหลักการแล้วใน TestMace จะมีเอนทิตี "โปรเจ็กต์" และแอปพลิเคชันได้รับการพัฒนาในขั้นต้นโดยคำนึงถึงการจัดเก็บโปรเจ็กต์ในระบบควบคุมเวอร์ชัน: แผนผังโปรเจ็กต์เกือบจะฉายแบบตัวต่อตัวบนโครงสร้างไฟล์, yaml ใช้เป็นรูปแบบการจัดเก็บข้อมูล (โดยไม่ต้องใช้วงเล็บปีกกาและเครื่องหมายจุลภาคเพิ่มเติม) และ การแสดงไฟล์ของแต่ละโหนดมีการอธิบายรายละเอียดในเอกสารประกอบพร้อมความคิดเห็น แต่ในกรณีส่วนใหญ่ คุณจะไม่ดูที่นั่น - ชื่อฟิลด์ทั้งหมดมีชื่อตรรกะ
สิ่งนี้ให้อะไรแก่ผู้ใช้? สิ่งนี้ช่วยให้คุณเปลี่ยนขั้นตอนการทำงานของทีมได้อย่างยืดหยุ่นโดยใช้แนวทางที่คุ้นเคย ตัวอย่างเช่น นักพัฒนาสามารถจัดเก็บโปรเจ็กต์ไว้ในพื้นที่เก็บข้อมูลเดียวกันกับแบ็กเอนด์ได้ ในสาขา นอกเหนือจากการเปลี่ยนฐานโค้ดแล้ว นักพัฒนายังสามารถแก้ไขสคริปต์การสืบค้นและการทดสอบที่มีอยู่ได้ หลังจากทำการเปลี่ยนแปลงพื้นที่เก็บข้อมูล (git, svn, mercurial - อะไรก็ได้ที่คุณชอบที่สุด) CI (รายการโปรดของคุณ ไม่ได้กำหนดโดยใครก็ตาม) จะเปิดตัวยูทิลิตี้คอนโซลของเรา
อย่างที่คุณเห็น TestMace ไม่ได้กำหนดระบบนิเวศและกระบวนทัศน์ของมัน แต่กลับเข้ากับกระบวนการที่กำหนดไว้ได้อย่างง่ายดาย
ตัวแปรไดนามิก
TestMace ยึดถือแนวคิดแบบไม่ใช้โค้ด: หากปัญหาสามารถแก้ไขได้โดยไม่ต้องใช้โค้ด เราจะพยายามให้โอกาสนี้ การทำงานกับตัวแปรนั้นเป็นฟังก์ชันประเภทหนึ่งที่โดยส่วนใหญ่คุณสามารถทำได้โดยไม่ต้องเขียนโปรแกรม
ตัวอย่าง: เราได้รับการตอบกลับจากเซิร์ฟเวอร์ และเราต้องการบันทึกส่วนหนึ่งของการตอบกลับลงในตัวแปร ใน Postman ในสคริปต์ทดสอบ (ซึ่งก็แปลกในตัวมันเอง) เราจะเขียนดังนี้:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);
แต่ในความเห็นของเรา การเขียนสคริปต์สำหรับสถานการณ์ที่เรียบง่ายและใช้บ่อยนั้นดูซ้ำซ้อน ดังนั้นใน TestMace จึงเป็นไปได้ที่จะกำหนดส่วนหนึ่งของคำตอบให้กับตัวแปรโดยใช้อินเทอร์เฟซแบบกราฟิก ดูว่ามันง่ายแค่ไหน:
และตอนนี้ทุกครั้งที่มีการร้องขอ ตัวแปรไดนามิกนี้จะได้รับการอัปเดต แต่คุณสามารถคัดค้านได้ โดยโต้แย้งว่าแนวทางของบุรุษไปรษณีย์มีความยืดหยุ่นมากกว่า และช่วยให้คุณไม่เพียงแต่ทำการบ้านเท่านั้น แต่ยังดำเนินการประมวลผลล่วงหน้าบางอย่างได้อีกด้วย ต่อไปนี้เป็นวิธีแก้ไขตัวอย่างก่อนหน้านี้:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));
เพื่อจุดประสงค์นี้ 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 ฟังก์ชั่นนี้ดำเนินการโดย
1) สร้างแบบสอบถามหรือสคริปต์
2) สร้างโหนดประเภทลิงก์
3) ในพารามิเตอร์ ระบุลิงก์ไปยังสคริปต์ที่สร้างขึ้นในขั้นตอนแรก
ในเวอร์ชันขั้นสูง คุณสามารถระบุตัวแปรไดนามิกจากสคริปต์ที่จะถูกส่งผ่านไปยังระดับที่สูงกว่าที่เกี่ยวข้องกับลิงก์ได้ ฟังดูสับสนใช่ไหม? สมมติว่าเราสร้างโฟลเดอร์ที่มีชื่อ สร้างโพสต์ซึ่งภายในตัวแปรไดนามิกถูกกำหนดให้กับโหนดนี้ postId
. ตอนนี้อยู่ในโหนดลิงก์ สร้างโพสต์ลิงก์ คุณสามารถระบุตัวแปรนั้นได้อย่างชัดเจน postId
มอบหมายให้บรรพบุรุษ สร้างโพสต์ลิงก์. กลไกนี้ (อีกครั้งในภาษาการเขียนโปรแกรม) สามารถใช้เพื่อส่งคืนผลลัพธ์จาก "ฟังก์ชัน" โดยทั่วไปแล้ว มันเยี่ยมมาก DRY ทำงานได้เต็มประสิทธิภาพและไม่มีโค้ดแม้แต่บรรทัดเดียวเสียหาย
สำหรับบุรุษไปรษณีย์นั้นมีการร้องขอคุณสมบัติสำหรับการนำคำขอกลับมาใช้ใหม่
ความแตกต่างอื่นๆ
- ควบคุมขอบเขตของตัวแปรได้มากขึ้น ขอบเขตที่เล็กที่สุดที่สามารถกำหนดตัวแปรในบุรุษไปรษณีย์ได้คือการรวบรวม TestMace ช่วยให้คุณสามารถกำหนดตัวแปรสำหรับการสืบค้นหรือโฟลเดอร์ใด ๆ ในคอลเลกชัน Postman Share ช่วยให้คุณสามารถส่งออกเฉพาะคอลเลกชัน ในขณะที่การแชร์ TestMace ใช้ได้กับโหนดใดๆ
- รองรับ TestMace
ส่วนหัวที่สืบทอดได้ ซึ่งสามารถแทนที่เป็นข้อความค้นหาย่อยได้ตามค่าเริ่มต้น บุรุษไปรษณีย์มีบางอย่างเกี่ยวกับสิ่งนี้:งาน และถึงแม้จะปิดไปแล้ว แต่ก็มีการนำเสนอเป็นวิธีแก้ปัญหา...ใช้สคริปต์ . ใน TestMace ทั้งหมดนี้ได้รับการกำหนดค่าผ่าน GUI และมีตัวเลือกในการปิดใช้งานส่วนหัวที่สืบทอดมาในลูกหลานที่เฉพาะเจาะจง - ยกเลิกทำซ้ำ. ใช้งานได้ไม่เพียงแต่เมื่อแก้ไขโหนดเท่านั้น แต่ยังรวมถึงเมื่อย้าย ลบ เปลี่ยนชื่อ และการดำเนินการอื่น ๆ ที่เปลี่ยนโครงสร้างของโปรเจ็กต์
- ไฟล์ที่แนบมากับคำขอจะกลายเป็นส่วนหนึ่งของโปรเจ็กต์และจะถูกเก็บไว้พร้อมกับมัน ในขณะที่มีการซิงโครไนซ์อย่างสมบูรณ์แบบ ไม่เหมือนบุรุษไปรษณีย์ (ใช่ คุณไม่จำเป็นต้องเลือกไฟล์ด้วยตนเองอีกต่อไปทุกครั้งที่คุณเริ่มต้นและถ่ายโอนไฟล์เหล่านั้นไปยังเพื่อนร่วมงานในคลังข้อมูล)
คุณสมบัติที่กำลังจะมาถึงแล้ว
เราไม่สามารถต้านทานการล่อลวงที่จะเปิดม่านแห่งความลับในการเปิดตัวครั้งต่อไป โดยเฉพาะอย่างยิ่งเมื่อฟังก์ชันการทำงานนั้นดีมาก และอยู่ระหว่างการปรับปรุงก่อนการเปิดตัวจริง งั้นเรามาเจอกันนะ
ฟังก์ชั่น
ดังที่คุณทราบ Postman ใช้สิ่งที่เรียกว่าตัวแปรไดนามิกเพื่อสร้างค่า
{{$randomEmail}}
อย่างไรก็ตาม เนื่องจากสิ่งเหล่านี้เป็นตัวแปร (แม้ว่าจะเป็นไดนามิก) จึงไม่สามารถใช้เป็นฟังก์ชันได้: ไม่สามารถกำหนดพารามิเตอร์ได้ ดังนั้นจึงเป็นไปไม่ได้ที่จะดึงแฮชจากสตริง
เราวางแผนที่จะเพิ่มฟังก์ชัน "ซื่อสัตย์" ให้กับ TestMace ภายใน ${} ไม่เพียงแต่จะสามารถเข้าถึงตัวแปรเท่านั้น แต่ยังรวมถึงเรียกใช้ฟังก์ชันด้วย เหล่านั้น. หากคุณต้องการสร้างอีเมลปลอมที่ฉาวโฉ่ เราก็จะเขียนไป
${faker.internet.email()}
นอกเหนือจากความจริงที่ว่ามันเป็นฟังก์ชัน คุณจะสังเกตเห็นว่ามันเป็นไปได้ที่จะเรียกใช้เมธอดบนอ็อบเจ็กต์ และแทนที่จะเป็นรายการตัวแปรไดนามิกขนาดใหญ่ เรามีชุดของอ็อบเจ็กต์ที่จัดกลุ่มตามตรรกะ
จะเป็นอย่างไรถ้าเราต้องการคำนวณแฮชของสตริง? อย่างง่ายดาย!
${crypto.MD5($dynamicVar.data)}
คุณจะสังเกตเห็นว่าคุณสามารถส่งผ่านตัวแปรเป็นพารามิเตอร์ได้! ณ จุดนี้ ผู้อ่านที่อยากรู้อยากเห็นอาจสงสัยว่ามีบางอย่างผิดปกติ...
การใช้ JavaScript ในนิพจน์
... และด้วยเหตุผลที่ดี! เมื่อมีการสร้างข้อกำหนดสำหรับฟังก์ชัน ทันใดนั้นเราก็ได้ข้อสรุปว่าจาวาสคริปต์ที่ถูกต้องควรเขียนเป็นนิพจน์ ตอนนี้คุณสามารถเขียนสำนวนเช่น:
${1 + '' + crypto.MD5('asdf')}
และทั้งหมดนี้ไม่มีสคริปต์ในช่องป้อนข้อมูลโดยตรง!
สำหรับบุรุษไปรษณีย์ คุณสามารถใช้ได้เฉพาะตัวแปรเท่านั้น และเมื่อคุณพยายามเขียนนิพจน์เพียงเล็กน้อย เครื่องมือตรวจสอบจะสาปแช่งและปฏิเสธที่จะคำนวณมัน
การเติมข้อความอัตโนมัติขั้นสูง
ปัจจุบัน TestMace มีการเติมข้อความอัตโนมัติมาตรฐานที่มีลักษณะดังนี้:
ในที่นี้ นอกเหนือจากบรรทัดเติมข้อความอัตโนมัติแล้ว ยังระบุว่าบรรทัดนี้เป็นของอะไร กลไกนี้ใช้ได้เฉพาะกับนิพจน์ที่ล้อมรอบด้วยวงเล็บ ${} เท่านั้น
อย่างที่คุณเห็น มีการเพิ่มเครื่องหมายภาพซึ่งระบุประเภทของตัวแปร (เช่น สตริง ตัวเลข อาร์เรย์ ฯลฯ ) คุณยังสามารถเปลี่ยนโหมดการเติมข้อความอัตโนมัติได้ (เช่น คุณสามารถเลือกการเติมข้อความอัตโนมัติด้วยตัวแปรหรือส่วนหัว) แต่นี่ไม่ใช่สิ่งที่สำคัญที่สุด!
ประการแรก การเติมข้อความอัตโนมัติทำงานได้แม้ในนิพจน์ (หากเป็นไปได้) นี่คือสิ่งที่ดูเหมือน:
และประการที่สอง ขณะนี้การเติมข้อความอัตโนมัติพร้อมใช้งานในสคริปต์แล้ว มาดูกันว่ามันทำงานอย่างไร!
ไม่มีประเด็นในการเปรียบเทียบฟังก์ชันนี้กับบุรุษไปรษณีย์ - การเติมข้อความอัตโนมัตินั้น จำกัด เฉพาะรายการตัวแปรส่วนหัวและค่าคงที่เท่านั้น (แก้ไขฉันหากฉันลืมบางสิ่งบางอย่าง) สคริปต์ไม่ได้เติมข้อความอัตโนมัติ :)
ข้อสรุป
เดือนตุลาคมถือเป็นปีนับตั้งแต่เริ่มพัฒนาผลิตภัณฑ์ของเรา ในช่วงเวลานี้ เราสามารถทำสิ่งต่างๆ มากมายและตามทันคู่แข่งของเราในบางประการ แต่อย่างไรก็ตาม เป้าหมายของเราคือการสร้างเครื่องมือที่สะดวกอย่างแท้จริงสำหรับการทำงานกับ API เรายังมีงานอีกมากที่ต้องทำ นี่คือแผนคร่าวๆ สำหรับการพัฒนาโครงการของเราในปีหน้า:
ความคิดเห็นของคุณจะช่วยให้เราสำรวจฟีเจอร์ต่างๆ ที่มีอยู่มากมายได้ดียิ่งขึ้น และการสนับสนุนของคุณทำให้เรามีความเข้มแข็งและมั่นใจว่าเรากำลังทำสิ่งที่ถูกต้อง มันบังเอิญว่าวันนี้เป็นวันสำคัญสำหรับโปรเจ็กต์ของเรา - วันที่ TestMace ได้รับการเผยแพร่
ที่มา: will.com