في هذه المقالة سوف نتطرق إلى سير عمل الاختبارات في الأمين سوفت.

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

أنواع الاختبارات

في الأمين سوفت يوجد لدينا عدة أنواع من الاختبارات

  • الاختبارات اليدوية
  • اختبارات الوحدة Unit Tests
  • اختبارات مرئية Coded UI Tests
  • اختبارات وحدة قاعدة البيانات Database Unit Tests

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

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

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

اختبار الوحدة هو كود يتم فيه اختبار كود آخر، وعادة تكون هذه الاختبارات سريعة، حيث يستغرق الاختبار الواحد عدة ميلي ثانية فقط، ويحوي نظام الاختبار لدينا حوالي 5 آلاف اختبار، يتم تنفيذهم خلال أقل من ثانيتين.

الاختبارات المرئية Coded UI Test

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

اختبارات وحدة قاعدة البيانات Database Unit Tests

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

تطوير حالات الاختبار

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

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

مختبر الاختبار في الأمين سوفت

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

تشغيل الاختبارات

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

مراجعة نتائج الاختبار

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

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

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

الخلاصة

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