تجزؤ الأجهزة

تجزؤ الأجهزة (Device Fragmentation) هو تنوّع البيئات التي يجب أن يعمل فيها إصدار واحد من تطبيق الجوال: أجهزة من شركات مصنّعة كثيرة، وعدة إصدارات من نظام التشغيل في وقت واحد، وشاشات تختلف في الحجم والشكل والكثافة، وذاكرة تختلف سعتها، وإعدادات يختارها المستخدم مثل حجم الخط واللغة والوضع الداكن. كل تركيبة من هذه بيئة مستقلة، وقد يتصرّف الإصدار نفسه في كل منها بطريقة مختلفة.

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

لماذا يهم

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

ولا يستطيع أي فريق الاختبار على كل طراز، فإما أن تُكتشف هذه العيوب باختيار مدروس للأجهزة، وإما أن يكتشفها المستخدمون. ومصفوفة الأجهزة (Device Matrix) المكتوبة مع أسبابها تحوّل عبارة «اختبرنا على بعض الهواتف» إلى بيان تغطية تستطيع الدفاع عنه عند قرار الإصدار: أي المخاطر يغطيها كل جهاز، وأيها قرر الفريق ألا يغطيه.

من أين يأتي التجزؤ

تناول درس Android وiOS إصدارات النظام ونسخ المتاجر. أما في بقية الأبعاد فالتنوع الأوسع في Android، لأن شركات مصنّعة كثيرة تطرحه على عتاد يمتد من الأجهزة الاقتصادية إلى الرائدة، وتضيف كل منها طبقة نظام خاصة بها. ويعمل iOS على طرازات أقل، لكن عدة أحجام من iPhone، وأجهزة iPad إن كان التطبيق يدعمها، تبقى مستخدمة في الوقت نفسه.

  • الشاشة: الحجم ونسبة الأبعاد وكثافة البكسلات، وفتحات الكاميرا والزوايا المستديرة التي تقتطع مساحة من التخطيط.
  • شكل الجهاز: الأجهزة اللوحية، والأجهزة القابلة للطي التي يتغير حجم شاشتها عند طيها أو فتحها، ونوافذ تقسيم الشاشة التي تمنح التطبيق جزءاً من الشاشة.
  • العتاد: الذاكرة والمعالج والكاميرا والمستشعرات. والجهاز قليل الذاكرة يُنهي التطبيقات العاملة في الخلفية أسرع، فتزيد مرات إعادة تشغيل التطبيق عند العودة إليه.
  • طبقة الشركة المصنّعة (Android): نوافذ حوار ولوحات مفاتيح نظام معدّلة، وتحسين لاستهلاك البطارية قد يؤخر العمل في الخلفية والإشعارات.
  • إعدادات المستخدم: حجم الخط وحجم العرض والوضع الداكن واللغة واتجاه النص.

جرّبها: مولّد سيناريوهات الاختبار

أحجام الشاشات: البكسلات والكثافة وفئات الحجم

لا تُبنى تخطيطات التطبيقات بالبكسلات بل بوحدات مستقلة عن الكثافة: dp على Android وpoints على iOS. والـ dp الواحدة تساوي بكسلاً فعلياً واحداً على شاشة كثافتها ⁦160 dpi⁩، فالعرض بوحدات dp هو العرض بالبكسلات × ⁦160⁩ ÷ الكثافة. فهاتف عرضه ⁦1080⁩ بكسلاً بكثافة ⁦420 dpi⁩ عرضه نحو ⁦411 dp⁩، وهاتف عرضه ⁦720⁩ بكسلاً بكثافة ⁦320 dpi⁩ عرضه ⁦360 dp⁩. وترسم أجهزة iPhone كل point ببكسلين أو ثلاثة في كل اتجاه (@2x و@3x). فالعرض بوحدات dp أو points، لا دقة الشاشة، هو ما يحدد ما يتسع على الشاشة.

تتبدّل التخطيطات المتكيّفة عند عتبات. ففئات حجم النافذة (Window Size Classes) في Android للعرض هي: المضغوطة (Compact) دون ⁦600 dp⁩، وتشمل كل الهواتف تقريباً في الوضع العمودي؛ والمتوسطة (Medium) من ⁦600⁩ إلى ⁦839 dp⁩، وتشمل معظم الأجهزة اللوحية والأجهزة القابلة للطي المفتوحة في الوضع العمودي؛ والموسّعة (Expanded) من ⁦840⁩ إلى ⁦1199 dp⁩، وتشمل معظم الأجهزة اللوحية في الوضع الأفقي؛ وللنوافذ الأعرض فئات خاصة بها. وفي iOS يوصف كل محور بأنه مضغوط (Compact) أو عادي (Regular): فجهاز iPhone في الوضع العمودي عرضه مضغوط وارتفاعه عادي، وتطبيق iPad بملء الشاشة عادي في المحورين، لكنه يصبح مضغوط العرض في نافذة تعدد مهام ضيقة. وكل عتبة حدّ، فطبّق درس تحليل القيم الحدّية: اختبر ⁦599⁩ و⁦600 dp⁩، و⁦839⁩ و⁦840 dp⁩.

