أسئلة مقابلات Software Testing & Quality في Software Fundamentals
10 سؤال عن Software Testing & Quality من مسار Software Fundamentals. اقرأ الإجابة المختصرة لكل سؤال هنا، وافتح السؤال للشرح الكامل والأمثلة والأخطاء الشائعة والمصادر.
- مبتدئ
ما هو هرم الاختبارات (The Test Pyramid) وما هو التوازن المثالي بين اختبارات الوحدة، التكامل، والاختبارات الشاملة (E2E)؟
يقترح هرم الاختبارات قاعدة عريضة من اختبارات الوحدة السريعة والرخيصة في الأسفل، تليها اختبارات التكامل في المنتصف، وقمة مدببة من الاختبارات الشاملة (E2E) المعقدة والبطيئة.
اقرأ الشرح الكامل - مبتدئ
ما هي الدورة الثلاثية للتطوير الموجه بالاختبارات (TDD: Red-Green-Refactor) وما هي ميزتها التصميمية وليست الاختبارية فقط؟
تبدأ بكتابة اختبار صغير يفشل أولاً (Red)، ثم كتابة أقل كود كافٍ لنجاح الاختبار (Green)، ثم إعادة تحسين وهيكلة الكود وتنظيفه مع ضمان بقاء الاختبار ناجحاً (Refactor).
اقرأ الشرح الكامل - متوسط
اشرح تصنيف بدلاء الاختبار (Test Doubles) بحسب جيرارد ميسزاروس: ما الفرق بين Dummy و Stub و Fake و Mock و Spy؟
البدلاء هم كائنات تُستبدل في الاختبار بالتبعية الحقيقية: الـ Dummy لملء البارامترات فقط، والـ Stub يعيد إجابات ثابتة معدة مسبقاً، والـ Spy يسجل معلومات الاستدعاءات، والـ Mock يضع توقعات ويتحقق من السلوك، والـ Fake تطبيق حقيقي خفيف كقاعدة بيانات في الذاكرة.
اقرأ الشرح الكامل - مبتدئ
ما هي مبادئ F.I.R.S.T الخمسة لكتابة اختبارات وحدة احترافية وموثوقة؟
المبادئ هي: سريعة (Fast)، مستقلة (Independent)، قابلة للتكرار في أي بيئة (Repeatable)، ذاتية التحقق والنتيجة (Self-Validating)، وتُكتب في الوقت المناسب (Timely).
اقرأ الشرح الكامل - متقدم
لماذا تعتبر نسبة تغطية الكود (Code Coverage) مقياساً مضللاً أحياناً وما هي اختبارات الطفرات (Mutation Testing)؟
تغطية الكود تقيس فقط الأسطر التي مر عليها التنفيذ دون التحقق من جودة وصحة الـ Assertions؛ بينما تقوم اختبارات الطفرات بحقن أخطاء متعمدة في الشفرة وتفحص قدرة الاختبارات على اكتشافها وقتلها (Kill Mutants).
اقرأ الشرح الكامل - متوسط
ما هي الاختبارات المتقلبة (Flaky Tests) وما هي أسبابها الجذرية وكيف تقضي عليها في بيئات الـ CI/CD؟
هي الاختبارات التي تنجح وتفشل عشوائياً لنفس الكود دون أي تغيير؛ وتنتج عادة عن الاعتماد على توقيتات غير متزامنة، حالات مشتركة بين الاختبارات، أو تقلبات الاتصال الخارجي والشبكة.
اقرأ الشرح الكامل - متقدم
ما هو الاختبار القائم على الخصائص (Property-Based Testing) وكيف يكشف حالات الحافة المجهولة مقارنة بالاختبار القائم على الأمثلة؟
بدلاً من فحص أمثلة ومدخلات محددة يكتبها المبرمج يدوياً، يحدد المبرمج خصائص عامة صادقة دائماً (Invariants) وتقوم أداة الاختبار بتوليد مئات الآلاف من المدخلات العشوائية والمتطرفة لاكتشاف أي كسر لتلك الخصائص.
اقرأ الشرح الكامل - مبتدئ
ما هو التطوير الموجه بالسلوك (Behavior-Driven Development - BDD) وصيغة Given-When-Then؟
هو تطور لـ TDD يهدف لتوحيد لغة التواصل بين المطورين ومحللي الأعمال باستخدام لغة دومين موحدة (Ubiquitous Language)، مع صياغة سيناريوهات الاختبار بصيغة Given (السياق) و When (الحدث) و Then (النتيجة المتوقعة).
اقرأ الشرح الكامل - متقدم
ما هي اختبارات التعاقد (Contract Testing) وكيف تحمي خدمات المايكروسيرفس الموزعة دون الحاجة لتشغيل بيئات E2E مجمعة؟
تتحقق اختبارات التعاقد من توافق واجهات الـ API بين المستهلك (Consumer) والمزود (Provider) بشكل مستقل ومنفصل دون الحاجة لتشغيل النظام الموزع بالكامل في بيئة اختبار موحدة.
اقرأ الشرح الكامل - متوسط
كيف تحسن زمن تنفيذ الاختبارات في مسارات التكامل المستمر (CI Pipelines) عبر التوازي وتقسيم الأحمال؟
عبر تقسيم مجموعة الاختبارات الكبيرة إلى حزم متوازية تعمل على عدة خوادم في نفس الوقت (Test Parallelization / Matrix)، وتشغيل الاختبارات المتأثرة فقط بالتغيير الأخير (Test Impact Analysis).
اقرأ الشرح الكامل