REST Assured กับ JMeter: การเปรียบเทียบ REST Test Tools

เผยแพร่แล้ว: 2022-03-11

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

บริการ REST API ใด ๆ ที่ได้รับการทดสอบอย่างถูกต้องจะครอบคลุมพื้นที่เหล่านี้:

  • การทดสอบว่าบริการ API เป็นไปตามมาตรฐาน REST หรือไม่
  • การทดสอบรหัสตอบกลับบริการ API
  • การยืนยันเนื้อหาการตอบกลับบริการ API
  • การเปรียบเทียบประสิทธิภาพของบริการ API

เครื่องมือสำหรับการทดสอบ REST

สำหรับสิ่งนี้ คุณต้องมีเครื่องมือที่เหมาะสม Apache JMeter และ REST Assured เป็นเครื่องมือทดสอบ REST ยอดนิยมสองแบบสำหรับการทดสอบบริการ REST API คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการใช้งานจริงได้จากที่นี่และที่นี่

ในบทความนี้ คุณจะได้เรียนรู้ข้อดีและข้อเสียของเครื่องมือทั้งสองนี้และตำแหน่งที่เหมาะสมที่สุดในโครงการ REST API ที่คุณมีอยู่

ติดตั้งง่าย

มีข้อกำหนดเบื้องต้นหนึ่งข้อ: ทั้ง JMeter และ REST Assured ต้องใช้ Java ดังนั้นคุณต้องติดตั้ง Java บนคอมพิวเตอร์ของคุณเพื่อเรียกใช้ JMeter หรือ REST Assured

การติดตั้ง Apache JMeter นั้นง่ายมาก: ไปที่หน้าดาวน์โหลด เลือก ZIP หรือ TAR ดาวน์โหลดไฟล์เก็บถาวร แกะกล่อง และคุณพร้อมที่จะไป

ไปที่โฟลเดอร์ที่คุณคลายการแพ็กไฟล์เก็บถาวร ไปที่โฟลเดอร์ย่อย bin และเรียกใช้ jmeter.bat (หรือคล้ายกันสำหรับระบบปฏิบัติการของคุณ หากไม่ใช่ Windows) สำหรับข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีตั้งค่า Apache JMeter โปรดดูหน้านี้

การติดตั้ง REST Assured เป็นประสบการณ์ที่แตกต่างออกไปเล็กน้อย REST Assured ไม่ใช่เครื่องมือแบบสแตนด์อโลน เป็นห้องสมุดจาวา ในการใช้งาน คุณต้องตั้งค่าโปรเจ็กต์ Java ใหม่และรวมเป็นไลบรารีสำหรับโปรเจ็กต์ของคุณ แน่นอนว่ามีการรองรับเครื่องมือบิลด์มากมาย ดังนั้นคุณสามารถชี้ตัวแก้ไขการพึ่งพาของคุณไปที่ repo สาธารณะ (Maven) คุณสามารถค้นหาข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีตั้งค่า REST Assured ได้ที่นี่

เอกสาร

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

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

การสร้างและบำรุงรักษาการทดสอบ REST อัตโนมัติ

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

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

ภาพหน้าจอ JMeter GUI

เมื่อคุณบันทึกโปรเจ็กต์ JMeter ของคุณ ทุกสิ่งที่คุณสร้างจะถูกบันทึกลงในไฟล์ XML ขนาดใหญ่ไฟล์เดียว (ด้วยนามสกุล . .jmx ) โดยทั่วไป แม้จะมีการเปลี่ยนแปลงเล็กน้อยในการทดสอบ คุณจะต้องเปิดโครงการใน GUI อีกครั้งเพื่อทำการเปลี่ยนแปลง

หากคุณต้องการทำงานร่วมกับผู้อื่นในไฟล์โปรเจ็กต์ JMeter เดียวกัน ไฟล์ XML ขนาดใหญ่นี้จะดูแลรักษาได้ไม่ง่ายโดยใช้ระบบการจัดการการควบคุมแหล่งที่มา (SCM) (เช่น Git, SVN, Perforce เป็นต้น)

ในทางกลับกัน REST Assured ต้องการทักษะการเขียนโค้ด Java เพื่อสร้างการทดสอบ ไม่มี GUI ที่ใช้งานง่ายสำหรับการสร้างการทดสอบ อย่างไรก็ตาม REST Assured ให้คุณเขียนการทดสอบโดยใช้ภาษา Gherkin (ไวยากรณ์ที่กำหนดเมื่อถึงตอนนั้น) ดังนั้นแม้ว่าคุณจะต้องใช้ทักษะการเขียนโค้ด Java บ้าง การทดสอบก็ค่อนข้างอ่านง่าย

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

