ฉันจะบอกว่านี่เป็นส่วนหนึ่งของกรณี เนื่องจากรอบ การดำเนินการบล็อกเดียวจะดำเนินการหลายครั้ง นอกจากนี้ บล็อกยังไม่ใช้อินพุตพิเศษ: คุณมีหนึ่งบล็อกที่แมปกับบล็อกเอาต์พุตหนึ่งบล็อก
อย่างไรก็ตาม นั่นยังไม่ใช่เรื่องราวทั้งหมด ก่อนอื่น การคำนวณบางอย่างในรอบอาจต้องใช้เวทมนตร์มากกว่าปกติเล็กน้อย หากมีกรณีขอบที่เป็นไปได้ กรณีเหล่านั้นอาจไม่ถูกกระตุ้นด้วยการดำเนินการบล็อกเดียว ผู้ที่คุณควรทดสอบแยกต่างหาก
ที่สำคัญกว่านั้น: ในขณะที่ด้านบนทดสอบการดำเนินการบล็อก มันไม่ได้ทดสอบการดำเนินการสตรีม สิ่งนี้มีแนวโน้มที่จะทำให้เกิดปัญหามากขึ้น ปัญหาคือการเข้ารหัส / ถอดรหัส (เช่น ไบต์ต่อคำ) และการบัฟเฟอร์นั้นไม่สำคัญน้อยกว่าที่หลายคนคาดไว้ ดังนั้นจึงเหมาะสมที่จะทดสอบขนาดข้อความธรรมดาทุกประเภท และตรวจสอบให้แน่ใจว่าเป็นเช่นนั้น อัปเดต
ทำหน้าที่ได้อย่างถูกต้อง สิ่งนี้ไม่แตกต่างจากการทดสอบฟังก์ชันที่ไม่ใช่การเข้ารหัส คุณจะคาดหวังปัญหาเดียวกันกับการดำเนินการเข้ารหัส/ถอดรหัสและ I/O เป็นต้น
ปัญหาหนึ่งที่ฉันพบมาหลายครั้งคือทีมทดสอบเพิกเฉยต่อการใช้งานเอง เป็นเรื่องปกติที่จะทดสอบกับข้อกำหนดการทดสอบอย่างเป็นทางการ แต่ถ้ามีตัวเลือกการออกแบบเฉพาะสำหรับการนำไปใช้งาน ก็ควรทำการทดสอบสิ่งเหล่านี้เช่นกัน ตัวอย่างเช่น อาจเป็นไปได้ว่าการดำเนินการมีบัฟเฟอร์ล้น แม้ว่าการทดสอบอย่างเป็นทางการทั้งหมดจะทำงานโดยไม่มีเหตุการณ์ใดๆ ก็ตาม ฉันจะไม่เล่าเรื่องสยองขวัญซ้ำที่นี่ แต่ใช่...
ประการสุดท้าย เนื่องจากเป็นไซต์เข้ารหัส: หากคุณอ้างสิทธิ์ใดๆ เกี่ยวกับการป้องกันการโจมตีช่องทางด้านข้าง คุณก็ควรทดสอบสิ่งเหล่านั้นด้วยเช่นกัน แน่นอนว่าคุณค่อนข้างโชคดีที่นี่ เนื่องจากโดยทั่วไปแล้ว Bernstein จะถือว่าการโจมตีในลักษณะนี้เมื่อออกแบบรหัสลับ แต่การใช้งานอาจมีความเสี่ยงไม่น้อย
ที่กล่าวมาทั้งหมดนี้ ไม่ใช่เรื่องเสียหายที่จะใช้งานของคุณกับชุดที่ครอบคลุมมากขึ้น เพียงใช้ไลบรารีที่มีอยู่ (หรือสองไลบรารีอิสระ) และสร้างเวกเตอร์ชุดใหญ่ด้วยตัวคุณเอง อีกครั้ง โฟกัสที่ขอบเคส การทำการทดสอบแบบคลุมเครือเล็กน้อยก็ไม่เสียหายเช่นกัน