ฉันจะเริ่มต้นการทดสอบในการต่อต้านการทดสอบได้อย่างไร [ปิด]


20

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

หากฉันรอรับการสนับสนุนจากองค์กรของฉันเพื่อเริ่มการทดสอบมันจะไม่เกิดขึ้น ถ้าฉันพยายามที่จะ "เปลี่ยนแปลงสิ่งต่าง ๆ จากภายใน" โดยการทดสอบการจัดการที่ฉันจะหมดแรงก่อนที่จะเกิดการเปลี่ยนแปลง ฉันต้องเริ่มการทดสอบตอนนี้

แต่ด้วย TDD และตระกูลของมันฉันจะจบลงด้วยรหัสการทดสอบมากมายพร้อมกับรหัสการผลิต ระบบควบคุมเวอร์ชันของเรา (รวมศูนย์ทั้งหมด) ไม่ได้จัดระเบียบไว้สำหรับการจัดเก็บรหัสทดสอบ ฉันจะต้องหาที่สำหรับทุกอย่างบนเวิร์กสเตชันของฉัน

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


14
ทำไมคุณไม่สามารถเก็บรหัสทดสอบใน VCS ของ บริษัท ของคุณ ฉันคิดว่าในโครงการที่มีsrcไดเรกทอรีสำหรับรหัสการผลิตเป็นไปได้ที่จะเพิ่มtestไดเรกทอรีด้วย - หรือเป็นสิ่งต้องห้ามอย่างชัดเจนด้วยเหตุผลบางอย่าง?
PéterTörök


@ PéterTörökคุณประเมินค่าเรามากเกินไป เราไม่มีsrcไดเรกทอรีเรามีเว็บรูท เพื่อตรวจสอบรหัสของฉันใน VCS ส่วนกลางฉันจะตรวจสอบมันลงในรูท
kojiro

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

@ScottWylie ฉันไม่ได้พูดอย่างนั้น เรามี VCS เราไม่ได้จัดให้มีการทดสอบ (หรืออะไรมากไปกว่าการแก้ไขสิ่ง webroot) ฉันคิดว่าหลานชายของใครบางคนตั้งค่า CVS ในปี 1998 และไม่มีใครเปลี่ยนนับตั้งแต่
kojiro

คำตอบ:


22

ฉันทำสิ่งนี้เป็นการส่วนตัวด้วยความสำเร็จ ปัจจัยสำคัญสู่ความสำเร็จ:

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

7

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

ฉันขอแนะนำให้อ่าน Machiavelli The Princeบทเกี่ยวกับวิธีแนะนำการเปลี่ยนแปลงก่อนที่จะทำอะไร


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

1
@kojiro: ใช่การทดสอบโดยรวมจะช่วยลดเวลาและค่าใช้จ่าย อย่างไรก็ตามจะไม่ทำในระยะสั้น ผู้จัดการบางคนมองว่าระยะสั้นมีความสำคัญมากกว่า ท้ายที่สุดสิ่งที่เป็นซอฟต์แวร์ที่ดีถ้าไม่ใช่ บริษัท ที่ได้รับค่าจ้างและสามารถเรียกเก็บเงินจากลูกค้าสำหรับการแก้ไขข้อบกพร่อง
Sardathrion - Reinstate Monica

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

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

3

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

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


1

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

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

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


0

แนวคิดหนึ่งคือคุณมุ่งหวังที่จะเขียนแบบทดสอบที่พิสูจน์ว่ารหัสที่บุคคลอื่นเขียนนั้นเป็นความผิดพลาด ควรขายแนวคิด

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