ما هي تقنيات تصميم اختبارات الصندوق الأسود؟
تشتق تقنيات الصندوق الأسود حالات الاختبار من المواصفات دون قراءة الشيفرة: تقسيم التكافؤ يجمع المدخلات التي يُفترض أن تتصرف بالطريقة نفسها، وتحليل القيم الحدّية يختبر أطراف كل مجموعة (0 و1 والحد الأقصى والحد الأقصى+1)، وجداول القرار تعدّد تركيبات الشروط، واختبار انتقال الحالات يتتبع التغيرات المسموحة والممنوعة، والاختبار الزوجي يغطي كل زوج من قيم المعاملات بحالات أقل بكثير من الجداء الكامل.
اقرأ الدليل: كيف تكتب حالات الاختبار (Test Cases)
كيفية استخدام مولّد انتقالات الحالات
- اكتب انتقالاً واحداً في كل سطر؛ وتكون الحالة الأولى هي الحالة الابتدائية.
- اختر تغطية 0-switch أو 1-switch، وما إذا كنت تريد تضمين اختبارات الانتقالات غير الصالحة.
- ولّد للحصول على جدول الحالات ومخطط Mermaid وحالات الاختبار.
مزايا مولّد انتقالات الحالات
- الانتقالات بصيغة "State --event--> State" مع شروط حراسة (guards) اختيارية
- جدول الحالة × الحدث يعرض الأهداف الصالحة والتركيبات غير الصالحة
- حالات اختبار لتغطية 0-switch و1-switch
- اختبارات سلبية لكل انتقال غير صالح
- تحذيرات للحالات التي لا يمكن الوصول إليها وغياب الحالة النهائية
- نص Mermaid بصيغة stateDiagram-v2 للتوثيق
مثال على مولّد انتقالات الحالات
سير عمل الطلب
الإدخال:
New --pay--> Paid
Paid --ship--> Shipped
Shipped --deliver--> Delivered
New --cancel--> Cancelledالنتيجة:
ST-001 New —pay→ Paid positive
ST-005 New —pay→ Paid —ship→ Shipped positive (1-switch)
ST-007 Invalid: "ship" while in New negative
stateDiagram-v2
[*] --> New
New --> Paid: pay
Paid --> Shipped: ship0-switch كل سهم مرة واحدة، وتختبر 1-switch كل زوج من الأسهم المتتالية.| # | من | إلى | الحدث · اختبار 0-switch |
|---|---|---|---|
| 1 | Newالبداية | Paid | pay · ST-001 |
| 2 | Paid | Shipped | ship · ST-002 |
| 3 | Shipped | Deliveredالنهاية | deliver · ST-003 |
| 4 | Newالبداية | Cancelledالنهاية | cancel · ST-004 |
مع الإعدادات الافتراضية للأداة، يضيف 1-switch الاختبارين ST-005 New → Paid → Shipped وST-006 Paid → Shipped → Delivered؛ والتركيبات الـ16 للحالة × الحدث التي ليس لها سهم اختبارات انتقالات غير صالحة، بدءاً من ST-007.
الأسئلة الشائعة حول مولّد انتقالات الحالات
كيف أكتب الانتقالات؟
انتقال واحد في كل سطر بصيغة "State --event--> State". وتوضع شروط الحراسة بين قوسين معقوفين ("Delivered --return [within 14 days]--> Returned"). وتكون أول حالة مذكورة هي الحالة الابتدائية.
ما تغطية 0-switch و1-switch؟
تختبر تغطية 0-switch كل انتقال منفرد. وتختبر تغطية 1-switch كل زوج صالح من الانتقالات المتتالية، مما يكشف الأخطاء التي لا تظهر إلا بعد تسلسل معيّن.
ما اختبارات الانتقالات غير الصالحة؟
لكل تركيبة حالة × حدث ليس لها انتقال معرَّف، يتحقق اختبار سلبي من رفض الحدث وعدم تغيّر الحالة — وهو المصدر الأكثر شيوعاً لأخطاء سير العمل.
ماذا يمكنني أن أفعل بمخطط Mermaid؟
الصقه في GitHub أو GitLab أو Notion أو Obsidian أو mermaid.live لعرض مخطط الحالات للمراجعات والتوثيق.
المراجع
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- ISTQB Glossaryالتعريفات القياسية لمصطلحات الاختبار — حالة الاختبار واختبار الانحدار والخطورة والأولوية وتحليل القيم الحدّية وغيرها.
- ISO/IEC/IEEE 29119-1:2022 — Software and systems engineering — Software testing — Part 1: General conceptsالمعيار الدولي لاختبار البرمجيات: المفاهيم والعمليات والتوثيق والتقنيات.