والعرض ليس القيد الوحيد. فشريطا الحالة والتنقل وفتحات الكاميرا ومؤشر الشاشة الرئيسية في iPhone تأخذ مساحة، ويجب أن يبقى المحتوى داخل المنطقة الآمنة (Safe Area)؛ والتطبيقات التي تستهدف Android 15 تُعرض من الحافة إلى الحافة (Edge-to-edge) افتراضياً، فقد يُخفي تحديثُ الإصدار المستهدف (Target SDK) زراً تحت شريط التنقل. وتُضيّق إعدادات المستخدم المساحة أكثر: فإعداد حجم العرض في Android يغيّر العرض بوحدات dp، وتكبير الخط حتى ⁦200%⁩ (في Android 14 وما بعده) أو أكبر أحجام Dynamic Type في iOS يقلّل كثيراً ما يتسع على الشاشة من نص.

  • أصغر عرض وأكبر عرض في المصفوفة: لا نص مقصوص، ولا عناصر متداخلة، ولا تمرير جانبي.
  • جانبا كل عتبة: يتبدّل التخطيط كما صُمّم، مثل الانتقال إلى لوحين متجاورين ابتداءً من ⁦840 dp⁩.
  • المنطقة الآمنة: لا عنصر قابلاً للنقر تحت شريط نظام أو فتحة كاميرا أو مؤشر الشاشة الرئيسية.
  • أكبر خط وأكبر حجم عرض: يلتف النص بدلاً من أن يُقص، ويبقى كل إجراء في المتناول بالتمرير.
Width in dp = width in pixels × 160 ÷ density (dpi)

1080 px at 420 dpi  ->  ~411 dp   compact
1198 px at 320 dpi  ->   599 dp   compact  (just below the threshold)
1200 px at 320 dpi  ->   600 dp   medium   (first value of the class)

Android window size classes (width)
  compact    < 600 dp       almost all phones in portrait
  medium     600 - 839 dp   most tablets and unfolded foldables in portrait
  expanded   840 - 1199 dp  most tablets in landscape

On an Android emulator
  adb shell wm density 320
  adb shell wm size 1198x2000      # 599 dp, then 1200x2000 for 600 dp
  adb shell wm size reset && adb shell wm density reset

جرّبها: مولّد القيم الحدّية

الاتجاه وتغييرات التهيئة الأخرى

في Android يُعدّ تدوير الجهاز تغييراً في التهيئة (Configuration Change): فالنظام افتراضياً يُدمّر الشاشة الحالية (النشاط، Activity) ثم ينشئها من جديد. وكل ما لم يحفظه التطبيق يضيع: النص المكتوب، وموضع التمرير، والتبويب المختار، ونافذة الحوار المفتوحة، وقد يُرسل الطلب الجاري مرتين أو تضيع نتيجته. وطيّ الجهاز القابل للطي أو فتحه، وتغيير حجم نافذة في تقسيم الشاشة، وتغيير حجم الخط أو الوضع الداكن أو اللغة، كلها تُطلق إعادة الإنشاء نفسها، فالتدوير أسرع طريقة لاختبار حفظ الحالة الذي تعتمد عليه هذه العائلة كلها من الأحداث.

أما iOS فيُبقي الشاشة ويعيد ترتيب تخطيطها وفق الحجم الجديد، ووفق فئات الحجم الجديدة إن تغيّرت، لذا فعيوب التدوير في iOS غالباً عيوب تخطيط: زر مخفي، أو لوحة مفاتيح تغطي الحقل النشط. وفي الوضع الأفقي يصبح ارتفاع الهاتف صغيراً (فئة الارتفاع المضغوطة في Android دون ⁦480 dp⁩)، ومع فتح لوحة المفاتيح قد لا يظهر إلا حقل أو حقلان.

