QA The Other Wayضمان الجودة لعصر الاختبارات المكتوبة بالذكاء الاصطناعي. QA The Other Way.
اختبارات QA عملية

السماح بالموقع حالة اختبار واحدة فقط.

افصل إذن المتصفح والإحداثيات المضبوطة والمسار البديل قبل الادعاء بتغطية رحلة الموقع.

6 دقائق للقراءةQA The Other Way
مخطط أصلي للإذن والإحداثيات مع بديل منفصل للإدخال اليدوي.
رسم تحريري أصلي.
فيديو توضيحي لهذه المقالة. النص الإنجليزي الذي يظهر على الشاشة؛ حدد ترجمات لهذه اللغة.

طبعة مترجمة. تظل المعرفات الفنية في شكلها الأصلي.

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

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

يستخدم الدليل توثيق المحاكاة في Playwright وBrowserContext لبناء قارئ محلي مختلق. المدخلات إحداثيات مضبوطة وليست موقع شخص الحالي. لا توجد خدمة خرائط أو طلب أو حساب. نفصل الإذن والموضع واستجابة الواجهة عندما يتعذر الحصول عليه.

الإذن والموضع مدخلان مختلفان

منح إذن الموقع لا يحدد الإحداثيات. توفير الإحداثيات لا يمنح إذن قراءتها. اضبط كليهما عمدا في سياق مؤقت وحدد الإذن لأصل الصفحة المعروف.

const context = await browser.newContext({
  geolocation: { latitude: 0, longitude: 0 }
});
await context.grantPermissions(['geolocation'], {
  origin: 'http://localhost:4179'
});
const page = await context.newPage();
await page.goto('http://localhost:4179/');
await page.getByRole('button', { name: 'Read demo location' }).click();
await expect(page.getByRole('status')).toHaveText('Demo coordinates: 0, 0');
await context.close();

يتطلب المثال خادما محليا في ذلك الأصل وتجهيزات browser وexpect من Playwright. الأصفار مدخلات اختبار واضحة لا عنوان تسليم مقترح. تعرض الصفحة الأرقام المستلمة دون استنتاج مكان حقيقي أو منطقة خدمة أو دقة مادية.

يحذر التوثيق من اختلاف الأذونات المدعومة بين المتصفحات والإصدارات. تحقق من المحرك المحدد للمجموعة. نتيجة Chromium لا تصدق محركا آخر أو نظاما محمولا أو جهازا حقيقيا.

اجعل مسار عدم التوفر قابلا للملاحظة

يوثق API استخدام setGeolocation(null) لمحاكاة موضع غير متاح. طبقه في حالة مستقلة ودع معالج الخطأ يعرض الموقع غير متاح وحقل إدخال يدوي. يستخدم المثال مهلة محدودة لمنع الانتظار المفتوح.

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

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

أعد السياق لا معنى الحالة

تخص تجاوزات الأذونات سياق المتصفح. يمسحها clearPermissions() لكنه لا يثبت أن شخصا رفض الإذن. استخدم سياقات جديدة للسيناريوهات المستقلة واشرح مدخلات كل منها.

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

قد يحتفظ المنتج بآخر موضع أو يعرض إدخالا يدويا قبل طلب الإذن. اتفق على التوقعات مع الفريق. القراءة الإيجابية لا تغطي إحداثيات قديمة أو حدود الدقة أو تحديثات لاحقة.

راجع البديل كمسار حقيقي للمنتج

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

يصف AnyTest استكشاف التطبيقات وبناء اختبارات لمراجعة البشر. اسأل عن الإذن والإحداثيات والبديل. لا ندعي API أذونات في AnyTest أو تحقق أجهزة مادية. تبدأ التغطية المفيدة ببيئة صريحة وبديل يعامل بوصفه مسارا فعليا.

الأسئلة الشائعة

هل يمنح إذن الموقع موضعا حقيقيا؟

لا. الإذن والموضع المضبوط مدخلان منفصلان؛ المثال لا يحدد موقعا ماديا حقيقيا.

هل الموضع غير المتاح يعادل رفض الشخص؟

لا. اختبر الأسباب وسمها منفصلة. مسح تجاوزات الإذن لا يثبت رفضا صريحا.

مصادر