اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته كان هذا مقالا لاحد المدربين في الدورة :
 

تكمن أهمية clean code في التالي :- 

أولاً فهم المنطق الكامل من الكود : في حال مثلاً قمت بتقديم مشروعك لأحد المؤسسات والشركات وطلب أحد منك شرح بعض الأكواد سوف يكون عليك من السهل شرحه وهو مرتب أما إذا كان عشوائي وغير مرتب سوف تواجه صعوبة في شرح الأكواد . 

ثانياً الصيانة والتطوير : بحيث أن كتابة الكود سهل لكن قراءته صعبة ، بحيث أن المطورين يفضلون إعادة كتابة الكود بدلاً من القيام في فهم الكود الموجود وهو بالتالي عمل شاق ، من خلال كتابة clean code فأنت تقوم بتوفير وقت كبير لقراءة القوم عند حدث أي تغير أو صيانة في البرمجة . 

ثالثاً البساطة : كلما كان الكود بسيطاً وقابلاً للقراءة دون الدخول في تعقيدات ، يمكنك إنتاج كود عالي الجودة وحل للمشكلات بشكل أسرع . 

رابعاً سهل الاختبار : من خلال المساعدة بالاختبار الألي للكود ، تعتبر طريقة الأكثر فاعلية لتحسين جودة الكود . 

أهمية clean code لا تقتصر على هذه المميزات بل أيضاً عند قراءة أحد ما للكود الخاص بك وهو مرتب ، سوف يأخذ عنك فكرة جميلة بأنك مبرمج محترف ويمكنك إنجاز العمل بسهولة ودون تعقيد .

اردت انا اعلم فقط ما معني سهل الاختبار وما الفائدة منه

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله،

بتاريخ 2 دقائق مضت قال محمود السعيد عوف:

اردت انا اعلم فقط ما معني سهل الاختبار وما الفائدة منه

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

  1. اختبارات الوحدات (Unit tests): وفيها يتم اختبار دوال و أصناف التطبيق، وقطع كود منطقية منه، عن طريق تشغيلها باستخدام معاملات محددة ثم رؤية هل تعيد النتائج المتوقعة أم لا.
  2. اختبارات التكامل (Integration tests) : وفيها يتم اختبار التطبيق كوحدة واحدة بطريقة مشابهة لما يقوم به المستخدم الحقيقي للتطبيق،  ويتم رؤية هل يقوم التطبيق بأداء الوظائف المحددة أو عرض الرسائل المتوقعة عند القيام بعملية معينة.

عندما يكون لديك كود مشروع صغير (مثل أغلب المشاريع التي يتم تدريسها في الدورات)، ويكون العمل عليه من طرف شخص واحد فقط. فقد تشعر بأن إنشاء أكواد اختبار لتطبيقك سيكون مضيعة للوقت بلا فائدة. لكن في المشاريع الحقيقية التي تلبي حاجيات مئات أو آلاف المستخدمين، فهذه ضرورة ملحة. لأن الاستمرار بالعمل على المشروع من طرف عدد من المطورين في نفس الوقت سوف يؤدي بكل تأكيد إلى حصول أخطاء في أماكن غير متوقعة حتى لو كانت تلك الأماكن لم يتم التعديل عليها بشكل مباشر. لأن في المشاريع الكبيرة تكون الأجزاء مترابطة بشكل كبير وأي سهو في مكان معين يؤدي إلى ظهور مشاكل في أماكن أخرى. لذلك، فإن من وسائل اكتشاف الأخطاء مبكرا هي كتابة مثل هذه الاختبارات وإعادة تشغيلها في كل مرة يتم فيها أي تعديل على الكود. تشغيل الاختبارات يمكن أن يتم تلقائيا، وهذا ما يعرف باسم التكامل المستمر (Continuous Integration).

يمكنك الاطلاع حول المزيد من المعلومات حول التكامل المستمر والنشر المستمر (Continuous Delivery) في هذا المقالات:

 

  • 0
نشر

المصطلح سهل الاختبار يعني أن الكود مكتوب بطريقة تتيح اختباره بسهولة باستخدام اختبارات وحدات (Unit Tests) أو اختبارات تكامل (Integration Tests). كما وضح حمزة بشكل رائع هي الاختبارات

ويكون الكود سهل الإختبار عن طريق بعض الممارسات:

  •  يجب أن يكون الكود قابلاً للعزل، بمعنى أن الأجزاء المختلفة من الكود يمكن اختبارها بشكل مستقل عن الأجزاء الأخرى.
  • الكود البسيط والمرتب يسهل فهمه، وبالتالي يسهل كتابة اختبارات له. عندما يكون الكود معقدًا وغير مرتب، يصعب فهمه واختباره.

وبالطبع جعل الكود سهل الاختبار يعتبر جزءًا أساسيًا من ال clean code .

  • 0
نشر

في بداية تعلمك لا حاجة لأن تشغل بالك بالكود النظيف، بل تعلم الطريقة الصحيحة والنظيفة لكتابة الكود لكن لا تجعل تركيز منصب على ذلك، بل على تنفيذ المطلوب فقط بغض النظر عن جودة الكود، وبعد الوصول لمستوى متقدم تستطيع الإهتمام بجودة الكود. 