เนื่องจาก REST Assured เป็นไลบรารี่และการทดสอบนั้นเขียนด้วยภาษา Java จริงๆ คุณจึงสามารถจัดระเบียบการทดสอบของคุณในไฟล์ Java ที่แยกจากกัน ดังนั้นเมื่อคุณต้องการเปลี่ยนการทดสอบหนึ่งรายการ คุณเพียงแค่ต้องเปิดไฟล์เดียว คุณไม่จำเป็นต้องมี GUI ดังนั้นคุณจึงสามารถแก้ไขการทดสอบได้อย่างง่ายดายแม้ผ่านเทอร์มินัล SSH การทำงานร่วมกันกับผู้อื่นนั้นค่อนข้างง่ายเพราะง่ายต่อการดูแลไฟล์ Java โดยใช้ SCM

ประเภทของการทดสอบ REST

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

ภาพหน้าจอของ JMeter Response Times

ในทางกลับกัน นี่ไม่ใช่สถานการณ์การใช้งานหลักสำหรับ JMeter คุณสามารถสร้างการทดสอบการทำงานสำหรับ REST API ด้วย JMeter รวมถึงการยืนยันการตอบสนอง

สถานการณ์การใช้งานหลักของ REST Assured มีไว้สำหรับการทดสอบการทำงานของบริการ REST API มันยังมาพร้อมกับกลไกการยืนยันการตอบสนองของตัวเอง (ไวยากรณ์ของ Gherkin) เนื่องจาก REST Assured เป็นไลบรารี Java จึงสามารถรวมเข้ากับการทดสอบหน่วยได้อย่างง่ายดาย

เมื่อพูดถึงการทดสอบประสิทธิภาพ REST Assured ไม่รองรับการทดสอบประสิทธิภาพตั้งแต่แกะกล่อง อย่างไรก็ตาม หากคุณต้องการใช้สำหรับการทดสอบประสิทธิภาพ คุณจะต้องพัฒนากรอบงานแบบกำหนดเองของคุณเองสำหรับการทดสอบประสิทธิภาพโดยใช้ REST Assured

การดำเนินการทดสอบ

การทดสอบ JMeter สามารถเรียกใช้ได้สองวิธี

จากอินเทอร์เฟซผู้ใช้โดยคลิกที่ปุ่มเรียกใช้:

ภาพหน้าจอของปุ่มเรียกใช้ JMeter

จากบรรทัดคำสั่ง:

 jmeter -n -t your_script.jmx

คำแนะนำอย่างเป็นทางการจาก JMeter คืออย่าเรียกใช้การทดสอบประสิทธิภาพโดยใช้ GUI เนื่องจากการทดสอบจะทำงานช้าลง (ในแง่ของจำนวนคำขอต่อวินาที) เมื่อเทียบกับการเรียกใช้จากบรรทัดคำสั่ง

ในทางกลับกัน REST Assured ต้องการตัวทดสอบที่แยกจากกัน เช่น jUnit หรือ TestNG (หรือวิธีอื่นใดในการรันโค้ด Java)

จาก Eclipse โดยใช้ TestNG:

ภาพหน้าจอของ REST Assured Eclipse

จากบรรทัดรับคำสั่งโดยใช้ ตัวอย่างเช่น เครื่องมือ Ant build:

 ant run-tests

ประเภทของรายงาน

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

รายงานประสิทธิภาพ JMeter

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับรายงาน JMeter และประเภทของรายงานที่คุณสามารถสร้างได้จากที่นี่

REST Assured ไม่ได้สร้างรายงานใดๆ ดังนั้นจึงขึ้นอยู่กับคุณและกรอบงานการทดสอบที่คุณเลือก อย่างไรก็ตาม เมื่อรวมเข้ากับเฟรมเวิร์กการทดสอบหน่วย คุณจะได้รับรายงานที่ค่อนข้างใช้งานได้ในรูปแบบ HTML, ข้อความ หรือ XML

REST รายงาน HTML ที่มั่นใจ

บูรณาการกับเจนกินส์

เมื่อพูดถึงการผสานรวมผลิตภัณฑ์ภายใต้การทดสอบอย่างต่อเนื่อง การผสานรวมเฟรมเวิร์กการทดสอบอัตโนมัติเข้ากับเครื่องมือ CI สำหรับทั้งการทดสอบที่กำลังดำเนินการและการรายงานผลเป็นสิ่งสำคัญมาก

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

ภาพหน้าจอของ JMeter Jenkins

