ابدأ من هنا
الرئيسية›المقالات›أساسيات

10 أخطاء قاتلة في فحص نماذج الإدخال (Forms & Inputs) يقع فيها الـ QA

اكتشف أشهر 10 أخطاء في فحص Form Validation وحالات Edge Cases لنماذج الإدخال. دليل عملي لكتابة سيناريوهات اختبار احترافية وتجنب الثغرات في الموقع.

تُعتبر نماذج الإدخال (Forms & Inputs) نقطة التواصل الأولى بين المستخدم والنظام، سواء كانت نموذج تسجيل دخول (Login)، إنشاء حساب (Sign Up)، أو إدخال بيانات الدفع.

تكمن المشكلة في أن الكثير من مهندسي ضبط الجودة (QA Engineers) يكتفون باختبار السلوك السعيد (Happy Path) — مثل كتابة اسم صحيح أو بريد إلكتروني منطقي — وتفوتهم حالات الاستخدام الحرج (Edge Cases) والثغرات الأمنية التي قد تسبب انهيار النظام أو اختراقه.

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

1. عدم فحص الحدود المسموحة بالنصوص (Boundary Value Analysis Failure)

من أشهر الأخطاء كتابة نص بطول عادي والتغاضي عن الحد الأدنى والأقصى للرموز:

  • الأدنى (Minimum Length): ماذا يحدث لو أدخل المستخدم حرفاً واحداً في خانة الاسم أو كلمة المرور؟
  • الأقصى (Maximum Length): ماذا يحصل عند إدخال 500 حرف في خانة مخصصة لـ 50 حرفاً؟ هل يتم قطع النص (Truncation)، أم يظهر خطأ تنسيقي في الواجهة (UI Break)، أم تنهار قاعدة البيانات (Database Exception)?

2. تجاهل المسافات الفارغة (Leading & Trailing Whitespaces)

يدخل العميل أحياناً اسمه أو إيميله متبوعاً بمسافة دون أن ينتبه (user@example.com ):

  • إذا لم يقم النظام بعميلة التجريد (Trim Whitespaces)، قد يرفض النظام تسجيل الدخول لاحقاً بسبب مسافة غير مرئية.
  • فحص إدخال مسافات فقط (Only Spaces) في الخانات الإلزامية وتأكد أن النظام لا يعتبرها محتوى مقبولاً.

3. ضعف التحقق من صحة الصيغ (Weak Format Regex Validation)

الاعتماد على تحقق سطحي للصيغ مثل وجود علامة @ فقط في خانة البريد الإلكتروني:

  • فحص صيغ الإيميل المعقدة والإيميلات غير الصحيحة مثل user@domain أو @domain.com أو إيميلات تحتوي على رموز غريبة.
  • فحص أرقام الهواتف: التأكد من قبول الرموز الدولية (+)، عدم قبول الأحرف النصية، والالتزام بعدد أرقام الدولة المحددة.

4. إهمال ثغرات الحقن والأمان (SQL Injection & XSS)

تعتبر خانات الإدخال البوابة الأولى للمخترقين لتنفيذ هجمات أمنية إذا لم يتم معالجة المدخلات (Input Sanitization):

  • XSS (Cross-Site Scripting): كتابة أكواد JavaScript داخل الخانات مثل <script>alert('hack')</script> للتأكد من عدم تنفيذها في المتصفح.
  • SQL Injection: إدخال رموز خاصة برمجية مثل ' OR '1'='1 لمعرفة ما إذا كان النظام يُظهر أخطاء تسريب لقواعد البيانات.

