اختبار موثوقية البرمجيات

اختبار موثوقية البرمجيات هو أحد مجالات اختبار البرمجيات، ويتعلق باختبار قدرة البرنامج على العمل في ظل ظروف بيئية محددة، لفترة زمنية معينة. يساعد اختبار موثوقية البرمجيات في اكتشاف العديد من المشكلات في تصميم البرنامج ووظائفه.

ملخص

موثوقية البرمجيات هي احتمال عمل البرنامج بشكل صحيح في بيئة محددة ولفترة زمنية معينة. باستخدام الصيغة التالية، يتم حساب احتمال الفشل عن طريق اختبار عينة من جميع حالات الإدخال المتاحة. متوسط ​​الوقت بين الأعطال (MTBF) = متوسط ​​الوقت حتى الفشل (MTTF) + متوسط ​​وقت الإصلاح (MTTR)

الاحتمالية = عدد الحالات الفاشلة / إجمالي عدد الحالات قيد الدراسة

تُسمى مجموعة جميع حالات الإدخال الممكنة فضاء الإدخال. ولتحديد موثوقية البرمجيات، نحتاج إلى إيجاد فضاء الإخراج انطلاقاً من فضاء الإدخال والبرمجيات المُعطاة. [ 1 ]

لاختبار الموثوقية، تُجمع البيانات من مراحل التطوير المختلفة، مثل مرحلتي التصميم والتشغيل. وتُحدَّد الاختبارات بسبب قيودٍ كالتكلفة والوقت. تُؤخذ عينات إحصائية من منتجات البرمجيات لاختبار موثوقيتها. وبمجرد جمع بيانات أو معلومات كافية، تُجرى دراسات إحصائية. وتُعالج قيود الوقت بتحديد مواعيد نهائية ثابتة لإجراء الاختبارات. بعد هذه المرحلة، يتوقف تصميم البرمجيات وتبدأ مرحلة التنفيذ الفعلي. ونظرًا لوجود قيود على التكلفة والوقت، تُجمع البيانات بعناية لضمان أن يكون لكل معلومة غرضها ودقتها المطلوبة. [ 2 ] ولتحقيق نتائج مرضية من اختبار الموثوقية، يجب مراعاة بعض خصائص الموثوقية. على سبيل المثال، يُقاس متوسط ​​الوقت حتى الفشل (MTTF) [ 3 ] بثلاثة عوامل:

  1. وقت التشغيل،
  2. عدد دورات التشغيل والإيقاف،
  3. والوقت التقويمي.

إذا كانت القيود متعلقة بوقت التشغيل أو إذا كان التركيز على نقطة التحسين الأولى، فيمكن تطبيق تسريع زمني مضغوط لتقليل وقت الاختبار. أما إذا كان التركيز على الوقت المحدد (أي إذا كانت هناك مواعيد نهائية محددة مسبقًا)، فيتم استخدام اختبار إجهاد مكثف . [ 2 ] [ 4 ]

قياس

يُقاس توافر البرمجيات من حيث متوسط ​​الوقت بين الأعطال (MTBF). [ 5 ]

يتكون متوسط ​​الوقت بين الأعطال (MTBF ) من متوسط ​​الوقت بين الأعطال (MTTF) ومتوسط ​​الوقت اللازم للإصلاح (MTTR). يمثل MTTF الفرق الزمني بين عطلين متتاليين، بينما يمثل MTTR الوقت اللازم لإصلاح العطل. [ 6 ]

متيبF=متيتيF+متيتيR{\displaystyle MTBF=MTTF+MTTR}

يمثل التوافر في الحالة المستقرة النسبة المئوية التي يكون فيها البرنامج قيد التشغيل.

أ=متيتيFمتيتيF+متيتيR=متيتيFمتيبF{\displaystyle A={\frac {MTTF}{MTTF+MTTR}}={\frac {MTTF}{MTBF}}}

على سبيل المثال، إذا كان متوسط ​​الوقت بين الأعطال يساوي 1000 ساعة لبرنامج ما، فيجب أن يعمل البرنامج لمدة 1000 ساعة من العمليات المستمرة.

بالنسبة لنفس البرنامج، إذا كان متوسط ​​وقت الإصلاح (MTTR) يساوي ساعتين، فإنمتيبF=1000+2=1002{\displaystyle MTBF=1000+2=1002}.

وفقاً لذلك،أ=1000/10020.998{\displaystyle A=1000/1002\approx 0.998}

تُقاس موثوقية البرمجيات من حيث معدل الفشل (λ{\displaystyle \lambda }).

