• تاريخ النشر
    26 تشرين الثاني، 2024
  • مشاركة

إن إنشاء كود مصمم بشكل جيد وصحيح هو هدف كل مطور. إحدى الطرق التي تبرز في تحقيق هذا الهدف هي التطوير الموجه بالاختبار (TDD). في حين أن التطوير الموجه بالاختبار لا يصمم الكود الخاص بك أو يكتبه لك، فهو منهجية في تطوير البرمجيات تسمح لك بالحصول على ملاحظات سريعة حول قرارات التصميم في دورة تطوير متكررة. 

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

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

حاليًا، نناقش كيف يمكننا استخدام الذكاء الاصطناعي التوليدي لجعل عملنا أكثر أتمتة. في هذا العمل، نقدم تجربة جديدة مستوحاة من مدونة ألين هيلتوننقوم بكتابة العديد من حالات الاختبار للمشروع ثم نطلب من ChatGPT إنشاء الكود المتعلق بالاختبار. 

الذكاء الاصطناعي التوليدي للتطوير التجريبي أولاً 

نظرًا لاحتمالية حدوث خطأ بشري في الاختبار اليدوي، فإن السؤال الذي يطرح نفسه هو: لماذا لا يتم أتمتة TDD باستخدام الذكاء الاصطناعي التوليدي؟ يمكن للذكاء الاصطناعي التوليدي أن يلعب دورًا تحويليًا في TDD من خلال أتمتة إنشاء اختبارات الوحدة والرمز المقابل. فيما يلي سير عمل مقترح:

  1. الاختبارات التي كتبها المطورون: يبدأ المطورون بكتابة اختبارات الوحدة الأولية، وتحديد النتائج المرغوبة لكودهم.
  2. الكود الذي تم إنشاؤه بواسطة الذكاء الاصطناعي: يقرأ الذكاء الاصطناعي التوليدي هذه الاختبارات الوحدوية وينتج الكود اللازم لاجتيازها. إذا تم تشغيل الكود بنجاح، يتم حفظه على القرص. إذا لم ينجح، يقوم الذكاء الاصطناعي بإنشاء تقرير خطأ ويحاول إنتاج الكود الصحيح مرة أخرى، مما يؤدي إلى إنشاء حلقة حتى يتم اجتياز الاختبارات. من خلال دمج الذكاء الاصطناعي بهذه الطريقة، يمكن للمطورين التأكد من اختبار كودهم والتحقق من صحته بشكل كامل، مما يقلل من مخاطر الأخطاء.
إكران ريسمي 2024-11-04 13.29.43.png

فوائد استخدام الذكاء الاصطناعي التوليدي في TDD

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

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

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

ردود الفعل على الذكاء الاصطناعي التوليدي المطبق في TDD

إكران ريسمي 2024-11-04 13.31.52.png

آلية ردود الفعل

لتحسين العملية بشكل أكبر، يمكن تقديم آلية ردود الفعل. يكتب المطورون اختبارات الوحدة، ويقوم وكيل المطور بإنشاء الكود. تتم إضافة طبقة جديدة من التدقيق مع وكيل مراجعة الكود، والذي يقوم بمراجعة الكود وتقديم ردود الفعل إلى وكيل المطور.

التحسين المتكرر

يقوم وكيل المطور بمراجعة الكود بناءً على تعليقات وكيل المراجع وإعادة إرساله للمراجعة. تستمر هذه العملية التكرارية حتى يجتاز الكود المراجعة بنجاح.

الاختبار النهائي

بمجرد موافقة وكيل المراجعة على الكود، يتم تشغيل اختبارات الوحدة. إذا نجحت، يتم حفظ الكود. إذا فشلت، يتم إنشاء تقرير خطأ، وتعود العملية إلى توليد الكود.

في الأساس، سيكون سير العمل على النحو التالي:

  1. يكتب المطور اختبارات الوحدة.ev
  2. يقوم الذكاء الاصطناعي بقراءة هذه الاختبارات وإنشاء الكود اللازم.
  3. إذا نجحت الاختبارات، فسيتم حفظ الكود. وإذا لم ينجح الأمر، فسيتم إنشاء تقرير خطأ، ويحاول الذكاء الاصطناعي تصحيح الكود في حلقة.
  4. يمكن أن تنتج هذه الأتمتة الأولية كودًا عرضة للأخطاء، وهذا هو المكان الذي تلعب فيه آلية التغذية الراجعة دورًا.
  5. يكتب المطورون اختبارات الوحدة، ويقوم وكيل المطور بإنشاء الكود والطرق المطلوبة.
  6. يقوم وكيل مراجعة الكود بمراجعة الكود وإرسال التعليقات إلى وكيل المطور.
  7. يقوم وكيل المطور بتحسين الكود بناءً على التعليقات وإعادة إرساله للمراجعة.
  8. تستمر هذه الدورة حتى يقوم وكيل مراجعة الكود بالموافقة على الكود.
  9. بمجرد الموافقة، يتم تشغيل اختبارات الوحدة. في حالة النجاح، يتم حفظ الكود؛ وفي حالة عدم النجاح، يتم إنشاء تقرير خطأ، وتستمر الحلقة.

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

خاتمة

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

التوجهات المستقبلية

هناك ثلاثة عناصر نخطط للبناء عليها في هذا النهج:

  • توسيع دعم اللغة: في حين أننا ركزنا على Java، يمكن توسيع هذه المنهجية لتشمل لغات أخرى مثل Python وJavaScript والمزيد.

  • إنشاء الاختبارات تلقائيًا: يمكننا مطالبة الذكاء الاصطناعي التوليدي بكتابة الاختبارات استنادًا إلى المتطلبات عالية المستوى التي يوفرها المطورون بدلاً من كتابة الاختبارات يدويًا. 

  • توسيع فريق Agentic AI: إلى جانب مراجع الكود البسيط، يمكننا تقديم وكلاء أكثر تخصصًا مثل وكيل ضمان الجودة لاختبار الحالات الحدية، ووكيل الأداء لتحسين أداء الكود، وما إلى ذلك.

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