ทางเลือกอื่นสำหรับตัวบ่งชี้ "การผ่าน / การสร้างไม่ดี"


14

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

ฉันพบปัญหาบางอย่างกับที่:

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

และฉันไม่เชื่อว่ามันเป็นสิ่งที่ไม่ดีที่มีการทดสอบที่ล้มเหลวใน repo ของคุณเหมือนมีปัญหาในตัวติดตามของคุณ สิ่งเหล่านี้เป็นเพียงสิ่งที่รอการแก้ไข

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

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

มีวิธีที่จะทำให้การรวมระบบอย่างต่อเนื่องและเข้ากันได้กับ TDD หรือไม่?

อาจมีวิธีแก้ปัญหามาตรฐาน / การปฏิบัติเพื่อแยก "การทดสอบใหม่" (ที่สามารถล้มเหลว) และ "การทดสอบการถดถอย" (ที่ไม่ควรล้มเหลวเพราะพวกเขาเคยทำงาน)?


1
มีตัวบ่งชี้ที่แสดงว่าจำนวนการทดสอบที่ล้มเหลวเพิ่มขึ้น (สีแดง) หรือลง (สีเขียว) ในชั่วโมงสุดท้าย (หรือมากกว่านั้น)
Joachim Sauer

2
ฉันไม่ใช่ผู้เชี่ยวชาญ TDD / ALM (ดังนั้นความคิดเห็นมากกว่าคำตอบ) แต่ฉันคิดว่าปัญหาของคุณสามารถแก้ไขได้ด้วยสาขาส่วนตัว / สาขาฟีเจอร์ คุณทำงานเกี่ยวกับคุณสมบัติ A หรือไม่? แยกสาขาออกทำงานบนสาขา (กับเพื่อนร่วมงาน) และเมื่อคุณทำเสร็จแล้วให้รวมเข้ากับลำต้นแบบรวมอย่างต่อเนื่อง
Avner Shahar-Kashtan

@JoachimSauer ใช่ แต่เป็นมาตรฐานที่เป็นมาตรฐาน / ใช้ในโครงการใหญ่ ๆ ฉันพยายามเข้าใจว่าเพราะเหตุใดโครงการส่วนใหญ่ (และเครื่องมือ CI) จึงทำงานเช่นนั้น
Matthieu Napoli

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

@MadKeithV อย่างแน่นอน
Matthieu Napoli

คำตอบ:


12

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

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

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

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

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

แก้ไข

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

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


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

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

the build would always have failing testsแม่นยำ! แต่นั่นเป็นสิ่งที่เลวร้ายหรือไม่? ตัวชี้วัดเพียงอย่างเดียวของเราคือ "การสร้างเสียหายหรือไม่" แต่โค้ดของคุณอาจเต็มไปด้วยข้อบกพร่องที่รู้จักดังนั้นจึงไม่ได้มีความหมายอะไรเลยนอกจากไม่มีการถดถอย ในโลกที่สมบูรณ์แบบทุกปัญหาของการติดตามจะมีการทดสอบ (การทำซ้ำง่ายกว่าการแก้ไข) ดังนั้นข้อเสียคือจะเห็นว่าการทดสอบ 35 ครั้ง / 70% ของการทดสอบทั้งหมดผ่านไปแล้ว Branch-A ช่วยเพิ่มการทดสอบเป็น 40 การทดสอบ (80%) โดยไม่มีการถดถอยและ Branch-B มีการถดถอย วันนี้คุณพูดได้แค่ว่า Master และ Branch-A นั้นใช้ได้และ Branch-B เสีย
Matthieu Napoli

@ Matthieu ฉันเห็นสิ่งที่คุณได้รับ ดูเหมือนว่าคุณต้องการหมวดหมู่พิเศษหรือบางอย่างที่บอกว่า "เฮ้ถ้าการทดสอบนี้ล้มเหลวก็โอเคเรารู้แล้ว แต่เรายังต้องการให้มันวิ่งและถ้ามันผ่านแล้วมันก็ดีกว่าและเราควรลบหมวดพิเศษออกเพราะ ตอนนี้เราสนใจว่ามันจะหยุด "
Earlz

@Earlz แน่นอน! สิ่งที่ฉันสงสัยคือ "มีคนทำที่ไหนสักแห่งหรือไม่และมีเครื่องมือที่สนับสนุน (CI และไลบรารีการทดสอบหน่วย?" เพราะถ้าฉันเพิ่งจัดหมวดหมู่การทดสอบเหล่านั้นด้วยเครื่องมือ CI และการทดสอบหน่วยคลาสสิก ล้มเหลวแล้วและฉันจะไม่เห็นความแตกต่างระหว่างการทดสอบที่ล้มเหลวดังนั้นจึงไม่มีประโยชน์: /
Matthieu Napoli

4

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

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

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

