محتويات الدورة

اختبار API / متقدم: دليل ذو إصدار ومراجعة / الدرس 13

اختبار الخصائص والعلاقات التحويلية

توسيع اختبارات الأمثلة بثوابت وتحويلات مبررة على مدخلات محدودة صغيرة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشتقاق الخاصية من العقد لا من سهولة التنفيذ.
  • استخدام تحويل عندما يصعب تعداد المخرج الدقيق.

صياغة الادعاء الكلي بدقة

يفحص المثال مدخلا مختارا واحدا. وتصف الخاصية علاقة يفترض ثباتها ضمن مجال محدد، مثل حفظ الفرز لعدد المعرفات وتعددها. يهم المجال؛ فلا تنطبق قاعدة للسلاسل الفريدة غير الفارغة تلقائيا على null أو أنواع عددية مختلطة. اشتق الخاصية من العقد وسم افتراضاتها. قد تكرر الخاصية عيب التنفيذ إذا أعادت وصفه فقط. استخدم أمثلة صريحة لشرح الادعاء قبل توسيع التركيبات.

استخدام تحويل مبرر

إذا وعد العقد بالفرز حسب معرف ثابت، فلا ينبغي أن يغير تبديل ترتيب المدخلات المخرج المرتب. هذه علاقة تحويلية تقارن تشغيلات مترابطة بدلا من توقع منفصل لكل تبديل. يسرد البرنامج التبديلات الستة لثلاثة معرفات فريدة ويشترط النتيجة نفسها. يستخدم فرز Python موضوعا تدريبيا لا تنفيذا لواجهة. لا تناسب العلاقة عقدا يحافظ عمدا على ترتيب الإدراج؛ لذا يجب اشتقاق التحويل من الوعد.

python تعداد مجال تبديلات صغير كامل
from itertools import permutations
expected = ["b1", "b2", "b3"]
checked = 0
for values in permutations(["b3", "b1", "b2"]):
    assert sorted(values) == expected
    checked += 1
assert checked == 6
print("six permutations accepted")
الناتج المتوقع
six permutations accepted

يفحص البرنامج المحلي كل تبديلات مجال العناصر الثلاثة هذا. الشمول يخص هذه التبديلات وحدها، ولا يقدم دليلا عن استعلام خادم أو مقارنة لغوية أو مدخلات كبيرة أو اجتياز مجموعة متغيرة.

اختبار خاصية جبرية ومثال مضاد

قد تعد دالة توحيد موثقة بأن تطبيقها مرتين يساوي تطبيقها مرة. تكشف الخاصية تحويلا يضيف زخرفة كل مرة، لكنها لا تثبت صحة القيمة الموحدة؛ فدالة تعيد الفراغ دائما تحققها أيضا. اجمع العلاقات مع نتائج دقيقة وقيود حفظ. يجمع البرنامج فحص الثبات التكراري ونتيجة محددة لموحد وسوم خيالي. ليس توصية لتوحيد كل معرف أو اسم ظاهر للمستخدم بهذه الطريقة.

python جمع علاقة ونتائج دقيقة متوقعة
def canonical_tag(value):
    return value.strip().lower()

for value in [" Essay ", "essay", "ESSAY", " poem"]:
    once = canonical_tag(value)
    assert canonical_tag(once) == once
assert canonical_tag(" Essay ") == "essay"
assert canonical_tag(" poem") == "poem"
print("canonicalization properties checked")
الناتج المتوقع
canonicalization properties checked

يفحص البرنامج الكامل أربعة مدخلات محدودة ونتيجتين دقيقتين. سياسة التوحيد خيالية صراحة ولا تثبت تكافؤ Unicode أو قواعد اللغة أو المعالجة الآمنة للمعرفات الحساسة أمنيا.

التوليد داخل المجال المفيد

غير في الحالات المولدة السمات التي قد تنقض الخاصية: التكرار والمجموعات الفارغة والأطوال الحدية ومفاتيح الفرز المتساوية حيث تدعم. قيد المولد بالمجال الموثق واكتب خصائص رفض مستقلة للمدخلات غير الصحيحة. عند العشوائية سجل البذرة والإصدار وأصغر مدخل فاشل فعلي. يساعد التصغير في عزل الفرق الحاسم لكنه قد يفقد المعنى إذا صمم المولد بشكل ضعيف. لا تحتاج الأمثلة المحدودة حزمة خصائص ولا تدعي تغطية إحصائية لغير المختبر.

تفسير النجاح بوصفه دليلا محدودا

يستكشف اختبار الخاصية حالات ولا يعد برهانا رياضيا ما لم يغط المجال والتنفيذ رسميا بالكامل. أبلغ عن الخاصية والافتراضات والمجال وأثر الإعادة. احفظ الفشل كحالة انحدار مركزة بعد الإصلاح. لا تكتف بزيادة العدد عندما تكون الخاصية غامضة؛ راجع صحة العلاقة وقدرة الحكم على تمييز المخرج الخاطئ. تكمل الخصائص أمثلة العقد والحدود والتكامل ولا تستبدلها.

الأخطاء الشائعة وإصلاحها

ينجح تنفيذ يعيد الفراغ دائما في الثبات التكراري

لماذا يحدث؟
لا تتضمن العلاقة حفظا أو مخرجا دقيقا.
كيف تصلحه؟
أضف قيما متوقعة وتأكيدات حفظ المجال.
كيف تتجنب تكراره؟
راجع تنفيذا خاطئا بسيطا مقابل كل خاصية.

يرفض ثبات التبديل ترتيب إدراج صحيحا

لماذا يحدث؟
يناقض التحويل عقد الواجهة.
كيف تصلحه؟
استخدم علاقة يبررها وعد الترتيب.
كيف تتجنب تكراره؟
سجل الافتراضات بجوار الخاصية.

يتعذر إعادة فشل عشوائي

لماذا يحدث؟
حفظ عدد الحالات فقط.
كيف تصلحه؟
احفظ المدخل الفعلي والبذرة وإصدار المولد.
كيف تتجنب تكراره؟
حول الفشل المصغر إلى حالة انحدار ثابتة.

اختبر فهمك

1. هل يثبت ثبات الفرز التكراري وحده عدم فقد الكتب؟

اعرض الحل المشروح

لا؛ فالدالة التي تعيد قائمة فارغة دائما ثابتة أيضا. أضف حفظ المجموعة المتعددة وأمثلة ترتيب دقيقة مع التكرار إن سمح المجال. يجب أن تستبعد كل خاصية عيبا محتملا مختلفا.

2. يفحص تبديل ثلاثة عناصر ست حالات. ما الشمول المقصود؟

اعرض الحل المشروح

يغطي كل ترتيبات المعرفات الثلاثة المختلفة المحددة. تبقى القيم الأخرى والتكرار وقواعد المقارنة والأطوال والخادم غير مختبرة. صف المجال بدقة وأضف خصائص وتكاملا للمخاطر الأخرى.

أهم ما تعلمته

  • تنبع الخاصية المفيدة من مجال ووعد موثقين.
  • تحتاج العلاقات التحويلية تحويلا مبررا.
  • تقوي المقارنات العلاقية والدقيقة بعضها بعضا.

المراجع الرسمية