ฉันกำลังตรวจสอบเทคนิคและกลยุทธ์ในการปรับขนาดการทดสอบการรวมระบบที่เพิ่มขึ้นของเราในผลิตภัณฑ์ปัจจุบันของเราเพื่อให้พวกเขาสามารถ (เป็นมนุษย์) ยังคงเป็นส่วนหนึ่งของการพัฒนาของเราและกระบวนการ CI
ที่การทดสอบการรวมกันกว่า 200 ครั้งเราได้ทำเครื่องหมาย 1 ชั่วโมงเพื่อทำการทดสอบเต็มรูปแบบ (บนเครื่องเดสก์ท็อป aa) และสิ่งนี้มีผลกระทบในทางลบต่อความสามารถของนักพัฒนาในการทนต่อการรันทั้งชุด ซึ่งส่งผลต่อแรงจูงใจที่จะต้องมีระเบียบวินัยในการสร้างให้ดี เรารวมการทดสอบ Scenrios สำคัญเท่านั้นด้านหน้าไปด้านหลังและเราใช้สภาพแวดล้อมที่สะท้อนการผลิตที่สร้างขึ้นตั้งแต่เริ่มการทดสอบแต่ละครั้ง
เนื่องจากเวลาที่ใช้ในการรันจึงทำให้วนรอบการตอบกลับแย่มากและวงจรที่สิ้นเปลืองจำนวนมากรอให้เครื่องทำการทดสอบเสร็จสิ้นไม่ว่าการทดสอบจะเน้นไปที่ใด ไม่ต้องกังวลกับผลกระทบด้านลบที่มีราคาแพงกว่าต่อการไหลและความก้าวหน้าสติและความยั่งยืน
เราคาดว่าจะมีการทดสอบการรวมเพิ่มเป็น 10 เท่าก่อนที่ผลิตภัณฑ์นี้จะเริ่มทำงานช้าลง (ไม่มีความคิดจริง ๆ แต่ก็ไม่รู้สึกเหมือนว่าเรากำลังเริ่มต้นในแง่ของคุณสมบัติเลย) เราต้องคาดหวังอย่างต่อเนื่องว่าจะมีการทดสอบการรวมสองสามร้อยหรือสองสามพันครั้งฉันคิดว่าในบางจุด
เพื่อความชัดเจนในการพยายามป้องกันไม่ให้สิ่งนี้กลายเป็นการสนทนาเกี่ยวกับการทดสอบหน่วยกับการทดสอบการรวม (ซึ่งไม่ควรแลกเปลี่ยน) เรากำลังทำการทดสอบทั้งหน่วยด้วย TDD และการทดสอบการรวมในผลิตภัณฑ์นี้ ในความเป็นจริงเราทำการทดสอบการรวมที่เลเยอร์ต่าง ๆ ในสถาปัตยกรรมบริการที่เรามีซึ่งมันสมเหตุสมผลสำหรับเราเนื่องจากเราต้องตรวจสอบตำแหน่งที่เราแนะนำการเปลี่ยนแปลงที่ผิดพลาดเมื่อเปลี่ยนรูปแบบในสถาปัตยกรรมของเราไปยังพื้นที่อื่น ๆ ของ ระบบ.
เล็กน้อยเกี่ยวกับสแต็คเทคโนโลยีของเรา ขณะนี้เรากำลังทดสอบสภาพแวดล้อมการจำลอง (CPU และหน่วยความจำมาก) เพื่อทำการทดสอบของเราตั้งแต่ต้นจนจบ ซึ่งประกอบด้วยบริการเว็บ Azure REST ซึ่งแสดงแบ็กเอนด์ noSql (ATS) เรากำลังจำลองสภาพแวดล้อมการผลิตของเราโดยทำงานใน Azure desktop Emulator + IISExpress เรา จำกัด หนึ่งตัวจำลองและหนึ่งที่เก็บแบ็คเอนด์โลคัลต่อหนึ่งเครื่อง dev
นอกจากนี้เรายังมี CI บนคลาวด์ด้วยเช่นกันซึ่งดำเนินการทดสอบเดียวกันในสภาพแวดล้อมจำลองและการทดสอบนั้นใช้เวลานานเป็นสองเท่า (2 ชั่วโมง +) ในคลาวด์ด้วยผู้ให้บริการ CI ปัจจุบันของเรา เราถึงขีด จำกัด ของ SLA ของผู้ให้บริการ CI บนคลาวด์ในแง่ของประสิทธิภาพของฮาร์ดแวร์และเกินค่าเผื่อในเวลาทดสอบ เพื่อความเป็นธรรมกับพวกเขารายละเอียดของพวกเขาไม่เลว แต่ครึ่งดีเท่ากับเครื่องเดสก์ท็อปที่มีคุณภาพดีอย่างชัดเจน
เรากำลังใช้กลยุทธ์การทดสอบในการสร้างที่เก็บข้อมูลของเราใหม่สำหรับการทดสอบแต่ละกลุ่มตรรกะและโหลดไว้ล่วงหน้าด้วยข้อมูลการทดสอบ ในขณะที่การประกันความถูกต้องของข้อมูลอย่างสมบูรณ์นั้นจะเพิ่มผลกระทบ 5-15% ในแต่ละการทดสอบ ดังนั้นเราคิดว่ามีน้อยที่จะได้รับการเพิ่มประสิทธิภาพกลยุทธ์การทดสอบ ณ จุดนี้ในการพัฒนาผลิตภัณฑ์
ความยาวและความสั้นของมันคือ: แม้ว่าเราจะสามารถเพิ่มประสิทธิภาพการรับส่งข้อมูลของการทดสอบแต่ละครั้ง (แม้ว่าจะมากถึง 30% -50% ต่อการทดสอบ) แต่เราก็ยังไม่ปรับขนาดอย่างมีประสิทธิภาพในอนาคตอันใกล้ด้วยการทดสอบหลายร้อยครั้ง 1 ชั่วโมงในตอนนี้ยังอยู่ไกลเกินกว่าที่มนุษย์จะทนได้เราต้องการลำดับความสำคัญในการปรับปรุงกระบวนการโดยรวมเพื่อให้ยั่งยืน
ดังนั้นฉันกำลังตรวจสอบว่าเราสามารถใช้เทคนิคและกลยุทธ์ใดในการลดเวลาการทดสอบลงอย่างมาก
- การเขียนแบบทดสอบที่น้อยลงนั้นไม่ใช่ตัวเลือก ให้โปรดอย่าเถียงกันในหัวข้อนี้
- การใช้ฮาร์ดแวร์ที่เร็วกว่านั้นเป็นตัวเลือกแน่นอนแม้ว่าจะมีราคาแพงมาก
- การรันกลุ่มการทดสอบ / สถานการณ์บนฮาร์ดแวร์แยกต่างหากในแบบขนานก็เป็นตัวเลือกที่ต้องการเช่นกัน
- การสร้างการจัดกลุ่มของการทดสอบเกี่ยวกับคุณลักษณะและสถานการณ์ภายใต้การพัฒนานั้นเป็นไปได้ แต่ในที่สุดก็ไม่น่าเชื่อถือในการพิสูจน์ความครอบคลุมทั้งหมดหรือความเชื่อมั่นว่าระบบจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลง
- การทำงานในสภาพแวดล้อมการจัดเตรียมแบบคลาวด์แทนการรันในเดสก์ท็อปอีมูเลเตอร์นั้นเป็นไปได้ในทางเทคนิคแม้ว่าเราจะเริ่มเพิ่มเวลาการปรับใช้เพื่อทดสอบการทำงาน (ประมาณ 20 นาทีในแต่ละครั้งเมื่อเริ่มการทดสอบเพื่อปรับใช้เนื้อหา)
- การแบ่งส่วนประกอบของระบบออกเป็นชิ้นส่วนลอจิคัลอิสระนั้นมีความเป็นไปได้ในระดับหนึ่ง แต่เราคาดว่าจะมีระยะทาง จำกัด เนื่องจากการแทรกแซงระหว่างส่วนประกอบจะเพิ่มขึ้นตามเวลา (เช่นการเปลี่ยนแปลงคือ ine มีแนวโน้มที่จะส่งผลกระทบต่อคนอื่น ๆ ในรูปแบบที่ไม่คาดคิด - มักจะเกิดขึ้นเมื่อระบบมีการพัฒนาแบบค่อยเป็นค่อยไป)
ฉันต้องการดูว่ากลยุทธ์ (และเครื่องมือ) อื่น ๆ ที่ใช้ในพื้นที่นี้คืออะไร
(ฉันต้องเชื่อว่าคนอื่นอาจเห็นความยากลำบากเช่นนี้โดยใช้ชุดเทคโนโลยีบางอย่าง))
[อัพเดท: 12/16/2016: เราสิ้นสุดการลงทุนมากขึ้นในการทดสอบแบบขนานของ CI สำหรับการอภิปรายผล: http://www.mindkin.co.nz/blog/2015/12/16/16-jobs]