عند استخدامه بشكل صحيح، يتفوق الذكاء الاصطناعي في جزء التعداد من الاختبار — فهو يفكر في الحالات الحدية ويكتب الكود الإطاري بسرعة. لكن يجب عليك التحقق من أن التأكيدات ذات معنى، لأن الذكاء الاصطناعي سيكتب بسعادة اختبارات تنجح دون إثبات أي شيء.
عند استخدامه بشكل صحيح، يتفوق الذكاء الاصطناعي في جزء التعداد من الاختبار — فهو يفكر في الحالات الحدية ويكتب الكود الإطاري بسرعة. لكن يجب عليك التحقق من أن التأكيدات ذات معنى، لأن الذكاء الاصطناعي سيكتب بسعادة اختبارات تنجح دون إثبات أي شيء.
// Function under test, with its contract:
// applyDiscount(price, percent) -> price reduced by percent.
// Contract: percent must be 0..100; throws RangeError otherwise. price >= 0.
function applyDiscount(price, percent) {
if (percent < 0 || percent > 100) throw new RangeError('percent out of range');
return price - (price * percent) / 100;
}
// AI-suggested test cases (Jest) — note the edge and error paths, not just happy path:
test('applies a normal discount', () => {
expect(applyDiscount(100, 20)).toBe(80); // happy path
});
test('0% leaves price unchanged', () => {
expect(applyDiscount(100, 0)).toBe(100); // boundary: lower edge
});
test('100% makes it free', () => {
expect(applyDiscount(100, 100)).toBe(0); // boundary: upper edge
});
test('rejects percent above 100', () => {
expect(() => applyDiscount(100, 150)).toThrow(RangeError); // error path
});
اقترح الذكاء الاصطناعي الحالات الحدية (0 و100) ومسار الخطأ الذي قد تنساه. مهمتك هي تأكيد أن toBe(80) هي القيمة المتوقعة الصحيحة، وليس فقط ما تحدثه الدالة بالصدفة.
الجزء الصعب من الاختبار ليس كتابة كتل test(...) — بل التفكير في الحالات التي قد تنساها بطريقة أخرى، والذكاء الاصطناعي جيد حقًا في هذا الاتساع. لكنه لا يعرف ما يجب أن يفعله الكود ما لم تخبره، لذا بدون توجيه يميل إلى كتابة اختبارات تعكس التنفيذ (تنجح، لكنها ستنجح حتى لو كانت الدالة خاطئة). معاملة الذكاء الاصطناعي كمولد حالات حدية بينما تتحمل أنت مسؤولية التأكيدات يعطيك تغطية واسعة وصحة حقيقية — السرعة من الذكاء الاصطناعي، والحكم منك.