كل مطوّر يعرف أهمية الوصول لمرحلة الاختبار بعد تطوير منتجه البرمجي،
لكن القليل يدرك أن جودة التطبيق لا تُقاس فقط بمدى عمله، بل بكيفية التأكد من خلوه من الأخطاء واستعداده للتحديثات المستقبلية , هنا يبدأ دور عملية الاختبار المنظمة، التي شرحها المهندس وسيم البزرة
في الخامس عشر من آ ذار ، كانت جلسة مجتمع Mobile Dev Meetup متمحورة حول هذا الموضوع، إذ قدمها ” المهندس وسيم البزرة ” تحت عنوان “Test Process and Integration Test with Patrol” موضحاً أهم مراحل التخطيط، التصميم، والتنفيذ، بالإضافة إلى دمج اختبارات الواجهة باستخدام أداة Patrol القوية التي تمنح المطور تحكماً غير مسبوق في اختبار التطبيقات .
الفهرس :
1- ما هي Test Process ؟
2- لماذا نقوم ب Test Process ؟
3- ماهي Test planning ؟
4- ما هي الأنشطة الأساسية في مرحلة تخطيط الاختبار؟
5- ما هي Test design and analysis ؟
6- ما هي Test Case؟
7- ما هي أنواع حالات الاختبار Test Cases؟
8- لماذا يتم كتابة حالات اختبار؟
9- كيفية كتابة حالة اختبار (Test Case)
10 – ما هي Test implementation ؟
11- Test Implementation (integration test with patrol) ؟
12- لماذا نختار Patrol؟
محاور الجلسة :
تحديات ما قبل الاختبار :
صعوبة اكتشاف الأخطاء بعد التعديلات
تكلفة وجهد إعادة الاختبار
الاختبار غير المنظم (النهج العشوائي)
ما هي Test Process ؟
اختبار البرمجيات هو جزء مهم من دورة حياة تطوير البرمجيات (SDLC). فهو يساعد على اكتشاف العيوب والأخطاء (Bugs) في تطبيقات البرمجيات وضمان إصلاحها قبل إطلاقها في السوق.
يُشار إلى الخطوات أو المراحل التي تدخل ضمن اختبار البرمجيات بمصطلح عملية الاختبار.
تشمل عملية الاختبار تحديد العيوب، والتحقق من الوظائف، والتأكد مما إذا كانت تطبيقات البرمجيات تفي بالمتطلبات المحددة. وتتطلب هذه العملية تخطيطًا دقيقًا، وتنفيذًا، وتحليلًا، وتوثيقًا، وتحسينًا مستمرًا لضمان نتائج موثوقة ودقيقة.
لماذا نقوم ب Test Process ؟
1- الكشف المبكر عن الأخطاء:
الاختبار الدقيق يكتشف العيوب والأخطاء في المراحل المبكرة من التطوير، مما يسمح بإصلاحها في الوقت المناسب قبل الإطلاق.
2- ضمان الجودة:
الاختبار يضمن موثوقية وفعالية وجودة المنتجات والأنظمة والبرمجيات والخدمات.
3- ثقة المستخدم:
الاختبار عالي الجودة يعزز ثقة العملاء والمستخدمين من خلال تقديم تطبيقات برمجية وخدمات موثوقة

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

