اختبار الكود الخاص بك برمجيا: من قبل المبرمج أو شخص آخر؟

StackOverflow https://stackoverflow.com/questions/3842452

سؤال

إذن هذا هو الموقف- اقتباس من مديري: [...] نحن بحاجة إلى التركيز على البرمجة. " يقال هذا بعد أن كان لدينا 3 أشهر من قائمة شاقة من الأخطاء وتعيين مؤخرا غير برمجة لكتابة اختبارات الويب مع إطار Selenium.

إن مديري يخجل إلى حد كبير في الاختبار (لا يستطيع رؤية فائدة التكلفة عندما يبطئ المطورين). ما هي آرائك الموجودة في اختبارات الويب والاختبارات البرمجية بشكل عام؟ هل يجب أن يكتبهم المبرمج (أو أ) أم يهم؟ فكرتي كانت أن هذا الجزء من كتابة البرامج الجيدة هو كتابة اختبارات؟ إنه نوع من Microsoft Ivory-Fower من النوع ، وبالتالي فإن أي موارد تم طرحها بواسطة Microsoft (أو المقالات الجيدة بشكل عام) لصالح الاختبار حسب التصميم ستكون مفيدة.

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

المحلول

هذا ما فعلته.

  1. كتبت الاختبارات على أي حال.

  2. كتبت الرمز بعد كتابة الاختبارات.

  3. كان الرمز صخريًا صخريًا وخاليًا من الأخطاء (في الغالب) (إلى حدود قدراتي.)

لم أخبر أي شخص أنني كنت أفعل TDD. ما لم يسألوا.

اتضح أن TDD أسرع في الواقع من العبث حول محاولة تصميم شيء ما ، وترميزه ويأمل أن يعمل.

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

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

عمومًا عمومًا بعيدًا جدًا عندما يتعلق الأمر برمز الانتهاء. منذ - عندما انتهيت من الترميز - تمر جميع الاختبارات.

نصائح أخرى

Code Complete هو كتاب يعد جزءًا من مجموعة Microsoft. أنه يحتوي على نصيحة تدافع عن مراجعة الأقران وفرشاة على اختبار الوحدة كمفهوم. لا يذهب إلى حد بعيد عن التفاصيل مع اختبارات الوحدة ، ولكنه قد يسخنه إلى الفكرة ويمكنك المزيد من استكشاف الموضوع من هناك.

في النهاية تحتاج إلى شخص ما مبرمج مشارك مباشرة في أتمتة الاختبار ... أعني ، هذا بحكم تعريفه.

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


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

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

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

ما كانت مشكلة في العملية وتقدير العمل الشرعي أصبحت الآن مشكلة أخلاقية لزجة.

أوصي بشدة بالتواصل مع نهجك المخطط لإقناع مديرك برؤية وجهة نظرك من خلال العقل والمنطق وجذب حبه لمشكلات Microsoft. ؛)

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

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

أذهب للعالم أنه من أجل "القيام به" ، يجب التحقق من ذلك من قبل شخصين على الأقل. لا تحتاج دائمًا إلى اختبار برامج في الفريق إذا كان الجميع في الفريق يعتقد أن جودة البرنامج هي وظيفة الجميع.

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

ذكّر المدير بأن تكلفة الأخطاء تنمو بشكل مضاعف في وقت لاحق.

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

سوف تسمع غالبًا أنه من الجيد جعل الآخرين يختبرون الكود الخاص بك لأنهم قد يفسرون المواصفات بشكل مختلف. ومع ذلك ، فإن فائدة كتابة اختبارات الكود الخاص بك هي أنك تعرف أين يمكن أن تكون معيبة.

يمكن أن يكون النهج الفعال عبارة عن مزيج من كلاهما: المبرمج الذي يكتب اختبارات وحدته الخاصة ، مع التركيز على حالات الزاوية وشخص آخر يقوم ببعض الاختبارات الوظيفية ، مع التركيز على المواصفات العليا.

لا يتم إنشاء جميع الاختبارات على قدم المساواة ، دعنا نتغلب على بعض:

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

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

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

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

في هذا الصدد ، رئيسك على حق.

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

يمكنك الإشارة إلى ذلك وحدة التجارب تم بناؤه في إطار .NET منذ VS2005.

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