المكاسب:
- القدرة على إنتاج اختبارات الوحدة والتكامل وحالة الحافة مع تأكيد هادف باستخدام الذكاء الاصطناعي
- القدرة على استخراج تغطية الاختبار والقيم الحدية والسيناريوهات السلبية بشكل منهجي بدعم من الذكاء الاصطناعي
- القدرة على التحقق من أن الاختبارات التي ينتجها الذكاء الاصطناعي تتحقق بالفعل من السلوك ولا تقوم فقط بتكرار التعليمات البرمجية الموجودة
الاختبار هو الآلية التي تثبت أن البرنامج يتصرف بالفعل كما وعد. تخبرك مجموعة الاختبار الجيدة في ثوانٍ ما إذا كان التغيير قد أدى إلى كسر شيء ما وتمنح المهندس حرية التصرف بثقة. يعمل الذكاء الاصطناعي على تسريع الجزء الأكثر مللاً والأكثر تخطيًا في كتابة الاختبار: إنشاء العديد من السيناريوهات ونقاط التوقف والحالات السلبية. ولكن يوجد فخ خادع هنا: قد يكتب الذكاء الاصطناعي اختبارات تتحقق من سلوك الكود الحالي (وربما الخاطئ)، وليس سلوكه المفترض؛ أو يمكن أن تنتج اختبارات فارغة تنجح دائمًا، ولا تتحقق فعليًا من أي شيء. قيمة الاختبار ليست في نجاحه، ولكن فيما إذا كان يتحقق من الشيء الصحيح ويتحول إلى اللون الأحمر عندما يكون خطأ.
في هذه الوحدة، ستتعلم كيفية إنتاج اختبارات حالة الوحدة والتكامل وحالة الحافة مع تأكيدات ذات معنى؛ كيفية استخراج تغطية الاختبار ونقاط التوقف والسيناريوهات السلبية بشكل منهجي؛ وسنرى كيف يمكنك التحقق من أن الاختبارات التي ينتجها الذكاء الاصطناعي تثبت صحة السلوك بالفعل.
المفاهيم: اختبار الوحدة: يختبر وظيفة/فئة واحدة بشكل منفصل. اختبار التكامل: يختبر أن الأجزاء المتعددة تعمل معًا بشكل صحيح. التأكيد: عبارة تتحقق من أن النتيجة تساوي ما كان متوقعًا؛ هذا هو قلب الاختبار. التغطية: مقدار التعليمات البرمجية التي يتم تشغيلها عن طريق الاختبارات؛ التغطية العالية لا تضمن الجودة.
إنتاج اختبارات ذات معنى
إن الاختبار الجيد يفعل ثلاثة أشياء بوضوح: إنشاء حالة، وتنفيذ إجراء، وتأكيد النتيجة. عند طباعة الاختبارات على الذكاء الاصطناعي، حدد السلوك الذي تريد التحقق منه والسيناريوهات التي يجب أن يغطيها؛ وإلا فإنه ينتج اختبارات سطحية تنجح دائمًا.
- تحديد السلوك المراد اختباره. "ما الذي يعتبر صحيحا؟" أجب على السؤال بوضوح.
- اسأل عن أنواع السيناريوهات. عادي، حد، سلبي، حالة الخطأ.
- استيراد تأكيد ذو معنى. لم يقتصر الأمر على "إلقاء خطأ"، بل "أرجع القيمة الصحيحة".
- التحقق من دقة الاختبار. هل يتحول لون الاختبار إلى اللون الأحمر عندما تكسر الكود عمدًا؟
موجه إنشاء اختبار شامل: "اكتب اختبارات الوحدة لوظيفة "تطبيق الخصم (المبلغ، القسيمة)". لديك سيناريو واحد على الأقل في الفئات التالية: (1) قسيمة صالحة عادية، (2) نقاط توقف (0 مبلغ، خصم 100٪)، (3) سالب (قسيمة غير صالحة، مبلغ سالب)، (4) حالة خطأ (قسيمة فارغة). قم بتأكيد القيمة المتوقعة CONCRETE في كل اختبار (وليس فقط "عملت"). قم بتسمية الاختبارات القابلة للقراءة. الكود: [الكود]"
مطالبة استخراج قيمة الحدود: "قم بإجراء تحليل قيمة الحدود لمدخلات هذه الوظيفة. لكل معلمة، استخرج القيم "عند الحدود مباشرةً"، و"أسفل الحدود مباشرةً"، و"فوق الحدود مباشرةً" كجدول. ثم قم بإدراج سيناريوهات الاختبار التي تغطي هذه الحدود. لا تكتب تعليمات برمجية بعد، فقط قم بالتحليل وقائمة السيناريوهات. الوظيفة: [التوقيع]"
تحذير: تغطية الاختبار العالية (على سبيل المثال 90%) لا تثبت صحة الكود. تقيس التغطية عدد الصفوف التي تم تنفيذها؛ لا يعني ذلك أن هذه الخطوط تنتج النتيجة الصحيحة. يؤدي الاختبار بدون تأكيد ذي معنى إلى زيادة التغطية ولكنه لا يضمن أي شيء. إن محتوى التأكيد هو الذي يحدد الجودة، وليس عدد التأكيدات.
اختبار الاختبار نفسه: منطق الطفرة
الطريقة الأكثر عملية لفهم ما إذا كان الاختبار الذي تم إنشاؤه بواسطة الذكاء الاصطناعي يعمل بالفعل هو كسر الكود عمدًا (منطق اختبار الطفرة). اعكس الشرط، ضع علامة + -؛ إذا لم تتحول أي اختبارات إلى اللون الأحمر، فإن اختباراتك لا تحافظ فعليًا على هذا السلوك.
اختبار موجه البحث عن الثغرات الأمنية: "أخبرني ما هي الأخطاء المحتملة في هذا الكود التي قد لا تكتشفها الاختبارات التالية. اقترح 5 طفرات صغيرة يمكن إجراؤها على الكود (على سبيل المثال >= بدلاً من >، - بدلاً من +) وحدد لكل منها ما إذا كانت الاختبارات الحالية ستكتشفها أم لا. بالنسبة لأولئك الذين لم يتم اكتشافهم، اقترح اختبارًا يجب إضافته. الكود: [كود] الاختبارات: [اختبار]"
موجه ضعيف / موجه قوي
ضعيف: "اكتب اختبارًا لهذه الوظيفة." (النتيجة: عادةً سيناريو واحد سعيد، تأكيد ضعيف؛ يفتقد الأخطاء.) قوي: "اكتب اختبارًا لوظيفة 'passwordStrong' هذه. القاعدة: 8 أحرف على الأقل، حرف واحد كبير، رقم واحد مطلوب. قم بتغطية السيناريوهات التالية كاختبارات منفصلة: بالضبط 8 أحرف (الحد الأقصى)، 7 أحرف (أقل من الحد)، لا توجد أحرف كبيرة، لا أرقام، سلسلة فارغة، مسافات فقط، طويلة جدًا (1000 حرف) أكد بشكل صريح على القيمة الحقيقية/الخاطئة المتوقعة في كل اختبار وقم بتسمية الاختبار وفقًا لما يتحقق منه."
موجه قوي يعطي القواعد وسيناريوهات الحدود الكاملة. تعد أزواج الحدود مثل "8/7 أحرف بالضبط" أكثر الأماكن شيوعًا لارتكاب الأخطاء (مربكة مع >=). تتجاوز المطالبة الضعيفة هذه الحدود وتحمل الخطأ إلى الإنتاج.
أنواع الاختبار ومكان استخدامه
نوع الاختبار
ماذا يؤكد؟
مساهمة الذكاء الاصطناعي
انتبه
وحدة
وظيفة/فئة واحدة
يولد سيناريوهات متعددة بسرعة
مطلوب تأكيد ذو معنى
التكامل
الأجزاء تعمل معًا
السيناريو ومسودة البيانات وهمية
السلوك الإدماني الحقيقي
نهاية/قبول
تدفق المستخدم بالكامل
قائمة الخطوات والتوقعات
عرضة للهشاشة
الانحدار
خطأ قديم لا يعود
اختبار خطأ محدد
ينبغي أن تضاف إلى كل الإصلاح
حالات صغيرة
الحالة 1 - الاختبار الذي ينجح دائمًا. يكتب الذكاء الاصطناعي 12 اختبارًا لوظيفة ما ويتم اجتيازها جميعًا. يصبح المهندس متشككًا ويشوه القيمة المرتجعة للوظيفة عمدًا؛ فقط 3 من الاختبارات تتحول إلى اللون الأحمر. لا تحتوي الاختبارات التسعة الأخرى على تأكيدات ذات معنى. ويتم تعزيز الاختبار عن طريق صيد الطفرات؛ يتم الحصول على الحماية الحقيقية في 9 سيناريوهات.
الحالة 2 - خطأ في الحدود. يجب أن تقول وظيفة التحقق من العمر "18 عامًا أو أكثر صالحًا" ولكن يتم كتابة >18 عامًا، مما يعني أن العمر 18 عامًا مرفوض. يظهر الخطأ على الفور في الاختبار لأن الذكاء الاصطناعي ينشئ السيناريو "18 بالضبط" من خلال تحليل نقاط التوقف. اختبار الحد الواحد يمنع أي شكاوى حقيقية للمستخدم.
الحالة 3 - إصلاح السلوك الحالي. عندما يُطلب من الذكاء الاصطناعي "كتابة اختبار بناءً على هذا الرمز"، فإنه ينتج اختبارًا يقبل خطأ التقريب الموجود بالفعل في الكود على أنه "صحيح". عندما يقوم المهندس بطباعة الاختبار حسب المتطلب (القيمة الصحيحة المتوقعة) وليس الكود، يتحول لون الاختبار إلى اللون الأحمر ويحدث الخطأ الحقيقي. يجب أن تستمد الاختبارات من التوقعات، وليس من التعليمات البرمجية.
الأخطاء الشائعة
- تأكيد لا طائل منه. "لم أرتكب خطأ" ليست كافية؛ يجب التحقق من القيمة الصحيحة.
- الخلط بين النطاق والجودة. التغطية العالية لا تضمن الحصول على نتائج دقيقة.
- طباعة الاختبار عن طريق الكود. إصلاح الخطأ الحالي إلى "صحيح"؛ يجب أن تنبع الاختبارات من التوقعات.
- تخطي القيم الحدية. الخلط بين > و >= هو الخطأ الأكثر شيوعًا؛ يجب اختبار أزواج الحدود.
- عدم تدقيق الاختبار نفسه. الاختبار الذي لا يتحول إلى اللون الأحمر عند كسر الكود لا يوفر الحماية.
باختصار
إن مجموعة الاختبارات الجيدة هي المفتاح لإجراء التغييرات بثقة. يقوم الذكاء الاصطناعي بإنشاء العديد من السيناريوهات والحدود والمواقف السلبية بسرعة؛ ولكن إذا استمدت الاختبارات من التعليمات البرمجية بدلاً من المتطلبات، فيمكنها إصلاح الأخطاء الموجودة أو كتابة اختبارات لا معنى لها والتي تنجح دائمًا. قم بتأكيد القيمة المتوقعة الملموسة في كل اختبار، وقم بتضمين أزواج مرتبطة، وتحقق من أن اختباراتك تحمي فعليًا عن طريق كسر الكود عمدًا. محتوى التأكيد، وليس عدد النطاقات، هو الذي يحدد الجودة.
مهمة التطبيق
حدد وظيفة واطلب منها إنشاء اختبارات في أربع فئات (عادي، حدي، سلبي، خطأ) مع موجه شامل لإنشاء الاختبار؛ تأكد من القيمة المتوقعة الملموسة في كل اختبار. ثم قم بتشغيل موجه اختبار اكتشاف الثغرات الأمنية، واقترح 5 طفرات صغيرة في الكود، وقم بإجراء الاختبارات للتحقق من الطفرات التي تم اكتشافها. أضف اختبارًا جديدًا لطفرة واحدة على الأقل لم يتم اكتشافها وأظهر أنها الآن باللون الأحمر.
قائمة مرجعية
- [ ] لقد قمت بطباعة الاختبارات بناءً على السلوك المتوقع/الصحيح، وليس على الكود.
- [ ] قمت بتغطية السيناريوهات العادية والحدية والسلبية والخطأ.
- [ ] لقد أكدت القيمة المتوقعة الملموسة في كل اختبار.
- [ ] لقد اختبرت أزواج الحدود (فوق وتحت / فوق وتحت).
- [ ] من خلال كسر الكود عمدًا، تأكدت من أن الاختبارات تحولت إلى اللون الأحمر.
- [ ] أضفت اختبارًا جديدًا للطفرات غير المكتشفة.