فحص تنزيل الملفات في اختبارات المتصفح: تحقق من المحتوى والتكامل لا اسم الملف فقط

فحص تنزيل الملفات في اختبارات المتصفح: تحقق من المحتوى والتكامل لا اسم الملف فقط

منهج فحص ملفات التنزيل في المتصفح بالاعتماد على البايتات والبنية والمحتوى والصلاحيات.

دليل عملي

منهج فحص ملفات التنزيل في المتصفح بالاعتماد على البايتات والبنية والمحتوى والصلاحيات.

لماذا لا يكفي ظهور اسم الملف في مجلد التنزيلات؟

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

ابدأ بعقد واضح للملف المتوقع

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

التقط حدث التنزيل قبل النقر

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

افصل بدء التنزيل عن اكتماله

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

افحص ترويسات HTTP دون الثقة بها وحدها

يمكن أن تشير Content-Type إلى application/pdf بينما يحتوي الجسم بيانات غير صحيحة، أو يكون النوع عامًا مثل application/octet-stream لملف صالح. افحص Content-Disposition واسم الملف المقترح وحالة الاستجابة وسياسة التخزين المؤقت، لكن تحقق من توقيع الملف وبنيته أيضًا. بعض الملفات المضغوطة تشترك في بصمة ZIP رغم اختلاف الامتدادات، لذلك لا يكفي أول أربعة بايتات دائمًا. لا تنفذ ملفات أو ماكرو أو سكربتات مجهولة للتحقق من صحتها؛ استخدم محلل صيغة مناسبًا داخل بيئة اختبار معزولة. الهدف تأكيد النوع المتوقع دون تعريض بيئة التشغيل للخطر.

اختبر سلامة المحتوى لا مجرد التجزئة

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

CSV: راجع الترميز والفاصل والأعمدة

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

PDF: تأكد من القابلية للقراءة والبنية

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

ZIP: افحص الأرشيف وما بداخله

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

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

اختبر حدود صلاحيات الحسابات

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

تأكد من عدم إعادة ملف قديم من الكاش

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

ماذا لو انقطع الاتصال أثناء التنزيل؟

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

أسماء الملفات العربية والمسارات الطويلة

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

مثال تقرير مبيعات قابل للتحقق

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

جدول قبول يحدد مسؤولية كل فحص

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

معايير قبول تنزيل الملفات في اختبار المتصفح

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

الخلاصة والمصادر

الاختبار الناجح لا يقول فقط تم تنزيل الملف؛ بل يثبت أن الحدث اكتمل، وأن الملف قابل للقراءة، وأن بنيته ومحتواه وصلاحياته توافق الطلب. راجع توثيق Playwright الرسمي لتنزيل الملفات: https://playwright.dev/docs/downloads ، وواجهة Download: https://playwright.dev/docs/api/class-download . ولتدقيق ملفات البيانات قبل التحليل، اقرأ مقال إيجي تاج «فحص ملف CSV قبل التحليل: كشف الأعمدة المكررة والانحياز وتسرب المعلومات خطوة بخطوة». تختلف فحوص الصيغة باختلاف PDF و CSV و ZIP، لذلك لا تستخدم اختبارًا واحدًا عامًا لكل أنواع الملفات.

هل تريد الاحتفاظ بالمقال أو إعادة استخدامه؟
مجتمع إيجي تاجعن المجتمع

شارك في تقييم ونقاش المقال

رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.

تفاعل مع المقالاختر التفاعل المناسب، ويمكنك تغيير رأيك لاحقًا.
قيّم جودة المقاللا توجد تقييمات بعد — كن أول من يقيّم.

نقاش القراء

النقاش

جارٍ تحميل التعليقات…

بعد هذه المادة

تابع القراءة

اختيار القراء

الأكثر قراءة

الترتيب الكامل
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
يتجدد مع النشر

أحدث المواد

  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06