U3F1ZWV6ZTQ2NzUxODY0ODA1MTI3X0ZyZWUyOTQ5NTExODk5MzE1NA==

مصطلحات يجب معرفتها فى مجال الsoftware testing وهى(test execution-test suite-test case-test data-failure-error-bug)



مصطلحات يجب معرفتها فى مجال الsoftware testing وهى(test execution-test suite-test case-test data-failure-error-bug)

ان شاء الله اليوم سوف نتحدث عن مصطلحات مهمة فى مجال الsoftware testing. و سنتحدث أ يضا عن ازاى نعرف ان عندنا bug فى السوفتوير.
وايه الفرق بين الbug وال error والfailure, وماهى الtest inputs او الtest data. وايه هى الtest case والtest suite والtest execution. لوانت فى حاجة من الحاجات دى مش عارفها اومش فاهمها كويس اقرأ الموضوع ده وان شاء الله هتستفيد وتوضح لك الأمور.
طيب فى الأول كده ايه هى الbug أوبمعنى أصح امتى اعرف انى عندى bug فى السوفتوير

الbug
عبارة عن حدوث اختلاف بين النتيجة الفعلية(actual result)والنتيجة المتوقعة (expected result)عند تنفيذ case اوسيناريو معين.دلوقتى  هنذكر مثال توضيحى علشان نفهم منه كويس  معانى المصطلحات اللى عاوزاك تفهمها.


انا عندى برنامج البرنامج ده المفروض ان الناتج اللى يطلعه هو نتيجة تربيع رقمين, ولكن المبرمج اللى قام بعمل هذه العملية نسى أو اخطأ .وعمل كود يضرب الرقم اللى داخل للبرنامج * 2بدل مايضرب الرقم فى نفسه مرتين .و أنا كتيستر عملت 2test cases  , الcase الأولى دخلت فيها للبرنامج رقم 2 فطلع الناتج 4 كماأنا متوقع, والcase التانية  دخات فيها للبرنامج رقم 3 طلعلى الناتج 6 وهذا غير المتوقع حيث ان المتوقع ان يكون الناتج رقم 9وليس6. لأن البرنامج المفروض يضرب الرقم فى نفسه مرتين فيضرب(3*3)مش يضرب الرقم *2فيضرب(3*2)كما حدث.  
نيجى بقى دلوقتى نفهم المصطلحات اللى احنا عاوزين نفهمها:

انا عندى فى المثال ده bug عرفت منين حصل لى فى الcase التانية( الخاصة بأنى دخلت للبرنامج رقم 3) اختلاف بين النتيجة الفعلية(6) والنتيجة المتوقعة(9).

النتيجة الفعلية(actual result):هى النتيجة الفعلية اللى طلعت ليا لماعملت تنفيذ لكيس معينة اللى هي فى المثال هنا رقم (6) فى حالة لما دخلت للبرنامج رقم 3.

النتيجة المتوقعة(expected result)
:هى النتيجة اللى كنت متوقع انها تطلع لي اللى هى فى المثال هنا رقم (9) فى حالة لما دخلت للبرنامج رقم3.

نيجى بقى للفرق مابين الerror والbug والfailure


هنكمل بردو مع المثال المذكور فوق علشان نستوعب اللى احنا عاوزين نوصله بسهولة وتكون الأمور واضحة.

الerror: هو الخطأ اللى بيرتكبه الشخص ففى المثال اللى فوق (عملية النسيان نفسها اللى تمت للمبرمج ) هى الerror.

الbug او الfault :هى الخطأ اللى فى الكود ففى المثال اللى فوق(العملية الحسابية اللى عمل بيها المبرمج كودالبرنامج
اللى هى ضرب الرقم اللى داخل للبرنامج * 2بدل مايضرب الرقم فى نفسه مرتين) هى الfault أو الbug او الdefect كلهم بيعبروا عن نفس المعنى.

 الfailure: هى الخطأ فى النتيجة ففى المثال اللى فوق حدث failure لللبرنامج لما جربت الcase التانية ودخلت للبرنامج رقم 3فكان الناتج6 وليس 9 كما كنت متوقع. 

ومن هنا لابد ان تتعلم حاجة مهمة جدا وهى ان الfailure مش هو اللى بيدل على وجودbug بالعكس ممكن يكون فى الكود bug ولاينتج عنه failure.

وده بيتطلب مننا  اننا نجرب بأكثر من طريقة لأننا فى المثال اللى فوق مثال تربيع الرقم لوكنا جربنا رقم 2 فقط مكنش هيحصل failure وبالتالى لم نكتشف الbug اللى موجودة فى الكود, ولكن عندما جربنا برقم 3 حدث failure للبرنامج ومن هنا اكتشفنا وجود bug فى الكود وهى ان البرنامج بيضرب الرقم اللى داخله *2 بدل مايقوم بتربيعه(اى بضربه فى نفسه مرتين).


طيب دلوقتى بعد ما عرفت المصطلحات المهمة هيجى فى بالك انه علشان اقدر اقول ان عندى bug فى البرنامج أوالتطبيق اللى شغال عليه لازم أكون عارف النتيجة المتوقعة لكل  function موجودة فى البرنامج.
طيب وأنا هعرف حاجة زى دى ازاى ؟دلوقتى هنجاوبلك على السؤال ده                                                     
فى العادة بتكون النتيجة المتوقعة للبرنامج موجودة فى الrequirement او مايعرف بالmain source software specification طيب لومعنديش requirement بعرف النتيجة المتوقعة للبرنامج ازاى؟ من مصادر تانية هنذكرها

