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

لماذا ضمان الجودة؟ كلفة العيب

لماذا نكتب اختبارات أصلًا، وكم يكلّفنا العيب الذي يتسلّل إلى المستخدم؟ ⏱ نحو 30 دقيقة.

بعد هذا الدرس ستستطيع أن:
  • تدرك أن كلفة العيب تكبر بتأخّر اكتشافه.
  • تفرّق بين QA و QC والاختبار.
  • تفهم الاختبار كمقارنة بين الفعلي والمتوقَّع.
  • تكتب اختبارًا بسيطًا يكشف عيبًا.

١العيب الذي يَكبر

زرٌّ لا يعمل، سعرٌ يُحسب خطأً، نموذجٌ يقبل بريدًا بلا @. عيبٌ صغير في الكود قد يُكلّف المتجر عملاءه وسمعته. ضمان الجودة QA هو العمل المنظّم لاكتشاف هذه العيوب قبل أن يراها المستخدم.

القاعدة الأشهر في المجال: كلفة إصلاح العيب تتضاعف كلما تأخّر اكتشافه. خطأٌ يُكتشَف وأنت تكتب الكود يُصلَح في دقائق؛ الخطأ نفسه بعد الإطلاق قد يُكلّف أضعافًا.

متى اكتُشف العيبالكلفة النسبية التقريبية
أثناء الكتابة×1
أثناء الاختبار×10
بعد الإطلاق للمستخدم×100

لذلك لا نترك الاختبار للنهاية؛ نختبر مبكرًا وباستمرار. والاختبار الآليّ يجعل ذلك ممكنًا: يُعاد تشغيله في ثوانٍ كلما غيّرنا الكود.

٢ثلاثة مصطلحات لا تُخلَط

المصطلحالمعنىالسؤال
ضمان الجودة QAمنع العيوب بتحسين العملية كلهاهل نبني بطريقةٍ صحيحة؟
مراقبة الجودة QCكشف العيوب في المنتجهل المنتج صحيح؟
الاختبار Testingتنفيذ البرنامج للعثور على العيوبهل يعمل كما يُتوقَّع؟

الاختبار جزءٌ من مراقبة الجودة، ومراقبة الجودة جزءٌ من ضمان الجودة. في هذا المقرر نركّز على الاختبار بوصفه أداة QA الأهمّ، ونكتبه بأيدينا.

٣أول نظرة: اختبارٌ يكشف عيبًا

انظر دالةً فيها عيب، واختبارًا بسيطًا يكشفه. الاختبار قارنَ الناتج الفعلي بالناتج المتوقَّع:

main.py
def discount(price, pct):    "يطبّق خصمًا بنسبة مئوية"    return price - pct / 100        # ✗ عيب: نسي الضرب في price # اختبار يدويّ بسيطgot = discount(200, 10)             # نتوقّع 180expected = 180print("الناتج الفعلي:", got)print("المتوقَّع:", expected)print("هل نجح الاختبار؟", got == expected)
Shell×
>>> %Run main.py
الناتج الفعلي: 199.9
المتوقَّع: 180
هل نجح الاختبار؟ False
>>>

الاختبار أظهر الخطأ فورًا: الناتج 199.9 لا 180. بلا اختبار كان العيب سيصل إلى الزبون. هذا جوهر المقرر: نكتب ما يكشف الخطأ قبل غيرنا.

توقّع وتحقّق

كلفة إصلاح العيب كلما تأخّر اكتشافه:

ضمان الجودة QA يركّز على:

الاختبار يقارن الناتج الفعلي بـ:

أرخص وقت لاكتشاف العيب:

الخلاصة

تحدٍّ برمجي: اكشف العيب

تمهيدي

الدالة total تحسب إجمالي فاتورة (سعر × كمية). فيها عيب. اطبع الناتج الفعلي لـ total(50, 3)، والمتوقَّع، وهل تطابقا.

المطلوب:
  • استدعِ total(50, 3) واطبع الناتج الفعلي.
  • اطبع المتوقَّع (150)، ثم اطبع هل تطابقا (True/False).

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

main.py
def total(price, qty):    return price + qty        # عيب: جمع بدل ضرب# اطبع الناتج الفعلي لـ total(50, 3)، ثم المتوقَّع 150، ثم هل تطابقا
المطلوب×
53
150
False
💡 تلميح 1
got = total(50, 3) ثم print(got).
💡 تلميح 2
قارن: print(got == 150).

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

main.py
def total(price, qty):    return price + qtygot = total(50, 3)print(got)print(150)print(got == 150)
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

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