اختبار النظام هو اختبار برمجي شامل قائم على الأداء للنظام بأكمله. يشمل هذا الاختبار الشامل جوانب من الاختبار الوظيفي، الاختبار غير الوظيفي، اختبار الواجهات، اختبار الضغط، واختبار الاسترداد.
تخيَّل أنك تنظر إلى نظام برمجي تحت المجهر، بدءًا من أعلى مستوى تكبير ممكن، مع التركيز على الوحدة. هذه هي الوحدة الأساسية لبناء النظام البرمجي. ثم تتسع الرؤية لتشمل المستوى التالي من التكبير - الوحدات النمطية التي تم إنشاؤها بواسطة تلك الوحدات الفردية. وأخيرًا، عند تكبير الصورة بالكامل، تصل إلى مستوى النظام. عند هذا المستوى من التكبير، يمكنك رؤية كل ما يحتويه النظام وكيفية تعاون جميع العناصر التي أنشأتها تلك الوحدات البرمجية معًا.
بطرق معينة، يشبه اختبار النظام تلك الرؤية المجهرية - مع وجود اختلاف جوهري. يُعَد اختبار النظام شكلًا من أشكال الاختبار الصندوق الأسود، ما يعني أن المختبِرين يهتمون أقل بعناصر النظام وطريقة تجميعها، ويركِّزون بشكل أكثر على الوظائف العامة للنظام. من هذا المنظور القائم على "النجاح/الفشل"، يصبح سلوك النظام جديرًا بالملاحظة فقط بقدر ما يتعلق بأداء النظام. يُتيح اختبار الصندوق الأبيض رؤية أكبر لطبيعة العناصر داخل النظام.
غالبًا ما يتضمن اختبار النظام تحليل عدة أنظمة برمجية منفصلة قد تعمل معًا أو لا تعمل في تناغم ضمن نظام برمجي معين.
النشرة الإخبارية الخاصة بالمجال
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
سيصلك محتوى الاشتراك باللغة الإنجليزية. ستجد رابط إلغاء الاشتراك في كل رسالة إخبارية. يمكنك إدارة اشتراكاتك أو إلغاء اشتراكك من هنا. لمزيد من المعلومات، راجع بيان خصوصية IBM.
تخيَّل العد التنازلي الذي يسبق عمليات الإطلاق إلى الفضاء. بينما يتذكَّر الجميع العد التنازلي الدرامي المكوَّن من عشر خطوات قبل الإشعال والإقلاع، يتذكر عدد أقل من الناس الفحوصات العديدة التي تطلبها كل إدارة ويجيب عنها رئيس الرحلة بالإيجاب على أنها "جاهزة للإطلاق". في عملية الإطلاق الفضائي النموذجية، تتم استشارة رؤساء الأقسام حول العمليات المخطط لها، وسلامة المهمة، وأنظمة المركبة، والظروف الجوية المتوقعة، والعديد من الأمور الأخرى. ويتم الاستعلام عن كل قسم ويستجيب كل رئيس قسم على حدة.
وبالمثل، يمكن اعتبار اختبار النظام هو قائمة التحقق النهائية التي تسبق إطلاق نظام برمجي جديد. اكتملت الجولة الأخيرة من تنظيف أي أخطاء برمجية معروفة. ومثل قوائم الفحص التاريخية التي وضعها روّاد الفضاء الأوائل، كل شيء يتلخّص في الحصول على الموافقة النهائية من كل "قسم" مشمول في اختبار النظام.
يتم تظليل كل استعلام وفقًا لوظائف النظام:
عند مناقشة اختبار النظام، سنواجه بطبيعة الحال موضوع التبعيات، وهي العلاقات الموجودة في حالات الاختبار. في مثل هذه المواقف، قد تعتمد نتيجة حالة اختبار واحدة جزئيًا أو كليًا على نتائج حالات اختبار أخرى. يمكن أن تتضمن التبعيات أيضًا الوظائف أو بيئات الاختبار أو سياسات الأمان، ويمكن أن تؤثِّر حتى في عملية الاختبار بأكملها التي تحتفظ بها المؤسسة.
منهجيات اختبار النظام لا تقدِّم نظرة متعمقة على طريقة عمل النظام داخليًا (تذكَّر، هذا نوع من اختبار الصندوق الأسود)، لكنها تُتيح لك معرفة ما إذا كان التطبيق المعيّن يعمل أم لا. الفكرة من اختبار النظام هي المساعدة على تحديد الثغرات والأخطاء أو المتطلبات المفقودة، أثناء تقييم الوظائف العامة للتطبيق البرمجي.
عادةً ما يتم إجراء اختبار النظام بعد اختبار التكامل ولكن قبل اختبار القبول، لضمان عمل جميع العناصر معًا بشكل صحيح. وكما سنرى، غالبًا ما يشمل الجوانب الوظيفية وغير الوظيفية للنظام. ولأنه يعتمد على المجالات الوظيفية الصارمة والمجالات غير الوظيفية على نطاق واسع، فإنه يتطرق إلى جوانب بعيدة المدى مثل قابلية الاستخدام والأمن والأداء.
أحد الأغراض الرئيسية لاختبار النظام هو تمكينك من التحقق من أن لغة برمجة البرمجيات يمكن تحويلها إلى برنامج قابل للاستخدام. ومع ذلك، فإن الهدف الشامل من اختبار النظام هو التأكد من أن البرنامج الذي يتم تقييمه يدعم متطلبات العمل للمستخدمين الذين سيعتمدون عليه بكفاءة.
تهدف عملية الاختبار إلى عكس بيئة الإنتاج نفسها التي سيتم استخدامها، لضمان وظائف البرنامج حسب الحاجة على الرغم من الظروف المتغيّرة في العالم الحقيقي. وبالمثل، يتم إنشاء بيانات الاختبار لمحاكاة البيانات والظروف الواقعية. بمجرد إجراء حالات الاختبار، يمكن تحديد العيوب الموجودة في البرنامج وإصلاحها.
يمكن تصنيف اختبار النظام وفقًا لإحدى ثلاث مجموعات رئيسية. الأول، وهو الاختبار الوظيفي، يهتم بأداء النظام، لكنه لا يسعى إلى تقديم أي تحليل أعمق سوى التأكد من أن البرنامج يعمل على النحو المطلوب. فيما يلي بعض الأنواع الرئيسية للاختبارات الوظيفية:
بينما يقدِّم الاختبار الوظيفي معلومات مهمة للغاية، فإن هذه البيانات تقتصر أساسًا على تقييم بنعم أو لا، استنادًا فقط إلى إذا ما كان النظام يعمل كما يجب. وهذا يستثني عددًا كبيرًا من المتغيّرات المهمة - مثل أمن النظام وتجربة المستخدم والجوانب المتعلقة بالأداء.
يوفر اختبار النظام غير الوظيفي وسيلة لتقييم كيفية عمل النظام. يمكن تلخيص الفرق الأساسي بين الاختبار الوظيفي والاختبار غير الوظيفي في المقارنة البسيطة التالية:
ومع وضع ذلك في الاعتبار، إليك بعض الأشكال الرئيسية للاختبار غير الوظيفي للنظام:
هناك أنواع أخرى من اختبار النظام مفيدة على الرغم من أنها لا تندرج تحت فئات الاختبارات الوظيفية أو غير الوظيفية. وفيما يلي بعض من أبرز هذه المنهجيات:
على الرغم من أن عملية اختبار النظام توفِّر اختبار الأداء الشامل المتاح، فإن إجراء اختبار النظام ليس خاليًا من المشكلات المحتملة:
المتطلبات التي يجب أن يلبيها اختبار النظام كثيرة - سواء أكانت متطلبات أعمال خاصة بتلك المؤسسة، أم متطلبات وظيفية فريدة للبرنامج، أم متطلبات محددة قد تنطبق على طريقة تشغيله. في الواقع، لا يبدو أن هناك نقصًا في متطلبات النظام التي تحتاج أنظمة التشغيل إلى استيعابها. يمكن أن تؤدي المتطلبات التي تتغير بشكل متكرر إلى تعثُّر النظام وتركه مع مجموعة غير كاملة من حالات الاختبار.
لا ينبغي أن يكون مفاجئًا لأحد أن المواعيد النهائية يمكن أن تسبب فوضى في بيئة العمل. تشتهر المواعيد النهائية بقدرتها على إحداث تأثيرات قاسية حيث تتعارض جداول العمل مع التوقعات القائمة على التقويم. تظهر ضغوط المواعيد النهائية في تطوير البرمجيات من خلال تقصير اختبار النظام المناسب والكافي، بحيث يتم إجراؤه بشكل غير مكتمل أو يتم تجاهله تمامًا. وغالبًا ما يتطلب ذلك إعادة الاختبار في وقت لاحق من دورة حياة تطوير البرمجيات.
لا يحدث اختبار النظام في فراغ ولا يتم دون جهد. وهذا يتطلب العمل الماهر لفِرق الاختبار، وأدوات الاختبار لمساعدة هذا العمل، والميزانية الكافية لتمكينه في المقام الأول. ودون هذه العناصر، يصبح من السهل اللجوء إلى الحلول المختصرة، ما يؤدي إلى اختبار غير مكتمل. وإذا تم تعديل أي جزء من هذه المعادلة أو تجاهله، فمن المحتمل أن يؤثِّر ذلك سلبًا في نطاق الاختبار الناتج عن اختبار النظام لهذا التطبيق البرمجي أو المنتج البرمجي.
يمكن تقييم العديد من الثغرات الأمنية المحتملة خلال عملية الاختبار، لكن فريق هندسة البرمجيات يمكنه إجراء هذه التقييمات فقط إذا كان مدعومًا ومتحكمًا في بيئة الاختبار التي يعمل فيها. عندما لا يعمل المختبِرين في بيئات مستقرة، يصبح من الأسهل عليهم تفويت العيوب المحتملة في البرامج. وإذا وجد المختبِرين في البيئات غير المستقرة أخطاء برمجية تحتاج إلى إصلاح، فغالبًا ما يواجهون صعوبةً أكبر في إعادة إنتاج تلك الأخطاء لاحقًا.
عندما تتعلق مهمتك بضمان جودة البرمجيات، فإن مراجعة أسطر الكود البرمجي تُعَد عملًا شاقًا قد يصبح مملًا ويستغرق وقتًا طويلًا. ما يمكن أن يجعل هذا العمل أكثر إزعاجًا هو حدوث فجوات في التواصل بين المختبِرين والمطورين والأطراف المعنية. وكما هو الحال في أي مشروع تجاري، تؤدي مشكلات التواصل إلى سوء الفهم وتُنشئ بيئة إنتاجية يمكن أن تُفلت فيها العيوب من الاكتشاف وتستقر داخل أنظمة التشغيل.
تختلف تقنيات الاختبار، وتتنوع نتائج الاختبارات بين بيانات اختبار بسيطة يسهل فهمها ومجموعات بيانات ضخمة ومعقدة تتطلب إدارة دقيقة أثناء مرحلة الاختبار وبعدها. ويزداد مستوى تعقيد المشروع بشكل أكبر عندما لا تعكس بيئات الاختبار نظيراتها في الإنتاج بشكل كامل. ويجب أن تأخذ الاستراتيجية التي يتم تنفيذها أثناء عملية تطوير البرمجيات بعين الاعتبار كيفية التعامل مع هذه المشكلات على أفضل وجه.
خدمة مُدارة بالكامل ومستأجر واحد لتطوير تطبيقات Java وتسليمها.
استخدم أدوات وبرمجيات عمليات التطوير لإنشاء تطبيقات السحابة الأصلية ونشرها وإدارتها عبر أجهزة وبيئات متعددة.
إن تطوير تطبيقات السحابة يعني البناء مرة واحدة، والتكرار بسرعة، والنشر في أي مكان.