มีนักพัฒนากี่คนก่อนที่จะรวมอย่างต่อเนื่องเพื่อให้เกิดประสิทธิภาพ


34

มีค่าใช้จ่ายที่เกี่ยวข้องกับการบูรณาการอย่างต่อเนื่องเช่นการตั้งค่าการฝึกอบรมใหม่กิจกรรมการรับรู้การหยุดเพื่อแก้ไข "ข้อบกพร่อง" ที่กลายเป็นปัญหาข้อมูลการบังคับใช้รูปแบบการเขียนโปรแกรมที่เกี่ยวข้องเป็นต้น

การรวมระบบอย่างต่อเนื่องเป็นสิ่งที่จุดสำหรับตัวเอง?

แก้ไข: นี่คือการค้นพบของฉัน

การตั้งค่าคือ CruiseControl.Net กับ Nant อ่านจาก VSS หรือ TFS

นี่คือสาเหตุบางประการของความล้มเหลวซึ่งไม่มีส่วนเกี่ยวข้องกับการตั้งค่า:

ค่าใช้จ่ายในการตรวจสอบ : เวลาที่ใช้ในการตรวจสอบว่าแสงสีแดงเกิดจากความไม่สอดคล้องของตรรกะในรหัสคุณภาพของข้อมูลหรือแหล่งอื่นเช่นปัญหาโครงสร้างพื้นฐาน (เช่นปัญหาเครือข่ายการหมดเวลาอ่านจากการควบคุมแหล่งที่มา ลง ฯลฯ ฯลฯ )

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

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

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

ค่าใช้จ่ายในการเผยแพร่ bespoke : สคริปต์ของ Nant เท่านั้นจนถึงตอนนี้ ไม่มีประโยชน์สำหรับการพูดการสร้าง CMS ที่ขึ้นอยู่กับ EPiServer, CMS หรือการปรับใช้ฐานข้อมูล UI แบบใดก็ตาม

นี่คือประเภทของปัญหาที่เกิดขึ้นบนเซิร์ฟเวอร์การสร้างสำหรับการทดสอบการทำงานรายชั่วโมงและการสร้าง QA ข้ามคืน ฉันให้ความบันเทิงว่าสิ่งเหล่านี้ไม่จำเป็นในฐานะที่เป็นปรมาจารย์สร้างสามารถทำงานเหล่านี้ได้ด้วยตนเองในช่วงเวลาของการปล่อยให้กับวงดนตรีชายคนหนึ่งและงานสร้างขนาดเล็ก ดังนั้นการสร้างขั้นตอนเดียวไม่ได้ใช้ CI ในการใช้งาน สิ่งที่เกี่ยวกับ multistep นั้นซับซ้อนกว่านี้ สิ่งเหล่านี้อาจสร้างความเจ็บปวดได้โดยเฉพาะอย่างยิ่งหากไม่มีสคริปต์ของ Nant ดังนั้นแม้จะมีการสร้างสิ่งเหล่านี้ก็ไม่ประสบความสำเร็จอีกต่อไป ค่าใช้จ่ายในการแก้ไขปัญหาแสงสีแดงเกินดุลประโยชน์ ในที่สุดนักพัฒนาหมดความสนใจและตั้งคำถามถึงความถูกต้องของแสงสีแดง

หลังจากได้ลองใช้งานมาพอสมควรแล้วฉันเชื่อว่า CI นั้นมีราคาแพงและมีการทำงานหลายอย่างรอบตัวแทนที่จะต้องทำงานให้เสร็จ มันคุ้มค่ากว่าที่จะจ้างนักพัฒนาที่มีประสบการณ์ซึ่งไม่ได้ยุ่งกับโครงการขนาดใหญ่กว่าแนะนำและบำรุงรักษาระบบเตือนภัย

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

สำหรับ CI ในการทำงานมันไม่เพียงพอที่จะเพียงแค่เขียนการทดสอบหน่วยพยายามที่จะรักษาความครอบคลุมเต็มรูปแบบและสร้างความมั่นใจว่าโครงสร้างพื้นฐานการทำงานสำหรับระบบที่มีขนาดใหญ่

