แยกรายงานการครอบคลุมรหัสสำหรับการทดสอบหน่วยและการรวมหรือหนึ่งรายงานสำหรับทั้งสอง?


10

ควรมีรายงานการครอบคลุมรหัสแยกต่างหากสำหรับการทดสอบหน่วยและการรวมหรือหนึ่งรายงานการครอบคลุมรหัสสำหรับทั้งสองหรือไม่

ความคิดที่อยู่เบื้องหลังนี้คือการครอบคลุมรหัสทำให้เราสามารถมั่นใจได้ว่ารหัสของเราได้รับการครอบคลุมโดยการทดสอบเท่าที่จะทำได้ (เท่าที่เครื่องจะสามารถทำได้)

การมีรายงานแยกต่างหากนั้นสะดวกกว่าสำหรับเราที่จะรู้ว่าสิ่งใดไม่ได้รับการคุ้มครองโดยการทดสอบหน่วยและสิ่งที่ไม่ได้รับการครอบคลุมจากการทดสอบการรวม แต่วิธีนี้เราไม่สามารถเห็นเปอร์เซ็นต์ความครอบคลุมโดยรวมได้


1
ฉันจะแยกจากกัน ฉันไม่คิดว่ามันเพียงพอที่จะพูดว่า "รหัสนั้นผ่านการทดสอบ" โดยไม่ทราบว่ามันถูกทดสอบอย่างไร การทดสอบหน่วยและการรวมการทดสอบใช้รหัสเดียวกัน แต่ในวิธีที่แตกต่างกันเช่นการทดสอบหน่วยอาจใช้ค่ากรณีขอบในขณะที่การรวมใช้ค่ากลางถนน ("สมจริง") รหัสเดียวกันการทดสอบที่แตกต่างกันมาก
Mawg กล่าวว่าคืนสถานะโมนิก้า

เราเก็บการทดสอบหน่วยและการทดสอบการรวมในห้องสมุดแยกต่างหากด้วยเหตุผลนี้
Robbie Dee

มันขึ้นอยู่กับความต้องการของลูกค้า
mouviciel

คำตอบ:


12

เหนือสิ่งอื่นใดคุณต้องมีและวิเคราะห์ความครอบคลุมรวม (ทั้งหมด) หากคุณคิดว่านี่เป็นวิธีที่เป็นธรรมชาติที่สุดในการจัดลำดับความเสี่ยงของคุณอย่างเหมาะสมและมุ่งเน้นการพัฒนาแบบทดสอบ

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


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

วัตถุประสงค์ของการวิเคราะห์ความครอบคลุมแยกต่างหากแตกต่างจากที่รวมกัน การวิเคราะห์ความครอบคลุมแยกต่างหากช่วยปรับปรุงการออกแบบชุดทดสอบของคุณเมื่อเทียบกับการวิเคราะห์ความครอบคลุมแบบรวมซึ่งมีวัตถุประสงค์เพื่อตัดสินใจเกี่ยวกับการทดสอบที่จะพัฒนาไม่ว่าจะเกิดอะไรขึ้น

"โอ้ช่องว่างนี้ไม่ได้ครอบคลุมเพียงเพราะเราลืมที่จะเพิ่มการทดสอบหน่วย (บูรณาการ) ที่ง่าย ๆ เข้าไปในชุดหน่วย (บูรณาการ) ของเราลองเพิ่ม" - ความครอบคลุมแยกต่างหากและการวิเคราะห์มีประโยชน์มากที่สุดที่นี่ ที่คุณต้องการจะครอบคลุมในชุดเฉพาะ

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

"มีช่องว่างที่นี่ แต่การพัฒนาการทดสอบหน่วย (การรวม) เพื่อให้ครอบคลุมจะยุ่งยากจริงๆตัวเลือกของเราคืออะไรลองตรวจสอบความครอบคลุมแบบรวม ... โอ้มันครอบคลุมไปถึงที่อื่นแล้วนั่นคือครอบคลุมในชุดของเรา สำคัญยิ่ง "



5

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


ทีนี้เราคุยเรื่องช้างในห้องได้ไหม?

ไม่มีช้อน. และไม่มี "เปอร์เซ็นต์ความครอบคลุมทั้งหมด" อย่างน้อยก็ไม่มีใครเรียบง่าย

