حقائق أساسية
- يقوم تاسك دريفت بتسجيل حركة مرور API الحقيقية من الخدمة ويعيد تشغيل تلك الطلبات كاختبارات مُحددة.
- يقوم النظام تلقائيًا بتقليد المدخلات/المخرجات الصادرة، بما في ذلك قواعد البيانات واستدعاءات HTTP، باستخدام البيانات المسجلة.
- يدعم بايثون وNode.js، مع مجموعة تطوير برمجيات خفيفة الوزن للتكامل مع قواعد الأكواد الحالية.
- يعمل الأداة في بيئات التكامل المستمر على كل طلب سحب لتوفير تغذية راجعة فورية.
- يمكن استخدامه كأداة اختبار لعملاء برمجة ذكاء اصطناعي، مما يسمح لهم باختبار التغييرات دون الاعتماد على بيئات حية.
ملخص سريع
لطالما كان اختبار API بمثابة مهمة مملة للمطورين، حيث تتطلب غالبًا تقليدات مكتوبة يدويًا تبتعد بسرعة عن واقع الإنتاج. ويهدف نظام جديد إلى تغيير ذلك من خلال تحويل حركة المرور الحية مباشرة إلى اختبارات.
يقوم تاسك دريفت بتسجيل حركة مرور API الحقيقية من الخدمة ويعيد تشغيل تلك الطلبات كاختبارات مُحددة. يزيل هذا النهج الحاجة إلى كتابة والحفاظ على كود الاختبار أو التجهيزات المسبقة، ويقدم بيئة اختبار أكثر واقعية قائمة على أنماط الاستخدام الفعلية.
المشكلة الأساسية
يتعلق الاختبار التقليدي لواجهات برمجة التطبيقات بكتابة الاختبارات وإنشاء التقليدات المعتمدة التي تحاكي الخدمات الخارجية. وغالبًا ما يكون هذا العملية يدويًا وتطول الوقت وعرضة للأخطاء.
غالبًا ما تبتعد التقليدات المكتوبة يدويًا عن السلوك الفعلي للخدمات التي يفترض أن تحاكيها. وقد يؤدي هذا التناقض إلى اختبارات تنجح في العزل ولكنها تفشل في الإنتاج، مما يخلق شعورًا زائفًا بالأمان.
التحدي الأساسي هو الحفاظ على دقة الاختبار. عندما تتغير الخدمات الحقيقية، يجب تحديث التقليدات، ولكن غالبًا ما يتأخر هذا الأمر، مما يؤدي إلى احتلال الاختبارات.
"أردنا اختبارات تبقى واقعية لأنها قادمة من حركة مرور حقيقية."
— فريق تطوير تاسك دريفت
نهج جديد
يقدم تاسك دريفت منهجية مختلفة من خلال تسجيل تتبعات كاملة للطلبات/الردود خارجيًا. بدلاً من اعتراض استدعاءات HTTP داخل الاختبار نفسه، فإنه يلتقط التفاعل بأكمله.
يقوم النظام بتسجيل حركة المرور لـ HTTP وقواعد البيانات وRedis والاعتماديات الأخرى. يتم استخدام هذا التتبع الشامل بعد ذلك لتقلد المدخلات/المخرجات الصادرة تلقائيًا عند إعادة تشغيل الاختبارات.
تشمل الميزات الرئيسية للنهج:
- تسجيل حركة المرور في أي بيئة
- تقليد جميع المدخلات/المخرجات الصادرة تلقائيًا
- إعادة تشغيل الطلبات مقابل خدمة قيد التشغيل
- إزالة الحاجة إلى كود الاختبار أو التجهيزات المسبقة
كيف يعمل
ينطوي التنفيذ على عملية ثلاثية بسيطة مصممة للتكامل في سير عمل التطوير الحالية.
أولاً، يضيف المطورون مجموعة تطوير برمجيات خفيفة الوزن إلى قاعدة الأكواد الخاصة بهم. حاليًا، يدعم النظام بيئات بايثون وNode.js.
ثانيًا، يتم تسجيل حركة المرور في أي بيئة، وتسجيل التفاعلات الفعلية للمستخدمين وسلوك النظام.
ثالثًا، يتم تنفيذ الأمر tusk run. تقوم هذه أداة سطر الأوامر بحجر الخدمة وتخدم التقليدات المسجلة عبر مقبس يونكس، مما ينشئ بيئة اختبار متكاملة بذاتها.
التطبيقات العملية
تم تصميم النظام للتكامل المستمر، والعمل على كل طلب سحب لضمان عدم كسر تغييرات الكود الوظائف الحالية. وهذا يوفر تغذية راجعة فورية للمطورين.
بeyond التكامل القياسي، لقد أثبتت قيمتها كأداة اختبار لـ عملاء برمجة ذكاء اصطناعي. يمكن لهؤلاء العملاء إجراء تغييرات، وتشغيل مجموعة الاختبارات، وتلقي تغذية راجعة فورية دون الحاجة إلى بيئات حية أو إعداد معقد.
أردنا اختبارات تبقى واقعية لأنها قادمة من حركة مرور حقيقية.
يضمن هذا النهج بقاء الاختبارات متأصلة في الاستخدام الفعلي، مما يقلل الفجوة بين بيئات التطوير والإنتاج.
نظرة إلى الأمام
يعد إدخال الاختبار الموجه بحركة المرور تغييرًا كبيرًا في كيفية التعامل مع موثوقية API. ومن خلال الاستفادة من بيانات الاستخدام الحقيقية، يمكن للمجموعات بناء مجموعات اختبار أكثر قوة ودقة.
ومع تسريع دورات التطوير وانتشار البرمجة بمساعدة ذكاء اصطناعي، ستزداد الأدوات التي توفر تغذية راجعة سريعة وموثقة أهمية متزايدة. وتقدم أنظمة مثل هذه مسارًا نحو ممارسات اختبار أكثر تلقائية وواقعية.
الأسئلة الشائعة
ما هو تاسك دريفت؟
تاسك دريفت هو نظام يسجل حركة مرور API الحقيقية من الخدمة ويعيد تشغيل تلك الطلبات كاختبارات مُحددة. ويقوم تلقائيًا بتقليد المدخلات/المخرجات الصادرة باستخدام البيانات المسجلة، مما يزيل الحاجة إلى كتابة اختبارات يدوية.
كيف يختلف عن مكتبات التقليد التقليدية؟
على عكس أدوات مثل VCR أو Nock التي تعتراض HTTP داخل الاختبارات، يقوم تاسك دريفت بتسجيل تتبعات كاملة للطلبات/الردود خارجيًا. وهذا يشمل HTTP وقواعد البيانات وتفاعلات Redis، مما يوفر بيئة اختبار أكثر شمولاً وواقعية.
ما هي البيئات التي يدعمها؟
يدعم النظام حاليًا بايثون وNode.js. ويستخدم مجموعة تطوير برمجيات خفيفة الوزن يمكن إضافتها إلى أي قاعدة أكواد، ويمكن تسجيل حركة المرور في أي بيئة.
كيف يُستخدم في سير عمل التطوير؟
تم تصميمه للعمل في التكامل المستمر على كل طلب سحب. بالإضافة إلى ذلك، فإنه يعمل كأداة اختبار لعملاء برمجة ذكاء اصطناعي، مما يوفر تغذية راجعة فورية على التغييرات دون الحاجة إلى بيئات حية.