ให้ผู้ตรวจสอบสาขารวมสาขาของคุณต่อเมื่อผ่านการทดสอบทั้งหมด (ยิ่งมากขึ้น: ให้ผู้ตรวจสอบสามารถรวมสาขาของคุณได้ก็ต่อเมื่อผลการรวมสาขาเข้ากับอาจารย์ผ่านการทดสอบทั้งหมด!)


2
Simply tracking the number of failing tests is insufficientนั่นไม่ใช่การวัดที่เป็นไปได้เท่านั้น ตัวอย่างเช่นBranch-A improves it to 40 tests (80% passing) with no regression. ไม่มีการถดถอยหมายความว่าการทดสอบที่ผ่านมาจะผ่านไปเสมอ ในระยะสั้นการทดสอบจะได้รับอนุญาตให้ล้มเหลวตราบใดที่มันไม่เคยผ่าน สำหรับฉันแล้วดูเหมือนว่าเราจะพลาดสิ่งดีๆโดยการบังคับให้ห้ามการทดสอบที่ล้มเหลวในสาขาหลัก (แน่นอนว่ามันต้องใช้เครื่องมือที่ทำงานแตกต่างกัน: การทดสอบหน่วย, CI, ... )
Matthieu Napoli

ฉันยังยืนตามจุดของฉัน: อาจารย์ควรเป็นสีเขียวเสมอเพราะมันชัดเจนและชัดเจน การทดสอบตัวทำเครื่องหมายล้มเหลว ... ในสาขาคุณลักษณะ CI สามารถเตือนผู้คนถึงข้อบกพร่องที่โดดเด่น
Frank Shearar

ฉันคิดว่าสิ่งที่แมทธิวเสนอคือคำจำกัดความของ "สีเขียว" ที่แตกต่างกันเล็กน้อยไม่เบี่ยงเบนไปจากสีเขียวของอาจารย์เสมอ สำหรับฉันมันไม่ชัดเจนว่ามันไม่สมเหตุสมผล - มันต้องมีเครื่องมือที่ไม่สำคัญสำหรับการติดตามแน่นอน (จำเป็นต้องย้อนกลับการเปลี่ยนแปลงที่ทำผ่านการทดสอบนั้นหรือไม่โชคดีถ้านั่นหมายความว่ารัฐเป็นสีแดงในทันที ... )
คริสโตเฟอร์ Creutzig

NUnit มีแนวคิดของการทดสอบที่ไม่สนใจ นั่นอาจเป็นทางเลือก: พวกเขาจะไม่วิ่งดังนั้นพวกเขาจะไม่ล้มเหลว แต่พวกเขายังคงรายงานว่าถูกเพิกเฉย
Frank Shearar

2

มีวิธีในการแก้ปัญหาของคุณโดยไม่ทิ้งแนวทางปฏิบัติที่เป็นที่เข้าใจและยอมรับเกี่ยวกับการรวมกลุ่มอย่างต่อเนื่อง

ฉันจะเริ่มต้นด้วยปัญหาการยอมรับ 'การทดสอบที่ขาด' ที่สอดคล้องกับตั๋ว ทางออกหนึ่งคือการสร้างหนึ่งหรือมากกว่าหนึ่งการทดสอบทำลายเปิดเผยปัญหาแล้วจริง ๆ แล้วแก้ไขปัญหาเพื่อให้พวกเขาสามารถรวมกลับไปที่บรรทัดรหัสหลักเข้าด้วยกัน วิธีที่สองคือการทดสอบที่ใช้งานไม่ได้ แต่ใช้การตั้งค่าสถานะการเพิกเฉยบางประเภทดังนั้นจึงไม่เรียกใช้และทำลายโครงสร้าง อาจเพิ่มความคิดเห็นหรือคำอธิบายประกอบแบบพิเศษที่ทำให้เห็นได้ชัดว่านี่เป็นการทดสอบที่Ticket#Nไม่สมบูรณ์ นอกจากนี้ยังแนบบันทึกย่อไปยังตั๋วที่อ้างอิงถึงการทดสอบที่สร้างขึ้นซึ่งกำลังรอที่จะไม่ได้รับการรับรองและวิ่ง สิ่งนี้จะช่วยให้คนที่ซ่อมตั๋ว แต่จะไม่เป็นธงสีแดงสำหรับคนที่ผ่านการทดสอบ

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

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


คุณไม่จำเป็นต้องมีเครื่องมือใด ๆ เพื่อแชร์กับคนที่คุณเป็นคู่เขียนโปรแกรมด้วย - เพียงแค่มอบคีย์บอร์ด หากคุณใช้คอมพิวเตอร์เครื่องอื่นนั่นก็ไม่มีอะไรผิดปกติมันไม่ใช่ "การเขียนโปรแกรมจับคู่"
Christopher Creutzig

