الاختبار موضوع يُناقَش بتطرّف: فريق لا يكتب اختباراً واحداً، وفريق يطارد تغطية 100% فيقضي وقتاً أطول في الاختبارات من المنتج.
الحقيقة العملية بينهما: بعض الاختبارات تسدد ثمنها أضعافاً، وبعضها عبء صيانة بلا عائد. هذا الدليل يميّز بينهما.
هرم الاختبارات — والواقع
القاعدة المعروفة: كثير من اختبارات الوحدة، أقل من اختبارات التكامل، أقل من اختبارات الواجهة الشاملة.
| النوع | ما يختبره | السرعة | تكلفة الصيانة |
|---|---|---|---|
| الوحدة | دالة أو صنف منفرد | فورية | منخفضة |
| التكامل | تعاون عدة مكوّنات | متوسطة | متوسطة |
| الواجهة (E2E) | مسار كامل كما يراه المستخدم | بطيئة | عالية |
لماذا هذا الترتيب؟ لأن اختبارات الواجهة الشاملة هشّة — تنكسر مع أي تغيير تصميمي بسيط، وصيانتها تستهلك وقتاً حقيقياً. اختبارات الوحدة تعمل بالمللي ثانية ولا تنكسر إلا عند تغيّر المنطق فعلاً.
ما يستحق الاختبار — بالأولوية
1. منطق العمل — أعلى عائد
الحسابات، التحقق من الصحة، قواعد العمل، تحويل البيانات.
لماذا؟ لأنه المنطق الذي يكلّف خطؤه مالاً حقيقياً: حساب سعر خاطئ، خصم يُطبَّق مرتين، تاريخ استحقاق مغلوط.
وهو الأسهل اختباراً — دوال نقية بمدخلات ومخرجات واضحة، بلا واجهة ولا شبكة.
إن كانت معماريتك تفصل المنطق عن الواجهة، فهذا يصبح سهلاً جداً. راجع دليل Clean Architecture.
2. المسارات الحرجة
المسار الذي إن انكسر توقف عملك: التسجيل، الشراء، الدفع، الحجز.
اختبر المسار كاملاً من البداية للنهاية — ولو يدوياً في البداية.
3. ما انكسر من قبل
كل خطأ يظهر في الإنتاج يستحق اختباراً يمنع عودته. هذه أعلى الاختبارات عائداً لأنها مبنية على فشل حقيقي حدث فعلاً لا على افتراض.
4. الحالات الحدّية
القائمة الفارغة، انقطاع الشبكة، النص الطويل جداً، الرقم السالب، التاريخ المستقبلي.
هذه أكثر ما يُنسى في التطوير وأكثر ما يظهر عند المستخدم.
ما لا يستحق الأتمتة
- الواجهة البصرية البحتة — الألوان والمسافات. المراجعة البصرية أسرع وأدق.
- الكود المولّد — لا تختبر ما لم تكتبه.
- الأغلفة البسيطة — دالة تمرّر معاملاً بلا منطق.
- ما يتغير كل أسبوع — اختبار شاشة قيد إعادة التصميم عبء بلا عائد.
- مكتبات الطرف الثالث — اختبر تكاملك بها لا هي نفسها.
الاختبار اليدوي — لا غنى عنه
الأتمتة لا تلاحظ أن الزر بعيد عن الإبهام، أو أن النص العربي مقطوع، أو أن الحركة تبدو متقطعة.
قائمة يدوية قبل كل إصدار
الوظائف:
- المسارات الحرجة تعمل من البداية للنهاية.
- تسجيل الدخول والخروج وإعادة التعيين.
- الدفع (بحساب اختباري).
الأجهزة:
- جهاز أندرويد متوسط المواصفات — لا الأحدث.
- جهاز iOS.
- شاشة صغيرة وأخرى كبيرة.
الشبكة:
- اتصال بطيء — الأداء ورسائل الانتظار.
- انقطاع أثناء عملية — هل يتعافى بسلاسة؟
- عودة الاتصال — هل يستأنف؟
اللغة والاتجاه:
- التطبيق بالعربية كاملاً — راجع دليل RTL.
- التبديل بين اللغتين لا يكسر التخطيط.
- النصوص الطويلة لا تُقطَع ولا تتجاوز حدودها.
الحالات الحدّية:
- قوائم فارغة — هل تعرض رسالة مفيدة؟
- بيانات كثيرة جداً — هل تتدهور بسلاسة؟
- الأذونات مرفوضة — هل يشرح التطبيق ويستمر؟
الاختبار على أجهزة حقيقية
المحاكي لا يكفي. لا يُظهر: الأداء الفعلي على معالج بطيء، استهلاك البطارية، سلوك الكاميرا وGPS الحقيقي، أو تفاعل التطبيق مع تطبيقات أخرى.
الحد الأدنى العملي: جهاز أندرويد متوسط المواصفات + جهاز iOS. الأندرويد المتوسط أهم من الحديث — هو ما يستخدمه جزء كبير من جمهورك، وعليه تظهر مشاكل الأداء أولاً.
الاختبار قبل الإطلاق
الإصدار التجريبي (Beta). وزّع على مجموعة محدودة قبل الإطلاق العام — عبر TestFlight أو المسار التجريبي في Google Play. مستخدمون حقيقيون يجدون ما لا يجده فريقك لأنهم يستخدمون التطبيق كما يريدون هم لا كما صمّمته أنت.
اختبار الترقية. إن كان لديك مستخدمون حاليون، اختبر الترقية من الإصدار السابق لا التثبيت النظيف فقط. هجرة البيانات مصدر أخطاء متكرر يظهر عند المستخدمين القدامى فقط.
اختبار الحمل إن كان تطبيقك يتوقع ذروة — موسم، حملة، أو إطلاق. راجع دليل الاستضافة.
بعد الإطلاق — المراقبة اختبار مستمر
تتبّع الأعطال (Crash Reporting). إلزامي. بدونه تعرف أن التطبيق يتعطّل فقط حين يشتكي مستخدم — وأغلبهم يحذف بدل أن يشتكي.
راقب:
- معدل الأعطال والشاشات التي تسبّبها.
- الأخطاء غير المتوقعة في الخادم.
- الشاشات التي يغادرها المستخدمون — قد تكون بطيئة أو مربكة.
هذه بيانات لا يمنحها أي اختبار مسبق لأنها من استخدام حقيقي بأجهزة وشبكات وسلوك حقيقي.
كم اختباراً يكفي؟
لا توجد نسبة تغطية سحرية. معايير عملية أفضل:
- منطق العمل الحرج مغطّى — الحسابات وقواعد العمل.
- كل خطأ إنتاج سابق له اختبار يمنع عودته.
- المسارات الحرجة مختبَرة ولو يدوياً بقائمة ثابتة.
- الاختبارات تعمل بسرعة — إن استغرقت عشر دقائق، سيتخطّاها الفريق.
علامة أنك تبالغ: إن كان تعديل بسيط يكسر عشرين اختباراً، فاختباراتك مرتبطة بالتنفيذ لا بالسلوك — وهذا عبء لا حماية.
اقرأ أيضاً
- معمارية Clean Architecture — تجعل الاختبار ممكناً.
- تحسين أداء التطبيقات — القياس على أجهزة حقيقية.
- أمان واجهات API — اختبار الحالات الحدّية يكشف ثغرات.
الأسئلة الشائعة
كم يضيف الاختبار على تكلفة المشروع؟
كتابة اختبارات لمنطق العمل الحرج تضيف عادة 10–20% على وقت التطوير. تغطية شاملة بأتمتة واجهة كاملة قد تضاعف الوقت. العائد يظهر في الصيانة — مشروع بلا اختبارات يصبح مخيفاً للتعديل بعد سنة.
هل أختبر تطبيق MVP؟
اختبر منطق العمل الحرج فقط والمسار الجوهري. الأتمتة الشاملة مبالغة في مرحلة قد يتغير فيها كل شيء. راجع دليل MVP.
ما الفرق بين الاختبار اليدوي والآلي؟
الآلي يتحقق أن ما كان يعمل ما زال يعمل — رخيص عند التكرار. اليدوي يكتشف ما لم تتوقعه — تجربة سيئة، نص مقطوع، تدفق مربك. تحتاج الاثنين؛ الآلي للحماية من الانحدار، واليدوي للجودة.
هل أحتاج مختبِراً متخصصاً؟
للمشاريع الكبيرة والقطاعات المنظمة: يستحق. للمشاريع الصغيرة، مطوّر منضبط بقائمة اختبار ثابتة يغطي معظم الحاجة. الأهم وجود قائمة مكتوبة لا الاعتماد على الذاكرة قبل كل إصدار.
كيف أختبر على أجهزة لا أملكها؟
خدمات اختبار الأجهزة السحابية تتيح تشغيل التطبيق على أجهزة حقيقية متنوعة. مفيدة لتغطية تشكيلة واسعة، لكنها لا تغني عن جهاز حقيقي في يدك لاختبار التجربة والأداء الفعلي.
متى أشغّل الاختبارات؟
آلياً عند كل دفعة كود إن أمكن. إن لم يكن لديك تكامل مستمر، فقبل كل إصدار على الأقل. اختبار لا يُشغَّل بانتظام اختبار ميت يعطي طمأنينة زائفة.
الخلاصة
اختبر منطق العمل أولاً — أعلى عائد وأسهل تنفيذاً.
كل خطأ إنتاج يستحق اختباراً يمنع عودته — هذه أعلى الاختبارات قيمة لأنها مبنية على فشل حقيقي.
لا تؤتمت الواجهة البصرية — المراجعة اليدوية أسرع وأدق هناك.
اختبر على أجهزة حقيقية متوسطة المواصفات — والمحاكي لا يكفي.
وراقب بعد الإطلاق — تتبّع الأعطال يمنحك ما لا يمنحه أي اختبار مسبق.
تريد مراجعة لجودة مشروعك؟ تواصل معنا — نبدأ بما يستحق الاختبار فعلاً. اطّلع على خدمات تطوير التطبيقات.