มันเป็นไปได้ที่จะคาดหวังความคุ้มครองรหัส 100% ในการใช้งานเว็บ jquery / backbonejs หนัก? มันสมเหตุสมผลที่จะล้มเหลวในการวิ่งเนื่องจากความครอบคลุม 100% ไม่พบเมื่อครอบคลุมรหัสจริงวนเวียนอยู่รอบ ๆ 92% -95% ใน javascript / jquery?
มันเป็นไปได้ที่จะคาดหวังความคุ้มครองรหัส 100% ในการใช้งานเว็บ jquery / backbonejs หนัก? มันสมเหตุสมผลที่จะล้มเหลวในการวิ่งเนื่องจากความครอบคลุม 100% ไม่พบเมื่อครอบคลุมรหัสจริงวนเวียนอยู่รอบ ๆ 92% -95% ใน javascript / jquery?
คำตอบ:
มันเป็นจริงอย่างเท่าเทียมกันตามที่ไม่สมจริง
สมจริง
หากคุณมีการทดสอบอัตโนมัติที่แสดงให้เห็นว่าครอบคลุมทั้งรหัสทั้งหมดการยืนยันเมื่อครอบคลุม 100% นั้นสมเหตุสมผล
นอกจากนี้ยังขึ้นอยู่กับความสำคัญของโครงการ ยิ่งสำคัญยิ่งจำเป็นต้องคาดหวัง / ต้องการการครอบคลุมโค้ดที่สมบูรณ์ยิ่งขึ้น
การทำเช่นนี้ง่ายขึ้นสำหรับโครงการขนาดเล็กถึงขนาดกลาง
ไม่สมจริง
คุณจะเริ่มต้นที่ความครอบคลุม 0% ...
โครงการนี้มีความผิดพลาดมากมายหลายเส้นทางที่มีข้อผิดพลาดมากมายที่ยากต่อการสร้างหรือทริกเกอร์
ผู้บริหารไม่เต็มใจที่จะกระทำ / ลงทุนเพื่อให้แน่ใจว่ามีความครอบคลุม
ฉันได้ทำงานในขอบเขตของโครงการตั้งแต่ไม่มีการครอบคลุมถึงที่เหมาะสม ไม่เคยมีโครงการที่มี 100% แต่มีบางครั้งที่ฉันต้องการเรามีความครอบคลุมมากขึ้น 100%
ในที่สุดคำถามก็คือถ้าความครอบคลุมที่มีอยู่ตรงกับกรณีที่จำเป็นเพียงพอสำหรับทีมเพื่อความสะดวกสบายในการจัดส่งผลิตภัณฑ์
เราไม่ทราบถึงผลกระทบของความล้มเหลวในโครงการของคุณดังนั้นเราจึงไม่สามารถพูดได้ว่า 92% หรือ 95% ก็เพียงพอแล้วหรือถ้าจำเป็น 100% หรือสำหรับเรื่องนั้น 100% จะทดสอบทุกอย่างที่คุณคาดหวัง
มันไร้เดียงสาที่ดีที่สุดและไม่สมจริงแม้ในแง่ทฤษฎีและทำไม่ได้ในแง่ธุรกิจ
มันแพงมากในการเขียนการทดสอบมันเป็นรหัสที่จะต้องเขียนและทดสอบด้วยตนเองมันเป็นรหัสที่จะต้องมีเอกสารในสิ่งที่มันพยายามทดสอบจริง ๆ มันคือรหัสที่จะต้องได้รับการดูแลรักษาด้วยการเปลี่ยนแปลงตรรกะทางธุรกิจและ การทดสอบล้มเหลวเพราะมันล้าสมัย การบำรุงรักษาการทดสอบอัตโนมัติและเอกสารเกี่ยวกับพวกเขาอาจมีราคาแพงกว่าการบำรุงรักษารหัสในบางครั้ง
นี่ไม่ได้เป็นการบอกว่าการทดสอบหน่วยและการรวมเข้าด้วยกันไม่มีประโยชน์ แต่เฉพาะในกรณีที่เหมาะสมและนอกอุตสาหกรรมที่สามารถฆ่าผู้คนได้ก็ไม่สมเหตุสมผลที่จะลองและทดสอบทุกบรรทัดของรหัสในฐานรหัส นอกการฆ่าผู้คนจำนวนมากที่สำคัญอย่างรวดเร็วรหัสฐานมันเป็นไปไม่ได้ที่จะคำนวณผลตอบแทนเชิงบวกจากการลงทุนที่ครอบคลุมรหัส 100% จะนำมาซึ่ง
ในทฤษฎีการคำนวณปัญหาการหยุดชะงักเป็นปัญหาของการพิจารณาจากคำอธิบายของโปรแกรมคอมพิวเตอร์โดยพลการและอินพุตไม่ว่าโปรแกรมจะทำงานเสร็จหรือทำงานต่อไปตลอดไป
Alan Turing พิสูจน์แล้วในปี 1936 ว่าอัลกอริทึมทั่วไปในการแก้ปัญหาการหยุดชะงักสำหรับคู่อินพุตโปรแกรมที่เป็นไปได้ทั้งหมดไม่มีอยู่จริง ส่วนสำคัญของการพิสูจน์คือคำจำกัดความทางคณิตศาสตร์ของคอมพิวเตอร์และโปรแกรมซึ่งกลายเป็นที่รู้จักในฐานะเครื่องทัวริง ปัญหาการหยุดชะงักไม่สามารถบอกได้ผ่านเครื่องทัวริง มันเป็นหนึ่งในตัวอย่างแรกของปัญหาการตัดสินใจ
เนื่องจากคุณไม่สามารถพิสูจน์สิ่งที่ใช้งานได้ 100% เหตุใดจึงตั้งเป้าหมายของคุณ
getXXX()/setXXX()
ๆ สำหรับวัตถุที่มีค่าเป็นการใช้เวลาและทรัพยากรอย่างดีขออภัยที่ไม่ใช่กรณีในความเป็นจริงและความคิดเห็นที่ไร้เดียงสาอย่างยิ่งที่ขาดประสบการณ์การสำรองข้อมูลจริง จำรหัสทดสอบยังคงเป็นรหัสที่จะต้องมีการบำรุงรักษา รหัสน้อยกว่าที่คุณเขียนในการแก้ปัญหาที่ดีขึ้นในทุกกรณี
ในกรณีส่วนใหญ่การครอบคลุมโค้ด 100% หมายความว่าคุณได้ "โกง" เล็กน้อย:
โดยทั่วไปชิ้นส่วนทดสอบที่ยากจะถูกแบ่งไปยังส่วนที่ไม่จำเป็นต้องนับเป็น "รหัส" มันไม่ได้เป็นจริงเสมอไป แต่ให้สังเกตว่าอิสระในการช่วยคุณทดสอบการปฏิบัติทั้งหมดเหล่านี้ทำให้โค้ดเบสของคุณทำงานได้ง่ายขึ้น
สำหรับที่น่าประทับใจเช่นโลกแห่งความจริงของสาขาครอบคลุม 100%ดูวิธี SQLite ผ่านการทดสอบ
ฉันรู้ว่าคำถามของคุณถามเฉพาะเกี่ยวกับจาวาสคริปต์ซึ่งเป็นผลิตภัณฑ์ซอฟต์แวร์ประเภทต่าง ๆ โดยสิ้นเชิง แต่ฉันต้องการสร้างความตระหนักถึงสิ่งที่สามารถทำได้ด้วยแรงจูงใจที่เพียงพอ
การครอบคลุมโค้ด 100% สำหรับการทดสอบหน่วยสำหรับชิ้นส่วนทั้งหมดของแอปพลิเคชันโดยเฉพาะนั้นเป็นความฝันของท่อแม้จะมีโครงการใหม่ ฉันหวังว่ามันจะเป็นอย่างนั้น แต่บางครั้งคุณก็ไม่สามารถครอบคลุมโค้ดได้ไม่ว่าคุณจะพยายามแยกการพึ่งพาจากภายนอกออกไปมากแค่ไหนก็ตาม ตัวอย่างเช่นสมมติว่ารหัสของคุณต้องเรียกใช้บริการเว็บ คุณสามารถซ่อนการให้บริการเว็บหลังอินเทอร์เฟซเพื่อให้คุณสามารถจำลองชิ้นส่วนนั้นและทดสอบตรรกะทางธุรกิจก่อนและหลังการบริการเว็บ แต่ชิ้นส่วนจริงที่ต้องเรียกใช้บริการทางเว็บนั้นไม่สามารถทดสอบหน่วยได้ (ดีมากอยู่ดี) อีกตัวอย่างคือถ้าคุณต้องการเชื่อมต่อกับเซิร์ฟเวอร์ TCP คุณสามารถซ่อนรหัสที่เชื่อมต่อกับเซิร์ฟเวอร์ TCP ด้านหลังอินเตอร์เฟส แต่รหัสที่เชื่อมต่อกับเซิร์ฟเวอร์ TCP ไม่สามารถทดสอบหน่วยได้ เพราะถ้ามันไม่ว่าด้วยเหตุผลใดก็ตามนั่นก็จะทำให้การทดสอบหน่วยล้มเหลว และการทดสอบหน่วยควรผ่านเสมอไม่ว่าพวกเขาจะถูกเรียกเมื่อใด
หลักปฏิบัติที่ดีคือตรรกะทางธุรกิจทั้งหมดของคุณควรมีรหัสครอบคลุม 100% แต่ชิ้นส่วนที่ต้องเรียกใช้ชิ้นส่วนภายนอกนั้นควรมีความครอบคลุมโค้ดเกือบ 100% เท่าที่จะทำได้ หากคุณไม่สามารถเข้าถึงได้ฉันก็จะไม่เหงื่อออกมากเกินไป
สำคัญกว่านั้นคือการทดสอบนั้นถูกต้องหรือไม่ พวกเขาสะท้อนถึงธุรกิจและข้อกำหนดของคุณอย่างแม่นยำหรือไม่? การมีรหัสครอบคลุมเพียงเพื่อให้ครอบคลุมรหัสไม่ได้หมายความว่าอะไรถ้าสิ่งที่คุณทำคือการทดสอบไม่ถูกต้องหรือการทดสอบรหัสที่ไม่ถูกต้อง ที่ถูกกล่าวว่าหากการทดสอบของคุณดีแล้วมีความคุ้มครอง 92-95% เป็นที่โดดเด่น
ฉันจะบอกว่าถ้ารหัสถูกออกแบบมาโดยมีเป้าหมายเฉพาะเพื่อให้ครอบคลุมการทดสอบ 100% แต่ 100% อาจไม่สามารถทำได้ เหตุผลข้อหนึ่งก็คือหากคุณใช้รหัสป้องกัน - ซึ่งคุณควร - บางครั้งคุณควรมีรหัสที่จัดการกับสถานการณ์ที่คุณแน่ใจว่าไม่ควรเกิดขึ้นหรือไม่สามารถเกิดขึ้นได้หากคุณมีความรู้เกี่ยวกับระบบ เพื่อครอบคลุมรหัสดังกล่าวด้วยการทดสอบจะยากมากตามคำนิยาม หากไม่มีรหัสดังกล่าวอาจเป็นอันตราย - จะเกิดอะไรขึ้นถ้าคุณทำผิดและสถานการณ์เช่นนี้จะเกิดขึ้นเพียงครั้งเดียวจาก 256 ครั้ง? เกิดอะไรขึ้นถ้ามีการเปลี่ยนแปลงในสถานที่ที่ไม่เกี่ยวข้องซึ่งทำให้สิ่งที่เป็นไปไม่ได้? ฯลฯ ดังนั้น 100% อาจเข้าถึงได้ยากโดยวิธี "ธรรมชาติ" - เช่นถ้าคุณมีรหัสที่จัดสรรหน่วยความจำและคุณมีรหัสที่ตรวจสอบว่ามันล้มเหลวเว้นแต่คุณจำลองผู้จัดการหน่วยความจำออก (ซึ่งอาจไม่ใช่เรื่องง่าย) และเขียนการทดสอบที่ส่งคืน "หน่วยความจำไม่เพียงพอ" ซึ่งครอบคลุมรหัสนั้นอาจเป็นเรื่องยาก สำหรับแอปพลิเคชัน JS อาจเป็นการป้องกันการเข้ารหัสรอบ ๆ DOM ที่เป็นไปได้ของนิสัยใจคอในเบราว์เซอร์ที่แตกต่างกันความล้มเหลวของบริการภายนอกเป็นต้น
ดังนั้นฉันจะบอกว่าหนึ่งควรพยายามที่จะใกล้เคียงกับ 100% ที่เป็นไปได้และมีเหตุผลที่ดีสำหรับเดลต้า แต่ฉันจะไม่เห็นไม่ได้รับ 100% อย่างแน่นอนว่าเป็นความล้มเหลว 95% สามารถปรับได้ในโครงการขนาดใหญ่ขึ้นอยู่กับ 5%
หากคุณเริ่มต้นด้วยโครงการใหม่และคุณใช้วิธีการทดสอบอย่างแรกก็มีเหตุผลที่จะมีการครอบคลุมโค้ด 100% ในแง่ที่ว่าโค้ดทั้งหมดของคุณจะถูกเรียกใช้ในบางจุดเมื่อการทดสอบของคุณมี ถูกประหารชีวิต อย่างไรก็ตามคุณอาจไม่ได้ทดสอบอย่างชัดเจนทุกวิธีหรืออัลกอริทึมโดยตรงเนื่องจากการมองเห็นวิธีการและในบางกรณีคุณอาจไม่ได้ทดสอบวิธีการบางอย่างแม้โดยทางอ้อม
การทดสอบโค้ดของคุณ 100% อาจเป็นการออกกำลังกายที่มีค่าใช้จ่ายสูงโดยเฉพาะอย่างยิ่งถ้าคุณไม่ได้ออกแบบระบบของคุณเพื่อให้คุณบรรลุเป้าหมายนี้และหากคุณมุ่งเน้นความพยายามในการออกแบบของคุณไปสู่การทดสอบได้ เพื่อออกแบบแอปพลิเคชันของคุณให้ตรงตามข้อกำหนดเฉพาะโดยเฉพาะโครงการที่มีขนาดใหญ่ ฉันขอโทษ แต่คุณก็ทำไม่ได้ทั้งสองวิธีโดยที่ไม่มีอะไรถูกบุกรุก
หากคุณกำลังนำการทดสอบไปยังโครงการที่มีอยู่ซึ่งการทดสอบยังไม่ได้รับการบำรุงรักษาหรือรวมก่อนหน้านั้นเป็นไปไม่ได้ที่จะได้รับการครอบคลุมโค้ด 100% โดยไม่มีค่าใช้จ่ายในการฝึกเมื่อเทียบกับความพยายาม สิ่งที่ดีที่สุดที่คุณสามารถคาดหวังได้คือการให้ความคุ้มครองการทดสอบสำหรับส่วนที่สำคัญของรหัสที่เรียกว่ามากที่สุด
มันสมเหตุสมผลที่จะล้มเหลวในการวิ่งเนื่องจากความครอบคลุม 100% ไม่พบเมื่อครอบคลุมรหัสจริงวนเวียนอยู่รอบ ๆ 92% -95% ใน javascript / jquery?
ในกรณีส่วนใหญ่ฉันจะบอกว่าคุณควรพิจารณาการวิ่งของคุณที่จะ 'ล้มเหลว' ถ้าคุณไม่บรรลุเป้าหมายของคุณ ที่จริงแล้วฉันไม่ต้องการนึกถึง sprints ว่าล้มเหลวในกรณีเช่นนี้เพราะคุณจำเป็นต้องเรียนรู้จาก sprint ที่ไม่ตรงตามความคาดหวังเพื่อให้การวางแผนของคุณถูกต้องในครั้งถัดไปที่คุณกำหนด sprint ฉันไม่คิดว่ามันสมเหตุสมผลที่จะพิจารณาความครอบคลุมของรหัสเพื่อเป็นปัจจัยในความสำเร็จของการวิ่ง เป้าหมายของคุณควรทำมากพอที่จะทำให้ทุกอย่างทำงานตามที่ระบุไว้และถ้าคุณเขียนโปรแกรมทดสอบก่อนคุณควรจะมั่นใจได้ว่าการทดสอบของคุณจะสนับสนุนเป้าหมายนี้ การทดสอบเพิ่มเติมใด ๆ ที่คุณคิดว่าคุณอาจจำเป็นต้องเพิ่มคือการเคลือบน้ำตาลอย่างมีประสิทธิภาพและทำให้มีค่าใช้จ่ายเพิ่มเติมซึ่งสามารถช่วยให้คุณดำเนินการ sprint ของคุณได้อย่างน่าพอใจ
แน่นอนว่าฉันไม่ได้ทำแบบนี้ แต่ฉันได้ทำในสองโครงการใหญ่ หากคุณมีกรอบสำหรับการทดสอบหน่วยการตั้งค่าต่อไปมันไม่ได้ยากอย่างแน่นอน แต่มันจะเพิ่มการทดสอบจำนวนมาก
มีอุปสรรคบางอย่างที่คุณพบที่ป้องกันไม่ให้คุณกดปุ่มสองสามบรรทัดสุดท้ายหรือไม่? ถ้าไม่ถ้าได้รับความคุ้มครองจาก 95% ถึง 100% นั้นตรงไปตรงมาดังนั้นคุณอาจไปทำเช่นนั้น เนื่องจากคุณที่นี่ถามว่าฉันจะคิดว่ามีเป็นบางสิ่งบางอย่าง อะไรคือสิ่งที่?
92% ไม่เป็นไร ฉันรู้สึกว่าคำถามที่แท้จริงคือ:
92% เป็นบรรทัดฐาน 'ใหม่' หรือไม่? หากการวิ่งครั้งต่อไปมีการทดสอบ 88% จะเป็นไรไหม นี่เป็นจุดเริ่มต้นของชุดทดสอบที่ถูกทอดทิ้ง
ซอฟต์แวร์มีความสำคัญเพียงใดและไม่มีข้อบกพร่อง คุณมีการทดสอบด้วยเหตุผลเหล่านี้ไม่ใช่ "เพื่อการทดสอบ"
มีแผนที่จะย้อนกลับไปกรอกข้อมูลในแบบทดสอบที่หายไปหรือไม่?
ทำไมคุณถึงทดสอบ ดูเหมือนว่าโฟกัสจะเป็น% ของสายการทำงานที่ไม่ครอบคลุม
Martin Fowler เขียนในบล็อกของเขา :I would be suspicious of anything like 100% - it would smell of someone writing tests to make the coverage numbers happy, but not thinking about what they are doing.
อย่างไรก็ตามยังมีมาตรฐานที่ให้ความคุ้มครอง 100% ในระดับหน่วย ตัวอย่างเช่นมันเป็นหนึ่งในข้อกำหนดในมาตรฐานของชุมชน spaceflight ยุโรป (ECSS, ความร่วมมือยุโรปเพื่อการมาตรฐานอวกาศ) กระดาษที่เชื่อมโยงที่นี่บอกเล่าเรื่องราวที่น่าสนใจของโครงการที่มีเป้าหมายในการเข้าถึงการทดสอบ 100% ในซอฟต์แวร์ที่เสร็จสมบูรณ์แล้ว มันขึ้นอยู่กับ nterviews กับวิศวกรที่เกี่ยวข้องที่พัฒนาหน่วยทดสอบ
บทเรียนบางส่วน ได้แก่ :
บางทีการถามว่าเป็นไปได้และสมเหตุสมผลไม่ใช่คำถามที่เป็นประโยชน์ที่สุดที่จะถาม อาจเป็นคำตอบที่ใช้ได้จริงที่สุดคือคำตอบที่ยอมรับได้ ฉันจะวิเคราะห์สิ่งนี้ในระดับปรัชญามากขึ้น
การครอบคลุม 100% จะเป็นอุดมคติ แต่ในอุดมคติแล้วมันไม่จำเป็นหรือจะง่ายกว่านี้มาก ฉันชอบคิดว่ามันเป็นเรื่องธรรมชาติและเป็นมนุษย์มากกว่าความเป็นไปได้หรือสมเหตุสมผล
การกระทำของการเขียนโปรแกรมอย่างถูกต้องเป็นไปไม่ได้ด้วยเครื่องมือของวันนี้ มันยากมากที่จะเขียนโค้ดที่ถูกต้องทั้งหมดและไม่มีข้อบกพร่อง มันไม่เป็นธรรมชาติ ดังนั้นเมื่อไม่มีตัวเลือกอื่นที่ชัดเจนเราจึงหันไปใช้เทคนิคเช่น TDD และรหัสการติดตามที่ครอบคลุม แต่ตราบใดที่ผลลัพธ์ยังคงเป็นกระบวนการที่ผิดธรรมชาติคุณจะมีเวลาที่ยากลำบากในการทำให้ผู้คนทำอย่างต่อเนื่องและมีความสุข
การได้รหัสครอบคลุม 100% เป็นการกระทำที่ผิดธรรมชาติ สำหรับคนส่วนใหญ่การบังคับให้พวกเขาบรรลุผลนั้นจะเป็นการทรมาน
เราต้องการกระบวนการเครื่องมือภาษาและรหัสที่แมปกับแบบจำลองทางจิตตามธรรมชาติของเรา หากเราไม่สามารถทำสิ่งนี้ได้จะไม่มีวิธีทดสอบคุณภาพของผลิตภัณฑ์
แค่ดูซอฟต์แวร์ทั้งหมดที่มีวันนี้ ส่วนใหญ่มันเลอะเทอะสวยสม่ำเสมอ เราไม่อยากเชื่อสิ่งนี้ เราต้องการเชื่อว่าเทคโนโลยีของเรานั้นมหัศจรรย์และทำให้เรามีความสุข ดังนั้นเราจึงเลือกที่จะเพิกเฉยแก้ตัวและลืมไปหลายครั้งที่เทคโนโลยีของเราเลอะเทอะ แต่ถ้าเราทำการประเมินสิ่งต่าง ๆ อย่างซื่อสัตย์ซอฟต์แวร์ส่วนใหญ่ที่มีอยู่ทุกวันนี้ก็ค่อนข้างจะเลวร้าย
นี่คือความพยายามสองสามอย่างที่จะทำให้การเข้ารหัสเป็นธรรมชาติมากขึ้น:
https://github.com/jcoplien/trygve
https://github.com/still-dreaming-1/PurposefulPhp
ในภายหลังมีความไม่สมบูรณ์และการทดลองอย่างมาก อันที่จริงมันเป็นโครงการที่ฉันเริ่ม แต่ฉันเชื่อว่ามันจะเป็นก้าวใหญ่สำหรับงานฝีมือของการเขียนโปรแกรมถ้าฉันสามารถทำให้ตัวเองใช้เวลาในการทำให้เสร็จสมบูรณ์ โดยทั่วไปเป็นความคิดที่ว่าถ้าสัญญาแสดงลักษณะเฉพาะของพฤติกรรมคลาสที่เราสนใจและเราได้แสดงสัญญาเป็นรหัสแล้วทำไมไม่เพียง แต่มีคำจำกัดความของคลาสและวิธีการพร้อมกับสัญญา ด้วยวิธีการที่สัญญาจะเป็นรหัสและเราไม่จำเป็นต้องใช้วิธีการทั้งหมด ให้ห้องสมุดเข้าใจวิธีการปฏิบัติตามสัญญาของเรา
การเข้าถึงโค้ดใหม่ 100% นั้นสามารถทำได้จริงมากและถ้าคุณฝึก TDD คุณอาจจะโดนมันโดยปริยายเพราะคุณตั้งใจที่จะเขียนแบบทดสอบสำหรับรหัสการผลิตทุกบรรทัด
ในรหัสดั้งเดิมที่มีอยู่ซึ่งเขียนขึ้นโดยไม่มีการทดสอบหน่วยมันอาจเป็นเรื่องยากเพราะบ่อยครั้งที่รหัสดั้งเดิมไม่ได้ถูกเขียนขึ้นโดยคำนึงถึงการทดสอบหน่วยในใจและอาจต้องมีการปรับโครงสร้างใหม่จำนวนมาก ระดับของการปรับโครงสร้างใหม่นั้นมักไม่ได้เกิดขึ้นจริงเนื่องจากความเสี่ยงและกำหนดเวลาเพื่อให้คุณทำการแลกเปลี่ยน
ในทีมของฉันฉันระบุรหัสครอบคลุม 100% และหากเราเห็นน้อยกว่านั้นในรหัสให้ตรวจสอบเจ้าของทางเทคนิคขององค์ประกอบอธิบายว่าทำไมถึง 100% ไม่ถึงกับนักพัฒนาและต้องเห็นด้วยกับเหตุผลของนักพัฒนา บ่อยครั้งหากมีปัญหาในการกดปุ่ม 100% นักพัฒนาจะพูดคุยกับเจ้าของเทคนิคก่อนตรวจสอบรหัส เราพบว่าเมื่อคุณเข้าสู่นิสัยและเรียนรู้เทคนิคในการแก้ปัญหาที่พบบ่อยหลายประการด้วยการเพิ่มการทดสอบในรหัสดั้งเดิมที่การกดปุ่ม 100% เป็นประจำนั้นไม่ยากอย่างที่คุณคิดในตอนแรก
หนังสือของ Michael Feather " การทำงานอย่างมีประสิทธิภาพด้วยรหัสมรดก " เป็นสิ่งที่มีค่าสำหรับเราในการหากลยุทธ์ในการเพิ่มการทดสอบในรหัสเดิมของเรา
ไม่เป็นไปไม่ได้และไม่เคยเป็น ถ้าเป็นไปได้คณิตศาสตร์ทั้งหมดก็จะตกอยู่ในขั้นตอนสุดท้าย ตัวอย่างเช่นคุณจะทดสอบฟังก์ชันที่ใช้จำนวนเต็ม 64 บิตสองตัวและคูณได้อย่างไร นี่เป็นปัญหาของฉันเสมอกับการทดสอบกับการพิสูจน์ว่าโปรแกรมถูกต้อง สำหรับทุกอย่างยกเว้นโปรแกรมที่น่ารำคาญที่สุดการทดสอบนั้นไม่มีประโยชน์เพราะมันครอบคลุมเฉพาะบางกรณีเท่านั้น มันเหมือนกับการตรวจสอบตัวเลข 1,000 ตัวและบอกว่าคุณได้พิสูจน์การคาดเดาของ Goldbach แล้ว