- تحديد نطاق الاختبار (Determining the test scope):
ما الذي سيتم اختباره؟ وما الذي لن يتم اختباره؟ هذه الخطوة تحدد حدود الاختبار وتركّز الجهود على الأجزاء الحرجة من النظام. - تحديد أهداف الاختبار (Identifying test objectives):
ما الذي تريد تحقيقه من خلال الاختبار؟ مثلاً: اكتشاف الأخطاء، التأكد من التوافق، اختبار الأداء… - تحديد أساسات الاختبار (Identifying the test basis):
يمثل أساس الاختبار جميع المعلومات والمستندات التي تُشكّل المرجع الأساسي لعملية الاختبار. - تحديد المسؤوليات (Determining Test Responsibilities):
من هو المسؤول عن كل نوع من الاختبارات؟ مثلًا: من يقوم باختبار الواجهة؟ من يراجع النتائج؟ - تحديد منهجية الاختبار (Determining Test Approach):
كيف سيتم تنفيذ الاختبارات؟ هل ستكون يدوية أم آلية؟ وهل ستتبع استراتيجية معينة (مثل اختبار المخاطر)؟ - إعداد جدول زمني للاختبارات (Make Test Schedule):
تحديد متى سيتم تنفيذ الاختبارات، وكم من الوقت ستستغرق، ومن سيقوم بها. - تحديد المخاطر (Identifying Risks):
ما هي العوامل التي قد تؤثر سلباً على عملية الاختبار؟ كالتأخير في التسليم، أو نقص الأدوات، أو تغييرات مفاجئة في متطلبات المشروع.
هذه الخطوات تضمن أن عملية الاختبار ستكون منظمة، فعالة، وقابلة للتنفيذ ضمن الوقت والموارد المحددة.
ما هي Test design and analysis ؟
تحليل الاختبار هو عملية مراجعة وفحص المعلومات الأساسية مثل مواصفات التصميم، وهيكل النظام، ومتطلبات البرمجيات، بهدف تحديد شروط الاختبار اللازمة.
تصميم الاختبار هو عملية إنشاء حالات اختبار تفصيلية استنادًا إلى شروط الاختبار التي تم تحليلها، بحيث تُحدد المدخلات والإجراءات والنتائج المتوقعة لكل سيناريو اختبار.
ما هي Test Case؟
هي مجموعة من الإجراءات التي يتم تنفيذها على تطبيق برمجي للتحقق من ميزاته ووظائفه. وهي توفر وصفاً تفصيلياً لاختبار محدد لضمان تنفيذه بنجاح
ما هي أنواع حالات الاختبار Test Cases؟
حالات الاختبار الإيجابية (Positive Test Cases):
تتحقق من المدخلات الصحيحة للتحقق من أن التطبيق يعمل كما هو متوقع. الهدف الرئيسي منها هو التأكد من أن التطبيق خالٍ من الأخطاء ويحقق متطلبات وثيقة المواصفات (SRS) في سيناريوهات الاختبار الإيجابية.
حالات الاختبار السلبية (Negative Test Cases):
تتحقق من المدخلات غير الصحيحة للتحقق من أن التطبيق لا يعمل بشكل غير متوقع ,الهدف الرئيسي منها هو التأكد من أن التطبيق يرسل رسائل خطأ عند إدخال بيانات غير صالحة أو يمنع تنفيذ وظائف معينة في ظروف غير صحيحة.
حالات الاختبار التدميرية (Destructive Test Cases):
تتحقق من مدى قدرة التطبيق على التحمل حتى “ينكسر” أو “يتعطل”,الطريقة الشائعة لاختبارات التدمير تشمل اختبارات التحميل (Load Testing) وحقن السكربتات (Script Injections).

لماذا يتم كتابة حالات اختبار؟
الهدف الأساسي من تنفيذ حالات الاختبار هو تحديد أي عيوب أو مشكلات في التطبيق ليتم إصلاحها قبل إطلاقه للمستخدمين النهائيين.
1- سهولة الصيانة:
قد تستغرق كتابة حالات الاختبار بعض الوقت. وعند اختبار تطبيق، قد لا ترغب في إعادة تحديث هذه الحالات بشكل متكرر، لذلك فإن كتابة حالات اختبار جيدة من البداية يجعل من السهل صيانتها وإعادة استخدامها.
2- القدرة على التكيف:
قد لا ترغب في تعديل مجموعة الاختبارات بالكامل عند إضافة ميزة جديدة للتطبيق. لذا من الأفضل كتابة حالات اختبار غير مرتبطة ارتباطاً مباشراً بتفاصيل دقيقة، وإنما تعتمد على تغييرات واجهة المستخدم بشكل عام. هذا يُوفر الوقت ويقلل من نسبة الأخطاء.
3- تحديد الأخطاء المحتملة:
حالة اختبار مكتوبة بشكل جيد تُساهم في الكشف المبكر عن الأخطاء والتخلص منها، مما يقلل من مخاطر التكلفة العالية الناتجة عن إعادة العمل أو التأخير في الإطلاق.
كيفية كتابة حالة اختبار (Test Case):
لإنشاء حالة اختبار فعّالة، اتبع الخطوات التالية:

