การเข้ารหัสและการทดสอบใน sprint เดียวกัน


22

มีการทดสอบการจัดการภายในการวิ่งเช่นเดียวกับการเข้ารหัสอย่างไรหากการเข้ารหัสทั้งหมดหรือส่วนใหญ่ไม่ได้ทำจนกว่าจะสิ้นสุดการวิ่ง (ฉันหมายถึงการพัฒนา "ซุปถึงถั่ว" และการทดสอบ PBI เดียวภายในการวิ่ง)

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

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

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

ฉันแน่ใจว่าฉันไม่ใช่คนแรกที่มีปัญหานี้

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


2
คุณไม่ใช่คนแรกที่มีปัญหานี้ คุณสามารถใช้ไปป์ไลน์: ในการวิ่งปัจจุบันทีมทดสอบจะทดสอบคุณสมบัติที่มีการใช้งานในระหว่างการวิ่งครั้งก่อนหน้า
Giorgio

2
PM บังคับให้ทีมทำสิ่งต่าง ๆ ในแบบของพวกเขาเสียงเหมือนอาร์เซดครึ่งเปรย
gnat


8
@ Mark Richman: น้ำตก? คุณไม่มีวงจรการพัฒนาประมาณ 1-2 สัปดาห์ในน้ำตก ฉันคิดว่าเขาไม่รู้ว่าเขากำลังพูดถึงอะไร
Giorgio

2
@gnat: หากทีมไม่ได้มีประสิทธิภาพสูง (และดูเหมือนว่าทีมนี้เหมาะกับคำอธิบายนั้น) คุณสามารถมองว่านี่เป็น PM ที่แนะนำทีมเพื่อพัฒนากลยุทธ์การพัฒนาที่มีประสิทธิภาพมากขึ้น บางที PM รู้สึกว่าการส่งรหัสที่ไม่ผ่านการทดสอบอย่างต่อเนื่องอาจไม่ดีสำหรับธุรกิจ เปรียวไม่ได้แปลว่า "ปล่อยให้ทีมทำในสิ่งที่พวกเขาต้องการ" ต้องมีขอบเขตจนกระทั่งทีมนั้นโตพอที่จะตัดสินใจด้วยตนเอง
ไบรอัน Oakley

คำตอบ:


13

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

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

มีหลายสิ่งที่คุณสามารถทำได้:

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

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

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


8

ปัญหาที่สำคัญคือคุณมีโปรแกรมเมอร์ที่รหัส แต่ไม่ทดสอบและทดสอบที่ทดสอบ แต่ไม่ใช่รหัส

แก้ปัญหาดังกล่าวแล้วคุณจะไม่มีปัญหานี้และมีทีมงานที่มีประสิทธิภาพมากกว่า

วิธีหนึ่งที่ทำงานให้ฉันในอดีตคือการแนะนำผู้เขียนโค้ดและผู้ทดสอบให้จับคู่เรื่องราวกับงานที่ชัดเจนในการส่งเรื่องราวที่ผ่านการทดสอบอย่างสมบูรณ์ ร่วมกับที่ฉันได้ลบความคิด "dev complete" ทุกรูปแบบ: ไม่มีคอลัมน์ "dev complete" ใน scrum / kanban / trello board ไม่มีทัศนคติ "dev done" โดย coders

เกิดอะไรขึ้น:

  • คู่มีหน้าที่รับผิดชอบในการส่งเรื่องราวและพวกเขาทั้งคู่จะล้มเหลวหากเรื่องราวยังไม่สมบูรณ์ พวกเขาได้รับการปฏิบัติในฐานะผู้เชี่ยวชาญที่รับผิดชอบในการส่งมอบซอฟต์แวร์และในกรณีส่วนใหญ่

  • มีการทดสอบน้อยกว่ามากที่ทำเพราะผู้ทดสอบสัมผัสกับการทดสอบหน่วยและการรวมเข้าด้วยกันดังนั้นพวกเขาจึงไม่ทำแบบทดสอบซ้ำด้วยตนเอง

  • การทดสอบบางอย่างเป็นไปโดยอัตโนมัติเมื่อผู้พัฒนาเข้าใจดีขึ้นว่าผู้ทดสอบต้องการอะไร

  • บางคนอารมณ์เสีย

  • เรื่องราวต่างๆได้รับการส่งมอบอย่างรวดเร็วโดยเฉลี่ยเนื่องจากรอบการทดสอบการดึงรหัสเริ่มขึ้นเกือบจะทันที

แน่นอนว่านี่เป็นเพียงประสบการณ์ของฉันเท่านั้น แต่คุณอาจต้องการลองด้วยตัวคุณเองถ้าทำได้

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