وبخصوص الإختبارات فلن تجد لها أهمية في المشاريع البسيطة، لكن في المشاريع المتوسطة والمعقدة تظهر أهميتها.

وبالطبع الكود النظيف يجعل الأمر أسهل وأسرع بمراحل ويجنبك الكثير من الأخطاء ويزيد من أداء الكود، فكيف ستقوم بإختبار كود وهو غير منظم ومكتوب بشكل جيد؟

للتوضيح يوجد أنواع كثيرة جدًا من الإختبارات وهي:

  • اختبار الوحدة Unit Testing: يتمثل في اختبار الأجزاء الصغيرة من الكود بشكل مستقل، مثل الدوال أو الأساليب، للتأكد من أنها تعمل بشكل صحيح.
  • اختبار التكامل Integration Testing: يهدف إلى اختبار كيفية تفاعل الوحدات المختلفة مع بعضها البعض لضمان أن النظام ككل يعمل بشكل صحيح عند دمج الوحدات.
  • اختبار النظام System Testing: يشمل اختبار النظام بأكمله، بما في ذلك جميع مكوناته، للتأكد من أنه يلبي المواصفات المطلوبة ويعمل كما هو متوقع.
  • اختبار القبول Acceptance Testing: يتم إجراء هذا الاختبار للتأكد من أن النظام يلبي معايير القبول التي حددها العميل أو المستخدم النهائي، مما يضمن رضاهم عن المنتج.
  • اختبار الانحدار Regression Testing: يتمثل في إعادة اختبار النظام بعد إجراء تغييرات أو تحديثات لضمان أن التعديلات الجديدة لم تقدم أخطاء جديدة إلى النظام.
  • اختبار الوظائف Functional Testing: يهدف إلى ضمان أن النظام يؤدي الوظائف المقصودة ويلبي المواصفات المطلوبة، من خلال اختبار كل وظيفة على حدة.
  • اختبار الأداء Performance Testing: يتم اختبار النظام للتأكد من قدرته على التعامل مع الحمل المتوقع وأدائه الجيد تحت ظروف الضغط.
  • اختبار الأمان Security Testing: يهدف إلى تحديد نقاط الضعف في النظام وضمان أمانه ضد الوصول غير المصرح به والهجمات الخبيثة.
  • اختبار القابلية للاستخدام Usability Testing: يهدف إلى ضمان أن النظام سهل الاستخدام وملائم للمستخدم النهائي، مما يحسن من تجربة المستخدم.
  • اختبار التوافقية Compatibility Testing: يتم إجراء هذا الاختبار للتأكد من أن النظام يعمل بشكل صحيح على مختلف البيئات والمنصات والأجهزة.
  • اختبار الاستكشاف Exploratory Testing: يتمثل في اختبار النظام بطريقة غير مهيكلة وإبداعية بهدف اكتشاف مشكلات قد لا يتم اكتشافها عبر الاختبارات المهيكلة.
  • اختبار الصندوق الأسود Black Box Testing: يتم اختبار النظام بدون معرفة تفاصيل الكود الداخلي، والتركيز فقط على المدخلات والمخرجات.
  • اختبار الصندوق الأبيض White Box Testing: يتم اختبار النظام مع معرفة تفاصيل الكود الداخلي، والتركيز على هيكل الكود وتصميمه.
  • اختبار الصندوق الرمادي Gray Box Testing: يتم اختبار النظام مع معرفة جزئية بتفاصيل الكود الداخلي، والتركيز على كيفية تفاعل المكونات مع بعضها البعض.
  • اختبار قبول المستخدم User Acceptance Testing UAT: يتم إجراء هذا الاختبار مع المستخدمين الحقيقيين لضمان أن النظام يلبي احتياجاتهم وتوقعاتهم.
  • اختبار بيتا Beta Testing: يتم إصدار النظام لمجموعة محدودة من المستخدمين في بيئة حقيقية لاختباره قبل الإطلاق النهائي.
  • اختبار ألفا Alpha Testing: يتم اختبار النظام داخليًا من قبل فريق التطوير أو فريق مختبرات الجودة قبل إصداره للمستخدمين الخارجيين.
  • اختبار الدخان Smoke Testing: يتم إجراء اختبارات أولية للتأكد من أن النظام يمكنه أداء وظائفه الأساسية وأنه مستقر بما يكفي لمزيد من الاختبارات.
  • اختبار الصحة أو الاستقرار Sanity Testing: يتم إجراء اختبارات سريعة للتأكد من أن النظام يعمل بشكل صحيح بعد إجراء تغييرات أو تصحيحات.
  • اختبار نهاية إلى نهاية End-to-End Testing: يشمل اختبار النظام من البداية إلى النهاية، محاكاة سيناريوهات واقعية وتفاعلات المستخدمين لضمان أن جميع الخطوات تعمل بشكل صحيح.

هل يجب القيام بكل ما سبق؟ بالطبع لا، حسب طبيعة المشروع، لكن في كل مشروع هناك 5 إختبارات ضرورية وهم:

  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing
  • Regression Testing

بالطبع أنت ربما لا تستطيع القيام بالخمس اختبارات معًا، لذا Unit Testing لا غنى عنه ثم Integration Testing.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...