Software Testing In a Nutshell

أنت بتبقى مبسوط أوي وأنت بتكتب الكود, لحد ما تيجي لحظة الحقيقة وتبتدي في الـ Testing الحقيقة أنت ممكن تختبر أداء الكود اللي كتبته بأنواع كثيرة جدًا من الاختبارات, فتعالوا نتكلم عن خطوات اختبار البرمجيات بشكل عام وايه أهم الأنواع ليك كمبرمج
Software Testing In a Nutshell

أنت بتبقى مبسوط أوي وأنت بتكتب الكود, لحد ما تيجي لحظة الحقيقة وتبتدي في الـ Testing

الحقيقة أنت ممكن تختبر أداء الكود اللي كتبته بأنواع كثيرة جدًا من الاختبارات, فتعالوا نتكلم عن خطوات اختبار البرمجيات بشكل عام وايه أهم الأنواع ليك كمبرمج

مع اختلاف الأنواع فأكثر طريقة شائعة بتتكون من 3 خطوات:

(Given – When – Then) Testing Paradigm

Given -> When -> Then 

1- Given 

هنا هتحدد المعطيات أو الdata inputs اللي هتدخل ال function اللى حابب تختبر أدائها. حدد وجهز البيانات من حيث المضمون والشكل كويس سواء هي بيانات ثابتة أو بيانات يتم إنتاجها من function ثانية.

2- When 

وهنا ستقوم بتنفيذ الfunction المطلوب اختبار أدائها على المعطيات 

3- Expected 

وهنا بتقارن ال output اللي ظهر ليك مع النتيجة الصحيحة المتوقعة 

 

طلعوا نفس الشئ مبروك الكود بتاعك شغال, طلع فيه مشكلة فمبروك برضو نعرف غلطاتنا دلوقتي ونصلحها أحسن ما نتفاجئ بيها في الـ production. ودي أكبر ميزة في الـ testing أنه في أوقات كتير بيلفت نظرك ل edge case أو تصرف غير متوقع للكود بتاعك تحت data معينة.

ولذلك يفضل انك تختبر الحالات اللي الكود بيفشل بيها زي ما هتختبر الحالات اللي بينجح فيها 

Software Testing In a Nutshell
Software Testing In a Nutshell

مثال

أنا عندي كود يقوم بوظيفة بسيطة وهي قسمة رقمين على بعض نقدر نختبره بأكثر من حالة ناجحة زي:

  • لو قسمت رقمين موجبين مفروض يطلع لي رقم موجب
  • لو قسمت رقم سالب علي رقم موجب أو العكس مفروض يطلع رقم سالب 

ولكن في كمان حالة مفروض اختبرها ان الكود هيفشل يحلها:

لو قسمت رقم على الصفر مفروض الكود يـ Throw Numeric Exception 

المثال دا عبارة عن unit test لأنك اختبرت أداء وحدة صغيرة من البرنامج كله, لكن في انواع كثيرة جدًا من الاختبارات من أهمها:

1- Integration testing 

ودي بتختبر أداء وحدتين أو أكثر من البرنامج مع بعض, ولنقل حابب تختبر ال api endpoint + database عشان تتأكد انهم شغالين سوا بشكل سليم.

2- System Testing 

هنا انت بتختبر النظام كله مع بعضه و النوع دا يتضمن طرق وتقنيات مختلفة لاختبار النظام بشكل شامل. 

3- Load Testing 

وهنا بتختبر أقصي حدود تحمل البرنامج بتاعك اللي بعدها بيقع ومش بيقدر يشتغل بنفس الكفاءة.

4- Security Testing 

مهم تختبر أمان البرنامج بتاعك تجاه الهجمات المختلفة أو تسريب البيانات والنوع دا كذلك يتضمن أكثر من نوع اختبار.

 أما بالنسبة لأكثر أنواع هتحتاج تكتبها كمبرمج وهي معروفة بال testing pyramid:  

  • Unit Tests 
  • Integration Tests
  • End to end Testing (نوع من أنواع الـ system testing) في النوع دا أنت بتختبر flow أو مسار كامل داخل البرنامج, ولنقل بتختبر عملية الـ sign in العميل على الموقع من أول الداتا ما دخلت لحد ما اتخزنت ورجع response ليه.

بقية الأنواع بتكون غالبًا عمل جماعي سواء مع مبرمجين أو product managers،  بل في شركات ممكن تعين software testers أو quality assurance engineers متخصصين بس لاختبار البرمجيات اللي بتنتجها و أوقات بتخصص فرق كاملة أو شركات أخرى متخصصة في نوع معين من الاختبارات بالأخص ال security testing.

اشترك الآن بنشرة اقرأ-تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!