บรรทัดล่าง:หนึ่งอาจถามว่าการแก้ไขข้อบกพร่องเป็นจำนวนมากก่อนที่จะปล่อยเป็นที่ต้องการจากธุรกิจที่จำเป็น CI เกี่ยวข้องกับงานจำนวนมากเพื่อดักจับข้อบกพร่องจำนวนหนึ่งที่ลูกค้าสามารถระบุได้ใน UAT หรือ บริษัท สามารถรับเงินเพื่อแก้ไขซึ่งเป็นส่วนหนึ่งของข้อตกลงการบริการลูกค้าเมื่อระยะเวลาการรับประกันสิ้นสุดลง


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

3
@Carnotaurus, local clone ของ repository git ระยะไกลกำจัดการหมดเวลาจากแหล่งควบคุม ปัญหาเครือข่าย - สำหรับการสร้างผลิตภัณฑ์หรือไม่ ตอนนี้จริง ๆ ...

3
@Carnotaurus สีแดงเนื่องจากแสงคุณภาพของข้อมูลหรือโครงสร้างพื้นฐานเป็น codesmell ของการทดสอบที่เปราะบาง ดูเพิ่มเติมได้ที่: การจัดการการบำรุงรักษาภาระการทดสอบ
k3b

1
การทดสอบที่มากขึ้นนั้นขึ้นอยู่กับลักษณะภายนอกที่มีความเปราะบาง ตัวอย่าง: หากการทดสอบประสบความสำเร็จก็ต่อเมื่อลูกค้า XY อยู่ในฐานข้อมูลการทดสอบว่ามีความเปราะบางเว้นแต่ว่าการตั้งค่าการทดสอบทำให้มั่นใจว่าสิ่งที่จำเป็นต้องมีนี้มีอยู่โดยการแทรกข้อมูลเองหากจำเป็น
k3b

6
"ผลกำไร: ทำผลิตภัณฑ์ทำงานเมื่อเราสามารถให้คนอื่นจ่ายเงินให้เราได้เพราะมันไม่เหมือนที่พวกเขาคาดหวังว่าซอฟต์แวร์จะทำงานได้ตั้งแต่แรก"? อาจไม่เป็นไปตามข้อกำหนดทางกฎหมาย แต่ฟังดูเหมือนเป็นการฉ้อโกงสำหรับฉัน
Chris Pitman

คำตอบ:


43

การติดตั้งเครื่องยนต์ CI นั้นคล้ายกับการตั้งสัญญาณเตือนไฟไหม้ในบ้าน

ในใจของฉันมีประโยชน์ไม่สัมพันธ์กับนักพัฒนาจำนวนมาก แต่มีรหัสฐานขนาดใหญ่ CI-engine กระตือรือร้นทำงานที่น่าเบื่อทุกอย่างที่คุณไม่ต้องการทำด้วยตัวเองและทำมันทุกครั้ง

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

โปรดทราบว่าหากคุณให้ CI-engine ทำงานที่น่าเบื่อทั้งหมดรวมถึงการติดตั้งโปรแกรมติดตั้ง ฯลฯ คุณไม่จำเป็นต้องทำด้วยตนเอง คุณสามารถตรวจสอบแหล่งที่มาของคุณและรอผลิตภัณฑ์สำเร็จรูปที่สร้างขึ้นในตำแหน่งมาตรฐาน (แก้ไข: CI-engine ยังทำงานในสภาพแวดล้อมที่กำหนดไว้อย่างดีหลีกเลี่ยงการตั้งค่าเฉพาะของนักพัฒนาเพื่อให้มั่นใจว่าสามารถทำซ้ำได้)

นี่ก็เป็นส่วนหนึ่งของการประกันคุณภาพ


แก้ไข: หลังจากเขียนข้างต้นฉันมีประสบการณ์กับเครื่องมือสร้าง Maven สำหรับ Java โดยพื้นฐานแล้วสิ่งนี้ช่วยให้เราสามารถเก็บการกำหนดค่า CI ที่สมบูรณ์ภายในโครงการ (ด้วย pom.xml) ทำให้ง่ายกว่ามากในการรักษาการติดตั้ง CI และ / หรือย้ายไปยัง CI-engine อื่น