وقفل الشاشة على الوضع العمودي قرار منتج يُسجَّل، لا افتراض. فمعيار النجاح ⁦1.3.4⁩ الاتجاه (Orientation) في WCAG 2.2 (المستوى AA) لا يسمح به إلا إذا كان اتجاه معيّن ضرورياً. وفي التطبيقات التي تستهدف Android 16 يتجاهل النظام قيود الاتجاه وتغيير الحجم على الشاشات التي لا يقل أصغر عرض لها عن ⁦600 dp⁩، مع استثناءات مثل الألعاب، فيظهر التطبيق المقفل على الوضع العمودي أفقياً على الأجهزة اللوحية والأجهزة القابلة للطي المفتوحة.

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

اختيار مصفوفة الأجهزة

مصفوفة الأجهزة قائمة مكتوبة بالبيئات التي يختبر عليها الفريق، وبعمق اختبار كل منها، وبسبب وجودها. ابنِها كما تبني أي تصميم اختبار: حدّد أولاً عناصر التغطية (Coverage Items)، أي قيم كل بُعد التي يجب اختبارها مرة واحدة على الأقل، ثم اختر الأجهزة التي تغطيها.

  • البيانات: المستخدمون النشطون حسب إصدار النظام والطراز والشركة المصنّعة وفئة الشاشة، من أدوات التحليلات ولوحات المتاجر وتقارير الانهيار. وفي موقع الجوال تعطي سلاسل User-Agent في سجلات الخادم المتصفح ونوع الجهاز، لكن Chrome على Android صار يُبلغ عن إصدار Android وطراز ثابتين، فخذ هذين من أدوات التحليلات. والتطبيق الجديد يبدأ من سوقه المستهدفة.
  • عناصر التغطية: أحدث نظام وأقدم نظام مدعوم في كل منصة، وأصغر عرض مستخدَم فعلاً وكل فئة حجم أكبر تدعمها، وجهاز قليل الذاكرة، والشركات المصنّعة الرائدة، وأكبر حجم خط، وكل اتجاه للنص.
  • الأجهزة: فضّل الأجهزة التي تغطي عدة عناصر معاً، ثم أضف الطرازات صاحبة أكبر عدد من الجلسات وأي طراز تتجمّع عليه الانهيارات.
  • الطبقات: أجهزة الطبقة 1 (Tier 1) حقيقية تُشغَّل عليها الرحلات الحرجة وحزمة الانحدار مع كل إصدار؛ والطبقة 2 على المحاكيات أو أجهزة مزرعة الأجهزة (Device Farm) ويُشغَّل عليها اختبار دخان مع كل إصدار؛ والطبقة 3 تُختبر قبل الإصدارات الكبرى.
  • الإعدادات: وزّع اللغة والاتجاه وحجم الخط والمظهر على الأجهزة بالاختيار الثنائي (Pairwise) بدلاً من اختبار كل التركيبات.
  • الصيانة: اكتب سبب وجود كل جهاز، وراجع المصفوفة كل ربع سنة وبعد كل إصدار نظام جديد أو حدّ أدنى جديد أو سوق جديدة.

جرّبها: مولّد الاختبار المبني على المخاطر جرّبها: محلّل User-Agent

مثال تطبيقي: تطبيق توصيل طعام

يدعم التطبيق Android 10 (API 29) وما بعده وiOS 17 وما بعده، ويعمل على iPhone فقط (لا نسخة لـ iPad)، ويُستخدم بالعربية والإنجليزية. بيانات توضيحية لآخر ⁦90⁩ يوماً: ⁦55%⁩ من الجلسات على Android، ثلاثة أرباعها على الشركتين المصنّعتين A وB؛ و⁦18%⁩ من جلسات Android على أجهزة ذاكرتها ⁦4⁩ غيغابايت أو أقل؛ وأصغر عرض مستخدَم ⁦360 dp⁩ على Android و⁦375⁩ point على iPhone؛ و⁦6%⁩ من جلسات Android على الأجهزة القابلة للطي واللوحية؛ و⁦70%⁩ من الجلسات بالعربية؛ وتجمّعٌ من الانهيارات على هواتف الشركة B عند عودة المستخدمين من صفحة الدفع.

تغطي خمسة أجهزة كل عناصر التغطية مرة واحدة على الأقل، كما يبيّن الشكل. والهاتف الاقتصادي D3 يؤدي العمل الأكبر، ولأنه من الشركة B فعليه يُشغَّل سيناريو «العودة من الدفع» أولاً. أما الشاشات الأعرض فلا يغطيها إلا الجهاز القابل للطي في مزرعة الأجهزة: خطر مقبول عند ⁦6%⁩ من جلسات Android، ومكتوب في المصفوفة. وفي الإعدادات، أربعة معاملات لكل منها قيمتان على خمسة أجهزة تعطي ⁦5 × 16 = 80⁩ تركيبة كاملة، بينما يمكن لمجموعة ثنائية أن تغطي كل زوج من القيم في ⁦10⁩ تشغيلات فقط.

  • D1 وD2: أحدث نظام في كل منصة والطرازات صاحبة أكبر عدد من الجلسات؛ وD1 من الشركة A أيضاً.
  • D3: أقدم Android مدعوم، وذاكرة قليلة، وأصغر عرض على Android، والشركة B وتجمّع انهياراتها.
  • D4: أقدم iOS مدعوم وأصغر عرض على iPhone.
  • D5: أحدث Android، والعرض المتوسط والموسّع، ونافذة يتغيّر حجمها أثناء عمل التطبيق.
