اختبار API / متوسط: عقود متفاعلة / الدرس 9
اختبار التقسيم والترشيح والترتيب الثابت
استخدام عضوية دقيقة وقواعد تعادل لكشف الفجوات والتكرار وانحراف المرشحات.
في هذه الصفحة
أهداف الدرس
- فصل صحة الترشيح والترتيب وحدود الصفحة وسلوك الاجتياز.
- شرح حدود البيانات الثابتة عندما تتغير المجموعات.
تحديد مراحل معالجة المجموعة
تجمع نقطة نهاية المجموعات عقودا عدة: السجلات المرئية والمرشحات وترتيب المطابقات وتقسيم الترتيب إلى صفحات. اختبرها منفصلة قبل الجمع. تحتاج القائمة الأبجدية إلى مفتاح ثانوي عند تساوي العناوين وإلا تحركت السجلات بين الصفحات. حدد هل total يعني كل السجلات المصرح بها أم المرشحة فقط، وهل هو دقيق أم تقريبي. لا تستنتج المعنى من اسم الحقل. بيانات التدريب ثابتة وصغيرة ومحلية بالكامل.
اختبار قاعدة فض التعادل
لا تكشف العناوين المختلفة وحدها غياب الفرز الثانوي. أدرج عناوين متساوية بمعرفات ثابتة مختلفة قرب حد الصفحة. يرشح البرنامج فئة ويرتب حسب العنوان ثم id، ويؤكد المعرفات المرتبة بدقة لا مجموعتها فقط. الترتيب المعروض قاعدة تدريب خيالية تعتمد مقارنة النصوص في Python. قد تختلف قواعد اللغة والتوحيد وحالة الأحرف ومقارنة قواعد البيانات، وتحتاج إلى عقد صريح واختبارات في البيئة المختارة.
books = [{"id":"b3","title":"Atlas","kind":"essay"}, {"id":"b1","title":"Atlas","kind":"essay"}, {"id":"b2","title":"Brook","kind":"poem"}, {"id":"b4","title":"Cedar","kind":"essay"}]
matching = [b for b in books if b["kind"] == "essay"]
ordered = sorted(matching, key=lambda b: (b["title"], b["id"]))
assert [b["id"] for b in ordered] == ["b1", "b3", "b4"]
print("filtered order accepted")
filtered order accepted
يختبر البرنامج الكامل ثلاثة سجلات مختلقة مطابقة وسجلا مستبعدا. يستخدم فرز Python محليا بالفعل ولا يقدم ادعاء عن مقارنة قاعدة البيانات أو خطة الاستعلام أو واجهة HTTP.
فحص الاجتياز المحدود كاملا
قد تخفي الصفحة الأولى الصحيحة استمرارا معطوبا. اجمع صفحات البيانات الثابتة واشترط كل معرف متوقع مرة واحدة وتحقق من إشارة الانتهاء الموثقة. أدرج مجموعة فارغة وصفحة ممتلئة تماما وصفحة أخيرة جزئية. يتعامل العميل مع المؤشر بوصفه مبهما ما لم يوثق العقد بنيته. يفحص المثال الثاني شرائح إزاحة محلية فقط ولا ينفذ مؤشرا أو يتحقق من حالة موقعة أو يثبت اتساق اجتياز مجموعة خادم متغيرة.
ids = ["b1", "b3", "b4", "b8", "b9"]
size = 2
pages = [ids[offset:offset + size] for offset in range(0, len(ids), size)]
joined = [item for page in pages for item in page]
assert pages == [["b1", "b3"], ["b4", "b8"], ["b9"]]
assert joined == ids
assert len(joined) == len(set(joined))
print("three-page traversal accepted")
three-page traversal accepted
يتحقق البرنامج من الحدود والترتيب وغياب التكرار لهذه البيانات ذات العناصر الخمسة دون شبكة. لا تقدم الشرائح الثابتة دليلا عن الإدراج والحذف وعزل اللقطة ورموز الاستمرار لدى المزود.
حفظ معنى المرشح في الاستمرار
يجب أن يحفظ رابط الصفحة التالية أو رمزها نطاق الاستعلام. اختبر ثبات الفئة واتجاه الفرز ونطاق المستأجر وقواعد الحجم طوال الاجتياز. تحتاج المرشحات الفارغة والمعاملات المكررة والمسافات والنص غير اللاتيني إلى قواعد تسلسل موثقة. استخدم مرمزا معتمدا بدلا من لصق نص المستخدم. يفحص تحليل الرابط محليا التمثيل فقط ولا يصرح باتباع أي رابط. يجب أن يطبق العميل الفعلي قواعد الوجهة والاعتماد المعتمدة خاصة إذا احتوى الاستمرار رابطا مطلقا.
إعلان السلوك عند تغير البيانات
قد تتخطى الإزاحة سجلات أو تكررها إذا أدرجت صفوف سابقة أو حذفت بين الطلبات. وللمؤشرات مفاضلات أيضا ولا تضمن تلقائيا لقطة ثابتة. وثق وعد الاتساق: عرض حي بأفضل جهد أو اجتياز لقطة أو نموذج صريح آخر. ثم اختبر تداخلات تعديل مضبوطة في بيئة مؤقتة معتمدة. احتفظ بالفحوص الثابتة لعزل العيوب الأبسط، ولا تصفها دليلا على صحة الاجتياز المتزامن. قد تحتاج الأعداد والترتيب وتغير الصلاحيات إلى توقعات مستقلة.
الأخطاء الشائعة وإصلاحها
تكرر الصفحة الثانية آخر عنصر من الأولى
- لماذا يحدث؟
- حد الاستمرار أو عامل المقارنة خاطئ.
- كيف تصلحه؟
- استخدم بيانات بتعادل عند الحد وقارن الاجتياز كاملا.
- كيف تتجنب تكراره؟
- اشترط غياب الفجوات والتكرار وفق نموذج الاتساق.
يتجاهل total المرشح النشط
- لماذا يحدث؟
- تستخدم عملية العد وجلب البيانات شرطين مختلفين.
- كيف تصلحه؟
- قارن معنى العدد بالعضوية المرشحة الدقيقة.
- كيف تتجنب تكراره؟
- راجع تعريف النطاق والمرشح للملاحظتين.
تنجح اختبارات الترتيب رغم تعادل غير مستقر
- لماذا يحدث؟
- لكل بيانات الاختبار عناوين فريدة.
- كيف تصلحه؟
- أضف عناوين متساوية ومفتاحا ثانويا ثابتا.
- كيف تتجنب تكراره؟
- اختبر فض التعادل قرب حدود الصفحات.
اختبر فهمك
1. خمسة سجلات مطابقة بحجم صفحة اثنين. ماذا يتوقع الاختبار الثابت؟
اعرض الحل المشروح
صفحات من اثنين واثنين وواحد، وإشارة الانتهاء الموثقة، وخمسة معرفات متوقعة مختلفة بالترتيب الصحيح. افحص غياب المستبعدات أيضا. يثبت ذلك السلوك الثابت ولا يحدد أثر الإدراج المتزامن.
2. كيف تفوت مقارنة عضوية غير مرتبة عيبا في التقسيم؟
اعرض الحل المشروح
قد تؤكد وجود سجلات معقولة في كل صفحة وتفقد التسلسل والتعدد العام. قارن الصفحات المجموعة بالترتيب المتوقع الكامل، وأضف قيما متعادلة وحالات حدود كي لا ينجح استمرار معيب بإعادة معرفات مألوفة.
أهم ما تعلمته
- اختبر الرؤية والترشيح والترتيب والتقسيم منفصلة ومجتمعة.
- يكشف الاجتياز الكامل الفجوات والتكرار.
- لا تثبت البيانات الثابتة اتساق مجموعة متزامنة.