Locust عبارة عن أداة مفتوحة المصدر لاختبار الأداء/الحمل لـ HTTP والبروتوكولات الأخرى. يتيح لك أسلوبها الصديق للمطورين تحديد اختباراتك في كود Python العادي.
يمكن إجراء اختبارات الجراد من سطر الأوامر أو باستخدام واجهة المستخدم المستندة إلى الويب. يمكن عرض الإنتاجية وأوقات الاستجابة والأخطاء في الوقت الفعلي و/أو تصديرها لتحليلها لاحقًا.
يمكنك استيراد مكتبات Python العادية إلى اختباراتك، ومع بنية Locust القابلة للتوصيل، فهي قابلة للتوسيع بشكل لا نهائي. على عكس استخدام معظم الأدوات الأخرى، لن يكون تصميم الاختبار الخاص بك مقيدًا أبدًا بواجهة المستخدم الرسومية أو اللغة الخاصة بالمجال.
للبدء على الفور، انتقل إلى الوثائق.
إذا كنت تريد أن يقوم المستخدمون لديك بالتكرار، أو تنفيذ بعض السلوك الشرطي، أو إجراء بعض العمليات الحسابية، فما عليك سوى استخدام بنيات البرمجة العادية التي توفرها Python. يقوم Locust بتشغيل كل مستخدم داخل Greenlet الخاص به (عملية خفيفة الوزن/كوروتين). يمكّنك هذا من كتابة اختباراتك مثل كود Python العادي (المحظور) بدلاً من الاضطرار إلى استخدام عمليات الاسترجاعات أو بعض الآليات الأخرى. نظرًا لأن السيناريوهات الخاصة بك هي "مجرد لغة python"، يمكنك استخدام IDE العادي الخاص بك، والتحكم في الإصدار في اختباراتك كرمز عادي (على عكس بعض الأدوات الأخرى التي تستخدم XML أو التنسيقات الثنائية)
من استيراد الجراد HttpUser، المهمة، بين الفئة QuickstartUser(HttpUser):wait_time = بين(1, 2)def on_start(self):self.client.post("/login", json={"username":":foo", " كلمة المرور": ""})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):for item_id في النطاق(10):self.client.get(f"/item?id={item_id}"، name="/item")
يعمل Locust على تسهيل إجراء اختبارات التحميل الموزعة على أجهزة متعددة. إنه يعتمد على الأحداث (باستخدام gevent)، مما يجعل من الممكن لعملية واحدة التعامل مع عدة آلاف من المستخدمين المتزامنين. في حين أنه قد تكون هناك أدوات أخرى قادرة على تنفيذ المزيد من الطلبات في الثانية على جهاز معين، فإن الحمل المنخفض لكل مستخدم من مستخدمي Locust يجعله مناسبًا جدًا لاختبار أحمال العمل المتزامنة للغاية.
يتمتع Locust بواجهة ويب سهلة الاستخدام تعرض مدى تقدم الاختبار في الوقت الفعلي. يمكنك حتى تغيير الحمل أثناء تشغيل الاختبار. ويمكن أيضًا تشغيله بدون واجهة المستخدم، مما يجعل من السهل استخدامه لاختبار CI/CD.
على الرغم من أن Locust يعمل بشكل أساسي مع مواقع/خدمات الويب، إلا أنه يمكن استخدامه لاختبار أي نظام أو بروتوكول تقريبًا. ما عليك سوى كتابة عميل لما تريد اختباره، أو استكشاف بعض ما أنشأه المجتمع.
تم الاحتفاظ بقاعدة أكواد Locust صغيرة الحجم عن عمد ولا تحل كل شيء خارج الصندوق. وبدلاً من ذلك، نحاول أن نجعل من السهل التكيف مع أي موقف قد تواجهه، باستخدام كود Python العادي. ليس هناك ما يمنعك من:
أرسل بيانات التقارير في الوقت الفعلي إلى TimescaleDB وتصورها في Grafana
التفاف المكالمات للتعامل مع خصوصيات REST API الخاص بك
استخدم شكل/ملف تعريف تحميل مخصص تمامًا
...
التوثيق: docs.locust.io
الدعم/الأسئلة: StackOverflow
مناقشات جيثب: مناقشات جيثب
الدردشة/المناقشة: سلاك (الاشتراك)
المشرف: لارس هولمبرج
واجهة المستخدم: أندرو بالدوين
المبدع الأصلي: جوناتان هيمان
شكرا جزيلا لجميع المساهمين لدينا
مفتوح المصدر مرخص بموجب ترخيص MIT (راجع ملف الترخيص للحصول على التفاصيل).