1-الstandards: فمثلا  لواحنا شغالين على موقع طبى بيكون هناك rules الناس بتشتغل عليها فى المواقع الطبية زى مثلا ان جميع الرسائل اللى بتظهر للمستخدم يكون لون الخط بتاعها أحمر وحجمه110%. فده بيكون standard بيمشى عليها كل اللى شغالين فى المشروع وبالتالى لوأى تيستر وجد رسالة فى هذا البرنامج مواصفاتها غير مطابقة لهذه المواصفات بتكون
bug وبيعمل لها report.
2-الcommunication: فيه حاجات بتكون صغير ة  ومش مذكورة فى الrequirement ومتفرقش مع العميل زى مثلا يعنى ممكن العميل مايكونش طالب مواصفات معينة لرسائل الخطأ اللى بتظهر للمستخدم وتارك المواصفات دى لينا نعملها بالطريقة اللى شايفنها أحسن ففى الحالة دى احنا بنتواصل مع الdeveloper team او الناس اللى عندها خبرة أكثر مننا.

3- الstatistics: زى الاحصائيات الخاصة بسرعة تحميل محتوى الصفحة فمثلا متعارف ان سرعة تحميل الصفحة لاتزيد عن 4ثوانى فهذا الاساس يمكننا ان نعتمد عليه  واحنا بنعمل performance testing . وبالتالى لو زاد وقت تحميل الصفحة عن 4ثوانى بيكون عندى bug ولازم اعمل لها report علشان تتصلح.
4-الlife experience او الcommon sense:فمثلا ممكن نكون شغالين على برنامج البرنامج ده بيسمح للمستخدم انه يرفع صورة عليه  فا أناعندى احتمالين انه مع كل upload يرفع صورة واحدة اوممكن فى upload واحدة يرفع اكتر من صورة . والاحتمال الثانى هو الأفضل لأنه مش منطقى ان لو المستخدم أراد انه يرفع مثلا10 صور يعمل 10 مرات upload مع انه يمكن ان يرفعهم جميعا مرة واحدة وهذا مصدر معرفتنا به هو المنطق وخبرتنا الحياتية عن طريق البحث والتعامل مع مواقع متقدمة تستخدم هذه الخاصية.
5-other sources: فمثلا لو احنا شغالين على موقع تجارى ومعنديش requirement بشوف مواقع وظيفتها مشابهة للموقع اللى شغال عليه زى مثلا أمازون او سوق دوت كوم وابدأ أشوف كل feature شغالة عندهم ازاى وبتكون مرجع لى للنتيجة المتوقعة بقدر اعتمد عليها وأنا بعمل تيستينج.


طيب ايه هى الtest data


الtest inputs  أو الtest data :هى المدخلات اللى بدخلها للبرنامج علشان يتعامل معها زى مثلا(رقم 2او 3) اللى كنت بدخلهم للبرنامج فى المثال اللى فوق اللى كان وظيفته تربيع الرقم اللى داخله.
الtest inputs دى بتنقسم لنوعين:

1-valid inputs
: وهو احتمال ان االمستخدم يدخل حاجة متوقعة فمثلا لو بعمل تيستينج لموقع بيطلب من المستخدم انه يدخل رقم الموبايل فأنا متوقع ان المستخدم يدخل فى الحقل الخاص برقم الموبايل ارقام فقط ,فهذه الارقام هى الvalid inputs.

2-invalid inputs: وهو احتمال ان المستخدم يدخل حاجة غير متوقعة ففى حالة عمل تيستينج للحقل الخاص بإدخال رقم الموبايل. فلايتوقع ان يقوم المستخدم بإدخال حروف اوspecial characters ولكن يجب ان يؤخذ هذا فى الاعتبار وانا بعمل تيستينج ,فهذه الحروف او الspecial characters فى هذا المثال هى الinvalid inputs.

لذلك فإن التيستر ينبغى ان يوجه تفكيره فى طريقى الvalid inputs والinvalid inputs ويتأكد ان السوفتوير بيستقبل الvalid data وبيظهر الرسائل الصحيحة وبيتعامل أيضا مع الinvalid data وبيظهر رسائل الخطأ.



من المصطلحات المهمة التى يجب علينا معرفتها هى الtest case والtest suite والtest execution

الtest case:هى عبارة عن توثيق لمجموعة الخطوات اللى بيمشى عليها التيستر وأهم حاجة فيها أن يكون مكتوب فيها النتيجة المتوقعة زى مثلا الtest case الخاصة بتسجيل الدخول لموقع معين بvalid username وvalid password. 

الtest suite
: هى عبارة عن folder فيه مجموعة من الtest cases زى مثلا مجموعة الtest cases الخاصة بتسجيل الدخول لموقع معين.

الtest execution: هى  اتباع خطوات الtest cases وتنفيذها على السوفتوير والحصول على نتيجة فى الآخرإما pass أو fail أو blocked (يعنى معرفتش أكمل تنفيذ الtest case بسبب شىء ما , زى مثلا عدم وجود زر معين فى السوفتوير,هذا الزر مطلوب منى فى الtest case انى أقوم بالضغط عليه ).


















تعديل المشاركة Reactions:
author-img

المهندسة / فاطمة الزهراء نصر

المهندسة فاطمة الزهراء نصر السيد بدير مصرية الجنسية درست هندسة النظم والحاسبات فى كلية الهندسة جامعة الأزهر مهتمة بمجال اختبار البرمجيات ومؤسسة مدونة جودة-تك.
تعليقات
الاسمبريد إلكترونيرسالة