أوامر تصحيح أخطاء تحدد الموقع فعلاً
Regression tests عند الطلب
لما تبقى حدّدت مكان الـ bug وشفت الـ fix، فيه prompt واحد كمان بيقفل الـ loop: اكتب regression test. لو ما ثبّتش الـ fix بـ test، نفس الـ bug هيرجع بعد 6 شهور لما حد يـrefactor الـ function لسبب تاني.
LLMs ممتازة في ده. مواصفات الـ bug اللي كتبتها أثناء الـ localization هي بالفعل مواصفات test — محتاج بس تطلبها.
Prompt الـ regression test ليه 4 أجزاء:
- الـ input المكسور اللي طلّع مخرج غلط
- الـ output الصح المتوقع
- الـ framework اللي بتستخدمه (
pytest،vitest،go test) - Constraint على اسم الـ test عشان يبقى واضح بيثبّت إيه
ده الـ template:
Write a
pytestregression test for the bug we just fixed.
- Buggy input:
second_largest([5, 5])- Expected return value:
None(no second-largest distinct number exists)- Test function name:
test_returns_none_when_only_duplicates- Output ONLY the test code in a single Python block, no prose, no imports beyond pytest.
هترجع حاجة زي:
def test_returns_none_when_only_duplicates():
assert second_largest([5, 5]) is None
سطر واحد. ده الـ regression test اللي كنت هتكتبه بنفسك لو مش تعبان. الموديل بيشتغل ثانيتين شغل بيحميك لسنين.
Constraint الاسم مهم. test_returns_none_when_only_duplicates بيتقرا زي documentation: أي حد يقابل فشل الـ test ده بعد 6 شهور هيعرف على طول إن الـ function المفروض ترجع None لـ duplicate-only input. قارن بـ test_second_largest_1 — نفس الكود، من غير قيمة documentation.
تقدر تضمّ الـ prompt ده مع prompt الـ localization عشان يكون أرخص. ضيف للـ localization prompt:
After identifying the fix, output a single
pytestregression test that would have caught this bug.
دلوقتي prompt واحد بيطلّع الاتنين: التشخيص، الـ fix، وtest بيثبّت الـ fix. 3 turns شغل في round-trip واحد.
نمط مفيد للفِرَق: احتفظ بـ snippet اسمه pin-the-fix فيه template الـ regression test. لما زميل يـSlack ويقولك "صلّحت timezone bug في formatDate،" ردّك "Add the regression test using pin-the-fix." الموديل بيكتبه. والـ bug مش بيرجع.
تحذير خفي: الموديل أحياناً بيكتب tests بتعدّي على الكود المكسور لو مش بتنتبه. شغّل دايماً الـ test على الكود قبل الـ fix عشان تتأكد إنه بيفشل. Regression test بيعدّي قبل الـ fix هو placebo. ده نفس انضباط red-green اللي هتطبّقه لو بتكتب الـ test يدوياً.
انضباط red-green مرسوم:
Module 3 جاي: refactor prompts ما تـregressش السلوك بصمت. :::
سجّل الدخول للتقييم