การทดสอบแบบรวมใช้ mocks หรือไม่


24

ขณะนี้ฉันอยู่ในชั้นเรียนสำหรับการทดสอบซอฟต์แวร์ที่สำหรับโครงการภาคการศึกษาของเราเราต้องทำการทดสอบหลายประเภทเช่นการทดสอบหน่วยและการทดสอบการรวม สำหรับการทดสอบการรวมตัวอาจารย์กล่าวว่าจะใช้ห้องสมุด mocks และการเยาะเย้ย (เช่น EasyMock และ Mockito) สำหรับการทดสอบการรวมกลุ่มของเรา ฉันเริ่มสับสนแล้ว การทดสอบการรวมเป็นการทดสอบนอกชั้นเรียนโมดูลบริการ ฯลฯ เหตุใด mocks และ stubs จึงเหมาะสมที่จะใช้ในการทดสอบการรวมหากคุณกำลังทดสอบคลาสและบริการที่หลากหลาย


8
การทดสอบ "การรวมระบบ" และ "หน่วย" ไม่ได้รับการยอมรับตามข้อกำหนด เป็นการดีที่สุดที่จะถามอาจารย์ของคุณอย่างชัดเจนว่าพวกเขาได้นิยามคำเหล่านั้นอย่างไร
RubberDuck

1
เพียงแสดงความคิดเห็น การทดสอบการรวมไม่เกี่ยวกับการทดสอบการพึ่งพา แต่เป็นการทดสอบการรวมที่ถูกต้องของโค้ดด้วยการพึ่งพา (การโทรการตอบสนองและการจัดการข้อผิดพลาด ฯลฯ )
Laiv

คำตอบ:


25

หากคุณมีฟังก์ชั่นการใช้งานที่สัมผัสกับชิ้นส่วนภายนอกหลายชิ้นคุณอาจล้อเลียนส่วนประกอบทั้งหมดเพื่อแยกและทดสอบส่วนประกอบเฉพาะ ตัวอย่างเช่นสมมติว่าคุณมีฟังก์ชันที่เรียกใช้บริการบนเว็บจากนั้นทำบางสิ่งกับฐานข้อมูลโดยยึดตามผลลัพธ์ คุณสามารถเขียนการทดสอบการรวมสามรายการ:

  1. การทดสอบที่จำลองการโทรผ่านเว็บเซอร์ แต่เป็นการเชื่อมต่อฐานข้อมูลจริง
  2. การทดสอบที่โทรผ่านเว็บเซอร์เรียลจริง ๆ แต่ใช้การเชื่อมต่อฐานข้อมูลจำลอง
  3. การทดสอบที่เรียกใช้เว็บเซอร์วิซจริงและเกี่ยวข้องกับการเชื่อมต่อฐานข้อมูลจริง

หากคุณรันการทดสอบทั้งสามครั้งและ 1 และ 3 ล้มเหลวอาจเป็นไปได้ว่าอาจมีข้อผิดพลาดในรหัสของคุณที่ทำงานกับฐานข้อมูลได้เนื่องจากการทดสอบเพียงครั้งเดียวที่ผ่านมานั้นเป็นการทดสอบที่ใช้การเชื่อมต่อฐานข้อมูลจำลอง

โดยทั่วไปแล้วการทดสอบการรวมเข้าด้วยกันไม่ได้ใช้ mocks แต่ฉันได้ทำสิ่งนี้ในบางโอกาส


7

มันไม่ชัดเจนในทันทีว่าอะไรคือความหมายของการทดสอบบูรณาการแต่การใช้Fakes / Mocks / Test Doubles เป็นเทคนิคที่ถูกต้องในการสร้างสถานการณ์การทดสอบในทุกระดับภายในปิรามิดของการทดสอบ [1] [2] [3]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.