λ=1متيبF{\displaystyle \lambda ={\frac {1}{MTBF}}}
R(ت)=هـ-λت{\displaystyle R(t)=e^{-\lambda \cdot t}}

تُقاس موثوقية البرمجيات برقم يتراوح بين 0 و1. وتزداد الموثوقية عند إزالة الأخطاء أو العيوب البرمجية. [ 7 ] توجد العديد من نماذج نمو موثوقية البرمجيات (SRGM) ( قائمة نماذج موثوقية البرمجيات )، بما في ذلك النماذج اللوغاريتمية، ومتعددة الحدود، والأسية، والقوة، والنموذج على شكل حرف S.

أهداف اختبار الموثوقية

الهدف الرئيسي من اختبار الموثوقية هو اختبار أداء البرمجيات في ظل ظروف معينة دون أي نوع من الإجراءات التصحيحية باستخدام إجراءات ثابتة معروفة مع مراعاة مواصفاتها.

الأهداف الثانوية

تتمثل الأهداف الثانوية لاختبار الموثوقية فيما يلي:

  1. لإيجاد البنية الإدراكية للإخفاقات المتكررة.
  2. لإيجاد عدد حالات الفشل التي تحدث خلال فترة زمنية محددة.
  3. لإيجاد متوسط ​​عمر البرنامج.
  4. لاكتشاف السبب الرئيسي للفشل.
  5. فحص أداء وحدات البرامج المختلفة بعد اتخاذ الإجراءات الوقائية.

نقاط لتحديد الأهداف

تتضمن بعض القيود المفروضة على وضع الأهداف ما يلي:

  1. ينبغي تحديد سلوك البرنامج في ظل ظروف معينة.
  2. ينبغي أن يكون الهدف قابلاً للتحقيق.
  3. ينبغي تحديد القيود الزمنية. [ 8 ]

أهمية اختبار الموثوقية

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

لتحسين أداء منتجات البرمجيات وعملية تطويرها، يلزم إجراء تقييم شامل للموثوقية. يُعد اختبار موثوقية البرمجيات أمرًا بالغ الأهمية لما له من فائدة كبيرة لمديري البرمجيات والممارسين. [ 10 ]

للتحقق من موثوقية البرنامج عن طريق الاختبار:

  1. ينبغي تنفيذ عدد كافٍ من حالات الاختبار لفترة زمنية كافية للحصول على تقدير معقول لمدة تشغيل البرنامج دون أعطال. وتُعدّ الاختبارات طويلة الأمد ضرورية لتحديد العيوب (مثل تسرب الذاكرة وتجاوز سعة المخزن المؤقت) التي تستغرق وقتًا للتسبب في حدوث عطل أو فشل.
  2. ينبغي أن يتوافق توزيع حالات الاختبار مع النمط التشغيلي الفعلي أو المخطط له للبرنامج. فكلما زاد تكرار تنفيذ وظيفة أو جزء من البرنامج، زادت نسبة حالات الاختبار التي ينبغي تخصيصها لتلك الوظيفة أو الجزء.

أنواع اختبارات الموثوقية

يشمل اختبار موثوقية البرمجيات اختبار الميزات، واختبار التحميل، واختبار الانحدار . [ 11 ]

اختبار الميزات

يختبر اختبار الميزات الميزات التي يوفرها البرنامج ويتم إجراؤه في الخطوات التالية:

  • يتم تنفيذ كل عملية في البرنامج مرة واحدة.
  • يتم تقليل التفاعل بين العمليتين و
  • يتم فحص كل عملية للتأكد من تنفيذها بشكل صحيح.

يتبع اختبار الميزات اختبار التحميل. [ 11 ]

اختبار التحميل

يُجرى هذا الاختبار للتحقق من أداء البرنامج تحت أقصى ضغط عمل. أي برنامج يعمل بكفاءة عالية حتى حد معين من ضغط العمل، وبعد ذلك يبدأ وقت استجابته بالتراجع. على سبيل المثال، يمكن اختبار موقع ويب لمعرفة عدد المستخدمين المتزامنين الذين يمكنه دعمهم دون تراجع في الأداء. يُفيد هذا الاختبار بشكل أساسي قواعد البيانات وخوادم التطبيقات . كما يتطلب اختبار ضغط العمل اختبار أداء البرنامج ، والذي يتحقق من مدى كفاءة أداء البرنامج تحت ضغط العمل. [ 11 ]

اختبار الانحدار

