دورة حياة العيب (Defect Lifecycle)
دورة حياة العيب (Defect Lifecycle) هي تسلسل الحالات التي يمر بها العيب منذ لحظة ملاحظة المشكلة حتى يفرغ الفريق منها: الإبلاغ، ثم الفرز، ثم الإسناد، ثم الإصلاح، ثم إعادة الاختبار، ثم الإغلاق — أو الانتهاء بطريقة أخرى: كعيب مكرر، أو بلاغ مرفوض، أو قرار واعٍ بعدم الإصلاح. دورة الحياة هي ما يحوّل كومة من تقارير الأخطاء إلى عملية منضبطة: في أي لحظة تستطيع أن تقول ما المفتوح، ومن يملكه، وكم انتظر، وما الذي يقف بينه وبين الإصدار.
يعرّف هذا الدليل المحوري المصطلحات، ويرسم دورة الحياة كمخطط حالات، ويسرد كل انتقال مع مالكه وشرط الخروج منه، ويشرح النهايات التي ليست «مُصلَح»، ويتتبع عيباً افتراضياً واحداً من اكتشافه حتى إغلاقه. ويندرج تحته دليلان أضيق: كيف تكتب تقرير خطأ (محتوى التقرير والفرق بين الخطورة والأولوية)، وفرز العيوب (الاجتماع والقرارات التي تدفع العيب الجديد إلى الأمام، بما في ذلك تحليل السبب الجذري).
الخطأ والعيب والإخفاق: ضبط المصطلحات
يصف مسرد ISTQB ومنهج المستوى التأسيسي سلسلة سببية. يرتكب شخص خطأً (Error) ويسمى أيضاً (Mistake): يسيء فهم متطلب، أو ينسى حداً، أو يكتب عاملاً خاطئاً. وينتج عن الخطأ عيب (Defect) ويسمى أيضاً (Fault) أو (Bug) في أحد منتجات العمل — متطلب، أو تصميم، أو الشيفرة، أو سكربت اختبار، أو إعداد. وعندما يُنفَّذ الجزء المعيب في الظروف المناسبة قد يسبب إخفاقاً (Failure): لا يفعل النظام ما يجب عليه، ويلاحظ ذلك شخص أو نظام ما. وليس كل عيب يسبب إخفاقاً — فالعيب في شيفرة لا تُنفَّذ أبداً، أو لا تُنفَّذ إلا ببيانات لا يدخلها أحد، يبقى كامناً — ويشير المنهج أيضاً إلى أن الإخفاقات قد تنشأ كذلك عن ظروف بيئية.
وهناك كلمتان أخريان تسببان الالتباس. الشذوذ (Anomaly) هو المصطلح المحايد: انحراف ملاحَظ عن المتوقع قبل أن يقرر أحد هل هو عيب أم سوء فهم أم خطأ في الاختبار أم طلب تغيير. ويستخدم معيار IEEE 1044 لتصنيف شذوذات البرمجيات (المدرج لدى IEEE كمعيار غير نشط محفوظ) هذه الكلمة مصطلحاً جامعاً ويعرّف سمات لتصنيف الشذوذات. أما الحادثة (Incident) فكلمة محمّلة بأكثر من معنى: يسمّي المعيار ISO/IEC/IEEE 29119-3 تقرير العيب «تقرير حادثة» (Incident report)، كما ينبّه منهج ISTQB التأسيسي، بينما الحادثة في العمليات هي انقطاع أو تدهور غير مخطط في خدمة حية، قد يسببه عيب أو السعة أو الإعدادات أو طرف ثالث.
- الخطأ (Error / Mistake) — فعل بشري ينتج عنه نتيجة غير صحيحة.
- العيب (Defect / Fault / Bug) — خلل في منتج عمل؛ ويمكن اكتشافه بالمراجعة دون تشغيل أي شيء.
- الإخفاق (Failure) — انحراف ملاحَظ في سلوك النظام أثناء التشغيل عن السلوك المتوقع.
- السبب الجذري (Root cause) — السبب الأعمق لارتكاب الخطأ أو لعدم منع العيب؛ وهو هدف تحليل السبب الجذري.
- الشذوذ (Anomaly) — أي انحراف ملاحَظ عن المتوقع لم يُصنَّف بعد.
أين تُكتشف العيوب: المراجعات والاختبار والإنتاج
تدخل العيوب في كل مرحلة من دورة حياة تطوير البرمجيات (SDLC) وتُكتشف في نقاط مختلفة منها. المتطلب الذي يناقض متطلباً آخر عيب تكشفه المراجعة قبل وجود أي شيفرة. والحساب الخاطئ يكشفه اختبار وحدة أو اختبار API أو اختبار نظام خلال دورة حياة اختبار البرمجيات (STLC). والعيب الذي يفلت من كل فحص يُكتشف في الإنتاج، عادةً كإخفاق يبلّغ عنه مستخدم أو تنبّه إليه المراقبة. يصف دليل SDLC وSTLC ودليل دورة حياة اختبار البرمجيات هذه المراحل؛ أما هذه الصفحة فتصف ما يحدث للعيب بعد اكتشافه.
شكل دورة الحياة واحد في الحالات الثلاث، لكن نقطة الدخول والتكلفة تختلفان. وأياً كانت طريقة اكتشافه، يدخل العيب العملية عبر تقرير؛ وكيف تكتب تقريراً يستطيع المطور التصرف بناءً عليه، والفرق بين الخطورة والأولوية، هو موضوع دليل كتابة تقرير الخطأ. ثم يحوّل الفرز (Triage) التقرير إلى قرار، وهو ما يغطيه دليل فرز العيوب بالتفصيل. وتسجيل مكان اكتشاف كل عيب — مراجعة، أو مستوى اختبار، أو إنتاج — هو ما يتيح لاحقاً قياس عدد العيوب التي أفلتت من كل مرحلة.
- ملاحظات المراجعة — تُسجَّل في سجل المراجعة أو كتعليقات مراجعة؛ وتُغلق عندما يصحح المؤلف منتج العمل ويتحقق المراجع من التصحيح.
- عيوب مرحلة الاختبار — دورة حياة كاملة في المتتبّع، مع اختبار التأكيد واختبار الانحدار قبل الإغلاق.
- عيوب الإنتاج — تُربط بالحادثة التشغيلية، وتُفرز فوراً إذا تأثرت خدمة حية، ويُتحقق منها في الإنتاج بعد نشر الإصلاح.
حالات دورة الحياة في مخطط
تختلف مسارات العمل (Workflows) في المتتبّعات، لكن معظمها يطبّق الحالات الأساسية نفسها. يستخدم المخطط أسماء عامة، ويربطها قسم لاحق بأدوات حقيقية. تتتبّع الأسهم المتصلة المسار الرئيسي من «جديد» إلى «مغلق»؛ أما الأسهم المتقطعة فهي الفروع: تُنهي العيب دون تغيير في الشيفرة، أو تركنه لوقت لاحق، أو تعيده حين لا يصمد الإصلاح.
| # | من | إلى | الحدث أو الشرط |
|---|---|---|---|
| 1 | جديدالبداية | مفتوح / مُسنَد | الفرز: مقبول — حُددت الخطورة والأولوية والمالك والإصدار المستهدف |
| 2 | جديدالبداية | بحاجة إلى معلومات | معلومات ناقصة: يُكتب البند الناقص بدقةمسار بديل |
| 3 | بحاجة إلى معلومات | جديدالبداية | أضيفت المعلومة المطلوبة: يعود إلى الفرز لا إلى مطوّر مباشرةمسار بديل |
| 4 | جديدالبداية | محلول (دون إصلاح) | الفرز: لا حاجة إلى إصلاح — مكرر أو مرفوض أو تعذّر إعادة إنتاجه أو لن يُصلَح أو حسب التصميممسار بديل |
| 5 | مفتوح / مُسنَد | مؤجل | تأجيل: سبب مكتوب وإصدار مستهدف أو تاريخ مراجعةمسار بديل |
| 6 | مؤجل | مفتوح / مُسنَد | إعادة التخطيط: حلّ تاريخ المراجعة أو الإصدار المستهدفمسار بديل |
| 7 | مفتوح / مُسنَد | قيد العمل | يبدأ المطوّر العمل |
| 8 | قيد العمل | بحاجة إلى معلومات | لا يستطيع المطوّر إعادة إنتاجهمسار بديل |
| 9 | قيد العمل | محلول: مُصلَح | دُمج الإصلاح وذُكر البناء الذي يحتويه |
| 10 | محلول: مُصلَح | متحقَّق منه | ينجح اختبار التأكيد في البناء المذكور، وتنجح فحوص الانحدار |
| 11 | محلول: مُصلَح | مُعاد فتحه | تفشل إعادة الاختبار: ما زال الإخفاق الأصلي يحدثمسار بديل |
| 12 | مُعاد فتحه | مفتوح / مُسنَد | يعود إلى مالك الإصلاح مرفقاً بدليل إعادة الاختبارمسار بديل |
| 13 | متحقَّق منه | مغلقالنهاية | شُحن الإصلاح في الإصدار المستهدف (أو يُغلَق عند التحقق إن اتُّفق على ذلك) |
| 14 | مغلقالنهاية | مُعاد فتحه | ظهر الإخفاق نفسه مجدداً في بناء يحتوي الإصلاح (عبر الفرز)مسار بديل |
| 15 | محلول (دون إصلاح) | مغلقالنهاية | يقبل المبلِّغ أو فريق الجودة القرار؛ وإلا يعود إلى الفرزمسار بديل |
يبدأ كل عيب من «جديد»: إخفاق لوحظ، أو عيب اكتُشف في مراجعة. أسماء الحالات عامة، وتسمّيها المتتبّعات بأسماء أخرى.
- جديد (New) — مسجَّل ولم يُراجَع بعد. تسميه بعض المتتبّعات Unconfirmed أو Submitted أو Untriaged.
- بحاجة إلى معلومات (Needs info) — ينتظر معلومة محددة من المبلِّغ؛ وعدّاد العمر يستمر.
- مفتوح / مُسنَد (Open / Assigned) — مقبول كعيب صالح، وله خطورة وأولوية ومالك وإصدار مستهدف.
- قيد العمل (In Progress) — المالك يحقق فيه أو يصلحه فعلياً.
- محلول (Resolved) — يرى المالك أن العمل انتهى، إما بالإصلاح أو بقرار آخر.
- مُعاد فتحه (Reopened) — لم يصمد القرار؛ يعود العيب إلى مالكه.
- متحقَّق منه (Verified) — أكّد مختبِر الإصلاح في البناء المذكور.
- مغلق (Closed) — لا عمل إضافياً؛ ويبقى السجل للتاريخ والمقاييس.
- مؤجل (Deferred) — صالح لكنه مؤجل عن وعي إلى إصدار لاحق؛ ويظل محسوباً عيباً مفتوحاً معروفاً.
النسخة النصية
failure observed, or defect found in a review
|
v
[ New ] ----- facts missing -----> [ Needs info ]
| <------ facts supplied ------------+
|
+------- triage: no fix needed ------> [ Resolved ] duplicate | rejected (not a bug)
| | cannot reproduce | won't fix | by design
| triage: accepted |
v | reporter / QA agrees (if not: back to triage)
[ Open / Assigned ] <----- re-planned -----+ |
| | | |
| +------ postpone ----> [ Deferred ] |
| developer starts |
v |
[ In Progress ] |
+-- cannot reproduce --> back to [ Needs info ] |
| fix merged, build number stated |
v |
[ Resolved: fixed ] -- retest fails --> [ Reopened ] --> back to [ Open / Assigned ]
| |
| confirmation test passes, regression green |
v v
[ Verified ] ------- fix shipped ------------> [ Closed ]
|
same failure seen again -----+--> [ Reopened ]الانتقالات: من يحرّك العيب وما الذي يجب أن يتحقق
لا تفيد الحالة إلا إذا عرف الجميع من يحق له نقل العيب منها وما الذي يجب أن يتحقق أولاً. ضع هذه القواعد في مسار العمل في المتتبّع حيث يدعم الشروط والحقول الإلزامية، وفي اتفاق عمل الفريق حيث لا يدعمها.
- جديد ← مفتوح / مُسنَد — مجموعة الفرز (قائد الاختبار ومالك المنتج وقائد التطوير) — أعيد إنتاجه أو قُدّم عليه دليل مقنع، وليس مكرراً، وحُددت الخطورة والأولوية، ومالك مسمّى وإصدار مستهدف.
- جديد ← بحاجة إلى معلومات — الفرز أو المطوّر — يُكتب البند الناقص بدقة (رقم البناء، الحساب، معرّف الطلب)، لا مجرد «نرجو مزيداً من المعلومات».
- بحاجة إلى معلومات ← جديد — المبلِّغ، أو من طُلبت منه المعلومة — تُضاف المعلومة المطلوبة إلى البلاغ، ويعود العيب إلى الفرز لا إلى مطوّر مباشرة.
- جديد ← محلول كمكرر أو مرفوض أو تعذّر إعادة إنتاجه أو لن يُصلَح أو حسب التصميم — مجموعة الفرز — يُسجَّل السبب، وتُربط المكررات بالأصل، ويُبلَّغ المبلِّغ.
- مفتوح ← مؤجل — مالك المنتج — سبب مكتوب وإصدار مستهدف أو تاريخ مراجعة؛ ويقبل المخاطرة شخص يملك صلاحية قبولها.
- مؤجل ← مفتوح / مُسنَد — مالك المنتج — حلّ تاريخ المراجعة أو الإصدار المستهدف، فيُعاد تخطيط العيب بمالك وإصدار؛ وإن مُدّد التأجيل احتاج إلى سبب مكتوب جديد.
- مفتوح ← قيد العمل — المطوّر المُسنَد إليه — بدأ العمل؛ والمطوّر الذي لا يستطيع إعادة الإنتاج يعيده إلى «بحاجة إلى معلومات» بدلاً من تركه خاملاً.
- قيد العمل ← محلول: مُصلَح — المطوّر — دُمج الإصلاح، وذُكر البناء الذي يحتويه، وأضيف اختبار يغطي الإخفاق حيثما أمكن.
- محلول: مُصلَح ← متحقَّق منه — المختبِر، ويفضَّل أن يكون المبلِّغ — ينجح اختبار التأكيد في البناء المذكور بالخطوات والبيانات الأصلية، وتنجح فحوص الانحدار المتفق عليها حول التغيير.
- محلول: مُصلَح ← مُعاد فتحه — المختبِر — ما زال الإخفاق الأصلي يحدث في البناء المذكور، مع إرفاق الدليل. أما الإخفاق المختلف الذي يظهر أثناء إعادة الاختبار فهو عيب جديد.
- مُعاد فتحه ← مفتوح / مُسنَد — قائد الاختبار أو مجموعة الفرز — يعود العيب إلى مالك الإصلاح مرفقاً بدليل إعادة الاختبار، ومن هناك ينتقل إلى «قيد العمل» كما في المرة الأولى.
- متحقَّق منه ← مغلق — المختبِر أو مدير الإصدار — شُحن الإصلاح في الإصدار المستهدف، أو يُغلق الفريق عند التحقق إن كانت تلك القاعدة المتفق عليها.
- مغلق ← مُعاد فتحه — أي شخص، عبر الفرز — ظهر الإخفاق نفسه مجدداً في بناء يحتوي الإصلاح. أما العَرَض المختلف فيحصل على عيب جديد مرتبط.
- محلول (دون إصلاح) ← مغلق — المبلِّغ أو فريق الجودة — يقبل القرار؛ وإن لم يوافق يعود العيب إلى الفرز لا إلى جدال في التعليقات.
نهايات غير «مُصلَح»
كثير من سجلات العيوب ينتهي دون أي تغيير في الشيفرة. ويشير منهج ISTQB التأسيسي إلى أن الشذوذ المبلَّغ عنه قد لا يكون عيباً أصلاً — بل إيجابية كاذبة (False positive) أو طلب تغيير مثلاً. وكل نهاية دون إصلاح تحتاج إلى سبب يستطيع القارئ التحقق منه بعد أشهر.
- مكرر (Duplicate) — العيب نفسه مسجَّل مسبقاً. اربطه بالأصل، وانقل أي دليل أفضل، واحسم السجل الأحدث. العَرَض نفسه لا يعني دائماً السبب نفسه؛ وإن كنت غير متأكد فأبقِ الاثنين مرتبطين حتى يثبت الإصلاح ذلك.
- مرفوض / غير صالح / ليس خطأ (Rejected / Invalid / Not a bug) — السلوك مطابق للمتطلب، أو نشأ البلاغ عن خطأ في الاختبار كبيانات خاطئة أو بيئة خاطئة. اقتبس المتطلب. وإن كان المتطلب نفسه خاطئاً فذلك عيب في المتطلبات أو طلب تغيير، لا رفض.
- تعذّر إعادة الإنتاج / يعمل لديّ (Cannot reproduce / Works for me) — لا أحد يستطيع إحداث الإخفاق مجدداً بالمعلومات المتاحة. سجّل ما جُرّب (الإصدارات والأجهزة والبيانات) واحتفظ بالسجلات ومعرّفات الطلبات: العيوب المتقطعة كثيراً ما تعود، والبلاغ الأول هو الدليل.
- لن يُصلَح (Won't fix) — عيب حقيقي قرر الفريق عدم إصلاحه، عادةً لأن التكلفة تفوق الأثر أو لأن الميزة في طريقها إلى الإلغاء. وهو قرار عمل يملكه مالك المنتج ويُسجَّل مع سببه.
- مؤجل (Deferred) — عيب حقيقي مؤجل إلى إصدار لاحق. وخلافاً لـ «لن يُصلَح» يبقى مفتوحاً ومكانه قائمة المشكلات المعروفة التي تُرفق بملاحظات الإصدار.
- حسب التصميم (By design / As designed) — السلوك مقصود. وعندما يفاجئ التصميم المستخدمين، فكّر هل هذه المفاجأة بحد ذاتها عيب في قابلية الاستخدام يستحق سجلاً مستقلاً.
كيف تسمّيها المتتبّعات: Bugzilla وJira وغيرهما
تصف وثائق Bugzilla مسار عمل الأخطاء بأنه قابل للتخصيص وتعرض مساراً افتراضياً. في المسار الافتراضي تكون الحالات UNCONFIRMED وCONFIRMED وIN_PROGRESS وRESOLVED وVERIFIED، ويحمل الخطأ المحلول أحد القرارات (Resolutions) التالية: FIXED أو INVALID أو WONTFIX أو DUPLICATE أو WORKSFORME. ويصف شرح الحقول في Bugzilla حالة VERIFIED بأنها النقطة التي راجع فيها فريق الجودة الخطأ وقراره ووافق عليه، وبأنها الحالة النهائية. وهناك خياران تصميميان يستحقان النسخ: القرار حقل منفصل عن الحالة، و«تعذّر إعادة الإنتاج» نهاية رسمية لا مجرد تعليق.
أما Jira فيسلك طريق التهيئة: كل مسار عمل يحدد حالاته وانتقالاته، ويختار المسؤولون القرارات (Resolutions) المتاحة، فقد يستخدم مشروعان في الشركة نفسها أسماء ومسارات مختلفة لدورة الحياة نفسها. وتكتفي متتبّعات المشكلات الخفيفة تقريباً بحالتي مفتوح ومغلق، ويعبّر الفريق عن الباقي بالتسميات (needs-info وduplicate وwontfix) وبطلبات السحب أو الدمج المرتبطة. وأياً كانت الأداة، احتفظ بجدول من صفحة واحدة يربط أسماء متتبّعك بدورة الحياة العامة حتى تعني المقاييس الشيء نفسه عبر المشاريع.
ويقرأ الجدول أدناه هكذا: «جديد» يقابل UNCONFIRMED في Bugzilla، ويقابل في مشروع Jira المُتَّخذ مثالاً حالةَ Open مع التسمية untriaged؛ و«مفتوح / مُسنَد» يقابل CONFIRMED مع مُسنَد إليه، وTo Do مع مُسنَد إليه؛ و«قيد العمل» يقابل IN_PROGRESS وIn Progress؛ و«محلول: مُصلَح» يقابل RESOLVED بقرار FIXED، وReady for QA بقرار Fixed؛ و«محلول: غير ذلك» يقابل RESOLVED بقرار INVALID أو WONTFIX أو DUPLICATE أو WORKSFORME، وDone بقرار Duplicate أو Won't Do أو Cannot Reproduce؛ و«متحقَّق منه» يقابل VERIFIED، وهي الحالة النهائية في Bugzilla، وVerified في Jira؛ أما «مغلق» فلا حالة منفصلة له في مسار Bugzilla الافتراضي، ويقابله Closed في Jira.
Generic state Bugzilla default Example Jira project (configured)
----------------- ----------------------------- ---------------------------------
New UNCONFIRMED Open + label "untriaged"
Open / Assigned CONFIRMED + assignee To Do + assignee
In Progress IN_PROGRESS In Progress
Resolved: fixed RESOLVED / FIXED Ready for QA, resolution Fixed
Resolved: other RESOLVED / INVALID, WONTFIX, Done, resolution Duplicate,
DUPLICATE, WORKSFORME Won't Do, Cannot Reproduce
Verified VERIFIED (final status) Verified
Closed (no separate state) Closedاختبار التأكيد واختبار الانحدار وإعادة الفتح
يتبع الإصلاح اختباران مختلفان، ويسميهما منهج ISTQB كلاً على حدة. اختبار التأكيد (Confirmation testing)، ويسمى كثيراً إعادة الاختبار (Retesting)، يعيد تنفيذ الخطوات التي فشلت، في البناء الذي يحتوي الإصلاح، للتأكد من زوال العيب. واختبار الانحدار (Regression testing) يتحقق من أن التغيير لم يكسر شيئاً آخر: الميزات المجاورة، والمستدعين الآخرين للشيفرة المعدّلة، والمنصات واللغات الأخرى. يُعدّ العيب متحقَّقاً منه عندما ينجح الأول؛ ولا يكون الإصدار آمناً إلا عندما ينجح الثاني أيضاً.
ينبغي أن يبدأ اختبار التأكيد بالبيانات والبيئة الأصلية ثم يغيّر شيئاً واحداً في كل مرة — المتصفح الآخر، أو الدور الآخر، أو القيمة الحدّية المجاورة للقيمة المبلَّغ عنها — لأن الإصلاح كثيراً ما يغطي الحالة المبلَّغ عنها بالضبط ويفوّت شقيقاتها. ونطاق الانحدار يأتي من التغيير: ما الوحدات التي لمسها الفرق (Diff) وما الذي يعتمد عليها. ويشرح دليل اختبار الدخان والسلامة والانحدار كيف تحدد حجم تلك الحزم.
- أعد الاختبار في البناء المذكور في القرار، لا في «الأحدث». وإن لم يُنشر ذلك البناء فالعيب غير جاهز لإعادة الاختبار.
- أعد الفتح للإخفاق نفسه فقط. العَرَض الجديد يحصل على عيب جديد مرتبط بالأول؛ وإلا صار تاريخ الاثنين غير مقروء.
- احسب مرات إعادة الفتح. العيب الذي يُعاد فتحه مرتين يقول شيئاً عن عملية الإصلاح — لا اختبار أضيف، ولا مراجعة، ونتيجة متوقعة غير واضحة — لا عن ذلك العيب وحده.
- حوّل خطوات التأكيد إلى اختبار مؤتمت في أدنى مستوى يستطيع التعبير عنها، حتى لا يعود العيب بصمت.
مثال تطبيقي: عيب واحد من الاكتشاف حتى الإغلاق
ما يلي عيب افتراضي في تطبيق بيع بالتجزئة افتراضي، ببيانات واقعية. الأسعار بالريال السعودي مع ضريبة القيمة المضافة 15%، وقاعدة المنتج في هذا المثال أن الضريبة تُحتسب على السعر بعد الخصم.
- رفع الفرز الخطورة من Major إلى Critical لأن سُلّم الفريق يضع مبالغ الدفع الخاطئة في Critical — فالخطورة تتبع السُّلّم لا تقدير المبلِّغ الأول.
- كانت إعادة الفتح مشروعة: العيب الأساسي نفسه يظهر على شاشة ثانية. ولو كان العَرَض مختلفاً لكان سجلاً جديداً مرتبطاً.
- استخدم التحقق البناء المذكور، ونوّع نوع القسيمة والمنصة بدلاً من تكرار الخطوات الأصلية فقط.
- يحمل السجل ما ستحتاجه المقاييس لاحقاً: متى وأين اكتُشف، والعمر، وعدد مرات إعادة الفتح، وأصل السبب الجذري.
DEF-2417 Android checkout charges 190.00 SAR instead of 184.00 with a fixed-amount coupon
Found in: system testing, release 5.3.0 Reporter: layla.h@example.com
Environment: Android app 5.3.0 (build 530-rc2), Android 14 emulator, staging, API v2
2026-09-14 09:40 NEW Cart 200.00 SAR, coupon SAVE40 (-40.00). Expected (200 - 40) x 1.15 = 184.00.
Actual: charged 190.00 (VAT 30.00 computed on 200.00, then -40.00).
Web checkout, same account: correct. Request and response attached.
Reported severity: Major.
2026-09-14 14:00 OPEN Triage: reproduced 3/3 by a second tester; no duplicate ("VAT", "coupon").
Severity raised to Critical (customer charged a wrong amount).
Priority Highest (release 5.3.0 due 2026-09-21).
Owner: omar.k (payments API). Target: 5.3.0.
2026-09-15 10:15 IN PROGRESS API v2 POST /orders/price applies the coupon after VAT; v1 was changed
in 5.1 when the rule changed, v2 was not.
2026-09-15 17:30 RESOLVED Fixed in build 530-rc3. API tests added for fixed and % coupons.
2026-09-16 11:05 REOPENED Retest on rc3: amount charged is 184.00, but the order summary before
payment still shows 190.00 (GET /orders/summary, v2). Same defect.
2026-09-16 11:20 OPEN Back to omar.k with the retest evidence. Target unchanged: 5.3.0.
2026-09-16 13:40 IN PROGRESS GET /orders/summary (v2) still calls the old pricing function.
2026-09-16 18:20 RESOLVED Fixed in build 530-rc4: summary uses the corrected pricing function.
2026-09-17 12:40 VERIFIED Confirmation on rc4: 184.00 on both screens; also 20% coupon, web and
Android. Regression: checkout and pricing pack 38/38 passed.
2026-09-21 16:00 CLOSED Shipped in 5.3.0.
Age at verification: 3 d 3 h Reopen count: 1 Found in: system test
Root cause origin: requirements (rule change scoped to web only); contributing: code, testجرّبها: فاحص طلبات HTTP جرّبها: محلّل استجابات API جرّبها: مولّد وصف الأخطاء بالذكاء الاصطناعي
تقادم العيوب ومقاييسها وتقارير الملخص
عمر العيب (Defect age) هو المدة التي ظل فيها مفتوحاً: من الإنشاء حتى الآن للعيوب المفتوحة، أو حتى الحل أو الإغلاق للعيوب المنتهية — اختر تعريفاً واحداً والتزم به. والزمن في كل حالة أنفع من العمر الكلي، لأنه يُظهر أين تنتظر العيوب: الأيام في «جديد» تعني أن الفرز لا يحدث؛ والأيام في «محلول» تعني أن طابور إعادة الاختبار هو عنق الزجاجة؛ والأيام في «بحاجة إلى معلومات» تعني أن التقارير تنقصها الحقائق.
عدد قليل من مقاييس العيوب يدعم قرارات حقيقية: العيوب المفتوحة حسب الخطورة والعمر (جاهزية الإصدار)، والوارد مقابل المغلق عبر الزمن (هل يتقارب المتراكم؟)، ومعدل إعادة الفتح (جودة الإصلاح)، ومعدل المرفوض والمكرر (جودة التقارير والبحث في المتتبّع)، ونسبة العيوب المكتشفة في كل مرحلة مقارنة بالإنتاج — وهي الفكرة وراء نسبة اكتشاف العيوب (Defect detection percentage) في مسرد ISTQB. ويغطي دليل مقاييس الاختبار التعريفات والصيغ وكيف يُتلاعب بالمقاييس.
تقرير ملخص العيوب يعرض ذلك لمن لا يعيشون داخل المتتبّع، وعادةً كجزء من تقرير تقدم الاختبار أو تقرير إتمام الاختبار. ويقدّم الأعداد والاتجاهات، ويسمّي العيوب المفتوحة المحددة التي تؤثر في قرار الإصدار، لكل منها خطورتها وأولويتها ومالكها وخطتها.
- حدّد عتبات عمر لكل مستوى خطورة — مثلاً عيب Critical لم يُفرز بعد يوم عمل واحد، أو عيب Major في «محلول» لأكثر من ثلاثة أيام — وراجع التجاوزات كل أسبوع.
- أبلغ عن العيوب المؤجلة صراحة؛ فالعيب المؤجل مخاطرة معروفة في الإصدار، لا عيب مغلق.
Defect summary - release 5.3.0 - week ending 2026-09-18
Open by severity: Blocker 0 | Critical 1 | Major 6 | Minor 14 | Trivial 9 (total 30)
Arrivals / closures: 23 / 31 this week (backlog down 8)
Age of open defects: under 7 d: 18 | 7-30 d: 9 | over 30 d: 3 (all Minor, deferred to 5.4)
Reopen rate: 3 of 58 fixes in the last 4 weeks (5%)
Found in: reviews 11 | system test 37 | UAT 6 | production 2
Release-relevant: DEF-2451 Critical / Highest / omar.k - fix in rc5, retest 2026-09-19
Deferred, risk accepted by product owner on 2026-09-17: DEF-2290, DEF-2304إدارة دورة الحياة جيداً: قائمة تحقق
تناسب مساعدة الذكاء الاصطناعي الخطوات كثيفة النص في دورة الحياة: تحويل الملاحظات الأولية إلى تقرير منظّم، واقتراح عنوان قابل للبحث، واقتراح الخطورة والأولوية مع التبرير، وشرح تتبّع المكدس. تعامل مع المخرجات كمسودة — المختبِر يؤكد الخطوات والأدلة، والفرز يملك الخطورة والأولوية النهائيتين.
- متتبّع واحد ومسار عمل موثَّق واحد لكل منتج، مع جدول يربطه بالحالات العامة.
- لكل حالة مالك وشرط خروج؛ والحقول الإلزامية تفرض أهمها.
- إيقاع فرز ثابت، وطابور غير المفروز يبقى قريباً من الصفر.
- سبب إلزامي لكل قرار دون إصلاح، مع ربط المكررات.
- كل إصلاح يذكر بناءه؛ وكل إعادة اختبار تتم في ذلك البناء؛ ونطاق الانحدار يأتي من الفرق.
- سجّل مكان اكتشاف كل عيب وأصل سببه الجذري، حتى يمكن قياس الإفلات.
- راجع التقادم ومعدل إعادة الفتح وقائمة المؤجلات كل أسبوع أثناء الإصدار.
جرّبها: مولّد عناوين الأخطاء بالذكاء الاصطناعي جرّبها: مولّد وصف الأخطاء بالذكاء الاصطناعي جرّبها: اقتراح خطورة الخطأ بالذكاء الاصطناعي جرّبها: اقتراح أولوية الخطأ بالذكاء الاصطناعي جرّبها: محلّل رسائل الأخطاء بالذكاء الاصطناعي
الأسئلة الشائعة
ما مراحل دورة حياة العيب؟
دورة الحياة النموذجية هي: جديد، ثم مفتوح أو مُسنَد، ثم قيد العمل، ثم محلول، ثم متحقَّق منه، ثم مغلق، مع حالات جانبية هي بحاجة إلى معلومات ومؤجل ومُعاد فتحه، وقرارات دون إصلاح مثل مكرر ومرفوض وتعذّر إعادة الإنتاج ولن يُصلَح وحسب التصميم. تسميها الأدوات بأسماء مختلفة، لكن الحالات الأساسية واحدة.
ما الفرق بين الخطأ والعيب والإخفاق؟
الخطأ هو الزلة البشرية، والعيب هو الخلل الناتج في منتج عمل كالشيفرة أو المتطلب، والإخفاق هو السلوك الخاطئ الملاحَظ عند تنفيذ الجزء المعيب. وقد يوجد العيب دون أن يسبب إخفاقاً أبداً.
ما الفرق بين إعادة الاختبار واختبار الانحدار؟
إعادة الاختبار، أو اختبار التأكيد، تعيد تنفيذ الخطوات الفاشلة للتأكد من إصلاح العيب المحدد. واختبار الانحدار يتحقق من أن التغيير لم يكسر شيئاً آخر. والإصلاح يحتاج إلى الاثنين قبل الإصدار.
متى أعيد فتح العيب بدلاً من تسجيل عيب جديد؟
أعد الفتح عندما يستمر الإخفاق نفسه أو يعود في بناء يحتوي الإصلاح. وإن كشفت إعادة الاختبار عَرَضاً مختلفاً فسجّل عيباً جديداً واربطه بالأصلي.
ما الفرق بين «مؤجل» و«لن يُصلَح»؟
العيب المؤجل صالح وسيُصلَح في إصدار لاحق، فيبقى مفتوحاً ويظهر في قائمة المشكلات المعروفة. أما «لن يُصلَح» فيعني أن الفريق قرر عدم إصلاحه إطلاقاً، ويُحسم السجل بهذا السبب.
كيف يُقاس تقادم العيوب؟
قِس الزمن من الإنشاء حتى الآن للعيوب المفتوحة، أو حتى الحل للعيوب المنتهية، وقسّمه حسب الحالة. الزمن في «جديد» و«بحاجة إلى معلومات» و«محلول» يبيّن هل عنق الزجاجة هو الفرز أم الإبلاغ أم إعادة الاختبار.
من يُغلق العيب؟
عادةً المختبِر الذي تحقق من الإصلاح، أو مدير الإصدار بعد شحن الإصلاح. وفي القرارات دون إصلاح يُغلقه المبلِّغ أو فريق الجودة بعد قبول السبب؛ والخلافات تعود إلى الفرز.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- IEEE 1044-2009 — IEEE Standard Classification for Software Anomaliesمفردات وسمات قياسية لتصنيف شذوذات البرمجيات — العيوب والإخفاقات وأثرها (مدرج لدى IEEE كمعيار غير نشط محفوظ).
- Editing a Bug (section "Life Cycle of a Bug") — Bugzilla Documentationسير العمل الافتراضي للأخطاء في متتبّع واسع الاستخدام — الحالات والقرارات (مُصلَح، غير صالح، لن يُصلَح، مكرر، يعمل لديّ) والانتقالات — كمثال عملي لدورة الحياة.
- ISO/IEC/IEEE 29119-3:2021 — Software and systems engineering — Software testing — Part 3: Test documentationنماذج ومحتوى وثائق الاختبار — سياسة الاختبار واستراتيجيته وخطته وتقارير الحالة والإنجاز وتقارير الحوادث.
- Certified Tester Advanced Level Test Management (CTAL-TM) v3.0منهج ISTQB المتقدم لإدارة الاختبار: التخطيط والتقدير، والاختبار المبني على المخاطر، والمتابعة، والمقاييس والتقارير.
تمرين عملي
دقّق خمسة سجلات عيوب وفق قواعد دورة الحياة
تختبر ميزة «تجديد رخصة المحل» في بوابة خدمات إلكترونية لبلدية خيالية. يُشحن الإصدار 2.8 يوم 29 سبتمبر 2026، واجتماع قرار الإصدار (Go/no-go) غداً. نحن صباح 27 سبتمبر، وتشك قائدة الاختبار في أن بعض العيوب نُقلت في المتتبّع بطرق تخالف دورة الحياة المتفق عليها في الفريق، فتطلب منك تدقيق خمسة سجلات قبل الاجتماع. التصدير أدناه بالإنجليزية كما يخرج من المتتبّع، ويستخدم أسماء الحالات العامة نفسها التي في مخطط الدليل؛ ويعطي كل سطر الوقت، والحالة التي دخلها العيب، ومن نقله إليها.
افحص كل انتقال وفق قواعد الانتقالات في الدليل: هل يحق لهذا الشخص أن يجريه، وهل كان شرط الخروج متحققاً في تلك اللحظة؟ بعض الانتقالات صحيح، فلا تُشِر إلا إلى ما يخالف قاعدة، واكتب ما كان يجب أن يحدث بدلاً منه. ثم احسب زمن سجل واحد حالةً حالة، وصحّح مسودة ملاحظات الإصدار في آخر التصدير. تكفي الورقة والقلم؛ وتختصر حاسبة فرق التواريخ الوقت في الخطوة 4، ويستطيع مولّد انتقالات الحالة أن يحفظ دورة الحياة جدولاً للانتقالات الصالحة تقارن به كل انتقال.
Municipal e-services portal (fictional) - Shop licence renewal - release 2.8
Tracker export 2026-09-27 09:00. Go/no-go meeting 2026-09-28, release ships 2026-09-29.
Triage group (test lead rania.q, product owner nadia.f, dev lead): Sun-Thu at 15:30.
Team rule: a Verified defect is closed when its fix ships.
Found in system testing by sara.m unless stated otherwise.
LIC-401 Late-renewal fee shows 0.00 SAR the day after the licence expired
2026-09-14 10:05 NEW sara.m: licence expired 2026-09-13, renewal on 2026-09-14.
Rule LR-7: late fee 100.00 SAR from the first day after
expiry. Shown: 0.00. Steps and request id attached.
2026-09-14 15:30 OPEN Triage: reproduced, no duplicate. Major / High.
Owner khalid.r, target 2.8.
2026-09-15 09:10 IN PROGRESS khalid.r
2026-09-15 16:40 RESOLVED khalid.r: fixed in build 2.8.0-rc3 (off-by-one in the
expiry date check). Unit test added.
2026-09-16 08:50 REOPENED sara.m: retest on staging (build 2.8.0-rc2): still 0.00.
2026-09-16 09:40 RESOLVED rania.q: reopen withdrawn, staging still runs rc2.
2026-09-17 11:00 VERIFIED sara.m: rc3 on staging: 100.00 the day after expiry,
0.00 on the expiry day. Renewal and payment pack 24/24.
LIC-402 Arabic shop name missing from the renewed licence PDF
2026-09-15 11:20 NEW sara.m: empty boxes instead of the Arabic shop name;
English name correct. PDF and account attached.
2026-09-15 15:30 OPEN Triage: reproduced, no duplicate. Major / High
(official document). Owner lina.s, target 2.8.
2026-09-16 10:00 IN PROGRESS lina.s
2026-09-17 17:10 RESOLVED lina.s: fixed in build 2.8.0-rc4 (Arabic font embedded).
Automated check added for the Arabic name in the PDF.
2026-09-20 12:30 REOPENED sara.m: retest on rc4: Arabic name now correct, but the
PDF shows the new expiry date as 2026-09-13 (the old
date) instead of 2027-09-13.
LIC-403 Renewal form accepts an 8-digit mobile number
2026-09-16 09:45 NEW sara.m: mobile 05123456 accepted. Requirement RN-4:
a Saudi mobile number is 05 followed by 8 digits.
2026-09-16 15:30 OPEN Triage: reproduced, no duplicate. Minor / Medium.
Owner khalid.r, target 2.8.
2026-09-21 14:00 RESOLVED khalid.r: won't fix, the SMS gateway rejects bad
numbers anyway.
2026-09-22 10:15 CLOSED sara.m: closed, developer says won't fix.
LIC-404 Screen reader announces the Pay button only as "button"
2026-09-17 13:00 NEW sara.m: on the payment step NVDA reads "button" with
no name; the button shows only an icon.
2026-09-17 15:30 OPEN Triage: reproduced, no duplicate. Major / Medium.
Owner lina.s, target 2.8.
2026-09-22 16:00 DEFERRED lina.s: no time in this release.
2026-09-24 18:00 CLOSED Release manager: board clean-up before go/no-go.
LIC-405 Payment taken but licence not renewed ("Session expired" after paying)
Found in: UAT. Reporter: ahmed.t (licensing department)
2026-09-20 09:20 NEW ahmed.t: paid 600.00 SAR, the page showed "Session
expired" and the licence still has the old expiry date.
2026-09-20 11:00 NEEDS INFO khalid.r: need more info.
2026-09-22 10:30 IN PROGRESS ahmed.t added build 2.8.0-rc4, account TEST-SHOP-07,
payment time 2026-09-20 09:05, receipt RC-55190.
khalid.r started work.
2026-09-24 12:00 RESOLVED khalid.r: duplicate.
Draft release note for 2.8 (test lead, to send after go/no-go):
Known issues: none.
Defects reopened after retest in this release: 2 (LIC-401, LIC-402).- اكتب مسار الحالات الذي مرّ به كل سجل حتى الآن بالأسماء العامة في الدليل: جديد (New)، وبحاجة إلى معلومات (Needs info)، ومفتوح / مُسنَد (Open / Assigned)، وقيد العمل (In Progress)، ومحلول (Resolved)، ومُعاد فتحه (Reopened)، ومتحقَّق منه (Verified)، ومغلق (Closed)، ومؤجل (Deferred).
- سجّل لكل انتقال من أجراه وما الذي كان متحققاً في تلك اللحظة. ثم اكتب كل انتقال يخالف قاعدة من قواعد الانتقالات، وما كان يجب أن يحدث بدلاً منه.
- اكتب الإجراء التالي الصحيح لكل سجل اليوم، ومن يملكه.
- احسب للعيب LIC-401 الزمن الذي قضاه في كل حالة وعمره عند التحقق، بالزمن التقويمي كما في المثال التطبيقي في الدليل. وبيّن أين انتظر العيب أطول مدة، وماذا يقول ذلك للفريق.
- صحّح سطرَي مسودة ملاحظات الإصدار.
إظهار الإجابة النموذجية
تسعة انتقالات تخالف قاعدة: واحد في LIC-401، وواحد في LIC-402، واثنان في LIC-403، واثنان في LIC-404، وثلاثة في LIC-405. وكل ما عداها يتبع الدليل، وتمييز الانتقالات الصحيحة جزء من التمرين.
العيب LIC-401. المسار: جديد ← مفتوح / مُسنَد ← قيد العمل ← محلول: مُصلَح ← مُعاد فتحه ← محلول: مُصلَح ← متحقَّق منه. القاعدة المخالَفة (1): إعادة الفتح يوم 16 سبتمبر. يُعاد اختبار العيب المُصلَح في البناء المذكور في القرار، وهو rc3، أما بيئة Staging فكانت ما زالت تشغّل rc2 الذي لا يحتوي الإصلاح. لم يكن العيب جاهزاً لإعادة الاختبار: كان على المختبِرة أن تتحقق من البناء المنشور وتنتظر rc3، أو تسأل متى يُنشر. وإعادة قائدة الاختبار العيبَ إلى «محلول» ليست انتقالاً في مخطط الدليل، لكن التراجع عن إعادة فتح ما كان ينبغي أن تحدث هو التصويب المناسب، وملاحظتها تسجّل السبب؛ فاستبعد إعادة الفتح هذه من عدد مرات إعادة الفتح، لأنها لا تقول شيئاً عن جودة الإصلاح. وبقية السجل نموذجية: أعاد الفرز إنتاج الإخفاق، وبحث عن المكررات، وحدد الخطورة والأولوية والمالك والإصدار المستهدف؛ وذكر الإصلاح بناءه وأضاف اختباراً؛ واستخدم التحقق البناء المذكور، وفحص جانبي الحد (يوم انتهاء الرخصة واليوم الذي يليه)، وشغّل حزمة الانحدار. الإجراء التالي: لا شيء حتى الإصدار؛ وبحسب قاعدة الفريق تُغلقه sara.m أو مدير الإصدار عند شحن 2.8 يوم 29 سبتمبر.
العيب LIC-402. المسار: جديد ← مفتوح / مُسنَد ← قيد العمل ← محلول: مُصلَح ← مُعاد فتحه. القاعدة المخالَفة (2): إعادة الفتح. نجح اختبار التأكيد (Confirmation testing)، فاسم المحل العربي صحيح في rc4؛ أما تاريخ الانتهاء الخاطئ فإخفاق مختلف في حقل مختلف. أعد الفتح للإخفاق نفسه فقط؛ والعَرَض المختلف يحصل على عيب جديد مرتبط بالأول. الإجراءات التالية: تسجّل sara.m عيباً جديداً (وليكن LIC-406: «ملف PDF للرخصة المجدَّدة يعرض تاريخ الانتهاء القديم 2026-09-13 بدلاً من 2027-09-13») بخطواته وأدلته، مرتبطاً بـ LIC-402، ويدخل فرز اليوم. وتعيد قائدة الاختبار LIC-402 إلى «محلول: مُصلَح»، وتنقله sara.m إلى «متحقَّق منه» حين تنجح فحوص الانحدار المتفق عليها حول التغيير، مثل ملفات PDF الأخرى التي يولّدها النظام (الإيصال، ورخصة باسم إنجليزي فقط، ورخصة باسم عربي طويل). وتحقّق أيضاً هل يظهر إخفاق التاريخ في rc3: فإن لم يظهر فقد أدخله تغيير جرى بين rc3 وrc4، كإصلاح الخط، وهذا يهم الفرز وتحليل السبب الجذري.
العيب LIC-403. المسار: جديد ← مفتوح / مُسنَد ← محلول: لن يُصلَح ← مغلق. القاعدتان المخالَفتان (3) و(4). (3) «لن يُصلَح» (Won't fix) قرار عمل يملكه مالك المنتج ويُسجَّل مع سببه، وهنا اتخذه المطوّر وحده خارج الفرز. (4) ثم أغلقت المبلِّغة السجل لأن «المطوّر يقول لن يُصلَح». وإغلاق قرار دون إصلاح يعني أن المبلِّغ أو فريق الجودة يقبل سببه، لكن لم يكن هناك قرار صالح يُقبَل، وسبب المطوّر لا يصمد: فإن كانت خدمة الرسائل النصية (SMS gateway) ترفض الأرقام الخاطئة، فلن تصل إلى صاحب المحل الرسائل النصية التي ترسلها البوابة إلى ذلك الرقم. هذا وصف للأثر، لا سبب لترك الإصلاح. وحين لا يوافق المبلِّغ يعود العيب إلى الفرز لا إلى جدال في التعليقات. الإجراء التالي: تضع قائدة الاختبار LIC-403 على جدول فرز اليوم، وتقرر nadia.f إصلاحه في 2.8، أو تأجيله بسبب مكتوب وإصدار مستهدف، أو تأكيد «لن يُصلَح» مع تسجيل السبب، ويُبلَّغ المبلِّغ بالنتيجة.
العيب LIC-404. المسار: جديد ← مفتوح / مُسنَد ← مؤجل ← مغلق. القاعدتان المخالَفتان (5) و(6). التأجيل قرار مالك المنتج، بسبب مكتوب وإصدار مستهدف أو تاريخ مراجعة، ويقبل المخاطرةَ شخص يملك صلاحية قبولها؛ وعبارة المطوّرة «لا وقت في هذا الإصدار» ليست شيئاً من ذلك. وإغلاقه في تنظيف اللوحة خالف القاعدة الثانية: فالعيب المؤجل يظل عيباً مفتوحاً معروفاً ومكانه قائمة المشكلات المعروفة، و«مؤجل» يعود إلى «مفتوح / مُسنَد» لا إلى «مغلق». والإغلاق يخفي مخاطرة حقيقية، إذ لا يستطيع مستخدمو قارئات الشاشة معرفة الزر الذي يُتم الدفع، ويجعل عدد العيوب المفتوحة يبدو أفضل مما هو. الإجراء التالي: تأخذه قائدة الاختبار إلى فرز اليوم لإلغاء الإغلاق، فتُبقي nadia.f الإصدار المستهدف 2.8، أو تؤجله إلى 2.9 (أو إلى تاريخ مراجعة) بسبب مكتوب، وعندها يدخل قائمة المشكلات المعروفة للإصدار 2.8.
العيب LIC-405. المسار: جديد ← بحاجة إلى معلومات ← قيد العمل ← محلول: مكرر. القواعد المخالَفة (7) و(8) و(9). (7) عبارة «need more info» لا تسمّي شيئاً، وكان يجب أن يسرد الطلب البنود الناقصة بدقة: البناء، وحساب الاختبار، ووقت الدفع، ورقم الإيصال أو معرّف الطلب. وقد كلّف هذا الطلب الغامض قرابة يومين في «بحاجة إلى معلومات» (من الساعة 11:00 يوم 20 سبتمبر إلى الساعة 10:30 يوم 22 سبتمبر). (8) بعد إضافة المعلومات كان يجب أن يعود العيب إلى «جديد» ليُفرز، لا أن يذهب إلى مطوّر مباشرة؛ فلم يُفرز قط: لا خطورة ولا أولوية ولا إصدار مستهدف، لإخفاق يدفع فيه العميل ولا يحصل على الخدمة. وعلى سُلّم كالذي في مثال الدليل، حيث يوضع مبلغ الدفع الخاطئ في مستوى حرج (Critical)، يستحق هذا مستوى لا يقل عنه، وهو مؤثر في قرار الإصدار. (9) مجموعة الفرز هي التي تحسم المكررات، مع ربط الأصل ونقل الدليل الأفضل إليه وإبلاغ المبلِّغ، وهذا السجل لا يسمّي أي أصل. والعَرَض نفسه لا يعني دائماً السبب نفسه، فإن كان هناك شك فأبقِ السجلين مرتبطين حتى يثبت الإصلاح ذلك. الإجراء التالي: تعرض قائدة الاختبار LIC-405 على فرز اليوم، فتحدد مجموعة الفرز الخطورة والأولوية، وتربطه بالسجل الأصلي أو تُسنده، إن لم يوجد أصل، عيباً جديداً بمالك وإصدار مستهدف، وتضع النتيجة على جدول اجتماع قرار الإصدار.
أزمنة LIC-401 بالزمن التقويمي: «جديد» 5 ساعات و25 دقيقة (من 10:05 إلى 15:30 يوم 14 سبتمبر)؛ و«مفتوح / مُسنَد» 17 ساعة و40 دقيقة (حتى 09:10 يوم 15 سبتمبر)؛ و«قيد العمل» 7 ساعات و30 دقيقة (حتى 16:40)؛ و«محلول» 16 ساعة و10 دقائق (حتى 08:50 يوم 16 سبتمبر)؛ و«مُعاد فتحه» 50 دقيقة (حتى 09:40)؛ و«محلول» مرة أخرى 25 ساعة و20 دقيقة (حتى 11:00 يوم 17 سبتمبر). العمر عند التحقق: 3 أيام و55 دقيقة، أي 72 ساعة و55 دقيقة، ومجموع الأجزاء يساوي الإجمالي نفسه. قضى العيب 41 ساعة و30 دقيقة في «محلول»، أي أكثر من نصف عمره، مقابل 7 ساعات و30 دقيقة من عمل التطوير. وفي 17 ساعة على الأقل من أول هذا الانتظار (من الساعة 16:40 يوم 15 سبتمبر إلى الساعة 09:40 يوم 16 سبتمبر) كان الإصلاح موجوداً في rc3 بينما بيئة Staging ما زالت تشغّل rc2. يقرأ الدليل الأيام في «محلول» على أنها عنق زجاجة في طابور إعادة الاختبار؛ وجزء من السبب هنا طريقة وصول البناءات المُصلَحة إلى بيئة الاختبار، فاسأل متى نُشر rc3، واطرح تأخر النشر، لا سرعة المطوّر.
ملاحظات الإصدار. سطر «Known issues: none» خاطئ: فالعيب LIC-404 عيب معروف. فإن أجّلته nadia.f صار السطر مثلاً: «المشكلات المعروفة (Known issues): LIC-404، في خطوة الدفع تنطق قارئات الشاشة زر الدفع دون اسم؛ مؤجل إلى الإصدار 2.9، وقبل مالك المنتج المخاطرة». وإن أبقته في 2.8 وجب إصلاحه والتحقق منه قبل الإصدار. وأي عيب آخر يؤجله فرز اليوم، كالعيب LIC-403 مثلاً، يُضاف إلى القائمة بالصيغة نفسها. وسطر «Defects reopened after retest: 2» يجب أن يصبح صفراً: فقد أُعيد اختبار LIC-401 في بناء لا يحتوي الإصلاح، ووجدت إعادة اختبار LIC-402 إخفاقاً مختلفاً صار عيباً مستقلاً. واحتسابهما يجعل معدل إعادة الفتح يقيس أخطاء العملية لا جودة الإصلاح. وهذا ليس لملاحظات الإصدار بل لاجتماع قرار الإصدار: LIC-405 (دُفع المبلغ ولم تُجدَّد الرخصة) وLIC-406 الجديد مفتوحان ولم يُفرزا، وقرار الإصدار يحتاج إلى نتيجة فرز لكليهما.
لتدقيق قائمتك: كل انتقال أشرت إليه يجب أن يسقط في أحد سؤالين: هل يحق لهذا الشخص أن يجريه، وهل كان شرط الخروج متحققاً في تلك اللحظة؟ والانتقال الذي يجتاز السؤالين صحيح حتى لو لم تعجبك نتيجته؛ فقرار «لن يُصلَح» تتخذه nadia.f في الفرز مع سبب مسجَّل كان سيكون نهاية صالحة للعيب LIC-403.
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.
جزء من مسار تعلم ضمان الجودة
قبل هذا الموضوع
الموضوعات التالية
الأدوات المذكورة في هذا الدليل
حوّل الملاحظات الأولية إلى تقرير خطأ كامل: خطوات إعادة الإنتاج، والمتوقّع مقابل الفعلي، والبيئة، ودرجة الخطورة، وقائمة تحقق للمرفقات.
ولّد عناوين أخطاء واضحة وقابلة للبحث من وصف غير مرتّب باستخدام الذكاء الاصطناعي من متقن.
احصل على درجة خطورة مقترحة (Blocker / Critical / Major / Minor / Trivial) مع التبرير من الذكاء الاصطناعي من متقن.
احصل على أولوية مقترحة (P0–P3) تراعي أثر العمل والمستخدمين المتأثرين والمواعيد النهائية ودرجة الخطورة، من الذكاء الاصطناعي من متقن.
اشرح تتبّعات المكدس (stack traces) ورسائل الأخطاء، وحدّد الأسباب الجذرية المحتملة وخطوات التصحيح التالية باستخدام الذكاء الاصطناعي من متقن.
اطّلع بالضبط على ما يرسله عميلك: الطريقة والترويسات والاستعلام والجسم وعنوان IP ومعلومات TLS.
حلّل استجابة API: البنية وأنواع الحقول وقيم null والتكرارات والأحجام ومشكلات جودة البيانات المحتملة.
ولّد سيناريوهات اختبار الانحدار من وصف التغيير وقائمة الوحدات المتأثرة والمرتبطة.