مصفوفة أجهزة تطبيق توصيل الطعام كفحص تغطية: كل عنصر تغطية مرتبط بالجهاز يغطيه جهاز واحد على الأقل من خمسة، ويغطي الهاتف الاقتصادي D3 أربعة منها، ولا يغطي العرض المتوسط والموسّع إلا الجهاز القابل للطي D5.
عنصر التغطيةD1Android، الشركة A · الأحدث · الطبقة 1D2iPhone · أحدث iOS · الطبقة 1D3Android اقتصادي، الشركة B · Android 10 · الطبقة 1D4أصغر iPhone · iOS 17 · الطبقة 2D5Android قابل للطي · الأحدث · الطبقة 2
أكبر عدد من الجلساتمغطّىمغطّىلا يغطيه هذا الجهازلا يغطيه هذا الجهازلا يغطيه هذا الجهاز
أحدث إصدار من النظاممغطّىمغطّىلا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّى
أقدم إصدار مدعوم من النظاملا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّىAndroid 10مغطّىiOS 17لا يغطيه هذا الجهاز
أصغر عرض مستخدَملا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّى360 dpمغطّى375 ptلا يغطيه هذا الجهاز
العرض المتوسط والموسّعلا يغطيه هذا الجهازلا يغطيه هذا الجهازلا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّى
نافذة يتغيّر حجمها أثناء عمل التطبيقلا يغطيه هذا الجهازلا يغطيه هذا الجهازلا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّىطيّ وفتح
ذاكرة قليلة (⁦4 GB⁩ أو أقل)لا يغطيه هذا الجهازلا يغطيه هذا الجهازمغطّى3 GBلا يغطيه هذا الجهازلا يغطيه هذا الجهاز
الشركتان المصنّعتان A وBمغطّىالشركة Aلا يغطيه هذا الجهازمغطّىالشركة B، تجمّع انهياراتلا يغطيه هذا الجهازلا يغطيه هذا الجهاز
الإعدادات: اللغة والاتجاه وحجم الخط والمظهرتشغيلات ثنائيةتشغيلات ثنائيةتشغيلات ثنائيةتشغيلات ثنائيةتشغيلات ثنائية
  • يغطيه هذا الجهاز
  • تغطيه مجموعة الإعدادات الثنائية على كل الأجهزة

بيانات توضيحية من المثال التطبيقي. والصف الذي لا خلية مغطّاة فيه ثغرة في التغطية: أضف جهازاً، أو اقبل الخطر كتابةً.

Device matrix: food delivery app (illustrative data, last 90 days)

ID  Device                         OS                   Runs on      Tier
D1  Android mid-range, maker A     newest Android       real device  1
D2  iPhone, standard size          newest iOS           real device  1
D3  Android budget, maker B, 3 GB  Android 10 (oldest)  real device  1
D4  iPhone, smallest (375 pt)      iOS 17 (oldest)      device farm  2
D5  Android foldable               newest Android       device farm  2

Tier 1: critical journeys + regression set, every release
Tier 2: smoke set of critical journeys, every release
Tier 3: other models above 1% of sessions, before major releases
Settings: language × orientation × font size × theme, pairwise across D1..D5

جرّبها: مولّد الاختبار الزوجي (Pairwise)

أخطاء شائعة

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

من منظور ضمان الجودة

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

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

تمرين عملي

اختر مصفوفة الأجهزة لتطبيق حجز مواعيد عيادة

المطلوب

تطبيق لحجز مواعيد العيادات يدعم Android 11 (API 30) وما بعده وiOS 17 وما بعده، ويمكن تثبيته على الأجهزة اللوحية في Android. بيانات توضيحية: ⁦60%⁩ من الجلسات على Android، معظمها من شركتين مصنّعتين؛ وربع جلسات Android على أجهزة ذاكرتها ⁦4⁩ غيغابايت أو أقل، ومعظمها على Android 11 و12؛ و⁦5%⁩ من جلسات Android على أجهزة لوحية؛ و⁦65%⁩ من الجلسات بالعربية. ويشكو المستخدمون من أن نموذج الحجز يفقد «أحياناً» الموعد المختار.

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

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

