طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 245 · ضمان جودة تطبيقات الويب
الدرس 25 · الوحدة 12: الاختبارات الشاملة وتقييمها

أخلاقيات الاختبار والجودة الشاملة

الجودة مسؤولية الجميع وأمانةٌ في التقرير؛ كيف نبنيها ثقافةً؟ ⏱ نحو 40 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تلتزم أخلاقيات الاختبار: الصدق وعدم الإخفاء.
  • تحترم الخصوصية وحدود الإذن.
  • تفهم إدارة الجودة الشاملة TQM.
  • تحسّن العملية بالقياس وتحليل السبب الجذريّ.

١الجودة مسؤولية لا شهادة

ضمان الجودة في جوهره أمانة: أن تقول الحقيقة عن حالة المنتج، حتى حين تكون غير مريحة. المُختبِر الذي يخفي عيبًا لإرضاء موعدٍ، أو يبالغ في عيبٍ لإثبات نفسه، يخون دوره. هذه مبادئ أخلاقية تحكم المهنة:

المبدأالمعنى
الصدق في التقريرأبلِغ ما وجدتَ كما هو، لا ما يُرضي
عدم إخفاء العيوبالعيب المكتوم يصل للمستخدم ويضرّه
احترام الخصوصيةلا تختبر ببيانات مستخدمين حقيقية (الدرس 23)
حدود الإذنلا تختبر أمان نظامٍ لا تملكه دون إذن مكتوب

٢إدارة الجودة الشاملة TQM

الجودة ليست مرحلةً في النهاية بل ثقافةً تشمل الجميع. إدارة الجودة الشاملة TQM تقوم على:

الركيزةفي فريق البرمجة
مسؤولية الجميعالمطوّر يختبر كوده، لا «قسم الاختبار» وحده
التحسين المستمرّنتعلّم من كل عيبٍ ونمنع تكراره
التركيز على المستخدمالجودة ما يراه المستخدم قيمةً لا ما نظنّه نحن
القرار بالبياناتنقيس (تغطية، عيوب، أداء) لا نخمّن

تذكّر كلفة العيب من الدرس الأول: الجودة المبنيّة في العملية كلها أرخص من الجودة المُفتَّش عنها في النهاية. TQM ينقل الجودة من «بوّابةٍ أخيرة» إلى «عادةٍ يوميّة».

٣التحسين المستمرّ: من العيب إلى درس

كل عيبٍ فرصةُ تعلّم. تحليل السبب الجذريّ يسأل «لماذا؟» حتى يصل إلى المصدر، فنمنع فئةً كاملة لا عيبًا واحدًا:

main.py
# سجلّ عيوب: نصنّفها لنعرف أين نحسّن العمليةbugs = [    {"area": "التحقّق", "severity": "عالية"},    {"area": "التحقّق", "severity": "متوسطة"},    {"area": "الواجهة", "severity": "منخفضة"},    {"area": "التحقّق", "severity": "عالية"},    {"area": "الأمان",  "severity": "حرجة"},]# أين تتركّز العيوب؟from collections import Counterby_area = Counter(b["area"] for b in bugs)print("العيوب حسب المجال:", dict(by_area))worst = by_area.most_common(1)[0][0]print("المجال الأحوج للتحسين:", worst)print("الدرس: عزّز اختبارات", worst, "ومراجعته في العملية")
Shell×
>>> %Run main.py
العيوب حسب المجال: {'التحقّق': 3, 'الواجهة': 1, 'الأمان': 1}
المجال الأحوج للتحسين: التحقّق
الدرس: عزّز اختبارات التحقّق ومراجعته في العملية
>>>

البيانات قادت القرار: «التحقّق» مصدر أكثر العيوب، فنستثمر فيه (اختبارات أكثر، مراجعة أدقّ). هذا التحسين المستمرّ القائم على القياس هو روح TQM.

توقّع وتحقّق

جوهر دور المُختبِر الأخلاقيّ:

في TQM الجودة مسؤولية:

تحليل السبب الجذريّ يمنع:

قرار الجودة في TQM يُبنى على:

الخلاصة

تحدٍّ برمجي: اعرف أين تحسّن

متقدم

من سجلّ العيوب، احسب أكثر مجالٍ تكرارًا للعيوب، واطبع اسمه وعدد عيوبه.

المطلوب:
  • عُدّ العيوب حسب area.
  • اطبع اسم المجال الأكثر عيوبًا ثم عدد عيوبه.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
from collections import Counterbugs = [{"area":"التحقّق"},{"area":"الأمان"},{"area":"التحقّق"},{"area":"التحقّق"},{"area":"الواجهة"}]# اطبع المجال الأكثر عيوبًا ثم عدد عيوبه
المطلوب×
التحقّق
3
💡 تلميح 1
Counter(b["area"] for b in bugs).
💡 تلميح 2
c.most_common(1)[0] يعطي (المجال، العدد).

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
from collections import Counterbugs = [{"area":"التحقّق"},{"area":"الأمان"},{"area":"التحقّق"},{"area":"التحقّق"},{"area":"الواجهة"}]c = Counter(b["area"] for b in bugs)area, count = c.most_common(1)[0]print(area)print(count)
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس