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

🧪 التدريبات

كل تمرين «جرّب بنفسك» في مكان واحد: اقرأ المطلوب، ثم اكتب الحل وشغّله داخل صفحة الدرس.

الوحدة 1: مفاهيم ضمان جودة تطبيقات الويب

اكشف العيبتمهيدي · الدرس 1: لماذا ضمان الجودة؟ كلفة العيب
الدالة total تحسب إجمالي فاتورة (سعر × كمية). فيها عيب. اطبع الناتج الفعلي لـ total(50, 3)، والمتوقَّع، وهل تطابقا.
←
صندوق أسودتمهيدي · الدرس 2: أنواع الاختبار ومستوياته
اختبر دالة is_even بمنهج الصندوق الأسود على حالاتٍ معطاة، واطبع عدد الحالات الناجحة.
←

الوحدة 2: تحديد متطلبات الاختبار

أكّد الصحةتمهيدي · الدرس 3: المتوقَّع مقابل الفعلي: أول assert
اكتب ثلاثة تأكيدات لدالة square: للمدخل 3 و0 و-2، ثم اطبع رسالة نجاح.
←
غطِّ الفئاتمتوسط · الدرس 4: حالات الاختبار: الصحيح والخطأ والحدّ
دالة grade_pass تقبل درجة من 60 فأعلى. اختبرها على الحالات المعطاة (تشمل الحدّ 60) واطبع عدد الناجحة وعدد الفاشلة.
←

الوحدة 3: مراجعة التطبيقات وتحسينها

غطِّ الشرائحمتوسط · الدرس 5: التقسيم المكافئ وتحليل القيم الحدّية
دالة ship_fee: مجانًا فوق 200، و15 من 1 إلى 200، و0 للصفر أو أقل. اختبر الحالات المعطاة (تشمل الحدّ 200) واطبع عدد الناجحة.
←
اختبر الرفضمتوسط · الدرس 6: اختبار الاستثناءات والأخطاء
الدالة safe_div ترفع ZeroDivisionError عند القسمة على صفر. تحقّق أنها ترفع الخطأ، واطبع رسالة نجاح؛ وتحقّق أن safe_div(10,2)==5.
←

الوحدة 4: خطط الاختبار البرمجية

اكتب TestCaseمتوسط · الدرس 7: إطار unittest: TestCase
اكتب صنف TestCase باسم TestAbs فيه اختباران لدالة my_abs: للمدخل 5 و-5 (المتوقَّع 5)، ثم شغّله.
←
هيّئ قبل الاختبارمتوسط · الدرس 8: التهيئة والتنظيف setUp و tearDown
اكتب صنف اختبار لـ Stack يستخدم setUp لإنشاء مكدّس جديد، ثم اختبارين: الفارغ (الحجم 0) وبعد دفع عنصر (الحجم 1). شغّله.
←

الوحدة 5: التوثيق وتقارير النتائج

اختبار مَعلَممتوسط · الدرس 9: الاختبارات المَعلَمة
اكتب اختبارًا مَعلَمًا لدالة sign (تعيد "+", "-", "0") على الحالات المعطاة باستخدام subTest، ثم شغّله.
←
تحقّق من التقريرمتوسط · الدرس 10: توثيق العيوب: تقرير الخطأ الجيّد
أكمل missing_fields لتعيد قائمة الحقول المطلوبة الناقصة أو الفارغة في تقرير خطأ، ثم اطبعها لتقريرٍ ناقص.
←

الوحدة 6: تحليل وتقييم النتائج

رتّب العيوبمتوسط · الدرس 11: شدّة العيب وأولويته
أكمل priority: تعيد "P1" إن كانت الشدّة ≥ 4 أو العيب يمنع الشراء، و"P2" إن كانت الشدّة 3، و"P3" لغير ذلك. اطبع أولوية ثلاث حالات.
←
احسب التغطيةمتوسط · الدرس 12: تغطية الاختبار Coverage
للدالة ذات الشرط n % 2 == 0، احسب تغطية الفروع لمجموعة المدخلات: اطبع عدد الفروع الملموسة (من 2).
←

الوحدة 7: أدوات اختبار البرمجيات

أسلوب PyTestمتوسط · الدرس 13: PyTest وأسلوب assert
اكتب دالتي اختبار بأسلوب PyTest (دالة + assert) لدالة slugify التي تحوّل النصّ لحروفٍ صغيرة بشرطة بدل الفراغ، ثم شغّلهما بالمجمِّع المعطى.
←
طبّق AAAمتوسط · الدرس 14: الأدوات الصناعية: JUnit و PHPUnit و NUnit
اكتب اختبار unittest لدالة join_name متّبعًا نمط AAA بوضوح (ترتيب ثم تنفيذ ثم تأكيد)، ثم شغّله. اختبر join_name("سعود","الحربي")=="سعود الحربي".
←

الوحدة 8: سيناريوهات اختبار شاملة

اختبر تدفّقًامتوسط · الدرس 15: اختبار الواجهة الآلي: Selenium و Cypress
حاكِ اختبار واجهةٍ لعدّاد: الصفحة فيها count=0، وclick_plus تزيده. اضغط مرّتين وتحقّق أن العدّاد صار 2، ثم اطبع رسالة نجاح.
←
حلّل الحِملمتقدم · الدرس 16: اختبار الأداء والحِمل: JMeter و Gatling
من أزمنة الاستجابة، اطبع المتوسط مقرّبًا لمنزلة واحدة، وعدد الطلبات التي تجاوزت 200 مللي (البطيئة).
←

الوحدة 9: تقييم نتائج الاختبارات

راقب الاستدعاءمتقدم · الدرس 17: المحاكاة والبدائل: Mocks و Stubs
الدالة process تستدعي logger حين يكون المبلغ سالبًا. استخدم Mock وتحقّق أنه اُستُدعِي مرّةً لمبلغٍ سالب، واطبع عدد مرّات الاستدعاء.
←
أخضر بعد أحمرمتقدم · الدرس 18: التطوير الموجَّه بالاختبار TDD
كُتب اختبارٌ يفشل (أحمر) لدالة is_palindrome غير المكتملة. اكتب أقلّ كودٍ ينجّح الاختبارات، ثم شغّلها.
←

الوحدة 10: اختبار صحة البيانات والأوامر

اختبر التحقّقمتوسط · الدرس 19: اختبار صحة المدخلات
الدالة valid_qty تقبل عددًا صحيحًا من 1 إلى 100. اختبرها على الحالات المعطاة (تشمل الحدّين 1 و100) واطبع عدد الناجحة.
←
اختبر العقدمتقدم · الدرس 20: اختبار الـ API والتكامل
اكتب اختبارين لدالة login (تعيد (رمز، جسم)): الدخول الصحيح يعطي 200، والخاطئ يعطي 401. شغّلهما.
←

الوحدة 11: الأدوات في الاختبارات الشاملة

اختبر الدفاعمتقدم · الدرس 21: اختبار الأمان: OWASP ZAP و Burp Suite
الدالة reject_xss ترفض المدخل إن احتوى <script. اختبرها: الاسم العاديّ يُقبَل، والمدخل الخبيث يُرفَض. اطبع عدد الحالات الناجحة.
←
احرس ضدّ العودةمتقدم · الدرس 22: اختبار الانحدار Regression
الدالة apply_coupon أُصلِحت لتتعامل مع القسيمة الفارغة. اكتب اختبارين يحرسان: قسيمة صحيحة تخصم 10، وقسيمة فارغة لا تخصم. شغّلهما.
←

الوحدة 12: الاختبارات الشاملة وتقييمها

بوّابة CIمتوسط · الدرس 23: التكامل المستمر CI وبيئات الاختبار
حاكِ بوّابة CI: دالة ci_gate تأخذ قائمة نتائج اختبارات (True=نجح) وتعيد "pass" إن نجحت كلّها وإلا "fail". اطبع نتيجة مجموعتين.
←
قرار الإطلاقمتقدم · الدرس 24: معايير القبول ومعايير الخروج
أكمل can_release: تعيد True فقط إن كانت العيوب الحرجة 0 والتغطية ≥ 85. اطبع قرار حالتين.
←
اعرف أين تحسّنمتقدم · الدرس 25: أخلاقيات الاختبار والجودة الشاملة
من سجلّ العيوب، احسب أكثر مجالٍ تكرارًا للعيوب، واطبع اسمه وعدد عيوبه.
←
المشروع الختاميمتقدم · الدرس 26: مشروع: خطة اختبار كاملة وتنفيذها
اكتب مجموعة اختبارٍ كاملة لدالة final_price (سعر مع خصم): حالة صحيحة، حالة خصم، وحالة خطأ (سعر سالب يرفع ValueError). شغّلها.
←