Test Case ID (معرّف حالة الاختبار):
رقم أو رمز فريد يُستخدم لتحديد حالة الاختبار.
Test Name (اسم الاختبار):
وصف مختصر يوضح الهدف من حالة الاختبار.
Precondition (الشرط المسبق):
الظروف أو المتطلبات التي يجب أن تكون موجودة قبل تنفيذ الاختبار.
Test Steps (خطوات الاختبار):
التسلسل الدقيق للإجراءات التي يجب أن يتم تنفيذها أثناء الاختبار.
Test Data (بيانات الاختبار):
البيانات المدخلة التي يتم استخدامها أثناء الاختبار.
Test Priority (أولوية الاختبار):
مدى أهمية حالة الاختبار، والتي يمكن أن تكون مرتفعة أو متوسطة أو منخفضة.
Test Scenario (سيناريو الاختبار):
يصف الحالات والوظائف المطلوبة لإجراء الاختبار، مثل “تسجيل الدخول باستخدام بيانات صحيحة”.
Expected Result (النتيجة المتوقعة):
النتيجة التي يجب أن تظهر إذا تم تنفيذ الاختبار بنجاح.
Actual Result (النتيجة الفعلية):
النتيجة التي حدثت فعلياً بعد تنفيذ الاختبار (يتم ملؤها بعد التنفيذ)
مثال :
[googleapps domain=”docs” dir=”spreadsheets/d/e/2PACX-1vQzYXmKbMxOyvBSxTSBV-d22sHWrqgbZfhfr-Bjv8AY4ApcePMz7mU3l_LZniXJOQ/pubhtml” query=”gid=1757494246&single=true&widget=true&headers=false” /]ما هي Test implementation ؟
تنفيذ الاختبارات وتشغيلها، حيث يتم تطوير حالات الاختبار، وترتيب أولوياتها، وإنشاء بيانات الاختبار. بعد ذلك، تُستخدم مجموعات الاختبار لتنفيذ عملية الاختبار.
Test Implementation (integration test with patrol):
Patrol هو إطار عمل قوي ومفتوح المصدر لاختبار واجهة المستخدم، تم تصميمه خصيصاً لتطبيقات Flutter, يعتمد Patrol على أدوات الاختبار الأساسية الخاصة بـ Flutter، لكنه يوسّع قدراتها بشكل يسمح للمطورين بتنفيذ اختبارات كانت مستحيلة في السابق.
لماذا نختار Patrol؟
وصول مباشر للميزات الأصلية – بطريقة جديدة
استفد من قدرات النظام الأصلية مباشرة من داخل اختبارات Flutter. باستخدام Patrol، يمكنك
a) التفاعل مع نوافذ الإذن، الإشعارات، وواجهات WebView.
b) تعديل إعدادات الجهاز، تبديل اتصال Wi-Fi، والمزيد.
c) القيام بكل ذلك بسهولة باستخدام كود Dart فقط.
كتابة اختبارات بأسلوب أكثر وضوحًا وفعالية
وداعًا للتعقيد مع نظام البحث المخصص الجديد من Patrol:
a) نظّم كود الاختبار لديك باستخدام Finders مخصصة أكثر بساطة وسهولة في القراءة.
b) استمتع بسرعة وسهولة Hot Restart، مما يجعل اختبارات التكامل أسرع وأسهل وأكثر متعة.
c)استعرض عناصر الواجهة الظاهرة حاليًا على Android أو iOS، وتعرّف على خصائصها بسرعة من خلال Patrol DevTools.
المزيد عن Patrol :
الختام
في نهاية هذا العرض، يتضح أن اختبار البرمجيات ليس مجرد مرحلة إضافية في دورة حياة تطوير البرمجيات، بل هو عنصر أساسي لضمان نجاح المنتج واستقراره وجودته. تبدأ عملية الاختبار بتحليل دقيق للمتطلبات والمخططات، تليها مراحل تصميم حالات اختبار فعالة، وتُنفذ باستخدام أدوات وتقنيات متنوعة مثل Patrol لاختبارات الواجهة التفاعلية.
من خلال إعداد خطة اختبار محكمة، وتحديد الأهداف والنطاق والمسؤوليات بوضوح، يمكننا ضمان تغطية شاملة لمختلف السيناريوهات — الإيجابية، والسلبية، والتدميرية — وبالتالي تعزيز موثوقية التطبيق وتجربة المستخدم.
الاختبار الجيد لا يكتشف الأخطاء فحسب، بل يساعد على بناء الثقة بين المستخدمين، تقليل التكاليف الناتجة عن إعادة العمل، وتحقيق جودة عالية للمنتج البرمجي قبل طرحه في السوق.
في عالم تتسارع فيه وتيرة التطوير، تبقى الاختبارات المنهجية والمخططة هي الضمان الحقيقي لتقديم برمجيات متينة وآمنة وفعالة.
ألبوم الصور
هل تبحث عن Test Guide ؟
لقد قام المهندس وسيم ب إنشاء ملف ممتاز يساعدك في هذا يمكنك الدخول عليه من هنا
اكتشاف المزيد من Mobile Dev Meetup
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.