Locust เป็นเครื่องมือทดสอบประสิทธิภาพ/โหลดแบบโอเพ่นซอร์สสำหรับ HTTP และโปรโตคอลอื่นๆ แนวทางที่เป็นมิตรกับนักพัฒนาช่วยให้คุณกำหนดการทดสอบของคุณในโค้ด Python ปกติ
การทดสอบตั๊กแตนสามารถเรียกใช้จากบรรทัดคำสั่งหรือใช้ UI บนเว็บ สามารถดูปริมาณงาน เวลาตอบสนอง และข้อผิดพลาดได้แบบเรียลไทม์ และ/หรือส่งออกเพื่อการวิเคราะห์ในภายหลัง
คุณสามารถนำเข้าไลบรารี Python ปกติเข้าสู่การทดสอบของคุณได้ และด้วยสถาปัตยกรรมแบบเสียบปลั๊กได้ของ Locust ทำให้สามารถขยายได้อย่างไร้ขีดจำกัด แตกต่างจากเมื่อใช้เครื่องมืออื่นๆ ส่วนใหญ่ การออกแบบการทดสอบของคุณจะไม่ถูกจำกัดด้วย GUI หรือภาษาเฉพาะโดเมน
หากต้องการเริ่มต้นทันที ให้ไปที่เอกสารประกอบ
หากคุณต้องการให้ผู้ใช้วนซ้ำ ดำเนินการตามเงื่อนไข หรือคำนวณ คุณเพียงแค่ใช้โครงสร้างการเขียนโปรแกรมทั่วไปที่ Python เตรียมไว้ให้ Locust รันผู้ใช้ทุกคนภายใน Greenlet ของตัวเอง (กระบวนการแบบน้ำหนักเบา/โครูทีน) สิ่งนี้ทำให้คุณสามารถเขียนการทดสอบของคุณเหมือนกับโค้ด Python ปกติ (บล็อก) แทนที่จะต้องใช้การเรียกกลับหรือกลไกอื่น ๆ เนื่องจากสถานการณ์ของคุณเป็น "เพียงแค่หลาม" คุณจึงสามารถใช้ IDE ปกติของคุณได้ และเวอร์ชันจะควบคุมการทดสอบของคุณเป็นโค้ดปกติ (ซึ่งตรงข้ามกับเครื่องมืออื่นๆ บางอย่างที่ใช้รูปแบบ XML หรือไบนารี่)
จากตั๊กแตนนำเข้า HttpUser, งาน, ระหว่างคลาส QuickstartUser(HttpUser):wait_time = ระหว่าง(1, 2)def on_start(self):self.client.post("/login", json={"username":foo", " รหัสผ่าน///bar")@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):สำหรับ item_id ในช่วง(10):self.client.get(f"/item?id={item_id}", name="/item")
Locust ทำให้ง่ายต่อการรันการทดสอบโหลดที่กระจายไปยังเครื่องหลายเครื่อง เป็นไปตามเหตุการณ์ (โดยใช้ gevent) ซึ่งทำให้กระบวนการเดียวสามารถจัดการผู้ใช้พร้อมกันหลายพันคนได้ แม้ว่าอาจมีเครื่องมืออื่นๆ ที่สามารถทำคำขอได้มากขึ้นต่อวินาทีบนฮาร์ดแวร์ที่กำหนด แต่โอเวอร์เฮดที่ต่ำของผู้ใช้ Locust แต่ละคนทำให้เหมาะสมมากสำหรับการทดสอบปริมาณงานที่เกิดขึ้นพร้อมกันในระดับสูง
Locust มีเว็บอินเตอร์เฟสที่เป็นมิตรต่อผู้ใช้ซึ่งแสดงความคืบหน้าของการทดสอบของคุณแบบเรียลไทม์ คุณยังสามารถเปลี่ยนโหลดในขณะที่การทดสอบกำลังทำงานอยู่ นอกจากนี้ยังสามารถทำงานได้โดยไม่ต้องใช้ UI ทำให้ง่ายต่อการใช้สำหรับการทดสอบ CI/CD
แม้ว่า Locust จะทำงานร่วมกับเว็บไซต์/บริการเป็นหลัก แต่ก็สามารถใช้เพื่อทดสอบระบบหรือโปรโตคอลได้เกือบทุกประเภท เพียงเขียนไคลเอนต์สำหรับสิ่งที่คุณต้องการทดสอบ หรือสำรวจบางส่วนที่สร้างโดยชุมชน
โค้ดเบสของ Locust ถูกตั้งใจให้มีขนาดเล็กและไม่สามารถแก้ปัญหาทุกอย่างตั้งแต่แกะกล่องได้ แต่เราพยายามทำให้ง่ายต่อการปรับให้เข้ากับสถานการณ์ใดๆ ที่คุณอาจพบเจอ โดยใช้โค้ด Python ทั่วไป ไม่มีอะไรหยุดคุณจาก:
ส่งข้อมูลการรายงานแบบเรียลไทม์ไปยัง TimescaleDB และแสดงภาพใน Grafana
ตัดสายเพื่อจัดการกับลักษณะเฉพาะของ REST API ของคุณ
ใช้รูปร่าง/โปรไฟล์การรับน้ำหนักที่กำหนดเองโดยสิ้นเชิง
-
เอกสารประกอบ: docs.locust.io
การสนับสนุน/คำถาม: StackOverflow
การสนทนา Github: การสนทนา Github
แชท/สนทนา: Slack (สมัคร)
ผู้ดูแล: ลาร์ส โฮล์มเบิร์ก
UI: แอนดรูว์ บอลด์วิน
ผู้สร้างดั้งเดิม: โจนาธาน เฮย์แมน
ขอบคุณมากสำหรับผู้มีส่วนร่วมของเราทุกคน
โอเพ่นซอร์สได้รับใบอนุญาตภายใต้ใบอนุญาต MIT (ดูรายละเอียดในไฟล์ ใบอนุญาต )