يُستخدم اختبار الانحدار للتحقق من عدم ظهور أي أخطاء جديدة نتيجةً لإصلاحات الأخطاء السابقة. ويُجرى هذا الاختبار بعد كل تغيير أو تحديث في خصائص البرنامج. ويُجرى هذا الاختبار دوريًا، اعتمادًا على مدة البرنامج وخصائصه. [ 11 ]

تخطيط الاختبار

يُعدّ اختبار الموثوقية أكثر تكلفةً مقارنةً بأنواع الاختبارات الأخرى. لذا، يتطلب إجراء اختبار الموثوقية إدارةً وتخطيطًا سليمين. يشمل هذا التخطيط عملية الاختبار المراد تنفيذها، وبيانات بيئة الاختبار، وجدول الاختبار، ونقاط الاختبار، وما إلى ذلك.

مشاكل في تصميم حالات الاختبار

تتضمن بعض المشاكل الشائعة التي تحدث عند تصميم حالات الاختبار ما يلي:

  • يمكن تصميم حالات الاختبار ببساطة عن طريق اختيار قيم الإدخال الصحيحة فقط لكل حقل في البرنامج. عند إجراء تغييرات في وحدة معينة، قد لا تختبر القيم السابقة الميزات الجديدة التي أُضيفت بعد الإصدار الأقدم من البرنامج.
  • قد توجد بعض العمليات الحرجة في البرنامج التي لا تغطيها أي حالة اختبار موجودة. لذلك، من الضروري ضمان مراعاة جميع أنواع حالات الاختبار الممكنة من خلال اختيار حالات الاختبار بعناية. [ 11 ]

تحسين الموثوقية من خلال الاختبار

تُسهم الدراسات التي تُجرى أثناء تطوير وتصميم البرمجيات في تحسين موثوقية المنتج. ويُجرى اختبار الموثوقية أساسًا لتحديد أسباب فشل البرمجيات. وينبغي دائمًا إجراء اختبار عمر المنتج بعد الانتهاء من مرحلة التصميم، أو على الأقل بعد الانتهاء من التصميم بالكامل. [ 12 ] ويتحقق تحليل الأعطال وتحسين التصميم من خلال الاختبارات.

اختبار نمو الموثوقية

[ ١٢ ] يُستخدم هذا الاختبار للتحقق من النماذج الأولية الجديدة للبرنامج، والتي من المفترض أن تتعطل بشكل متكرر في البداية. يتم تحديد أسباب التعطل واتخاذ الإجراءات اللازمة لتقليل العيوب. لنفترض أن T هو إجمالي الوقت المتراكم للنموذج الأولي، و n(T) هو عدد حالات التعطل من البداية حتى الوقت T. الرسم البياني المرسوم لـ n(T)/T هو خط مستقيم، ويُسمى هذا الرسم البياني مخطط دوان. يمكن من خلاله معرفة مقدار الموثوقية التي يمكن اكتسابها بعد جميع دورات الاختبار الأخرى، ومن ثمّ إصلاحها.

لن[ن(تي)تي]=-αلن(تي)+ب؛               .....هـq:1{\displaystyle {\begin{alignedat}{5}ln\left[{\frac {n\left(T\right)}{T}}\right]=-\alpha ln\left(T\right)+b;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .....المعادلة:1\end{alignedat}}}

حل المعادلة 1 لإيجاد قيمة n(T)،

ن(تي)=كتي1-α؛                   ......هـq:2{\displaystyle {\begin{alignedat}{5}n\left(T\right)=KT^{1-\alpha };\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ......Eq:2\end{alignedat}}}

حيث K هي e^b. إذا كانت قيمة ألفا في المعادلة تساوي صفرًا، فلا يمكن تحسين الموثوقية كما هو متوقع لعدد معين من حالات الفشل. أما إذا كانت قيمة ألفا أكبر من صفر، فإن الزمن التراكمي T يزداد. وهذا يفسر أن عدد حالات الفشل لا يعتمد على مدة الاختبار.

تصميم حالات الاختبار للإصدار الحالي

إذا تمت إضافة ميزات جديدة إلى الإصدار الحالي من البرنامج، فسيتم كتابة حالة اختبار لتلك العملية بشكل مختلف.

  • أولاً، حدد عدد حالات الاختبار الجديدة التي سيتم كتابتها للإصدار الحالي.
  • إذا كانت الميزة الجديدة جزءًا من أي ميزة موجودة، فقم بمشاركة حالات الاختبار الخاصة بالميزات الجديدة والموجودة فيما بينها.
  • وأخيرًا، اجمع جميع حالات الاختبار من الإصدار الحالي والإصدار السابق وسجل جميع النتائج. [ 11 ]