5. عدم التعامل مع الرموز الخاصة واللغات المتعددة (Special Characters & Unicode)

  • فحص إدخال أحرف بلغات مختلفة (عربي، إنجليزي، صيني) في نفس الخانة.
  • فحص الرموز الخاصة والـ Emojis (مثل: !@#$%^&*()_+-=[]{}|;:'",.<>?/ و 😃) للتأكد من عدم تلف البيانات عند حفظها في قاعدة البيانات (Character Encoding / UTF-8).

6. فحص رفع الملفات بشكل سطحي (File Upload Input Vulnerabilities)

عند وجود خانة لرفع الملفات (مثل الصور أو الـ CV):

  • الحجم (File Size Limit): فحص رفع ملف بحجم صفر (0KB) أو ملف يتجاوز الحد المسموح (مثل 50MB).
  • النوع (File Extension & MIME Type): محاولة رفع ملفات تنفيذية خطيرة (مثل .exe أو .php أو .sh) بعد تغيير امتدادها ظاهرياً إلى .pdf أو .png.
  • الرفع المتعدد والمقاطعة: إلغاء الاتصال أثناء الرفع أو رفع ملفات بأسماء تحتوي على مسافات ورموز خاصة.

7. سلوك الزر عند النقر المكرر (Double Clicking / Form Resubmission)

ماذا يحدث عند النقر بسرعة ومتكررة على زر “إرسال” (Submit Button)?

  • إذا لم يتم تعطيل الزر (Disable Button on Click) فور النقر، قد يتسبب ذلك في إنشاء سجلات مكررة في قاعدة البيانات أو إرسال أكثر من طلب (Duplicate Requests).
  • فحص حالة التحميل (Loading Indicator / Spinner) لإعلام المستخدم أن العملية جارية.

8. سوء التعامل مع خيارات النسخ واللصق (Copy & Paste Scenarios)

غفلة اختباريّة شائعة تتعلق بالتعامل مع الإدخال السريع:

  • خانة تأكيد كلمة المرور أو الإيميل (Confirm Password / Email): هل يُسمح للعميل بنسخ ولصق القيمة أم يُفرض عليه كتابتها؟
  • لصق نصوص منسقة (Formatted Text): لصق نص يحتوي على تنسيقات HTML أو نصوص ملونة والتأكد من تحويلها لنص مجرد (Plain Text).

9. التغاضي عن تجربة المستخدم وإمكانية الوصول (UX & Accessibility)

  • التنقل بزر الـ Tab (Tab Navigation Order): عند الضغط على زر Tab في الكيبورد، هل ينتقل المؤشر بالترتيب المنطقي من الخانة الأولى للثانية ثم الزر، أم يقفز بشكل عشوائي؟
  • رسائل الخطأ (Error Messages): هل الرسائل واضحة وتحدد الخانة التي فيها المشكلة بدقة (مثلاً: “كلمة المرور يجب أن تحتوي على 8 خانات”)، أم أنها مبهمة مثل “حدث خطأ ما”؟
  • إظهار وإخفاء كلمة المرور (Show/Hide Password): فحص عمل أيقونة العين للتأكد من سهولة مراجعة كلمة المرور.

10. استعادة البيانات عند الفشل وفقدان الجلسة (Auto-fill & Data Retention)

عند إرسال النموذج وظهور خطأ في إحدى الخانات (مثلاً: كلمة المرور ضعيفة):

  • هل مسح النظام كل البيانات التي كتبها العميل في بقية الخانات وجعله يعيد كتابتها من الصفر (تجربة مستخدم سيئة جداً)؟
  • أم حافظ النظام على البيانات الصحيحة المكتوبة وأشار فقط للخانة التي تحتاج لتعديل؟
  • فحص التعبئة التلقائية من المتصفح (Browser Auto-fill) وتأكد من توزيع البيانات على الخانات الصحيحة.

ملخص سريع لفحص الـ Forms (Form Testing Checklist)

  1. ✅ Boundaries & Validation (الحدود والصيغ والمجموعات).
  2. ✅ Sanitization & Security (حماية الخانات من XSS و SQLi).
  3. ✅ File Uploads (فحص الامتدادات والحجوم).
  4. ✅ UI/UX & Accessibility (التنقل بالـ Tab ورسائل الخطأ).
  5. ✅ Edge Cases (المسافات الفارغة، النسخ واللصق، والنقر المكرر).

النقاش 🔻

اكتب سؤالك أو ملاحظتك. التعليقات بتظهر بعد المراجعة.