سؤال

عادة ما أستخدم أشكال الويب ASP.NET من أجل واجهة المستخدم الرسومية، ربما واحدة من معظم التقنيات "الدائنة". لكنه ينطبق على أي تقنية لها الدول. في بعض الأحيان تكون الأشكال صعبة ومعقدة، مع> 30 عناصر و> 3 حالات لكل عنصر. عادة ما يعمل وسيلة بديهية لتصميم مثل هذا النموذج بنسبة 90٪. عادة ما يجد 10٪ عادة اختبار أو المستخدمين النهائيين :).

المشكلة كما أراها يجب أن نتخيل الكثير من السيناريوهات على نفس الكائن، وهو أصعب بكثير من نتيجة العمليات المستقلة.

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

هل تستخدم أي شكليات الرياضيات والنهج لإدارة الدولة للأشياء المعقدة؟ ليس مثل Monads في Haskell، ولكن يمكن استخدامها في تطبيقات الأعمال واللغات التقليدية - Java، C #، C ++.

قد لا يكون الأمر كذلك، ولكن 99٪ سيكون رائعا أيضا :).

آسف إذا كان مجرد سؤال آخر tumbleweed :)

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

المحلول

استخدم رسالة المرور كتجريد. مزايا:

  1. الصعوبة مع الدولة المعقدة هي التفاعلات المعقدة، والتي هي أشعر خاصة في أنظمة متزامنة مثل واجهة المستخدم العالمية النموذجية. إن مرور الرسائل، عن طريق القضاء على الدولة المشتركة، توقف عن تعقيد الدولة في عملية واحدة من المعدية.
  2. تعزز مراجعة الرسائل نماذج أساسية لطيفة: على سبيل المثال، نموذج الممثل، CSP، كلاهما متأثر بإغرانج.
  3. يدمج جيدا مع البرمجة الوظيفية: تحقق من Erlang مرة أخرى. كتاب بيتر فان روي * مفاهيم وتقنيات ونماذج برمجة الكمبيوتر هو نص ممتاز يظهر المكونات الأساسية لغات البرمجة، مثل الوظائف النقية، ورسالة الرسائل، وكيف يمكن دمجها. النص هو avilable باعتباره PDF مجاني.

نصائح أخرى

قد لا يكون الأمر كذلك، ولكن 99٪ سيكون رائعا أيضا :).

آسف، لكنني أفضل تقديم الحل الكامل NP :)

إجابة سريعة مني ستكون نهج يقودها الاختبار. وبعد ولكن قراءة أكثر لمزيد منهم.

المشكلة كما أراها يجب أن نتخيل الكثير من السيناريوهات على نفس الكائن، وهو أصعب بكثير من نتيجة العمليات المستقلة.

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

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

هل تستخدم أي شكليات الرياضيات والنهج لإدارة الدولة للأشياء المعقدة؟

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


لتعطيك مثال مجردة:

لديك أ سيناريو مجمع A. وبعد تحتاج دائما إلى الكتابة ما لا يقل عن 3 اختبارات لكل سيناريو: المدخلات الصحيحة، والإدخال غير صحيح حالة (ق) حالة (ق).

بدءا من كتابة الاختبار الأول (الإدخال الصحيح) أدرك أن اختبار يصبح معقد للغاية.

نتيجة لذلك، أنا سيناريو تتحلل A في مجمع أقل A1, A2, A3. وبعد ثم أبدأ في كتابة اختبارات لكل منها مرة أخرى (يجب أن ينتهي باختبارات ما لا يقل عن 3 * 3 = 9).

أدرك ذلك A1 لا يزال معقدا جدا لاختبار، لذلك أنا تتحللها مرة أخرى إلى A1-1, A1-2. وبعد الآن لدي 4 سيناريوهات مختلفة (A1-2، A1-2، A2، A3) و 3 * 4 = 12 اختبارات محتملة. أواصل كتابة الاختبارات.

بعد انتهائي. أنا بدء التنفيذ, ، لذلك كل الاختبارات الخاصة بي تمر. بعد ذلك لديك 12 يثبت أن السيناريو A (أكثر دقة أجزاءها) تعمل بشكل صحيح. وبعد بالإضافة إلى ذلك، قد تكتب 3 اختبارات أخرى للسيناريو A التي تجمع بين جميع أجزاءها المتحللة - هذا النوع من الاختبارات هو غالبا (ولكن ليس دائما!) يمكن أن ينظر إليه على النحو اختبار التكامل.

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

الآن لديك 2 أثبتت أكثر من نظام العمل بشكل صحيح تضمن أن جميع الوظائف السابقة تعمل بنفس الطريقة.

هناك 2 مشاكل رئيسية رئيسية مع هذا النهج المنظمة البحرية الدولية.

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

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

لذلك أنا لا أتحدث حقا عن الدولة هنا ولكن السلوك وأثبت أنه يعمل بشكل صحيح.

من تجربة شخصية، يجب أن أذكر أن WebForm ASP.NET من الصعب للغاية اختباره. للتغلب على ذلك، أود أن أقترح تطبيق نمط MVP ل WebForms ASP.NET.

بدلا من الإنترنت، ASP.NET MVC أسهل بكثير لاختبار. ولكن لا يزال، يجب أن يكون لديك مجموعة من "الخدمات" (سيناريوهاتنا "(سيناريوهاتنا) و (الوحدة) لاختبارها بشكل منفصل، ثم اختبر تكامل UI في البيئة بالقرب من اختبارات التكامل.

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