إذا كان عليك في أي وقت تتبع خطأ في شفرتك ، فأنت تعلم كيف يمكن أن يكون محبطًا. يزداد هذا الإحباط فقط إذا كنت تعمل على قاعدة بيانات كبيرة.
يتيح لك الاختبار التحقق مما إذا كانت نتائج التعليمات البرمجية تطابق توقعاتك. بهذه الطريقة ، يمكنك بسهولة تحديد المشكلة وإصلاحها قبل نشر التطبيق الخاص بك. بالإضافة إلى مساعدتك في اكتشاف أخطاء التعليمات البرمجية بشكل أسرع ، يجبرك الاختبار أيضًا على كتابة تعليمات برمجية جيدة.
1. اختبار ثابت
يشير الاختبار الثابت إلى الاختبارات التي يتم إجراؤها بدون تنفيذ التعليمات البرمجية. يحدث هذا من خلال مقارنة الكود بقواعد الترميز المحددة مسبقًا. تشمل الطرق الشائعة لإجراء الاختبار الثابت الفحص وفحص النوع.
يتضمن الفحص فحص الكود من أجل أخطاء البرمجة والأسلوب. يحلل linter الكود ويضع علامة على الأخطاء المحتملة. أمثلة على أدوات الفحص هي EsLint و PyLint و CSSLint.
فحص النوع هو عملية فرض قواعد الكتابة والقيود على القيم. تتم كتابة بعض لغات البرمجة بشكل قوي ، مما يعني أنها تتسبب في أخطاء عندما لا يتم كتابة القيم بشكل جيد.
ومع ذلك ، فإن بعض اللغات مثل JavaScript لديها نظام كتابة ضعيف وتكون أكثر تسامحًا. في هذه اللغات ، يصعب اكتشاف الأخطاء ، ومكتبة تدقيق النوع ضرورية. بالنسبة إلى JavaScript ، يمكنك ذلك
استخدم TypeScript لفرض الكتابة القوية.يمكنك أيضًا استخدام أدوات التحليل الثابتة لتحليل التعليمات البرمجية تلقائيًا. تتحقق هذه الأدوات من جودة الكود وتبلغ عن أي مشكلات تجدها. من أمثلة أدوات التحليل الثابتة في السوق SonarQube و DeepSource و SpotBugs. عند اختيار محلل ثابت ، تأكد من أنه يدعم لغة البرمجة الخاصة بك.
2. اختبارات الوحدة
تتحقق اختبارات الوحدة من أصغر الأجزاء القابلة للاختبار في التطبيق لتحديد ما إذا كانت تعمل على النحو المتوقع. يمكنك كتابة اختبارات الوحدة للوظائف والوحدات والأشياء وما إلى ذلك.
على الرغم من أن اختبارات الوحدة يمكن أن تستغرق وقتًا طويلاً ، إلا أنها يجب أن توفر وقتًا أطول مما كنت تنفقه تصحيح التطبيق بعد كتابة كل الشفرة.
بشكل عام ، يتكون اختبار الوحدة من أربع خطوات:
- عمل الاختبارات
- مراجعة الاختبار
- بازل
- تنفيذ الاختبار.
يمكنك كتابة اختبارات الوحدة يدويًا أو تشغيلها تلقائيًا باستخدام إطار عمل اختبار الوحدة. في الاختبار اليدوي ، ستكتب رمزًا لاختبار الوظيفة أو الوحدة التي تحتاجها ، ثم تحذف رمز الاختبار لاحقًا.
في حالة استخدام إطار عمل ، حدد الوحدة التي تختبرها والنتائج المتوقعة ، ثم قم بإجراء الاختبار. يقوم إطار الاختبار بعد ذلك بتسجيل الاختبارات الفاشلة والنجاحية. من الأفضل عمومًا استخدام إطار عمل لأنه أسرع.
عند كتابة اختبار الوحدة ، تأكد من أن الوحدة التي تختبرها مستقلة. إذا كانت تعتمد على بيانات خارجية مثل المتغيرات ، فيمكنك استخدام mocks. تستبدل Mocks البيانات المفقودة المستخدمة في الوحدة.
على سبيل المثال ، إذا كنت تختبر وظيفة تعتمد عليها جلب البيانات من API، يمكنك إنشاء كائن بيانات مزيف لأغراض الاختبار.
3. اختبارات التكامل
تتحقق اختبارات التكامل من كيفية عمل المكونات المختلفة معًا. هذا على عكس اختبارات الوحدة التي تختبر المكونات المستقلة. تكتب اختبارات التكامل بعد اختبارات الوحدة.
اختبارات التكامل ضرورية لأنها تضمن بقاء منطق التطبيق الخاص بك.
على سبيل المثال ، ضع في اعتبارك وحدتين: واحدة تجلب البيانات من واجهة برمجة التطبيقات والأخرى تحللها. قد ترغب في التأكد من أن شفرتك قد جلبت البيانات الصحيحة وحللتها بشكل صحيح.
هذا هو المكان الذي يأتي فيه اختبار التكامل. يضمن عدم وجود أخطاء في التدفق المنطقي من وحدة إلى أخرى.
4. الاختبارات الشاملة
يتحقق الاختبار الشامل من تدفق التطبيق من منظور المستخدم النهائي. تختبر العملية التطبيق من البداية إلى النهاية ، حيث سيستخدم المستخدم التطبيق. توفر هذه الاختبارات تغطية أكثر من اختبارات الوحدة أو اختبارات التكامل.
تحدد الاختبارات الشاملة تبعيات التطبيق وقواعد البيانات والاتصالات الخارجية. إنهم يكررون سيناريو العالم الحقيقي بأكبر قدر ممكن من الدقة.
على سبيل المثال ، عند اختبار نموذج الاشتراك ، سيختبر الاختبار الشامل سيناريوهات مختلفة مثل:
- يقوم المستخدم بإرسال كل من البريد الإلكتروني وكلمة المرور
- مستخدم يستخدم كلمة مرور ضعيفة
- مستخدم يستخدم بريدًا إلكترونيًا غير صالح
- مستخدم يرسل بريدًا إلكترونيًا فقط
- مستخدم يرسل كلمة مرور فقط
تضمن الاختبارات الشاملة أن يتصرف التطبيق كما هو متوقع في هذه السيناريوهات.
اختبارات الكتابة مقابل. كود الكتابة
يعد اختبار طلبك في وقت مبكر من عملية التطوير أمرًا حيويًا. في حين أن كل هذه الاختبارات ضرورية ، فإن إيجاد توازن يناسبك أمر مهم. وإلا ، فسوف تقضي وقتًا طويلاً في كتابة الاختبارات بدلاً من كتابة التعليمات البرمجية.
يعد اختبار الوحدة أمرًا بالغ الأهمية لمعظم التطبيقات ، وقد ترغب في تخصيص وقت كافٍ لها. بمجرد إجراء اختبارات الوحدة ، يمكنك التأكد من أن اللبنات الأساسية لتطبيقك تعمل بشكل صحيح.