سؤال

لقد كنت أحاول دفع عقليتي عند التطور في المنزل لأكون موجهًا أكثر نحو TDD وقليلًا من DDD.

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

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

هل كانت مفيدة؟

المحلول

ومستودع وهمية يسمح لك لاختبار مجرد رمز التطبيق الخاص بك.

ومستودع وهمية يعني الاختبار الآلي يمكن بسهولة انشاء حالة معروفة في المخزون.

ومستودع وهمية سوف يكون عدة أوامر من حجم أسرع من قاعدة بيانات حقيقية.

ومستودع وهمية ليست بديلا عن اختبار النظام من شأنها أن تشمل قاعدة البيانات الخاصة بك.

نصائح أخرى

كما أرى أن هناك سببين كبيرين حقًا لإجراء الاختبار مقابل الموارد المزيفة:

  • يجعل اختبار الوحدة أسرع عندما يكون لديك سخرية من بطء الإدخال/الإخراج أو قاعدة البيانات.قد لا يبدو هذا شيئًا إذا كان لديك مجموعة اختبار صغيرة ولكن عندما يصل عدد اختباراتك إلى +500 وحدة، يبدأ ذلك في إحداث فرق.بهذه الكمية، ستستغرق الاختبارات التي يتم إجراؤها على قاعدة البيانات عدة ثوانٍ.المبرمجون كسالى ويريدون أن تسير الأمور بسرعة، لذا إذا استغرق تشغيل مجموعة الاختبار أكثر من 10 ثوانٍ، فلن تكون سعيدًا بإجراء TDD بعد الآن.
  • إنه يفرض عليك التفكير في تصميم التعليمات البرمجية الخاصة بك لتسهيل التغييرات.يصبح التصميم عن طريق العقد وحقن التبعية أسهل بكثير أيضًا إذا قمت بالتنفيذ على الواجهات أو الفئات المجردة.إذا تم تنفيذه بشكل صحيح، فإن هذا التصميم يجعل من السهل الالتزام بالتغييرات في التعليمات البرمجية الخاصة بك.

العيب الوحيد هو الواضح:

  • كيف يمكنك التأكد من أنه يعمل حقا؟

...وهذا ما اختبارات التكامل من أجل.

لقد قمت بالتصويت لصالح إجابة الزرافة، لكني أريد إضافة بضع نقاط فقط:

  • يمكن لكل مطور استخدام مستودع وهمية/مزيف لاختبار وحدته الخاصة دون التدخل في الاختبارات التي يجريها مطورون آخرون في نفس المشروع.

  • إن استخدام مستودع وهمية/مزيف محلي يعزز مستخدم طبقة تجريد البيانات ، وهي ممارسة تصميم جيدة.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top