مرحبًا بعودتك.
لنقم بتمرين صغير ممتع من خلال إعادة النظر في جزء من التعليمات البرمجية التي كتبناها من قبل.
هل تتذكر لعبة التخمين بالأرقام العشوائية حيث يتعين علينا تخمين رقم بين واحد وعشرة؟
إذا قمت بتشغيل هذا الملف ، هل ترى ذلك؟
طلبت مني التخمين.
لنفترض إذن واحد ، اثنان ، ثلاثة ، أربعة ، خمسة ، ستة ، سبعة ، ثمانية ، تسعة.
وأخيراً حصلت على الرقم.
انت عبقري.
كان الرقم تسعة.
فكيف يمكننا اختبار هذا الرمز؟
الآن ، هناك شيء واحد ستلاحظه هنا وهو أننا لا نملك بالفعل وظيفة.
وتذكر عندما أخبرتك عن البرمجة الوظيفية وكيف أنه من الجيد تقسيم الكود الخاص بنا إلى
أجزاء صغيرة من الوظائف التي تقوم بشيء واحد وشيء واحد بشكل جيد حقًا ، خاصة الوظائف الصرفة.
حسنًا ، إحدى الفوائد الكبيرة لهذه العقلية هي أنك تنشئ رمزًا يسهل اختباره
حقًا.
بدلاً من وجود منطق معقد حقًا في اختباراتنا ، يمكننا ببساطة إعطاء وظائفنا مدخلاً
وتوقع مخرجات.
وهذا هو سبب وجود اختبار الوحدة.
وفكرة اختبار الوحدة هي أننا نختبر كل قطعة من الوحدات.
اختبارات الوحدة هذه عبارة عن قطع صغيرة صغيرة تختبر هذه الوظائف البسيطة.
لذا فإن التحدي الذي أواجهه هو استخدام هذا الرمز ومحاولة تقسيمه إلى وظائف بسيطة.
حاليا.
في حالتنا ، أريدنا فقط اختبار هذا الجزء من الكود ، وهو جزء التخمين ، حيث نتلقى
مدخلات.
والذي سيكون التخمين ثم اختباره مقابل بعض الإجابات العشوائية التي لدينا ويجب أن نتوقع نوعًا
من المخرجات.
لذلك إما أن ندخل رقمًا.
يجب أن يكون من 1 إلى 10.
وإذا فهمناها بشكل صحيح ، فعلينا الحصول على الخيط.
لكن المفتاح هنا هو أننا ربما نريد نقل هذا إلى وظيفة يمكننا اختبارها.
يمكننا تجاهل العالم الخارجي.
وقسم هذا إلى وظيفته الصغيرة.
لذا أوقف الفيديو هنا وجربه.
سيتعين عليك اجتياز بعض العقبات ، لكنها ستختبر حقًا فهمك للاختبارات.
ها ها.
مضحك.
كان ذلك تورية.
لذا أوقف الفيديو مؤقتًا ، وجربه.
خلاف ذلك ، سأبدأ بالإجابة.
أول شيء أريد القيام به هو إعداد الاختبار الخاص بي مرة أخرى.
سأقوم باستيراد اختبار الوحدة وسأقوم بإنشاء اختبار الفصل الرئيسي.
أو لنسميها نص اختبار هذه المرة أو لعبة اختبارية.
سأقول اختبار الوحدة.
حالة اختبار.
ستكون هذه حالتنا الاختبارية.
ثم سأقوم هنا ، دعنا نقول ، بإنشاء مجرد اختبار بسيط ، دعنا نقول.
لعبة أو اختبار الإدخال.
احصل على الذات.
والآن ، سأمرر هذا لأننا في الحقيقة لا نفعل أي شيء.
أخيرًا ، سأقول إذا.
الاسم لأن اثنين رئيسيين ثم تشغيل اختبار الوحدة.
نقطة رئيسية.
إذن هذا مجرد إعدادنا البسيط.
لذا إذا قمنا بتشغيل هذا الآن ، فلنفترض أن بايثون ثلاثة.
اختبار بي.
نرى أننا أجرينا اختبارًا واحدًا.
حسنا.
إذن هذا هو إعدادنا.
بعد ذلك ، ما أريد فعله هو في الواقع إخراج هذا حتى أتمكن من استخدامه في ملف الاختبار الخاص بي عن طريق استخراجه
في وظيفة.
لذلك سأقول فقط في الأعلى هنا.
سأقوم بتحديد تخميننا.
لعبة أو لنسميها تشغيل.
خمن.
هذا سوف يتلقى مدخلات.
أو لنفترض تخمينًا ، وبعد ذلك سيتم تشغيل هذا الرمز.
لذلك دعونا نفعل ذلك.
سوف أخذ.
هذه القطعة من الكود.
مثله.
وببساطة قم بلصقه هنا.
الآن سيحتاج التخمين الخاطئ أيضًا إلى متغير الإجابة.
لذلك سأعطيها إجابة معلمة ثانية.
مثله.
لذلك يمكنني الآن ببساطة من الداخل.
قم بتشغيل هذه الوظيفة مع التخمين والإجابة.
مثل هذا تماما.
لذلك دعونا نحفظه هنا ونجري هذا الاختبار ، أو لنقم فقط بتشغيل الملف الفعلي للتأكد من أنه لا يزال
يعمل.
أوه ، ولدينا القليل من المسافة البادئة هناك.
لذا علينا التأكد من صحة المسافة البادئة.
لأن تذكر في بايثون ، هذا يعني شيئًا ما.
حسنا.
الآن لدينا مشكلة.
لدينا استراحة خارج الحلقة لأننا بينما نستخدم كلمة مفتاح الفصل ، فإننا خارج
الحلقة الآن.
شيء واحد يمكننا القيام به هو أن نقول العودة هنا.
لذلك دعونا نجري ذلك مرة أخرى.
واستمر في تخمين الاسم.
أو رقم.
وها أنت ذا.
هذا لا يزال يعمل.
أنا قادر على استخدام العودة هنا لأن هذا البئر سوف يعمل ويعود.
لكننا الآن ما زلنا داخل اللعبة.
لذلك ربما يمكننا العودة.
حقيقي.
ويقول إذا.
تشغيل التخمين.
انها حقيقة.
سوف نخرج من هذا.
ثانية.
لنبدأ لعبتنا.
سأقوم بمسح هذا وتشغيل اللعبة مرة أخرى.
واحد إثنان ثلاثة أربعة.
وها أنت ذا.
لقد أدخلت رقمًا.
انا عبقري.
لقد انتهينا للتو من اللعبة.
لنجعل هذا أصغر قليلاً حتى تتمكن من رؤيته.
لذلك لدينا شوطنا.
أعتقد أنني قمت بتعديل الكود قليلاً.
لكن الشيء الرئيسي هو أنني استخرجت وحدة من الوظائف حتى أتمكن من اختبار شيء مثل Run.
خمن.
لذلك يبدو أنني قمت بتعديل الكود الخاص بنا ، لكن الكود لا يزال يعمل.
فلنبدأ الآن في اختبار دالة التشغيل التخمينية.
لنذهب هنا.
وابدأ في استيراد البرنامج النصي الخاص بنا.
وهنا افعل بعض الأشياء.
أولًا ، أريد إجابة تساوي خمسة.
والتخمين سيساوي خمسة.
لذلك نريد التأكد من أنه إذا كان التخمين والإجابة متطابقين ، حسنًا
، فإن الضيف الخطأ يمر عبر عبارة if ويطبع أنك عبقري أو غير صحيح.
لذلك دعنا نقول تأكيد النقطة الذاتية.
متساوي.
هذا البرنامج النصي أو في المرة الأولى لنشغّله بالفعل.
إذن ، لنحصل على نتيجة تساوي script dot.
ماذا كان؟
اركض ، خمن.
يجري.
خمن.
وأعطها الجواب.
وتخمين.
ونتوقع النتيجة.
يعود.
حقيقي.
لذلك يمكننا أن نقول فقط التأكيد على صحة ذلك.
النتيجة صحيحة.
إذا قمت بتشغيل هذا الآن.
أوه ، لقد بدأنا اللعبة بالفعل.
فكيف يمكننا إصلاح هذا؟
حسنًا ، يمكننا إغلاق هذا وإضافة اسم if فعليًا.
هنا.
لذلك هنا بالأسفل.
سنقول ، مهلا ، قم بتشغيل هذا فقط إذا كان هذا هو الملف الرئيسي الذي يتم تشغيله على هذا النحو.
إذا عدت للاختبار هنا وقمت بتشغيل هذا مرة أخرى.
حسنا.
إنها تعمل الآن ولكني حصلت على خطأ في التأكيد على أن كائن لعبة اختبار ليس له سمة تؤكد صحتها لأنه.
حسنًا.
يخطئ في تهجئة ذلك.
لنحاول ذلك مرة أخرى.
حسنا.
يبدو أنه تم إجراء اختبار واحد وكل شيء على ما يرام.
نرى أيضًا أنه مطبوع.
انت عبقري.
جميل جدا جدا.
بالمناسبة ، أريكم طريقة الاختبار هذه لأن هذا هو شكل سيناريو الحياة الواقعية.
تستمر في كسر الأشياء ، وتستمر في ارتكاب الأخطاء ، ثم تحاول إصلاحها وتصحيح التعليمات البرمجية الخاصة
بك.
ويمكنك أن ترى أن الكود الخاص بنا يبدو بالفعل أفضل وأفضل بمجرد تشغيل هذه الاختبارات.
تمام.
ماذا يمكن ان نفعل ايضا؟
دعنا نقول هنا.
أننا سنقوم بنسخ هذا.
ولكي تكون الأشياء أقصر ، سأقوم بإدخال المعلمات مباشرةً هنا.
مثل هذا تماما.
لنفترض أن الإدخال ، دعنا نقول غير صحيح.
أو.
تخمين خاطئ.
لنفترض أن الإجابة هي خمسة وأعتقد أنها صفر.
لذا نريد أن نؤكد أن هذا سيساوي خطأ.
لذلك إذا قمت بتشغيل هذا.
لاختبار نجاحهم.
هذا رائع.
ماذا يمكننا أن نختبر هنا؟
حسنا.
حسنًا ، نريد اختبار ذلك إذا لم يكن التخمين بين صفر وعشرة أو بين واحد وعشرة.
في هذه الحالة ، نريد طباعة.
مرحبًا ، بوزو.
قلت من 1 إلى 10.
لذا مرة أخرى ، يمكنني الاختبار.
هذا إذا كان تخميني خاطئًا.
رقم.
لنفترض أن الإجابة هي خمسة ، لكنني أعطي 11.
نريد أن نؤكد.
حسنًا ، نحن الآن نطبع ولا نفعل أي شيء.
لذا ربما يجب أن نعود بالخطأ لمجرد الحصول على بعض الاتساق هنا.
مرة أخرى إذا فعلت ذلك وركضت.
ها أنت ذا.
تم اجتياز ثلاثة اختبارات.
ذلك رائع.
وهناك الكثير والكثير من الاختبارات التي يمكننا كتابتها.
ربما دعونا نجري اختبارًا آخر ، وهو الاختبار.
ماذا لو كان الإدخال عبارة عن سلسلة؟
إذا قمت بتشغيل هذا.
أوه.
وتأكد من أن هذا خطأ.
أكتب هنا.
تأكد من اختلاف الأسماء.
ولدي أربعة اختبارات قيد التشغيل.
لأن هذا لن يمر وسوف يعود خطأ.
الآن هناك الكثير من الأشياء التي يمكننا القيام بها هنا.
لكن يمكنك أن ترى قوة الاختبار الآن.
إذا كانت لديك اختبارات مختلفة عني ، فلا بأس بذلك ، الجميع.
حالات الاختبار مختلفة.
بيت القصيد من الاختبار هو ببساطة.
انظر إلى الكود الخاص بنا وشاهد كيف يمكننا تحسينه ، وكيف يمكننا كسر الكود الخاص بنا ، وكيف يمكننا
تبسيط الكود الخاص بنا عن طريق تقسيمه إلى وحدات أصغر ، ووحدات أصغر يمكن اختبارها وإصلاح بعض الأخطاء التي
ربما نريد التفكير فيها .
الآن هناك الكثير من الأشياء التي يمكننا القيام بها ، لكن ستلاحظ هنا كيف كانت الفكرة العمل على قطعة
صغيرة في كل مرة.
اختبرها ، ومن ثم ربما يمكننا النظر في هذا الجزء من الكود أو ربما محاولة قبول جزء من الكود
وقبوله.
وهذا هو الشيء.
عندما تعمل لصالح شركة ، أقول إن هناك عددًا لا حصر له من الاختبارات التي يمكنك إجراؤها.
يمكنك الحصول على مئات الأسطر هنا لاختبار الكود الخاص بك إلى وحدات بت.
ولكن لمجرد أنك تختبر عدة مرات قدر الإمكان ، فهذا لا يجعل اختباراتك جيدة حقًا.
كما قلت ، هناك عدد لا حصر له من الاختبارات التي يمكنك كتابتها.
الفكرة هي الكتابة إلى اختبارات الجودة الجيدة التي تغطي معظم حالاتك.
ولكن في النهاية ستحصل على عوائد متناقصة حيث يتعين عليك الحصول على مقايضة بين كتابة التعليمات البرمجية
وكتابة الاختبارات.
وأحيانًا ، بناءً على ما تتطلبه الوظيفة ، قد تضطر إلى التركيز أكثر على الاختبارات والتركيز بشكل
أقل على الكود.
أو ربما تحتاج في بعض الأحيان إلى التحرك بسرعة وليس لديك الوقت لكتابة الاختبارات.
ومرة أخرى ، بناءً على احتياجات العمل ، قد يكون هذا هو الحال أيضًا.
ولكن مع هذا القسم ، أتمنى أن تفهم بعض المبادئ التالية للاختبار في تطوير البرمجيات.
وهذا يعني أن الأخطاء ستظهر دائمًا في التعليمات البرمجية الخاصة بنا.
ويمكننا استخدام الإضاءة لمساعدتنا في ذلك.
ولكن من أفضل الطرق للتأكد من أن الكود الخاص بنا يعمل بشكل صحيح هو الاختبار.
وكلما زاد عدد الاختبارات التي نجريها عادةً ، زادت ثبات الكود الخاص بنا.
سأراك في المرحلة التالية.
مع السلامة.