1
@Carnotaurus ในกรณีนั้นไฟสีแดงจะถูกใช้สำหรับข้อผิดพลาดชั่วคราวเช่นกัน เสียงเหมือนข้อ จำกัด ใน CI-engine ที่คุณใช้

2
@Carnotaurus จากประสบการณ์ของฉันงานที่ทำเพื่อบันทึกทุกแง่มุมของทุกสิ่งที่เกี่ยวข้องเช่นการทำรีลีสและจากนั้นกล่าวว่าจะเผยแพร่หลายครั้งมีขนาดใหญ่กว่าการจับเวิร์กโฟลว์ในสคริปต์ ant หรือ maven ซึ่งหุ่นยนต์สามารถถูกประหารชีวิตได้ จำนวนครั้งใด ๆ หุ่นยนต์ดังกล่าวยังทำงานในสภาพแวดล้อมห้องสะอาดเพื่อให้มั่นใจว่างานสร้างนั้นสามารถทำซ้ำ

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

2
@Carnotaurus: ฉันไม่ได้พูดถึงระบบเตือนภัย หากการทดสอบล้มเหลวแพทช์จะไม่รวมอยู่ในที่เก็บหลัก (เลย) เพื่อให้มั่นใจว่าเมื่อใดก็ตามที่คุณชำระเงิน / โคลนคุณจะได้รับสำเนาที่ใช้งานได้อย่างสมบูรณ์และสามารถเริ่มทำงานได้ทันที ตอนนี้ฉันเห็นด้วยกับคุณว่าการทดสอบอาจยากที่จะเขียนและบำรุงรักษา ... แต่ฉันได้ทำงานด้วยและไม่มีการทดสอบและฉันเห็นการปรับปรุงคุณภาพแน่นอนกับพวกเขา ดังนั้นคำถามคือ: อัตโนมัติหรือไม่ จากประสบการณ์ของฉันการทดสอบด้วยตนเองใช้เวลานานกว่าการเขียนสคริปต์การทำงานอัตโนมัติ (แต่ฉันทำงานใน บริษัท ขนาดใหญ่ที่มีเครื่องมือสำหรับการทำเช่นนั้น)
Matthieu M.

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

33

ไม่ใช่นักพัฒนาจำนวนมาก แต่ต้องใช้ขั้นตอนกี่ขั้นในการรับจาก 1 ถึง n (รวม) โดยที่ 1 & n อยู่ ...

1: การตรวจสอบโค้ด
และ
n: มีแพ็คเกจที่สามารถติดตั้งได้

หาก n <2 คุณอาจไม่ต้องการ CI เป็น
อย่างอื่นคุณต้องมี CI

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


1
+1 - ฉันค่อนข้างมากที่ฉันสามารถเพิ่มด้านบน - แต่นี่อยู่ใกล้กับแกนหลักของสาเหตุที่ฉันชอบ CI ... ไม่เพียง แต่สำหรับสิ่งที่มันทำ แต่ยังสำหรับสิ่งที่คุณต้องทำเพื่อให้มัน ทำงาน (ความต้องการเหล่านั้นเป็นสิ่งที่คุณควรทำจริง ๆ )
Murph

2
@murph: ใช่แล้วมันมีข้อดีเล็กน้อยเช่น 1) การรู้ว่ามีอะไรอยู่ในที่เก็บของคุณจะสร้าง 2) การสร้างคลิกครั้งเดียว 3) ความสามารถในการปล่อยรุ่นในเวลาที่สังเกตเห็นและอื่น ๆ อีกมากมาย
Binary Worrier

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

1
@Carnotaurus: ขออภัยเพื่อน แต่ฉันไม่แน่ใจว่าฉันรู้ว่าสิ่งที่คุณกำลังพยายามที่จะพูด CI ไม่เกี่ยวข้องกับการทดสอบ ใช่คุณสามารถ - และควร - รันการทดสอบหน่วยเป็นส่วนหนึ่งของบิลด์ แต่สิ่งเหล่านั้นไม่ควรขึ้นอยู่กับสิ่งใดก็ตามที่ไม่ได้ติดตั้งเป็นส่วนหนึ่งของการทดสอบ อย่างไรก็ตาม CI ทำการทดสอบ หนึ่งใน - หลาย - ประโยชน์ของ CI คือมันช่วยให้ทีม QA ทันทีและรถกระบะ seemlessly เปลี่ยนแปลงรหัสใหม่ CI = ความสามารถในการปล่อยทันที
Binary Worrier

