في الاختبار الوظيفي، يجب أن أقارن جميع البيانات المجربة المقدمة في المتصفح مع واحد يأتي من DB؟

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

سؤال

أنا أعمل في خطة اختبار لموقع الويب حيث يتخذ بعض الاختبارات المسار التالي:

  1. اضغط على URI المطلوب والحصول على البيانات المقدمة داخل بعض الجدول (20 صف لكل صفحة).
  2. قم بإجراء استعلام قاعدة بيانات للحصول على البيانات التي من المفترض أن يتم تقديمها في هذا الجدول.
  3. قارن 2 صف البيانات حسب الصف، يجب أن تتطابق.

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

لدي بعض الأسباب التي تجعلني أعتقد أن هذا خطأ بطريقة أو بأخرى .... لا تزال بحاجة إلى آرائكم يا شباب!

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

المحلول

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

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

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

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

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

إذا كان منطق الأعمال معقدا، فأنت تحصل على قيمة أكبر من الاختبار، لكن ستكون أكثر صعوبة في الحفاظ على المدى الطويل.

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

نصائح أخرى

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

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

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

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

إنه:

  1. تحميل البيانات المعروفة (ويفضل أن يكون ذلك من خلال التطبيق نفسه)
  2. تحميل URI المطلوب
  3. تحقق من أن البيانات المعروضة تطابق البيانات المعروفة

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

شخصيا، أود أن أسمي هذا "اختبار التكامل"، لأنك تقوم باختبار دمج DB وموقع الويب، وليس "اختبار وظيفي". بالنسبة ل "الاختبارات الوظيفية"، ربما أرغب في إحداث سخيف من DataSource (على سبيل المثال، قاعدة البيانات) التي ستوفر مجموعات مكتوبة مسبقا من البيانات بالتنسيق الذي تتوقعه.

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

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

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

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