เปอร์เซ็นต์ความครอบคลุมเป็นตัวชี้วัดที่เข้าใจง่ายซึ่งนำเสนอเพื่อช่วยให้เข้าใจขอบเขตความลึกและช่วงของชุดการทดสอบ แต่เช่นเดียวกับมาตรฐานง่ายๆมันง่ายมากที่จะกลายเป็นเป้าหมายที่จับจ้องอยู่ที่ค่านี้เพราะเครื่องรางของขลังบางประเภทของ "การทดสอบที่สมบูรณ์"

สมมติว่าคุณประสบความสำเร็จใน "การทดสอบที่ครอบคลุม 100%" เย้! แต่นั่นหมายความว่าอย่างไร มีการทดสอบโค้ดบรรทัด 100% ใช่ไหม ถ้าอย่างนั้นเส้นนี้ล่ะ

launch_missile = launch_authorized and launch_cmd_given else previous_launch_status

"การปกปิด" บรรทัดนั้นหมายถึงบางสิ่ง - แต่ไม่มากนักเพราะมีเงื่อนไขที่หลากหลายTrueหรือFalseมีความเป็นไปได้บางอย่าง แต่ไม่น่าเป็นไปได้ที่คุณจะทดสอบการรวมกันของเงื่อนไขเหล่านั้นทั้งหมด แม้ว่าบรรทัดนั้นจะครอบคลุมหลายสิบครั้ง แต่หากเงื่อนไขข้อใดข้อหนึ่งค่อนข้างผิดปกติคุณไม่ได้เข้าใกล้เพื่อทดสอบผลลัพธ์จริงทั้งหมดที่อาจเกิดขึ้นในทางปฏิบัติ เพื่อให้ชัดเจนยิ่งขึ้นนั้นเป็นตัวอย่างที่มีการสังเคราะห์มากขึ้น:

engage_laser = (laser_armed and safety_disengaged) or random.random() < 0.0000003

คุณจะต้องครอบคลุมหลายครั้งเพื่อทดสอบจริง ๆ มีกี่ครั้งที่คุณต้องครอบคลุมมันเพื่อทดสอบร่วมกับตัวแปรอื่น ๆ ทั้งหมดในโปรแกรม (ด้วยความน่าจะเป็นของพวกเขาเองที่หายากในทำนองเดียวกัน)?

ฉันไม่ได้บอกว่าการวัดความครอบคลุมนั้นไร้ประโยชน์ พวกเขายอดเยี่ยมจริงๆ พวกเขามุ่งเน้นประเด็นสำคัญประเด็นหนึ่ง: ระบบซอฟต์แวร์ของฉันผ่านการทดสอบอย่างกว้างขวางอย่างไร พวกเขาช่วยเปลี่ยนจาก "เรามีการทดสอบบางอย่าง" เป็น "เราได้ทำการทดสอบอย่างละเอียด"

แต่ในขณะที่คุณกำลังทำงานบน "คะแนนรวมที่" ความเป็นจริงว่าคะแนนของคุณโดยทั่วไปจะเป็น"คำสั่งคุ้มครอง" มากกว่า "เงื่อนไข", "กริยา" หรือ "เส้นทาง" ครอบคลุม ดังนั้นไม่ว่าคะแนนรวมคะแนนของคุณจะให้อะไรคุณก็ไม่น่าที่จะให้ภาพที่แท้จริงว่ามีสถานะทดสอบและสถานะผสมของโปรแกรมของคุณเท่าใด ในขณะที่คุณกำลังพยายามเพิ่มเปอร์เซ็นต์ความครอบคลุมของคุณให้พิจารณาการวัดความครอบคลุมภาคแสดงของคุณด้วย มันจะทำให้คุณมีความสมจริงยิ่งขึ้น - และเกือบจะคงเส้นคงวายิ่งกว่านั้นคือมุมมองของการทดสอบที่กว้างขวางยิ่งขึ้น


ประเภทของการครอบคลุมการวัดที่ใช้ดูเหมือนจะเป็นคำถามที่สมบูรณ์ฉากตัวชี้วัดใด ๆ ที่สามารถคำนวณได้สำหรับการทดสอบหน่วยหรือการทดสอบบูรณาการหรือทั้งสอง
jk

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

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