1
@ BinaryWorrier - ฉันคิดว่าขั้นตอนที่ 1 คือการตรวจสอบในรหัส;)

10

มันอาจจะคุ้มค่ากับความพยายามแม้แต่ทีมเดียว สิ่งนี้เป็นจริงโดยเฉพาะอย่างยิ่งเมื่อคุณพัฒนารหัสข้ามแพลตฟอร์มและคุณต้องมั่นใจว่าการเปลี่ยนแปลงของคุณจะทำงานบนทั้งสองแพลตฟอร์ม ตัวอย่างเช่นคอมไพเลอร์ C ++ ของ Microsoft ยอมรับได้มากกว่า GCC ดังนั้นหากคุณพัฒนาใน Windows แต่ต้องการสนับสนุน Linux ด้วยการมีระบบ CI บอกคุณเมื่อบิลด์บิลด์ของคุณบน Linux เป็นตัวช่วยอย่างมาก

ระบบ CI บางระบบค่อนข้างง่ายต่อการติดตั้งดังนั้นค่าใช้จ่ายจึงไม่ใหญ่มาก ลอง Jenkins หรือ Hudson เป็นต้น


ฉันไม่ได้พิจารณาสถานการณ์จำลองข้ามแพลตฟอร์ม หากคอมไพเลอร์ที่แตกต่างกันจำเป็นต้องสร้างบิลด์ที่แตกต่างกันมีกรณีที่ดีสำหรับ CI - รับ upvote
CarneyCode

4

อย่างที่คุณบอกว่ามีค่าใช้จ่ายในการตั้งค่าและทำให้มันใช้งานได้

แต่คำถามที่ว่าจุดพักจุดใดไม่ใช่หน้าที่ของจำนวนคนที่คุณมีในทีม แต่เป็นหน้าที่ของความยาวของโครงงาน

ต้องบอกว่ามีส่วนหนึ่งของค่าใช้จ่ายการติดตั้งที่คุณสามารถใช้ในโครงการในอนาคตทั้งหมดของคุณดังนั้นในระยะยาวต้นทุนค่าโสหุ้ยอาจเข้าใกล้ศูนย์


ดังนั้นความยาวของโครงการ (ขนาดของโครงการ) จึงเป็นสิ่งสำคัญสำหรับคุณ CI? ฉันพบว่าการเตือนที่ผิดพลาดนั้นมีค่าใช้จ่ายสูงมาก
CarneyCode

ใช่คุณต้องมีเวลาชำระค่าใช้จ่ายในการตั้งค่าและการเรียนรู้โค้ง ในทางทฤษฎีคุณควรเรียนรู้วิธีกำจัดสัญญาณเตือนผิดตลอดเวลา
สตีเฟ่น Bailey

ใช่นี่คือทฤษฎี
CarneyCode

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

3

ฉันตั้งค่าเจนกินส์ในสัปดาห์นี้เพื่อสร้างโครงการ. NET ขนาดเล็กที่ฉันกำลังทำงานอยู่ ฉันรวมมันเข้ากับการควบคุมแหล่ง Git ของฉันเพื่อที่จะกระตุ้นการสร้างในทุกการกระทำ ฉันรวมการทดสอบหน่วยเข้ากับโครงสร้าง ฉันรวมการวิเคราะห์แบบคงที่ในรูปแบบของการละเมิด FxCop และ StyleCop

ตอนนี้ทุกครั้งที่ฉันเช็คอินมันจะตรวจสอบรหัสของฉันทั้งหมดสร้างมันเพิ่มหมายเลขรุ่นในชุดประกอบทั้งหมดทดสอบทดสอบวิเคราะห์สำหรับการละเมิด FxCop และ StyleCop เก็บการสร้างและบันทึกผลลัพธ์ในกราฟจำนวนหนึ่ง ฉันมีทัศนวิสัยในช่วงเวลาของผลการทดสอบและการละเมิด

