ฉันไม่มีเอกสารการวิจัยหรือสถิติใด ๆ ที่จะให้คุณ แต่ฉันจะเล่าประสบการณ์ของฉันจากการทำงานในทีม / องค์กรที่ในอดีตมีการครอบคลุมการทดสอบหน่วยต่ำถึงเฉลี่ยและไม่มีการทดสอบแบบ end-to-end และค่อยๆ ย้ายแถบเพื่อที่เรามีตอนนี้มีมากขึ้นของ ATDD ( แต่กระทบกระเทียบไม่ TDD ดั้งเดิม) วิธีการ
นี่คือวิธีที่ระยะเวลาโครงการใช้ในการเล่น (และยังคงเล่นกับทีม / ผลิตภัณฑ์อื่น ๆ ในองค์กรเดียวกัน):
- นานถึง 4 สัปดาห์ของการวิเคราะห์และการใช้งาน
- 2 สัปดาห์ของการทดสอบการถดถอยการแก้ไขข้อบกพร่องการทำให้เสถียรและการเตรียมการเผยแพร่
- 1-2 สัปดาห์ของการแก้ไขข้อบกพร่องที่รู้จัก
- การล้างข้อมูลโค้ดและการสนับสนุนหลังการผลิตประมาณ 2-3 สัปดาห์ (ข้อบกพร่องที่ไม่รู้จัก / การหยุดทำงานที่ไม่ได้วางแผนไว้)
ดูเหมือนว่าค่าใช้จ่ายที่ไร้สาระแต่จริง ๆ แล้วมันเป็นเรื่องธรรมดามากมันมักจะถูกหลอกลวงในหลาย ๆ องค์กรโดยขาดการควบคุมคุณภาพหรือไม่มีประสิทธิภาพ เรามีผู้ทดสอบที่ดีและมีวัฒนธรรมของการทดสอบอย่างเข้มข้นดังนั้นปัญหาเหล่านี้จึงได้รับการแก้ไข แต่เนิ่นๆและกำหนดไว้ล่วงหน้า (เกือบตลอดเวลา) แทนที่จะได้รับอนุญาตให้เล่นอย่างช้า ๆ ในช่วงหลายเดือน / ปี 55-65% ค่าใช้จ่ายในการบำรุงรักษาเป็นต่ำกว่าบรรทัดฐานที่ยอมรับกันทั่วไป 80% ของเวลาที่ถูกใช้ในการแก้จุดบกพร่อง - ซึ่งดูเหมือนว่าเหมาะสมเพราะเราไม่ได้มีบางหน่วยทดสอบและทีมงานข้ามสายงาน (รวมถึงการควบคุมคุณภาพ)
ระหว่างการเปิดตัวผลิตภัณฑ์ใหม่ล่าสุดของทีมเราเราได้เริ่มทำการทดสอบการยอมรับเพิ่มเติม แต่พวกเขาไม่ได้รู้สึกถึงกลิ่นและเรายังต้องพึ่งพาการทดสอบด้วยตนเองจำนวนมาก การปล่อยตัวค่อนข้างเจ็บปวดน้อยกว่าคนอื่น IMO ส่วนหนึ่งเป็นเพราะการทดสอบการยอมรับแบบจับจดของเราและส่วนหนึ่งเป็นเพราะความครอบคลุมการทดสอบหน่วยที่สูงมากของเราเมื่อเทียบกับโครงการอื่น ๆ อย่างไรก็ตามเราใช้เวลาเกือบ 2 สัปดาห์ในการถดถอย / การทำให้มีเสถียรภาพและ 2 สัปดาห์สำหรับปัญหาหลังการผลิต
ในทางตรงกันข้ามการเปิดตัวทุกครั้งนับตั้งแต่การเปิดตัวครั้งแรกนั้นมีเกณฑ์การยอมรับและการทดสอบการยอมรับก่อนหน้านี้และการทำซ้ำปัจจุบันของเรามีลักษณะดังนี้:
- 8 วันของการวิเคราะห์และการใช้งาน
- 2 วันของการรักษาเสถียรภาพ
- 0-2 วันรวมการสนับสนุนหลังการผลิตและการล้างข้อมูล
กล่าวอีกนัยหนึ่งเราคืบหน้าจากค่าบำรุงรักษา 55-65% เป็น 20-30% ค่าใช้จ่ายในการบำรุงรักษา ทีมเดียวกันผลิตภัณฑ์เดียวกันความแตกต่างหลักคือการปรับปรุงอย่างต่อเนื่องและความคล่องตัวของการทดสอบการยอมรับของเรา
ค่าใช้จ่ายในการบำรุงรักษาคือ 30 วันสำหรับนักวิเคราะห์ QA และต่อนักพัฒนา 1-2 วัน ทีมงานของเรามีนักพัฒนา 4 คนและนักวิเคราะห์ประกันคุณภาพ 2 คน (ไม่นับ UX, การจัดการโครงการ ฯลฯ ) ซึ่งเป็นจำนวนสูงสุด 7 วันทำการจาก 60 วันซึ่งฉันจะได้รับค่าใช้จ่ายในการดำเนินงาน 15% ด้านความปลอดภัย
เราใช้จ่าย 15% ของแต่ละช่วงเวลาในการพัฒนาการทดสอบการยอมรับอัตโนมัติและในกระบวนการสามารถลด 70% ของแต่ละรุ่นที่ทำการทดสอบการถดถอยและแก้ไขข้อบกพร่องก่อนการผลิตและหลังการผลิต
คุณอาจสังเกตเห็นว่าไทม์ไลน์ที่สองนั้นแม่นยำกว่าและสั้นกว่าครั้งแรกมาก นั่นเป็นสิ่งที่ทำให้เกิดขึ้นได้โดยเกณฑ์การยอมรับล่วงหน้าและการทดสอบการยอมรับเพราะมันทำให้ "คำจำกัดความของการกระทำ" ที่ง่ายขึ้นอย่างมากมายและทำให้เรามีความมั่นใจมากขึ้นในความมั่นคงของการเปิดตัว ไม่มีทีมอื่นใดที่ประสบความสำเร็จกับตารางการเผยแพร่รายปักษ์ยกเว้นในบางกรณีที่มีการเปิดตัวการบำรุงรักษาที่ไม่สำคัญ (ข้อผิดพลาดอย่างเดียวและอื่น ๆ )
ผลข้างเคียงที่น่าสนใจอีกประการหนึ่งคือเราสามารถปรับตารางการเผยแพร่ของเราให้ตรงกับความต้องการทางธุรกิจได้ มีอยู่ครั้งหนึ่งที่เราต้องยืดระยะเวลาไปอีกประมาณ 3 สัปดาห์เพื่อให้ตรงกับการเปิดตัวอีกครั้งและสามารถทำได้ในขณะที่มีฟังก์ชั่นเพิ่มเติม แต่ไม่ต้องเสียเวลาเพิ่มเติมในการทดสอบหรือการทำให้เสถียร อีกครั้งเราต้องย่อให้เหลือประมาณ1½สัปดาห์เนื่องจากวันหยุดและความขัดแย้งของทรัพยากร เราต้องทำงาน dev น้อยลง แต่ตามที่คาดไว้สามารถใช้เวลาน้อยลงในการทดสอบและการทำให้เสถียรโดยไม่ต้องแนะนำข้อบกพร่องใหม่ ๆ
ดังนั้นจากประสบการณ์ของฉันการทดสอบการยอมรับโดยเฉพาะอย่างยิ่งเมื่อทำเร็วมากในโครงการหรือการวิ่งและเมื่อได้รับการบำรุงรักษาอย่างดีพร้อมกับเกณฑ์การยอมรับที่เขียนโดยเจ้าของผลิตภัณฑ์เป็นหนึ่งในการลงทุนที่ดีที่สุดที่คุณสามารถทำได้ แตกต่างจาก TDD แบบดั้งเดิมซึ่งคนอื่นชี้ให้เห็นอย่างถูกต้องมุ่งเน้นไปที่การสร้างรหัสที่ทดสอบได้มากกว่าโค้ดที่ปราศจากข้อบกพร่อง - ATDD ช่วยให้ตรวจจับข้อบกพร่องได้เร็วขึ้นมาก มันเทียบเท่ากับองค์กรที่มีกองทัพของผู้ทดสอบทำการทดสอบการถดถอยที่สมบูรณ์ทุกวัน แต่วิธีที่ถูกกว่า
ATDD จะช่วยคุณในโครงการระยะยาวที่ดำเนินการในรูปแบบ RUP หรือ (ugh) Waterfall หรือไม่โครงการที่ใช้เวลานาน 3 เดือนหรือมากกว่า? ฉันคิดว่าคณะลูกขุนยังคงอยู่ในนั้น จากประสบการณ์ของฉันความเสี่ยงที่ใหญ่ที่สุดและเลวร้ายที่สุดในโครงการระยะยาวคือวันครบกำหนดที่ไม่สมจริงและข้อกำหนดที่เปลี่ยนแปลง กำหนดเวลาที่ไม่สมจริงจะทำให้คนใช้ทางลัดรวมถึงการทดสอบทางลัดและการเปลี่ยนแปลงข้อกำหนดที่สำคัญจะทำให้การทดสอบจำนวนมากทำให้การทดสอบเหล่านั้นต้องใช้ซ้ำและทำให้การใช้งานเกินจริง
ฉันค่อนข้างมั่นใจว่า ATDD มีผลตอบแทนที่ยอดเยี่ยมสำหรับโมเดล Agile หรือสำหรับทีมที่ไม่ใช่ Agile อย่างเป็นทางการ แต่มีกำหนดการวางจำหน่ายบ่อยมาก ฉันไม่เคยลองในโครงการระยะยาวส่วนใหญ่เป็นเพราะฉันไม่เคยได้รับหรือเคยได้ยินขององค์กรที่เต็มใจลองใช้กับโครงการประเภทนั้นดังนั้นให้ใส่ข้อจำกัดความรับผิดชอบมาตรฐานที่นี่ YMMV และทั้งหมดนั้น
ป.ล. ในกรณีของเราไม่มีความพยายามพิเศษจาก "ลูกค้า" แต่เรามีเจ้าของผลิตภัณฑ์ที่ทำงานเต็มเวลาโดยเฉพาะซึ่งเขียนเกณฑ์การยอมรับจริง หากคุณอยู่ในธุรกิจ "ที่ปรึกษา" ฉันสงสัยว่าอาจเป็นเรื่องยากมากที่จะให้ผู้ใช้ปลายทางเขียนเกณฑ์การยอมรับที่มีประโยชน์ เจ้าของผลิตภัณฑ์ / ผู้จัดการผลิตภัณฑ์ดูเหมือนจะเป็นองค์ประกอบที่สำคัญในการทำ ATDD และแม้ว่าฉันสามารถพูดได้จากประสบการณ์ของตัวเองอีกครั้ง แต่ฉันไม่เคยได้ยินว่า ATDD ถูกฝึกฝนโดยที่ไม่มีใครทำหน้าที่นั้นให้สำเร็จ