1

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

พิจารณาโครงการสำคัญเช่น Windows หรือ Linux หรือแม้แต่บางอย่างเช่น Firefox คุณคิดว่าพวกเขามีข้อบกพร่องหรือไม่? ไม่แน่นอน ตอนนี้โปรเจ็กต์เหล่านี้ไม่ได้ทำ TDD แต่มันไม่เกี่ยวข้องเลยจริงๆ - TDD ไม่ได้เปลี่ยนข้อเท็จจริงสองประการ: ข้อผิดพลาดอยู่และมีเวลาในการแก้ไข เวลาที่โครงการ (โอเพ่นซอร์สหรือไม่) ก็ไม่สามารถที่จะเสียข้อบกพร่องที่มีลำดับความสำคัญต่ำ KDE เมื่อเร็ว ๆ นี้มีข้อผิดพลาดที่แก้ไขมานานกว่าทศวรรษ เมื่อครั้งสุดท้ายที่คุณได้ยินใครบางคนพูดว่า "ฉันดีใจที่เรารอทศวรรษที่จะจัดส่งโครงการของเรา"?

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

คำแนะนำของฉันคือการหาโครงการที่ไม่สนใจสีแดงบางสีเขียว


1
 > a common best practice is to have all the tests passing (green) at all times.

ฉันชอบที่จะมีการทดสอบทั้งหมดไม่ได้ล้มเหลว (ไม่ใช่สีแดง)

ด้วยคำจำกัดความที่แตกต่างกันเล็กน้อยนี้คุณยังสามารถกำหนดการทดสอบที่

  • ยังไม่ได้ใช้งาน (เป็นสีเทาในหน่วย nunit หากมี NotImplementedException)
  • รู้ว่าจะล้มเหลว = "ต้องทำ" โดยทำเครื่องหมาย / ทำหมายเหตุประกอบการทดสอบว่าถูกละเว้น (สีเหลือง)

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


0

คุณสามารถพิจารณา "แนวคิด" CI บิลด์ที่ต่างกันได้

  1. CI ปกติสร้าง การสร้าง CI ปกติควรรวบรวมและรันเฉพาะการทดสอบที่ได้รับการเขียนโค้ดเพื่อให้ผ่านการทดสอบเพื่อให้รายงาน CI ของการทดสอบผ่าน / ล้มเหลวเป็นตัวบ่งชี้ที่ชัดเจนและชัดเจนของการถดถอยกับสถานะที่ยอมรับก่อนหน้าของรหัส
  2. การสร้าง CI "ในอนาคต" บิลด์นี้คอมไพล์และรันเฉพาะการทดสอบที่ไม่ได้เขียนโค้ดเฉพาะเพื่อให้ผ่าน อาจมีสาเหตุหลายประการที่จะต้องทำการทดสอบ:

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

    • เพิ่มการทดสอบสำหรับฟังก์ชันการทำงานใหม่ที่จำเป็นซึ่งยังไม่ได้ใช้งาน

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

เช่นเดียวกับใน "มาตรฐาน" CI ในระบอบการพัฒนาปกติทีมจะมองเฉพาะผลการสร้างรายวันของการสร้างปกติ

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

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


0

และฉันไม่เชื่อว่ามันเป็นสิ่งที่ไม่ดีที่มีการทดสอบที่ล้มเหลวใน repo ของคุณเหมือนมีปัญหาในตัวติดตามของคุณ สิ่งเหล่านี้เป็นเพียงสิ่งที่รอการแก้ไข

ปัญหาไม่ได้ล้มเหลวในการทดสอบ แต่เป็นตัวบ่งชี้การถดถอยที่ง่ายและบริบทน้อยกว่า Aka: ในฐานะนักพัฒนาฉันสามารถตรวจสอบตัวบ่งชี้เดียวและรู้ว่าฉันแนะนำการถดถอยหรือการทำลายรหัสหรือไม่

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

วิธีที่อยู่เครื่องมือส่วนใหญ่คือ 'สีเขียว / ผ่าน' แสดงถึงผลลัพธ์ที่คาดหวังไม่ใช่รหัสทำงาน:

  • ฟิตเนสมีแนวคิดของความล้มเหลวที่คาดหวัง
  • JUnit มี @Ignored / @Test (คาดหวัง =)
  • แตงกวามีสถานะ 'ยังไม่ได้ใช้' (หรืออะไรก็ตามที่เรียกว่า)

สิ่งเหล่านั้นมาพร้อมกับปัญหาของตัวเอง (คุณแยกแยะระหว่าง 'ใช่เรารู้ว่ามันพังใช้งานได้' และ 'พฤติกรรมที่ถูกต้องเป็นข้อยกเว้น') - แต่พวกเขาช่วย


0

ฉันใช้การทดสอบที่ข้าม

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

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