การดำเนินการตั้งแต่เริ่มต้นใช้เวลาประมาณหนึ่งชั่วโมงหรือมากกว่านั้น (อาจใช้เวลาหนึ่งวันกับ Google หากคุณยังไม่เคยทำมาก่อน) ไม่มีค่าใช้จ่ายเพราะเครื่องมือทั้งหมดมีให้ฟรี

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

ดังนั้นสถานการณ์เดียวที่ฉันเห็นว่า CI ไม่คุ้มค่าในขณะที่เป็นโครงการที่ต้องใช้เวลาหนึ่งวันและจากนั้นไม่เคยได้รับการเยี่ยมชมอีกครั้งหรือหนึ่งครั้งในภาษาที่ไม่มีเครื่องมือฟรี / ที่มีอยู่และค่าใช้จ่ายในการซื้อ ไม่เป็นสัดส่วนกับงาน


อย่างที่ฉันได้กล่าวไปแล้วมันคือการทดสอบหน่วยเพื่อให้ครอบคลุมรหัสดั้งเดิมที่นำเสนอค่าใช้จ่ายที่สำคัญ นอกจากนี้เรายังไม่ได้พูดถึงทีมชายคนหนึ่งที่นี่เช่นกัน ... ฉันขอขอบคุณผู้นำของเจนกิ้นส์
CarneyCode

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

1

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

ในกรณีอื่น ๆ ทั้งหมดมันเป็นชัยชนะสุทธิ


ฉันคิดว่านี่คือที่ฉันมาจากเกินไป มันถูกกว่าด้วย
CarneyCode

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

1

ค่าโสหุ้ยน้อยที่สุด ฉันว่าโครงการชายคนหนึ่งมันน่าจะมีประโยชน์ เมื่อคุณไปถึงจุดที่สอง

ฉันยอมรับว่าสำหรับโครงการชายคนหนึ่งหากคุณมี "ขั้นตอนเดียวในการสร้าง / ตรวจสอบ" คุณอาจโอเคที่มีการรวมระบบอย่างต่อเนื่อง แต่ในกรณีเหล่านั้นคุณได้ทำงานหนักเพื่อตั้งค่า CI เป็นส่วนใหญ่ มันอยู่ในระบบที่เป็นทางการ (CC, ฮัดสัน, TeamCity ฯลฯ )


คุณหมายถึงโดยไม่ต้อง CI?
CarneyCode

1

คำถามที่ว่า CI จ่ายสำหรับตัวเองเมื่อใดเป็นเรื่องยากที่จะตอบโครงการใหม่

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

ตอนนี้ผู้บริหารอาจตัดสินใจที่จะปล่อยพร้อมบั๊ก แต่นั่นเป็นความเสี่ยงทางธุรกิจ อย่างน้อยตอนนี้ก็สามารถบรรเทาได้ด้วยการประเมินความเสี่ยงนั้นแทนที่จะโทรศัพท์ / ตื่นสายตอนดึก ๆ ซึ่งถ้าพวกเขาถูกเรียกเก็บเงินในอัตรารายชั่วโมงให้จบลงด้วยราคาแพง

อีกสิ่งที่ควรพิจารณาในเรื่องของต้นทุน แผนก QA ของคุณเป็นอย่างไร มันคือการทดสอบด้วยตนเอง? หากคุณไปที่ CI คุณอาจสามารถลดต้นทุน QA โดยรวมโดยอัตโนมัติสคริปต์เหล่านั้นกับกล่อง dev ของคุณ คุณสามารถลดจำนวน QA folks ที่สนับสนุนโครงการของคุณโดยทำให้พวกเขามีส่วนร่วมในระยะ CI


1
การแทนที่การทดสอบการถดถอยด้วยตนเองด้วยการทดสอบอัตโนมัติ UI บางอย่างใช้เวลาและทักษะค่อนข้างน้อย ใน บริษัท หนึ่งแห่ง บริษัท หนึ่งแห่งเขียนทดสอบประมาณ 40% และออกจาก บริษัท หลายปีที่ผ่านการทดสอบยังไม่ได้เขียน ฉันพนันว่ามันเป็นเรื่องปกติ
CarneyCode

ไม่มันไม่ธรรมดา
quant_dev

ฉันไม่เห็นหลักฐานที่
โต้เถียงกัน

หากคุณเขียนการทดสอบบูรณาการ / การยอมรับในภาษาธรรมชาติ DSL เช่น Gherkin คุณสามารถแปลการทดสอบอัตโนมัติเป็นคู่มือได้อย่างง่ายดาย ดังนั้นฉันไม่เห็นว่าเป็นปัญหา
Mike Cornell

@Carnotaurus - ฉันคิดว่ามันเป็นเรื่องปกติ ฉันเห็นมันสองครั้งด้วย การทดสอบอัตโนมัติ UI นั้นยาก
Rocklan

1

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


ฉันชอบบิตเกี่ยวกับการทดสอบ UI ระดับระบบ การทดสอบจำนวนมากหายไปจากการทดสอบหน่วยที่มีคุณภาพและความครอบคลุมที่น่าสงสัย
CarneyCode

ความคุ้มครองเป็นคำถามของจิตวิทยามนุษย์เช่นกัน เรามีแนวโน้มโดยธรรมชาติในการเขียนแบบทดสอบสำหรับกรณีเหล่านั้นที่เราได้คิดไปแล้ว ด้วยเหตุนี้การได้รับการรับรองในระดับ SIL สูงการทดสอบหน่วยจะต้องเขียนโดยทีมแยกต่างหากจากสิ่งที่พัฒนาระบบภายใต้การทดสอบและถึงตอนนั้นมีหลายกรณี & สถานการณ์ที่ชัดเจนสำหรับทุกคนเท่านั้นในการหวนกลับ จำเป็นต้องตรวจสอบความครอบคลุมของรหัสอย่างเข้มงวด แต่ยากเป็นพิเศษและมีราคาแพง
William Payne

... ดังนั้นประโยชน์ที่คุณจะได้รับจากการโยนขยะที่น่ารังเกียจที่สุดที่คุณสามารถพบได้ในระบบที่ระดับบนสุดและดูว่าเกิดอะไรขึ้น ... :-)
William Payne

1
+1 - เห็นด้วยทั้งหมด บางส่วนของระบบไม่สามารถทำการทดสอบหน่วยได้ (เช่นขอบที่ฐานข้อมูล) แน่ใจว่าคุณสามารถเยาะเย้ย db แต่จะปล่อยให้โค้ดที่พูดกับ db นั้นยังไม่ผ่านการทดสอบ ในบางจุดคุณต้องเขียนการทดสอบในโลกแห่งความจริงที่รวมระบบของคุณและพูดคุยกับระบบอื่น เมื่อคุณทำเช่นนั้นคุณจะพบข้อบกพร่องที่คุณพลาดในโลกที่แสนอบอุ่นของการทดสอบหน่วยและกรอบการเยาะเย้ย (LINQ ไปยัง SQL Springs เพื่อคำนึงถึง)

ที่จริงแล้วฉันเพิ่งค้นพบสิ่งที่น่าสนใจในการทดสอบฝอยที่อาจแลกการทดสอบหน่วย: jester.sourceforge.net
William Payne

0

ใช้งานทุกครั้งโดยไม่คำนึงถึงขนาดของทีม หากเป็นเพียงคุณเท่านั้นที่รู้คุณอาจกำลังเขียนโค้ดจากแล็ปท็อปของคุณที่ starbucks ต่อจากระบบ beefier ที่บ้าน?

ค่าใช้จ่ายจริง ๆ นั้นไม่เลว


0

หนึ่ง. ใช่หนึ่งเพียงพอที่จะเริ่มใช้การรวมอย่างต่อเนื่อง


0

มันไม่ได้เป็นเรื่องของจำนวนนักพัฒนา แต่เป็นของ

คุณประหยัดเวลาโดยใช้ระบบอัตโนมัติมากน้อยเพียงใด

  • ประหยัดเวลาในการสร้างหลังจากการรวมใช้การทดสอบอัตโนมัติและสร้างการตั้งค่า * ความถี่ในการเช็คอิน = เปอร์เซ็นต์ของเวลาที่บันทึก

ข คุณมีรุ่น / สาขา / ผลิตภัณฑ์กี่รุ่น

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