โดยทั่วไป
คุณมีการทดสอบอัตโนมัติเพียงพอที่จะมั่นใจในขั้นตอนการรวมระบบอย่างต่อเนื่องของคุณเมื่อใด
คำตอบอาจชัดเจนถ้าคุณคิดเกี่ยวกับสิ่งที่คุณต้องการมั่นใจ ในที่สุดมันแผนที่ 1-1; การทดสอบทุกครั้งทำให้คุณมั่นใจในการทดสอบ:
- การทดสอบหน่วยช่วยให้คุณมั่นใจได้ว่าคลาส (หรือโมดูล) ทำหน้าที่ทดสอบ
- การทดสอบการผสานรวมทำให้คุณมั่นใจได้ว่าหลาย ๆ หน่วยทำงานร่วมกันในแบบที่ได้รับการทดสอบ
- การทดสอบแบบ end-to-end ช่วยให้คุณมั่นใจว่าแอปพลิเคชันทั้งหมดทำบางสิ่งตามที่อธิบายไว้ในการทดสอบ
จากวิธีที่คุณตั้งคำถามคุณอาจคิดในแง่ของภาพรวมธุรกิจในตอนนี้ตัวอย่างเช่น:
ฉันต้องการมั่นใจว่าแอปของฉันสามารถทำ Xได้
ดังนั้นคุณเขียนการทดสอบแบบ end-to-end ที่พยายามทำ X และตรวจสอบว่ามันถูกต้องหรือไม่
เป็นรูปธรรมมากขึ้น
นั่นคือทั้งหมดอ้างอิงตัวเองมาก แต่นั่นเป็นเพราะนั่นคือสิ่งที่มันลงมา มีเพียงไม่มากไป
ตัวอย่างเช่นสมมติว่าคุณเขียนแอปเพื่อสร้างสูตรการทำอาหาร คุณสมบัติอย่างหนึ่งคือถ้าคุณเพิ่มชีสหลายชนิดในปริมาณที่แตกต่างกันมันจะช่วยให้คุณมีอุณหภูมิและเวลาที่ถูกต้องเพื่อให้พวกเขาละลายทั้งหมด
ดังนั้นคุณสามารถเขียนการทดสอบหน่วยสำหรับคุณCheeseMeltCalculator
ที่ให้ 100 กรัมเกาดาและชีสเอมเมนตัล 200 กรัมจากนั้นตรวจสอบอุณหภูมิและเวลาที่ถูกต้อง นั่นหมายความว่าตอนนี้คุณสามารถมั่นใจได้ว่าสามารถCheeseMeltCalculator
ใช้ได้กับ 100 Gouda และชีส 200 กรัม ตอนนี้ถ้าคุณทำซ้ำการทดสอบนี้ด้วย 300 กรัมเกาดาแทนที่จะเป็น 200 กรัมคุณสามารถมั่นใจได้เลยว่ามันทำงานได้อย่างถูกต้องสำหรับค่าที่แตกต่างกัน คุณสามารถเพิ่มการทดสอบ0
, -1
และint.MaxValue
กรัมของเกาจะมีความมั่นใจว่ารหัสไม่ได้เดินทางขึ้นไป (หรือการเดินทางอย่างถูกต้องตามที่ตั้งใจไว้) สำหรับการป้อนข้อมูลที่แปลก
คุณสามารถเขียนการทดสอบการรวมเพื่อตรวจสอบว่าCheeseMeltCalculator
รวมอย่างถูกต้องในอุณหภูมิอาหารทั้งหมดและกระบวนการคำนวณเวลา หากสิ่งนี้ผิดพลาด แต่การCheeseMeltCalculator
ทดสอบข้างต้นนั้นใช้ได้คุณสามารถมั่นใจได้ว่าข้อผิดพลาดนั้นอยู่ในเครื่องคิดเลขอื่น ๆ หรือในลักษณะที่ข้อมูลจากเครื่องคิดเลขต่าง ๆ รวมเข้าด้วยกัน
และในที่สุดคุณก็สามารถเขียนการทดสอบแบบครบวงจรเพื่อสร้างสูตรทั้งหมดและสิ่งหนึ่งที่คุณตรวจสอบคืออุณหภูมิและเวลาของผลลัพธ์ หากการทดสอบ 2 ระดับก่อนหน้านี้ใช้ได้ แต่สิ่งนี้ผิดพลาดคุณสามารถมั่นใจได้อีกครั้งว่าชิ้นส่วนเหล่านั้นถูกต้องและข้อผิดพลาดเป็นสิ่งที่เกี่ยวกับการคำนวณอุณหภูมิที่รวมเข้ากับแอปพลิเคชัน ตัวอย่างเช่นอาจมีการป้อนข้อมูลผู้ใช้ไม่ถูกต้อง
และในที่สุดหากการทดสอบทั้งหมดนั้นดีคุณสามารถมั่นใจได้ว่า " ถ้าคุณเพิ่มจำนวนชีสที่แตกต่างกันในปริมาณที่แตกต่างกันมันจะช่วยให้คุณมีอุณหภูมิและเวลาที่ถูกต้องเพื่อให้พวกเขาละลาย "
เรื่องสั้นสั้น
ประเด็นคือคุณไม่สามารถทำการทดสอบได้ "ทำงานได้อย่างถูกต้อง" คุณสามารถทดสอบ "ถ้าฉันทำ X, Y เกิดขึ้น"
อย่างไรก็ตามนี่เป็นสิ่งที่ควรเป็นในข้อกำหนดทางเทคนิคสำหรับโครงการ ข้อความเช่น " ถ้าคุณเพิ่มจำนวนที่แตกต่างกันของชีสชนิดต่าง ๆ มันให้อุณหภูมิและเวลาที่ถูกต้องเพื่อให้พวกเขาละลายทั้งหมด " ไม่เพียง แต่ให้ความคาดหวังของลูกค้าอย่างชัดเจนเกี่ยวกับสิ่งที่ผลิตภัณฑ์สำเร็จรูปจะทำ แต่ยังสามารถเปลี่ยนได้ เป็นการทดสอบอัตโนมัติ
ข้อมูลเพิ่มเติม
ผู้ใช้ Richard เพิ่มข้อมูลนี้ในการแก้ไข:
Martin Fowler มีบทสรุปที่ดีมากในเว็บไซต์ของเขาเกี่ยวกับกลยุทธ์ที่พบบ่อยที่สุด: https://martinfowler.com/articles/microservice-testing/
ฉันไม่ต้องการลบสิ่งนี้ แต่ฉันอยากจะพูดแบบนี้: เมื่อเทียบกับคำตอบนี้มันไม่ใช่ "บทสรุป" แต่เป็นคำอธิบายเชิงลึกที่มีกราฟิกที่ดีและทุกอย่าง
คำแนะนำของฉันคือ: หากทุกอย่างเหมาะสมกับคุณหลังจากอ่านคำตอบของฉันคุณก็ทำเสร็จแล้ว หากสิ่งต่าง ๆ ยังดูไม่ชัดเจนให้ตั้งเวลาเล็กน้อยและอ่านบทความที่เชื่อมโยงกัน