นี่เป็นปัญหาการสื่อสารไม่ใช่ปัญหาที่คล่องตัว การใช้ระเบียบวิธีที่คล่องตัวนั้นทำให้เห็นได้ชัด ทีม Silo'd เป็นรูปแบบการต่อต้านการจัดการที่เป็นที่รู้จักดังนั้นยอมรับการปรับตัวที่ไม่คล่องตัวในกรณีนี้!


2
องค์กรนี้ได้สร้างขอบเขตและบทบาทที่ชัดเจนสำหรับ "ผู้พัฒนา" และ "ผู้ทดสอบ" และทั้งคู่จะได้พบกัน)
Mark Richman

ดังนั้นเปลี่ยนกฎ!
Sklivvz

3
@ MarkRichman หนึ่งในงานที่ผ่านมาของฉันมีขอบเขตที่ชัดเจนในบทบาทของ "นักพัฒนา" และ "ผู้ทดสอบ" แต่องค์กรนั้นไม่ได้ใส่n'er จะได้พบกับบล็อกเพื่อให้พวกเขาสื่อสารกัน ฉันจำได้ว่าทำ sprints เป็นคู่กับ "tester tester" และมันก็ดีมาก บริษัท ของคุณแยกบทบาทหรือกำหนดอุปสรรคการสื่อสาร / การทำงานร่วมกันระหว่างวิศวกรให้บรรลุบทบาทเหล่านี้หรือไม่
ริ้น

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

@Giorgio นั่นคือมุมมองน้ำตก ในความคล่องตัวผู้คนที่สามารถส่งมอบคุณค่าได้อย่างอิสระนั้นเป็นที่ชื่นชอบ ไม่มีเหตุผลว่าทำไมการพัฒนาและการทดสอบควรเป็นอาชีพแยกต่างหาก มันเป็นทางเลือกที่น่านับถือ แต่ไม่เหมาะกับการพัฒนาที่คล่องตัว
Sklivvz

4

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

ตัวอย่าง: ในระหว่างการวิ่งคุณต้องเพิ่มคุณสมบัติที่ช่วยให้สามารถกรองผลการค้นหาตามเกณฑ์ที่แตกต่างกัน คุณได้นำกลไกการค้นหาของคุณไปใช้แล้ว แต่ผลลัพธ์จะเรียงตามลำดับตัวอักษร

  • ระหว่างการวิ่ง:

    1. ทีมร่างการออกแบบฟีเจอร์ใหม่และผลกระทบต่อฐานรหัสจริง

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

    3. คุณสมบัติใหม่นี้ได้รับการทดสอบอย่างรอบคอบเพื่อให้แน่ใจว่าจะไม่ทำลายสิ่งใด (การทดสอบการถดถอย) และทำงานได้ตามที่คาดไว้ (การทดสอบหน่วย)

    4. ถ้าเป็นไปได้และเหมาะสม , ซึ่งเป็นกรณีที่ไม่อยู่ในโครงการส่วนใหญ่เจ้าของผลิตภัณฑ์ (และเพื่อให้ทีมงานควบคุมคุณภาพของคุณ) อย่างต่อเนื่องสามารถประเมินคุณลักษณะใหม่เพื่อป้องกันไม่ให้ทีมงานไปในทิศทางที่ไม่ถูกต้อง สิ่งนี้ต้องการการรวมอย่างต่อเนื่องกับการสร้างหลายสิบทุกวัน

  • หลังจากการวิ่งเจ้าของผลิตภัณฑ์จะทำการประเมินคุณสมบัติใหม่เพื่อตรวจสอบว่าสอดคล้องกับความต้องการของลูกค้าหรือไม่ ทีมงาน QA ของคุณอยู่ที่นี่จริง ๆ หลังจากจบการแข่งขัน

ฉันเชื่อว่าปัญหาที่แท้จริงของคุณมีดังต่อไปนี้:

  • ขอบเขต การวิ่งเกี่ยวข้องกับทีมของคุณและทีมของคุณเท่านั้นไม่ใช่ QA จริงของคุณซึ่งทำหน้าที่เป็นเจ้าของผลิตภัณฑ์มากขึ้น

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


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

@ MarkRichman ทุกชั่วโมงพวกเขาจ่ายเงินให้คุณพิมพ์ไร้สาระลงใน codebase พวกเขากำลังสูญเสียไม่เพียง แต่ชั่วโมงที่พวกเขาจ่ายเงินให้คุณ แต่ทุกชั่วโมงก็จะได้รับเรื่องไร้สาระจาก codebase
Móż

4

หากการเข้ารหัสทั้งหมดหรือส่วนใหญ่ไม่เสร็จสิ้นจนกว่าจะสิ้นสุดการวิ่ง

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