عناصر التغطية: أحدث Android وأحدث iOS؛ وAndroid 11 وiOS 17؛ وأصغر عرض هاتف مستخدَم في كل منصة؛ والعرض المتوسط والموسّع (جهاز Android لوحي في الوضعين العمودي والأفقي)؛ وذاكرة ⁦4⁩ غيغابايت أو أقل؛ والشركتان المصنّعتان الرائدتان؛ وأكبر حجم خط في كل منصة؛ والعربية والإنجليزية.

الطبقة 1، أجهزة حقيقية: R1 أكثر طرازات الشركة A استخداماً على أحدث Android، بالعربية؛ وR2 جهاز iPhone على أحدث iOS، بالعربية؛ وR3 هاتف من الشركة B بذاكرة ⁦4⁩ غيغابايت على Android 11 بأصغر عرض Android في البيانات وأكبر خط، بالإنجليزية؛ وR4 أصغر iPhone في البيانات على iOS 17 بأكبر حجم Dynamic Type. الطبقة 2، مزرعة الأجهزة: جهاز Android لوحي في الاتجاهين. كل العناصر مغطّاة؛ والجهاز اللوحي في المزرعة فقط، وهو خطر مقبول عند ⁦5%⁩ من جلسات Android تسجّله المصفوفة.

أول الفحوص: على R3 اختر موعداً، ودوّر الجهاز مرتين، ثم غادر التطبيق وعد إليه، ومرة أخرى مع تفعيل Don’t keep activities؛ يجب أن يبقى الموعد مختاراً، لأن شاشة أُعيد إنشاؤها أو عملية أُنهيت دون استعادة الحالة هي السبب المرجّح لكلمة «أحياناً». وعلى R1 وR2 يبقى زر «احجز» في المتناول في الوضع الأفقي مع لوحة مفاتيح مفتوحة. وعلى R3 وR4 لا يقص أكبر خط أي موعد ويمكن تمرير النموذج. وعلى الجهاز اللوحي يعمل التخطيط المتوسط في الوضع العمودي والموسّع في الوضع الأفقي، ويبقى الموعد بعد التدوير.

أسئلة شائعة

كم جهازاً تحتاج مصفوفة الأجهزة؟

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

هل تغني المحاكيات عن الأجهزة الحقيقية في اختبار التجزؤ؟

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

هل أختبر الوضع الأفقي إذا كان التطبيق عمودياً فقط؟

نعم. تحقق من أن القفل نافذ على الهواتف، وأن شيئاً لا ينكسر حيث لا ينطبق: فتقسيم الشاشة والأجهزة القابلة للطي تغيّر النافذة على أي حال، والتطبيقات التي تستهدف Android 16 لا تبقى عمودية على الشاشات الكبيرة. واسأل أيضاً هل الوضع العمودي وحده ضروري، لأن معيار WCAG 2.2 رقم ⁦1.3.4⁩ يتوقع في غير ذلك أن يعمل المحتوى في الاتجاهين.

كم مرة يجب أن تتغير المصفوفة؟

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

المراجع

  • Certified Tester Mobile Application Testing (CT-MAT)ISTQB · 2019منهج ISTQB التخصصي لاختبار تطبيقات الجوال: أنواع التطبيقات وتحديات الأجهزة والمنصات وأنواع الاختبار والأدوات.
  • Core app quality guidelinesAndroid Developers (Google)معايير Google الأساسية لجودة تطبيقات Android — التجربة المرئية والوظائف والأداء والخصوصية والأمان — مع الاختبارات المستخدمة للتحقق منها.
  • Web Content Accessibility Guidelines (WCAG) 2.2W3C · 2024توصية W3C التي تحدد معايير النجاح القابلة للاختبار لإتاحة محتوى الويب، مرتّبةً تحت أربعة مبادئ وثلاثة مستويات مطابقة (A وAA وAAA).
  • ISTQB Certified Tester Foundation Level (CTFL) v4.0ISTQB · 2023المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.

تدرّب بأدوات متقن

ولّد القيم الحدّية (min-1 وmin وmin+1 والقيمة الاسمية وmax-1 وmax وmax+1) للقيود الرقمية وقيود الطول.

تصميم الاختبارات

تحليل سلاسل User-Agent إلى المتصفح والإصدار والمحرك ونظام التشغيل ونوع الجهاز مع كشف الروبوتات.

الويب

ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.

تصميم الاختبارات

للتعمّق أكثر

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة