اختبار البرامج هو عملية تقيم مقاييس البرامج باستخدام الأدوات أو البرامج النصية أو يدويًا.
الاختبار جزء لا يتجزأ من دورة تطوير البرمجيات. يوفر الاختبار الشامل معلومات متعمقة عن سلامة تطبيقك.
يمكنك منع الأخطاء وإصلاحها عن طريق كتابة الاختبارات وتقييم أداء البرنامج وأتمتة سير العمل.
الشروع في الاختبار في Go
توفر مكتبة Go القياسية ملفًا متطورًا اختبارات حزمة. ال اختبارات تحتوي الحزمة على قياس الأداء ، والتشويش ، والتخطي ، والاختبار الفرعي ، والمعايير الفرعية ، وغيرها من الوظائف.
الاختبار بهذه الحزمة سهل. إليك بنية اختبار بسيطة ستكون بمثابة نموذج للاختبار:
يكتب حالات هيكل {
// الناتج المتوقع للاختبار
مُتوقع int// ناتج الوظيفة
فِعلي int
// القيمة التي تقوم بنقلها إلى الوظيفة
جدال سلسلة
}
هذه وظيفة بسيطة تحول السلاسل إلى أعداد صحيحة. سيختبر اختبارك هذه الوظيفة.
يستورد (
"ستركونف"
)funcStringToInteger(شارع سلسلة)int {
عدد صحيح ، يخطئ: = strconv. أتوي (شارع)إذا يخطئ! لا شيء {
إرجاع0
}
إرجاع عدد صحيح
}
ال StringToInteger إرجاع الدالة 0 إذا كان هناك خطأ في التحويل والعدد الصحيح إذا لم تكن هناك أخطاء.
فيما يلي وظيفة اختبار لـ StringToInteger:
funcTestStringToInteger(اختبار * اختبار. تي) {
المتوقع: = StringToInteger ("3")caseInstance: = الحالات {
المتوقع: المتوقع إنت ،
فِعلي: 3,
}
إذا caseInstance.uable == caseInstance.actual {
// بعض التعليمات البرمجية هنا
} آخر {
اختبار. يفشل()
}
}
ال TestStringToInteger تقبل وظيفة الاختبار أ اختبارات. تي الكائن كحجة لها. ال المتوقع متغير يحمل نتيجة تحويل السلسلة. ال حالة المتغير هو هيكل الحالات المنبثقة للاختبار. ال إذا يقارن البيان القيم المتوقعة والفعلية.
ال يفشل تقوم الطريقة بإرجاع اختبار فاشل في عبارة else إذا كانت القيم غير متساوية.
يوفر Go أ اختبار أمر لأتمتة واسترداد الرؤى حول الاختبارات والبرامج الخاصة بك.
يذهب اختبار
يذهب مساعدة في الاختبار
توفر صفحة المساعدة معلومات مفصلة عن كيفية القيام بذلك اذهب للاختبار يعمل:
يعد النظام البيئي Go موطنًا للعديد من المكتبات التي تجعل الاختبار أكثر سهولة ومرونة. هناك الكثير من الوظائف بخلاف اختبارات الحزمة ، بما في ذلك اختبار الانحدار والوحدة.
حزمة تستيفاي
حزمة تستيفاي هو أحد أكثر أطر عمل Go شيوعًا لاختبار الحزم. إنه يوفر الأدوات التي ستحتاجها لكتابة اختبارات فعالة ، مع تأكيدات سهلة ، وسخرية ، واختبار وظائف المجموعة.
يعتبر Testify مناسبًا للتطوير القائم على الاختبار نظرًا لأن الحزمة توفر ملف يسخر حزمة. يوفر هذا آلية لكتابة كائنات وهمية يمكنك استخدامها بدلاً من كائنات حقيقية في الاختبار.
توفر الحزمة أيضًا:
- ان يجزم الحزمة التي توفر طرقًا مفيدة لكتابة اختبارات ودية ومقروءة.
- أ يتطلب حزمة مماثلة ل يجزم حزمة لإرجاع النتائج المنطقية.
- أ جناح حزمة لأجنحة الاختبار مع الهياكل.
يمتد Testify على اختبارات الحزمة ، ويمكنك استخدام ملف اذهب للاختبار أمر لإجراء اختبارات مكتوبة باستخدام حزمة Testify.
يدعم Testify إصدارات Go من 1.13. يمكنك إضافة الحزمة باعتبارها تبعية مشروع باستخدام هذا الأمر:
يذهب احصل على github.com/stretchr/testify
إليك اختبار توكيد بسيط مع حزمة Testify يجزم حزمة:
حزمة رئيسي
يستورد (
"اختبارات"
"github.com/stretchr/testify/assert" // تأكيد الحزمة فقط
)// يجب أن يكون اسم الوظيفة "شيء ما" حسب الاصطلاح
funcاختبار شيء(t * الاختبار. تي) {
// تأكيد المساواة
يجزم. يساوي (ر ، 123, 123، "يجب أن يكونوا متساوين")
// تأكيد عدم المساواة
يجزم. NotEqual (ر ، 123, 456، "لا ينبغي أن تكون متساوية")
}
ال اختبار شيء تأخذ وظيفة الاختبار بنية نوع الاختبار لـ اختبارات الحزمة كحجة. ال متساوي و غير متساوي الأساليب للتأكيدات القائمة على المساواة وعدم المساواة من Testify's يجزم حزمة.
حزمة GoConvey
GoConvey هي أداة اختبار Go معدة للتعبير على مدى اختبارات حزمة. ويشمل المحطة الطرفية (CLI) والمتصفح (GUI) وظيفة الاختبار.
تتكامل حزمة GoConvey مع ملف اختبارات الحزمة ، التي توفر واجهة مستخدم ويب للعمل مع اختبارات Go الأصلية. يتضمن أيضًا وظائف لاختبارات الانحدار والمخرجات القابلة للتخصيص وإنشاء كود الاختبار. يمكنك تشغيل الاختبارات تلقائيًا ، والوصول إلى تنسيقات التغطية في HTML ، وتخصيص واجهة المستخدم الرسومية.
قم بتشغيل هذا الأمر في المحطة الطرفية لمساحة العمل Go لتثبيت حزمة Go Convey.
يذهب احصل على github.com/smartystreets/goconvey
إليك مثال بسيط لكتابة الاختبارات باستخدام حزمة GoConvey.
حزمة رئيسي
يستورد (
. "github.com/smartystreets/goconvey/convey"
"اختبارات"
)funcاختبار شيء(t * الاختبار. تي) {
// فقط قم بتمرير t إلى مكالمات Convey عالية المستوى
نقل ("إعلان متغير" ، t ، func() {
س: = 1نقل ("متغير الزيادة"، func() {
x ++
نقل ("تأكيد المساواة"، func() {
لذا (x، shouldEqual، 2)
})
})
})
}
ستحتاج إلى استيراد ملف نقل الحزمة باستخدام تدوين النقطة للاختبار.
وظيفة النقل من نقل تساعد الحزمة في تحديد نطاق الاختبار. الاخير نقل دالة استدعاء في مثال التعليمات البرمجية تؤكد المساواة بين x متغير و 2، باستخدام يجب أن تكون متساوية وظيفة.
حزمة توقع HTTP
ال توقع HTTP الحزمة عبارة عن حزمة تعريفية سهلة الاستخدام وموجزة لاختبار Go's من طرف إلى طرف HTTP و REST API. يمكنك استخدامه لبناء طلبات HTTP بشكل تدريجي وفحص الردود وحمولاتها بشكل متكرر.
ال http توقع الحزمة عبارة عن مجموعة من أدوات الإنشاء القابلة للتسلسل لطلبات وتأكيدات HTTP على استجابات وحمولات HTTP. انها مبنية على http, اختبارات، والحزم الأخرى. تعمل الحزمة أيضًا بشكل جيد مع الجهاز المدمج أحسنت حزمة.
http توقع يوفر وظائف لبناء الطلبات باستخدام إنشاء عنوان URL والرؤوس وملفات تعريف الارتباط والحمولات. إنه يتعامل مع تأكيدات الاستجابة وتأكيدات الحمولة والطباعة الجميلة و WebSockets.
قم بتشغيل هذا الأمر في المحطة الطرفية لدليل العمل لتثبيت ملف http توقع حزمة.
يذهب احصل على github.com/gavv/httpexpect
فيما يلي مثال بسيط لاختبار دالة معالج باستخدام امتداد http توقع حزمة.
حزمة رئيسي
يستورد (
"fmt"
"github.com/gavv/httpexpect/v2"
"net / http"
"net / http / HTptest"
"اختبارات"
)funcعلى سبيل المثال المعالج()http.معالج {
إرجاع http. المعالجfunc(الكاتب http. ResponseWriter ، طلب * http. طلب) {
FMT. Fprintln (كاتب "Hello World")
})
}funcاختبارالمعالج(t * الاختبار. تي) {
// إنشاء http. معالج
المعالج: = exampleHandler ()// تشغيل الخادم باستخدام HTptest
الخادم: = HTptest. NewServer (معالج)
تأجيل الخادم. قريب()// إنشاء http توقع مثيل
توقع: = httpexpect. جديد (t ، server. URL)
// إنه يعمل؟
توقع. احصل على("/").
يتوقع().
الحالة (http. StatusOK) .JSON (). Array (). Empty ()
}
ال على سبيل المثال المعالج ترجع الدالة handler معالج HTTP لـ http توقع حزمة. ال اختبارالمعالج تعلن الدالة عن مثيل لدالة المعالج. ثم يقوم بإنشاء خادم جديد لاختبار نقطة النهاية بامتداد أحسنت حزمة.
ال توقع المتغير هو الخاص بك http توقع المثال الذي يضرب احصل على طلب مسار جذر نقطة النهاية على الخادم. ال حالة إرجاع الدالة رمز الحالة (في هذه الحالة، 200) إذا نجح الاختبار.
اكتب اختبارات شاملة وبديهية
تقطع الاختبارات شوطًا طويلاً في تقييم سلامة تطبيقك ، وهناك العديد من أنماط الاختبار والأساليب التي يمكنك استخدامها لبرامجك. في صميم سير عمل الاختبار الخاص بك ، يجب أن تكتب اختبارات بديهية يمكنك تحسينها مع تغير برامجك بمرور الوقت.