Agile للمختبِرين
المنهجية الرشيقة (Agile) طريقة لبناء البرمجيات بزيادات صغيرة ومتكررة من منتج يعمل، مع إشراك من يحتاجون إليه طوال العمل. ويعرّفها بيان تطوير البرمجيات الرشيق (Manifesto for Agile Software Development) الصادر عام 2001 بقيمه الأربع ومبادئه الاثني عشر. وAgile ليست طريقة عمل واحدة بعينها: فأساليب مثل Scrum وKanban، موضوعا الدرسين التاليين، هي التي تضعها موضع التطبيق.
وأكبر تغيير يلمسه المختبِر مقارنةً بالنماذج التتابعية في الدرس السابق هو التوقيت: يجري الاختبار داخل كل دورة قصيرة، لا في مرحلة بعد التطوير. فحين يبني الفريق ميزة «احفظ عنواني»، يسأل المختبِر قبل بدء البرمجة: كم عنواناً يستطيع العميل حفظه؟
لماذا يهم
في المشروع التتابعي قد يبقى سوء فهم المتطلب مخفياً أشهراً. أما في Agile فكل جزء من العمل يُحدَّد ويُبنى ويُختبر خلال أيام، فيكلّف سوء الفهم الذي يُكتشف حينها غالباً محادثةً وإصلاحاً صغيراً لا إعادة تصميم. لكن لا توجد مرحلة اختبار تمتص التأخير: إن لم يكن الاختبار جزءاً من كل دورة، تراكم العمل غير المختبَر ووصلت المشكلات إلى المستخدمين سريعاً.
وبالنسبة إلى المختبِر، تغيّر Agile متى وكيف يعمل أكثر مما تغيّر التقنيات التي يستخدمها: المهارات نفسها، لكن في وقت أبكر، وعلى أجزاء أصغر، وفي حوار دائم مع المطورين ومالك المنتج (Product Owner).
قيم Agile ومبادئها بعين المختبِر
للبيان شقّان: أربع قيم، واثنا عشر مبدأً تقوم عليها. وعدة مبادئ منها تشكّل عملَ الاختبار: تسليم برمجيات تعمل بصورة متكررة، كل بضعة أسابيع إلى بضعة أشهر مع تفضيل المدة الأقصر؛ والترحيب بتغيّر المتطلبات حتى في مرحلة متأخرة من التطوير؛ وعمل ممثلي الأعمال والمطورين معاً يومياً؛ وأن البرمجيات العاملة هي المقياس الأساسي للتقدم؛ وأن يتأمل الفريق على فترات منتظمة كيف يصبح أكثر فاعلية ثم يعدّل سلوكه.
والقيم الأربع تفضيلات: البند الأول يُقدَّر أكثر، لكن البند الثاني تبقى له قيمة. وكل قيمة تغيّر عادات المختبِر:
- الأفراد والتفاعلات أهم من العمليات والأدوات: خمس دقائق مع المطور تحسم غالباً أكثر مما يحسمه نقاش طويل حول عيب.
- البرمجيات العاملة أهم من التوثيق الشامل: التقدم هو برمجيات تعمل وجرى اختبارها. ويظل المختبِر يوثّق بالقدر الكافي: معايير القبول، والملاحظات، وتقارير العيوب، والفحوص الآلية.
- التعاون مع العميل أهم من التفاوض على العقود: مالك المنتج متاح، فتسأله «هل هذا ما قصدته؟» بدلاً من الجدال حول مواصفة.
- الاستجابة للتغيير أهم من الالتزام بخطة: قد تتغير المتطلبات بين دورة وأخرى، فيجب أن يكون تحديث الاختبارات رخيصاً، وتُؤتمت فحوص الانحدار في معظمها.
موقع الاختبار: مبكراً ومتكرراً وبمسؤولية مشتركة
ثلاث أفكار تصف موقع المختبِر في الفريق الرشيق، ويقارن المخطط الزمني أدناه قصة واحدة بالتدفق التتابعي.
- المشاركة المبكرة: يناقش المختبِر القصة قبل بنائها، عادةً في تنقيح قائمة المهام (Backlog refinement)؛ وتسمّي فرق كثيرة هذا اللقاء بين منظور الأعمال والتطوير والاختبار «الأصدقاء الثلاثة» (Three amigos). وسؤال مثل «ماذا لو انتهت صلاحية رمز الخصم؟» يصبح مثالاً، ثم معيار قبول، ثم اختباراً.
- حلقات التغذية الراجعة القصيرة (Feedback loops): تعمل الفحوص الآلية عند كل تغيير، ويستكشف المختبِر كل نسخة بمجرد قابليتها للنشر، ويُبلَّغ عن العيوب وتُصلَح ويُعاد اختبارها داخل الدورة، وغالباً خلال ساعات.
- الفريق الكامل: يصف ISTQB نهج الفريق الكامل (Whole-team approach)، وهو ممارسة مصدرها البرمجة القصوى (Extreme Programming)، ويكون فيه الجميع مسؤولين عن الجودة، ويستطيع فيه أي عضو يملك المعرفة والمهارات اللازمة أداء أي مهمة. فيساعد المختبِر ممثلي الأعمال، كمالك المنتج، على إعداد اختبارات قبول مناسبة، ويتفق مع المطورين على استراتيجية الاختبار ونهج الأتمتة. ويذكر ISTQB أن هذا النهج قد لا يناسب الحالات التي تتطلب استقلالية عالية للاختبار، كالأنظمة الحرجة للسلامة.
Sequential: testing waits for a phase of its own
requirements -> design -> build -> test phase -> release
^ first feedback on the requirement, weeks later
Agile: one story inside a two-week iteration
Before refinement tester asks for examples; they become acceptance criteria
Day 1 planning team agrees how the story will be tested and by whom
Day 2 build developer writes code and component tests; tester prepares data
Day 3 test automated checks run on each change; tester explores the build
Day 3 fix defect reported, fixed and retested the same day
Day 4 done acceptance tests pass and join the automated regression suiteأرباع الاختبار الرشيق
أرباع الاختبار الرشيق (Agile testing quadrants)، التي عرّفها بريان ماريك (Brian Marick) ووصفتها ليزا كريسبن وجانيت غريغوري في كتابهما Agile Testing ويتناولها منهج ISTQB للمستوى التأسيسي الإصدار 4.0، ترسم أنواع الاختبار التي يحتاج إليها الفريق. فالاختبارات الموجّهة للأعمال (Business-facing) تستخدم مصطلحات يفهمها خبير الأعمال، والموجّهة للتقنية (Technology-facing) تستخدم مصطلحات الكود. والاختبارات التي تدعم الفريق توجّه التطوير، أما التي تنقد المنتج فتقيس سلوكه مقابل التوقعات.
| لغة الاختبار | وظيفة الاختبارات | |
|---|---|---|
| تدعم الفريقتوجّه التطوير أثناء حدوثه | تنقد المنتجتقيس سلوكه مقابل التوقعات | |
| موجّهة للأعمالبلغة يفهمها خبير الأعمال | Q2 · الاختبارات الوظيفية، والأمثلة، واختبارات قصص المستخدم، والنماذج الأولية لتجربة المستخدم، واختبارات API، والمحاكاةتتحقق من معايير القبول · يدوية أو آلية | Q3 · الاختبار الاستكشافي، واختبار قابلية الاستخدام، واختبار قبول المستخدمموجّهة للمستخدم · يدوية غالباً |
| موجّهة للتقنيةبلغة الكود وتصميمه | Q1 · اختبارات المكوّن (الوحدة) واختبارات تكامل المكوّناتيكتبها المطورون · آلية في CI عند كل تغيير | Q4 · اختبارات الأداء والحمل والأمان وسائر الاختبارات غير الوظيفية؛ واختبارات الدخانآلية غالباً · أدوات متخصصة |
- آلية عادةً
- يدوية أو آلية
- يدوية عادةً
الأرقام مجرد أسماء للأرباع، وليست ترتيباً للعمل.
الأرقام أسماء لا ترتيب للعمل. وعند تخطيط قصة أو إصدار، اسأل أي الأرباع يحتاج إليها التغيير ومن يغطي كل ربع؛ فالربع الفارغ نقطة عمياء.
- Q1، موجّه للتقنية ويدعم الفريق: اختبارات المكوّن (الوحدة) واختبارات تكامل المكوّنات، يكتبها المطورون وتُؤتمت في التكامل المستمر (CI).
- Q2، موجّه للأعمال ويدعم الفريق: الاختبارات الوظيفية، والأمثلة، واختبارات قصص المستخدم، والنماذج الأولية لتجربة المستخدم، واختبارات الواجهة البرمجية (API)، والمحاكاة، التي تتحقق من معايير القبول؛ يدوية أو آلية.
- Q3، موجّه للأعمال وينقد المنتج: الاختبار الاستكشافي، واختبار قابلية الاستخدام، واختبار قبول المستخدم؛ موجّهة للمستخدم ويدوية غالباً.
- Q4، موجّه للتقنية وينقد المنتج: اختبارات الأداء والحمل والأمان وسائر الاختبارات غير الوظيفية عدا قابلية الاستخدام، إضافةً إلى اختبارات الدخان (Smoke tests) في قائمة ISTQB؛ آلية غالباً وبأدوات.
مثال تطبيقي: قصة واحدة عبر دورة
القصة: «بصفتي متسوقاً، أريد تطبيق رمز خصم عند الدفع، لكي أدفع أقل». في جلسة التنقيح يسأل المختبِر: هل يقبل الطلب الواحد رمزين؟ وماذا يحدث مع رمز منتهي الصلاحية؟ وهل تميّز الرموز بين الأحرف الكبيرة والصغيرة؟ فتصبح الإجابات معايير قبول مع أمثلة، ويخطط الفريق للاختبار حسب الأرباع:
- اليوم 3: يكشف الاستكشاف أن حذف منتج بعد تطبيق الرمز يُبقي الخصم القديم. فيُصلَح العيب ويُعاد اختباره في اليوم نفسه، وينضم السيناريو إلى فحوص Q2 الآلية التي تعمل عند كل تغيير.
Story: apply a discount code at checkout
Q1 developers unit tests: 10% of 200.00 -> 20.00
15% of 99.99 -> 15.00 (the agreed rounding)
Q2 tester + devs acceptance tests from the examples, automated:
SAVE10 on a 200.00 SAR basket -> total 180.00 SAR
expired code -> rejected with the expiry message
second code on the same order -> rejected
Q3 tester 30-minute exploratory session: remove items after applying
the code, back button, two browser tabs, Arabic layout
Q4 tester + devs many wrong codes in a row -> rate-limited (own test env only)
response time of code checks under campaign loadجرّبها: مولّد معايير القبول جرّبها: قصة المستخدم ← سيناريوهات اختبار
أخطاء شائعة
- فهم «البرمجيات العاملة أهم من التوثيق الشامل» على أنه «لا توثيق». احتفظ بما سيحتاج إليه الفريق مجدداً.
- انتظار اكتمال القصة تماماً قبل اختبارها، ما يحوّل كل دورة إلى شلال صغير.
- أخذ مفهوم «الفريق الكامل» إلى أحد طرفيه: افتراض أن المختبِرين لم يعودوا ضروريين، أو أن المختبِر وحده المسؤول عن الجودة.
- معاملة الأرباع كتسلسل (Q1 ثم Q2…) أو كحصة يجب أن تملأها كل قصة مهما كانت المخاطر.
- إعادة تشغيل حزمة الانحدار كاملة يدوياً في كل دورة بدلاً من أتمتة الفحوص المستقرة.
من منظور ضمان الجودة
يأتي كثير من تأثير المختبِر في الفريق الرشيق قبل التنفيذ: في التنقيح والتخطيط اطلب أمثلة وحالات حدّية ومستوى المخاطر لكل قصة، وقل ذلك صراحةً حين لا يمكن اختبار قصة بصيغتها الحالية. وأثناء الدورة اختبر أول نسخة قابلة للنشر بدلاً من القصة المكتملة، وشارك ما تجده في الحوار اليومي.
سجّل ما سيحتاج إليه الفريق مجدداً: الأمثلة، وملاحظات جلسات الاستكشاف، والفحوص الآلية الجديدة، والمخاطر المفتوحة. والعيوب التي تُصلَح في اليوم نفسه تُعالَج غالباً بالحوار، أما ما يؤجَّل أو يُكتشف لاحقاً فمكانه متتبّع العيوب. وفي المراجعة الاستعادية (Retrospective) اطرح مشكلات العملية، مثل وصول القصص إلى الاختبار في اليوم الأخير.
تمرين عملي
خطّط لاختبار قصة إعادة الطلب
أنت المختبِر في جلسة تنقيح هذه القصة، قبل وجود أي كود: «بصفتي عميلاً مسجّلاً، أريد إعادة طلب سابق بلمسة واحدة، لكي أشتري مشترياتي المعتادة بسرعة». معايير القبول المبدئية: لكل طلب مُسلَّم في السجل زر «أعد الطلب» يضيف كل منتجاته إلى السلة بأسعار اليوم.
- اكتب أربعة أسئلة لا تجيب عنها المعايير المبدئية.
- اكتب فكرة اختبار أو أكثر لكل ربع، ومن سينفّذ كلاً منها.
- حدّد الأفكار التي ستؤتمتها وتلك التي تبقى يدوية.
- اذكر اتفاقاً واحداً في التخطيط يمنع تكدّس الاختبار في اليوم الأخير.
إظهار الإجابة النموذجية
الأسئلة: ماذا يحدث لمنتج نفد من المخزون أو توقف بيعه؟ هل تُضاف المنتجات إلى سلة فيها منتجات أخرى أم تُستبدل السلة؟ هل تنطبق حدود الكمية على المنتجات المروَّج لها؟ هل يمكن إعادة الطلبات الملغاة أو المرتجعة؟
Q1 (المطورون): اختبارات وحدة لنسخ بنود الطلب إلى السلة. Q2 (المختبِر مع المطورين): اختبارات قبول من الأمثلة، مثل 3 منتجات مطلوبة تعطي المنتجات الثلاثة نفسها بأسعار اليوم، أو منتج متوقف يعطي منتجين ورسالة تسمّيه.
Q3 (المختبِر): استكشاف طلب قديم جداً، واستخدام جهازين في الوقت نفسه، ورسالة نفاد المخزون بالعربية والإنجليزية. Q4 (المختبِر والمطورون): زمن الاستجابة لطلب كبير، وفحص في بيئة الاختبار الخاصة بالفريق أن تغيير رقم الطلب لا يتيح إعادة طلب عميل آخر.
أتمت Q1 وQ2 وفحص رقم الطلب، لأنها يجب أن تعمل عند كل تغيير؛ وأبقِ Q3 يدوياً؛ وشغّل فحص زمن الاستجابة في Q4 بأداة قبل الإصدار. وفي التخطيط اتفق على نشر المسار الأساسي لإعادة الطلب أولاً، ليبدأ الاختبار في اليوم 2 أو 3.
أسئلة شائعة
هل Agile هي نفسها Scrum؟
لا. Agile هي القيم والمبادئ الواردة في بيان Agile. أما Scrum فإطار واحد يطبّقها، وله مسؤولياته وأحداثه ومخرجاته الخاصة؛ ومن الأساليب الأخرى التي تستخدمها الفرق الرشيقة Kanban والبرمجة القصوى (XP). ويتناول الدرسان التاليان Scrum وKanban من منظور المختبِر.
إذا كانت الجودة مسؤولية الفريق كله، فهل ما زالت الفرق الرشيقة تحتاج إلى مختبِرين؟
نهج الفريق الكامل يعني أن الجميع يتشاركون المسؤولية عن الجودة، لا أن مهارات الاختبار فقدت أهميتها. فكثير من الفرق الرشيقة تضم متخصصين في الاختبار يصممون الاختبارات ويستكشفون ويوجّهون زملاءهم وينبّهون إلى النقاط العمياء. وبعض السياقات، كالأنظمة الحرجة للسلامة، تتطلب أيضاً اختباراً أكثر استقلالية.
هل أحتاج إلى اختبارات في الأرباع الأربعة لكل قصة؟
لا. الأرباع أداة تفكير لا حصة إلزامية. فتعديل نصي صغير قد يحتاج إلى فحص واحد في Q2 ونظرة سريعة، أما مسار دفع جديد فقد يحتاج إلى الأربعة. احسم ذلك بالمخاطر، واستخدم الأرباع لتتأكد أن القرار مقصود لا سهو.
المراجع
- Manifesto for Agile Software Developmentالقيم الأربع لتطوير البرمجيات الرشيق (Agile)، مثل تقديم البرمجيات العاملة على التوثيق الشامل، والاستجابة للتغيير على اتباع الخطة.
- ISTQB Certified Tester Foundation Level (CTFL) v4.0المنهج التأسيسي لاختبار البرمجيات: مستويات الاختبار وأنواعه وتقنيات تصميم الاختبارات وإدارة الاختبار والأدوات.
- Agile Testing: A Practical Guide for Testers and Agile Teams (Lisa Crispin, Janet Gregory)أرباع الاختبار الرشيق وكيف يعمل المختبرون داخل فريق التسليم — أساس «الاختبار في الطبقة الصحيحة».
- Principles behind the Agile Manifestoالمبادئ الاثنا عشر وراء البيان، ومنها أن البرمجيات العاملة هي المقياس الأساسي للتقدم، وأن يعمل الفريق بوتيرة يمكنه الحفاظ عليها دون توقف.
تدرّب بأدوات متقن
ولّد معايير قبول بصيغة Given/When/Then وقائمة تحقق لتعريف الإنجاز (Definition of Done) من قصة مستخدم.
اشتق سيناريوهات اختبار شاملة (end-to-end) من قصة مستخدم، بما فيها التدفقات البديلة والاستثنائية.
ولّد سيناريوهات اختبار عالية المستوى تغطي الجوانب الوظيفية والسلبية والأمنية وسهولة الاستخدام والتوافق لأي ميزة.
قيّم الميزات حسب الاحتمالية والأثر، ثم ولّد خطة اختبار مبنية على المخاطر ومرتّبة حسب الأولوية.
للتعمّق أكثر
- SDLC وSTLC: دورتا التطوير والاختبارنماذج دورة الحياة وكيف يختلف الاختبار في كل منها
- دورة حياة اختبار البرمجيات (STLC)STLC في السبرنت وفي خط التكامل، والأخطاء الشائعة
- كيف تكتب خطة اختبار (Test Plan)خطة اختبار خفيفة للفرق الرشيقة
- الاختبار الاستكشافيدليل الاختبار الاستكشافي: كيف يختلف عن الاختبار المكتوب مسبقاً، وكيف تنفذه بالمواثيق والاستدلالات ومراجع الحكم والجولات والملاحظات الجيدة.
تقدّمك في هذا الموضوع
سجّل الدخول لتتابع تقدّمك
علّم الموضوعات مكتملة، وتابع من حيث توقفت، وافتح امتحانات التخصص.