วิธีแรกคือคุณไม่ต้องเขียนโค้ดจนกว่าจะสิ้นสุดการวิ่ง การเขียนรหัสจริง ๆ แล้วเป็นส่วนเล็ก ๆ ของการพัฒนา หากคุณจบประมาณครึ่งทางผ่านการวิ่งนั่นเป็นการให้เวลามากมายสำหรับ QA ในการทำงานของพวกเขา นอกจากนี้ยังทำให้คุณมีเวลาเหลือเฟือในการเขียนเอกสารทำความสะอาดหนี้ด้านเทคนิคออกแบบสำหรับสินค้าในมือ ... สิ่งอื่น ๆ ที่คุณต้องทำเพื่อผลิตภัณฑ์ที่มีคุณภาพ ข้อเสียอย่างหนึ่งของเรื่องนี้ที่ฉันเคยเห็นคือเกือบจะเป็นไปไม่ได้เลยที่จะได้ฟังก์ชั่นการใช้งานและการทดสอบเครื่องทำได้อย่างรวดเร็ว โดยส่วนตัวฉันคิดว่ามันสมบูรณ์ดีที่จะทำการทดสอบหน่วยหลังจากให้ QA เริ่มที่จะดูการทำงาน แต่ผู้สนับสนุน TDD (และคนอื่น ๆ ) จะไม่เห็นด้วย

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


1
ฉันเคยมีการควบคุมคุณภาพให้เป็นหนึ่งในการทดสอบ ผู้คนที่นี่ต้องการเห็นSDLC ทั้งหมดเสร็จสมบูรณ์ทุกสองสัปดาห์ ฉันแค่ไม่เห็นว่าเป็นไปได้
Mark Richman

5
@ MarkRichman - ทำไมไม่? 1 วันสำหรับการวางแผน 5 วันสำหรับการเข้ารหัสและ 4 สำหรับการทดสอบหน่วยเอกสารแก้ไขข้อผิดพลาดและการออกแบบสำหรับการวิ่งครั้งต่อไป ความท้าทายไม่ได้ทำให้เสร็จ แต่ต้องลงโทษทางวินัยพอที่จะทำให้ บริษัท ทำงานได้ดี
Telastyn

1
เพราะพวกเขาจะไม่เน้นใน 5 วันที่ฉันกำลังเขียนโปรแกรม แต่อีก 5 วันที่ฉันไม่ได้ แน่นอนฉันจะเติมอีก 5 วันด้วยการเข้ารหัส แต่เนื่องจากพวกเขาต้องการให้งานการเข้ารหัสทั้งหมด "soup-to-nuts" เสร็จสมบูรณ์ (รวมถึงการทดสอบ) ก็ไม่สอดคล้องกับลูกศรของเวลาฟิสิกส์ :)
Mark Richman

1
@markrichman - ดีนั้นมันควรจะเป็นเรื่องง่ายที่จะชี้ไปที่ทั้งหมดของสิ่งอื่น ๆ ที่ไม่ได้เข้ารหัสที่คุณต้องทำเพื่อให้จริงจะทำ
Telastyn

ฉันยังค้นพบงานเพิ่มเติมที่ต้องทำเพื่อให้งานที่ทำไปแล้วเสร็จในระหว่างการวิ่งปัจจุบัน สิ่งนี้บังคับให้งานอื่น ๆ ไม่ได้ใช้งานสำหรับการวิ่งนั้น นี่เป็นเรื่องปกติและฉันคิดว่าเป็นวิญญาณแห่งความคล่องตัว แต่ฉันถูกสั่งให้ไม่เพิ่มอะไรในการวิ่งปัจจุบันและเพิ่มงานที่เพิ่งค้นพบ (และเสร็จสมบูรณ์) เหล่านี้ลงใน Product Backlog ซึ่งไม่เหมาะสมกับฉัน .
Mark Richman

1

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

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

ตามกฎง่ายๆที่คาดว่าจะนำสินค้าระหว่าง 5 ถึง 15 รายการที่ค้างไว้ในการวิ่ง สิ่งนี้จะช่วยให้คุณทราบว่าสินค้าแต่ละชิ้นมีจำนวนค้างมากแค่ไหน นอกจากนี้ยังช่วยให้คุณมีโอกาสที่ยอดเยี่ยมในการทำงาน 'เสร็จ' ภายในการวิ่ง

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


0

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


ฉันเห็นด้วยกับคุณ แต่ "พลังที่เป็น" ดูเหมือนจะเป็นคนเจ้าระเบียบเกี่ยวกับสิ่งอื่นนอกเหนือจากการทำ SDLC ทั้งหมดให้เสร็จภายในสองสัปดาห์ สิ่งอื่นใดนอกจากวิธีการนี้ดูเหมือนว่าจะถือว่าเป็นน้ำตก
Mark Richman

0

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

ฟังก์ชั่น (... ) ถูกกล่าวว่ามีผลข้างเคียงถ้านอกเหนือจากการคืนค่าแล้วมันยัง (... ) มีปฏิสัมพันธ์ที่สังเกตได้กับ (... ) โลกภายนอก

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

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

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

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

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

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

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

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