REST Assured ยังสามารถรวมเข้ากับ Jenkins ได้อย่างง่ายดาย เนื่องจาก Jenkins มีปลั๊กอินสำหรับเฟรมเวิร์กการทดสอบเกือบทั้งหมด ตัวอย่างเช่น ปลั๊กอิน TestNG ซึ่งสามารถสร้างแผนภูมิแนวโน้มที่มั่นคงอีกครั้งสำหรับผลการทดสอบ

ภาพหน้าจอของ REST Assured Jenkins

กิจกรรมชุมชน

หมวดนี้วัดกันไม่ได้ง่ายๆ กิจกรรมของชุมชนขึ้นอยู่กับปัจจัยหลายประการ เช่น ความสมบูรณ์ของเครื่องมือหรือจำนวนผู้มีส่วนร่วม

Apache JMeter มีชุมชนขนาดใหญ่ขึ้นในปัจจุบัน ส่วนใหญ่เป็นเพราะความจริงที่ว่า JMeter ปรากฏตัวในตลาดเมื่อนานมาแล้วและถือเป็นมาตรฐานอุตสาหกรรมในการทดสอบประสิทธิภาพของเว็บแอปและบริการ JMeter เผยแพร่การเผยแพร่อย่างเป็นทางการในทุก ๆ 5-6 เดือน ที่เก็บ GitHub มีการใช้งานมาก โดยมีการคอมมิตใหม่ทุกวัน JMeter ใช้ Bugzilla เป็นตัวติดตามปัญหาและมีรายการปัญหาที่เปิดอยู่ซึ่งมีการเปลี่ยนแปลงบ่อยครั้ง มีผลลัพธ์มากกว่า 23,000 รายการสำหรับ JMeter ในการค้นหา StackOverflow จากไซต์เครือข่ายสังคมออนไลน์ JMeter มีบัญชี Twitter อย่างเป็นทางการ บน Facebook และ LinkedIn ไม่มีบัญชีอย่างเป็นทางการสำหรับ JMeter แต่มีอยู่สองสามกลุ่ม ซึ่งกลุ่มที่ใหญ่กว่าคือกลุ่ม Facebook นี้และกลุ่ม LinkedIn นี้

REST Assured กำลังจะเข้าสู่ขั้นตอนหลักและกลายเป็นตัวเลือกแรก ซึ่งเป็นคำแนะนำจากหลายแหล่ง เมื่อพูดถึงการทดสอบการทำงานของบริการ REST API แบบอัตโนมัติ REST Assured ได้เผยแพร่การเผยแพร่อย่างเป็นทางการทุกๆ 6 เดือนในช่วงสองปีที่ผ่านมา ที่เก็บ GitHub มีผู้ร่วมให้ข้อมูลจำนวนมากและมีการใช้งานน้อยกว่าของ JMeter เล็กน้อย แต่ก็มีการใช้งานมากเช่นกัน REST Assured กำลังติดตามปัญหาในที่เก็บ GitHub ดังนั้นทั้งหมดจึงรวมอยู่ในที่เดียว ใน StackOverflow มีผลการค้นหามากกว่า 2,000 รายการสำหรับ REST Assured ดังนั้นเราจึงสามารถพูดได้ว่ามันต่ำกว่าอย่างมากเมื่อเทียบกับผลการค้นหาของ JMeter สำหรับกลุ่มโซเชียลเน็ตเวิร์ก มีเพียงกลุ่ม LinkedIn เท่านั้นที่มีจำนวนสมาชิกต่ำกว่าอย่างเห็นได้ชัดเมื่อเทียบกับ JMeter ชุมชน REST Assured อาจไม่ใหญ่เท่ากับชุมชน JMeter แต่มีความกระตือรือร้นอย่างมาก

สรุป

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

ต่อไปนี้คือข้อมูลสรุปของเกณฑ์การเปรียบเทียบทั้งหมดที่สำรวจในบทความนี้สำหรับเครื่องมือทดสอบ REST ยอดนิยมสองเครื่องนี้:

Apache JMeter มั่นใจได้
ต้องใช้ทักษะการเขียนโปรแกรม ไม่ ใช่ (จาวา)
เอกสารอย่างละเอียด ใช่ ใช่
การทดสอบการทำงาน ใช่ (แต่เกินความสามารถ) ใช่
การทดสอบประสิทธิภาพ ใช่ ไม่มี (ออกจากกล่อง)
เหมาะสำหรับ SCM (Git, P4...) ไม่ ใช่
รายงานผลการทดสอบ ใช่ ไม่
บูรณาการกับเครื่องมือ CI ใช่ ใช่
บูรณาการกับการทดสอบหน่วย ไม่ ใช่
ทดสอบการทำให้ขนานกัน ใช่ ใช่
กิจกรรมชุมชน ใช่ ใช่