طرق اختبار البرمجيات

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

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



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

اختبار: دليل أو الآلي؟

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

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

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

أنواع مختلفة من الاختبارات

اختبارات الوحدة

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

اختبارات التكامل

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

اختبارات الوظيفة

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

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

اختبارات نهاية إلى نهاية

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

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

اختبار القبول

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

اختبارات الأداء

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

تعد اختبارات الأداء مكلفة بطبيعتها ، لكنها يمكن أن تساعدك في فهم العوامل الخارجية التي يمكن أن تسقط نظامك.

اختبار الدخان

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

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

كيفية أتمتة الاختبارات

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

لأتمتة الاختبار ، عليك أولاً أن تكتبها بلغات البرمجة باستخدام إطار اختبار مناسب للتطبيق الخاص بك. PHPUnit و Mocha و RSpec هي أمثلة على أطر اختبار يمكنك استخدامها في PHP و Javascript و Ruby على التوالي. لديهم العديد من الميزات لكل لغة ، لذلك يجب عليك إجراء القليل من البحث بنفسك والتشاور مع مجتمعات المطورين لمعرفة الإطار الأفضل لك.

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



إذا كنت جديدًا في الاختبار ، فراجع دليل التكامل المستمر لإنشاء أول مجموعة اختبار.

اختبار البحوث

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

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

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

ملاحظة الاختبار

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

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

وفقًا للتقاليد المعمول بها ، نحن في انتظار تعليقاتكم وندعو الجميع إلى يوم الباب المفتوح ، الذي سيقام في 18 مارس من قبل معلمنا ، مهندس أتمتة الاختبار الرئيسي في Group-IB ، ميخائيل سامويلوف .

Source: https://habr.com/ru/post/ar443418/


All Articles