توجد قاعدة محددة مسبقًا لحساب عدد حالات الاختبار الجديدة للبرنامج. إذا كان N هو احتمال حدوث عمليات جديدة في إصدار جديد من البرنامج، وR هو احتمال حدوث عمليات مستخدمة في الإصدار الحالي، وT هو عدد جميع حالات الاختبار المستخدمة سابقًا، فإن

شمالهـwتيهـsتجأsهـs(جuررهـنترهـلهـأsهـ)=(شمالR)*تي{\displaystyle {\begin{alignedat}{5}NewTestcases_{(currentrelease)}=\left({\frac {N}{R}}\right)*T\end{alignedat}}}

تقييم الموثوقية بناءً على الاختبارات التشغيلية

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

هناك أسلوبان يستخدمان في الاختبارات التشغيلية لاختبار موثوقية البرامج:

تقدير موثوقية الحالة المستقرة
في هذه الحالة، نستخدم ملاحظات المستخدمين حول منتجات البرمجيات المُسلّمة. وبناءً على هذه النتائج، يمكننا التنبؤ بموثوقية الإصدار التالي من المنتج. وهذا يشبه اختبار العينات للمنتجات المادية.
التنبؤ القائم على نمو الموثوقية
تعتمد هذه الطريقة على توثيق إجراءات الاختبار. على سبيل المثال، لنفترض وجود برنامج مطور، ونقوم بإنشاء نسخ جديدة مختلفة منه. نأخذ في الاعتبار بيانات اختبار كل نسخة، وبناءً على الاتجاه الملحوظ، نتوقع موثوقية النسخة الجديدة من البرنامج. [ 13 ]

تقييم وتوقع نمو الموثوقية

نستخدم نموذج نمو الموثوقية في تقييم موثوقية البرمجيات والتنبؤ بها. أثناء تشغيل البرنامج، تُخزَّن أي بيانات تتعلق بأعطاله في شكل إحصائي وتُستخدم كمدخلات لنموذج نمو الموثوقية. وباستخدام هذه البيانات، يستطيع نموذج نمو الموثوقية تقييم موثوقية البرنامج.

تتوفر بيانات كثيرة حول نموذج نمو الموثوقية، مع نماذج احتمالية تدّعي تمثيل عملية الفشل. ولكن لا يوجد نموذج مثالي لجميع الظروف. لذا، يجب اختيار النموذج بناءً على الظروف المناسبة.

تقدير الموثوقية بناءً على التشغيل الخالي من الأعطال

في هذه الحالة، يتم تقدير موثوقية البرنامج بافتراضات مثل ما يلي:

  • إذا تم اكتشاف عيب، فهل سيتم إصلاحه من قبل شخص ما؟
  • لن يؤثر إصلاح العيب على موثوقية البرنامج.
  • كل إصلاح في البرنامج دقيق. [ 13 ]

انظر أيضاً

مراجع

  1. موثوقية البرمجيات . هوانغ فام.
  2. 1 2 إي. إي. لويس (1988). "مقدمة في هندسة الموثوقية". التكنولوجيا النووية . 82 (2): 235. Bibcode : 1988NucTe..82..235K . doi : 10.13182/NT88-A34110 .
  3. "MTTF" .
  4. الممارسات الموصى بها من قبل معهد مهندسي الكهرباء والإلكترونيات (IEEE) بشأن موثوقية البرمجيات ، IEEE، doi : 10.1109/ieeestd.2017.7827907 ، ISBN 978-1-5044-3648-9
  5. روجر بريسمان (1982). هندسة البرمجيات: منهج عملي . ماكجرو هيل. ISBN 978-0-07-050781-4.
  6. "مناهج اختبار الموثوقية وتحديد أهداف اختبار الموثوقية" .
  7. أديتيا ب. ماثور. أسس اختبار البرمجيات . منشورات بيرسون.
  8. دليل اختبار الموثوقية والعمر الافتراضي . ديمتري كيسي أوغلو.
  9. أساس إحصائي لتقييم موثوقية البرمجيات . م. شي.
  10. نمذجة موثوقية البرمجيات . م. شي.
  11. 1 2 3 4 5 6 جون د. موسى (2004). هندسة موثوقية البرمجيات: برمجيات أكثر موثوقية، وأسرع، وأقل تكلفة . ماكجرو هيل. ISBN 0-07-060319-7.
  12. 1 2 إي. إي. لويس (15-11-1995). مقدمة في هندسة الموثوقية . ISBN 0-471-01833-3.
  13. 1 2 "مشكلة تقييم الموثوقية". CiteSeerX 10.1.1.104.9831 . {{cite web}}: مفقود أو فارغ |url=( مساعدة )