قم بإنشاء main.go الأولي باستخدام مثال babyapi البسيط
استخدم واجهة سطر الأوامر لإنشاء نموذج اختبار
تنفيذ كل اختبار عن طريق ملء العناصر النائبة بـ JSON المتوقع
قم بإجراء الاختبارات وتأكد من اجتيازها!
نظرًا لأن PUT غير فعال، فإنه يتطلب تضمين جميع الحقول. لتجنب ذلك، نريد إضافة دعم لتبديل الطلبات المكتملة مع التصحيح. نبدأ بإضافة اختبار بسيط لما نتوقع أن تبدو عليه هذه الميزة
فشل هذا الاختبار نظرًا لأن babyapi لا يدعم التصحيح افتراضيًا. يمكننا إصلاحه عن طريق تنفيذ التصحيح لبنية TODO. نظرًا لأننا حددنا ميزتنا باختبارين، فإن أبسط تنفيذ لدينا لا يقتصر فقط على إعداد Completed = true وعلينا استخدام القيمة من الطلب
الآن يمكننا تغيير الحالة المكتملة لـ TODO، ولكننا لا نزال غير قادرين على استخدام التصحيح لتعديل الحقول الأخرى كما تظهر في هذه المجموعة الجديدة من الاختبارات
تحديث التصحيح لتعيين الحقول المتبقية
لا تزال اختباراتنا تفشل لأننا نقوم دائمًا بتحديث TODO بحقول الطلب، حتى لو كانت فارغة. قم بإصلاح ذلك عن طريق تحديث التنفيذ للتحقق من القيم الفارغة
نجح اختبار UpdateWithPatch الجديد، لكن اختباراتنا السابقة فشلت. نظرًا لأننا قمنا بتغيير \\\"مكتمل\\\" إلى *bool، فإن المهام التي تم إنشاؤها بقيمة فارغة ستظهر على أنها فارغة
تنفيذ Render لـ TODO حتى نتمكن من التعامل مع الصفر على أنه خطأ
أدى تنفيذ ميزة التصحيح مع التطوير القائم على الاختبار إلى مجموعة قوية من الاختبارات وميزة تم تنفيذها بشكل جيد. منذ أن بدأنا بتحديد المدخلات والمخرجات المتوقعة لطلب التصحيح في الاختبارات، كان من السهل رؤية المشكلات الناتجة عن عدم التحقق من القيم الفارغة في الطلب. كما أن اختباراتنا الموجودة مسبقًا كانت قادرة على الحماية من انقطاع التغييرات عند تغيير نوع مكتمل إلى *bool.
يعد التطوير المبني على الاختبار أسلوبًا فعالاً لإنشاء تعليمات برمجية صحيحة ومختبرة بالكامل. من خلال البدء بالاختبارات في الاعتبار، يمكننا التأكد من أن كل جزء من التعليمات البرمجية مصمم ليكون قابلاً للاختبار بدلاً من ترك الاختبارات في مرحلة لاحقة.
إذا كنت مترددًا بشأن اعتماد TDD، فإليك بعض الأفكار للبدء:
حتى لو لم يكن TDD مناسبًا للطريقة التي تكتب بها التعليمات البرمجية، فإنه لا يزال أداة قوية يجب أن تمتلكها في حزامك. أنا أشجعك على تخصيص بعض الوقت على الأقل لتجربته ومعرفة مدى تأثيره على عملية التطوير الخاصة بك.
","image":"http://www.luping.net/uploads/20240730/172232678666a89f02dc4a5.jpg","datePublished":"2024-07-30T16:06:26+08:00","dateModified":"2024-07-30T16:06:26+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
يعد التطوير المبني على الاختبار طريقة فعالة لضمان كود تم اختباره جيدًا وقابل لإعادة البناء. الفكرة الأساسية هي أن تبدأ التطوير عن طريق كتابة الاختبارات. توثق هذه الاختبارات التوقعات بوضوح وتنشئ نموذجًا للتنفيذ الناجح. عند القيام بذلك بشكل صحيح، يمكنك تحديد الإدخال/الإخراج المتوقع للوظيفة بوضوح قبل كتابة أي رمز. وهذا له بعض الفوائد المباشرة:
الآن بعد أن اقتنعت بالفوائد، يمكنك البدء في التطوير المبني على الاختبار (TDD) باتباع الخطوات التالية:
يتم اتباع هذه الخطوات في دورة بحيث تقوم دائمًا بإضافة المزيد من الاختبارات لتحدي التنفيذ الحالي.
الخطوة الأخيرة، التي تحدد كتابة الحد الأدنى من التعليمات البرمجية، هي حيث يمكن أن تصبح الأمور مملة إذا تم اتباعها بشكل صارم. من المهم أن تفهم سبب وجود هذه القاعدة قبل أن تتمكن من تحديد متى يكون من المناسب الابتعاد عنها.
تم تكليفك بتنفيذ الوظيفة Add(x, y int) int. قبل أن تنتقل إلى التنفيذ وتعود إلى x y، اكتب أبسط اختبار: 1 1 == 2. إذن، ما هو أبسط تطبيق يمكنه اجتياز الاختبار؟ إنها مجرد العودة 2. الآن نجحت اختباراتك!
في هذه المرحلة، تدرك أنك بحاجة إلى المزيد من الاختبارات، لذلك يمكنك زيادة السرعة وإضافة المزيد منها:
الآن فشلت اختباراتك، لذلك تحتاج إلى إصلاح التنفيذ. لا يمكنك فقط إرجاع 3 أو إرجاع 105 هذه المرة، لذلك تحتاج إلى إيجاد حل مناسب لجميع الاختبارات. وهذا يؤدي إلى التنفيذ: return x y.
على الرغم من أن هذا يبدو مملًا للغاية في المثال التافه، إلا أن الالتزام الصارم بهذه الطريقة دفعك إلى كتابة اختبارات متعددة بدلاً من مجرد الثقة في تنفيذك. بالطبع، كانت فكرتك الأولية لإرجاع x y ناجحة، ولكن الهدف هو إعادة تدريب نفسك على الاعتماد على الاختبارات بدلاً من فهمك للكود. في العالم الحقيقي، أنت لست الوحيد الذي يعمل على هذا الجزء من التعليمات البرمجية وسوف تنسى حتماً تفاصيل التنفيذ. تجبرك هذه العملية على كتابة المزيد من الاختبارات والتفكير في المزيد من الطرق لكسر التنفيذ البسيط.
في النهاية، ستكتسب الخبرة وتتعلم كيفية العثور على التوازن الذي يعمل في السيناريوهات المختلفة التي تواجهها. ستعود إلى التنفيذ الكامل للميزات وستجد أن لديك عددًا أقل من الأخطاء وتكتب المزيد من التعليمات البرمجية القابلة للصيانة.
دعنا ندخل في مثال أكثر تعقيدًا باستخدام TDD لواجهة برمجة تطبيقات HTTP REST. يستخدم هذا الدليل التفصيلي إطار عمل Go الخاص بي، babyapi، ولكن يمكن تطبيق المفاهيم في أي مكان.
يستخدم babyyapi الأدوية العامة لإنشاء واجهة برمجة تطبيقات CRUD كاملة حول بنيات Go، مما يجعل من السهل جدًا إنشاء واجهة برمجة تطبيقات REST كاملة وواجهة سطر أوامر العميل. بالإضافة إلى ذلك، توفر حزمة babytest بعض الأدوات لإنشاء اختبارات جداول API الشاملة. يتيح استخدام TDD على مستوى واجهة برمجة التطبيقات (API) اختبار HTTP وطبقات التخزين لواجهة برمجة التطبيقات (API) الجديدة أو الميزة الجديدة بالكامل مرة واحدة.
إخلاء المسؤولية: نظرًا لأن babyapi يتولى معظم عمليات التنفيذ ويستخدم أيضًا لإنشاء نموذج معياري للاختبار، فإننا لم نبدأ من الناحية الفنية باستخدام TDD. ومع ذلك، سنرى مدى فائدة ذلك عند إضافة دعم لطلبات التصحيح إلى واجهة برمجة التطبيقات الخاصة بنا.
إنشاء مشروع Go جديد
قم بإنشاء main.go الأولي باستخدام مثال babyapi البسيط
استخدم واجهة سطر الأوامر لإنشاء نموذج اختبار
تنفيذ كل اختبار عن طريق ملء العناصر النائبة بـ JSON المتوقع
قم بإجراء الاختبارات وتأكد من اجتيازها!
نظرًا لأن PUT غير فعال، فإنه يتطلب تضمين جميع الحقول. لتجنب ذلك، نريد إضافة دعم لتبديل الطلبات المكتملة مع التصحيح. نبدأ بإضافة اختبار بسيط لما نتوقع أن تبدو عليه هذه الميزة
فشل هذا الاختبار نظرًا لأن babyapi لا يدعم التصحيح افتراضيًا. يمكننا إصلاحه عن طريق تنفيذ التصحيح لبنية TODO. نظرًا لأننا حددنا ميزتنا باختبارين، فإن أبسط تنفيذ لدينا لا يقتصر فقط على إعداد Completed = true وعلينا استخدام القيمة من الطلب
الآن يمكننا تغيير الحالة المكتملة لـ TODO، ولكننا لا نزال غير قادرين على استخدام التصحيح لتعديل الحقول الأخرى كما تظهر في هذه المجموعة الجديدة من الاختبارات
تحديث التصحيح لتعيين الحقول المتبقية
لا تزال اختباراتنا تفشل لأننا نقوم دائمًا بتحديث TODO بحقول الطلب، حتى لو كانت فارغة. قم بإصلاح ذلك عن طريق تحديث التنفيذ للتحقق من القيم الفارغة
نجح اختبار UpdateWithPatch الجديد، لكن اختباراتنا السابقة فشلت. نظرًا لأننا قمنا بتغيير "مكتمل" إلى *bool، فإن المهام التي تم إنشاؤها بقيمة فارغة ستظهر على أنها فارغة
تنفيذ Render لـ TODO حتى نتمكن من التعامل مع الصفر على أنه خطأ
أدى تنفيذ ميزة التصحيح مع التطوير القائم على الاختبار إلى مجموعة قوية من الاختبارات وميزة تم تنفيذها بشكل جيد. منذ أن بدأنا بتحديد المدخلات والمخرجات المتوقعة لطلب التصحيح في الاختبارات، كان من السهل رؤية المشكلات الناتجة عن عدم التحقق من القيم الفارغة في الطلب. كما أن اختباراتنا الموجودة مسبقًا كانت قادرة على الحماية من انقطاع التغييرات عند تغيير نوع مكتمل إلى *bool.
يعد التطوير المبني على الاختبار أسلوبًا فعالاً لإنشاء تعليمات برمجية صحيحة ومختبرة بالكامل. من خلال البدء بالاختبارات في الاعتبار، يمكننا التأكد من أن كل جزء من التعليمات البرمجية مصمم ليكون قابلاً للاختبار بدلاً من ترك الاختبارات في مرحلة لاحقة.
إذا كنت مترددًا بشأن اعتماد TDD، فإليك بعض الأفكار للبدء:
حتى لو لم يكن TDD مناسبًا للطريقة التي تكتب بها التعليمات البرمجية، فإنه لا يزال أداة قوية يجب أن تمتلكها في حزامك. أنا أشجعك على تخصيص بعض الوقت على الأقل لتجربته ومعرفة مدى تأثيره على عملية التطوير الخاصة بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3