การทดสอบซอฟต์แวร์แตกต่างกันหรือไม่เมื่อเราทำการพัฒนาเกม


11

ฉันกำลังอ่านบทความนี้เกี่ยวกับความแตกต่างระหว่างการพัฒนาซอฟต์แวร์โดยทั่วไปและการพัฒนาเกมและผู้เขียนได้ให้คะแนนที่ดีเกี่ยวกับการทดสอบซอฟต์แวร์ชี้ให้เห็นเช่น

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

ดังนั้นการอ่านนี้ทำให้ฉันคิดว่าแง่มุมอื่น ๆ ในการทดสอบซอฟต์แวร์ที่เราควรพิจารณาแตกต่างกันหรือเฉพาะเมื่อเราจัดการ / ทดสอบเกม? ใครบ้างเคยมีประสบการณ์กับสิ่งนี้หรือเคยได้ยินเรื่องอื่นบ้าง?


เชื่อมโยงใจกับกระดาษหรือไม่ ฉันอยากอ่าน
RubberDuck

1
นี่คือกระดาษ: microsoft.com/en-us/research/wp-content/uploads/2016/02/... โอ้และให้ความเห็นของคุณเกี่ยวกับเรื่องนี้ถ้าคุณไม่รังเกียจ ขอบคุณ :-)
Ronnie Edson

9
ฉันกลัวว่าความล้าสมัยอย่างรวดเร็ว (จากการทดสอบ) เมื่อเผชิญกับความปรารถนาที่จะเปลี่ยนแปลงของพลังที่เกิดขึ้นในการพัฒนาที่ไม่ใช่เกมเช่นกัน สิ่งใดที่ชี้ให้เห็นว่าการพัฒนาเกมอาจไม่แตกต่างจากการพัฒนาอื่น ๆ
Erik Eidt

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

1
ความแตกต่างเป็นโบสถ์ที่กว้างมาก และมันค่อนข้างขึ้นอยู่กับสิ่งที่คุณกำลังเปรียบเทียบกับ
Robbie Dee

คำตอบ:


10

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

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

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

และในที่สุดเป้าหมายหลักคือความบันเทิง นักเล่นเกมก็โอเคกับข้อผิดพลาดถ้ามันทำงาน 60+ FPS ดูดีและมีเนื้อหาบันเทิงที่ไม่มีที่สิ้นสุด

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

อย่างไรก็ตามมีความพยายามล่าสุดในการฝึกอบรม NN ในการเล่นเกมซึ่งเป็นรูปแบบของการทดสอบลิงแบบสำรวจและเรียนรู้ด้วยตนเองอย่างมีประสิทธิภาพ


2
"โปรแกรมธุรกิจเฉลี่ย" คืออะไร?
whatsisname

1
ใช่! จำนวนการโต้ตอบที่แตกต่างกันไม่มากนัก (ใช้ ERP ชั้นนำที่มีธุรกรรมหลายพันรายการที่มีความสัมพันธ์กันและแนวกระบวนการที่สามารถกำหนดค่าใหม่ได้อย่างไม่มีที่สิ้นสุด) ยิ่งไปกว่านั้นคาดว่าซอฟต์แวร์ธุรกิจจะมีพฤติกรรมที่สามารถทำซ้ำได้ซึ่งสามารถตรวจสอบได้ง่ายในการทดสอบการรวม เกมต้องให้ความบันเทิงและสิ่งที่ทำซ้ำได้น่าเบื่อ ดังนั้นจึงเป็นเรื่องยากสำหรับเครื่องมือทดสอบในการวัดระดับของความบันเทิงหรือความสอดคล้องและความสมจริงของฉากที่ผู้ใช้เห็น อาจอยู่กับ AI ใน 30 ปีจากนี้ ....
Christophe

@Christophe มันขึ้นอยู่กับขอบเขตของการทำซ้ำ - เช่น "เมื่อตัวละครถูกยิงเขาควรสูญเสีย 5 สุขภาพ" สามารถทำซ้ำได้อย่างสมบูรณ์แบบและทดสอบได้อย่างสมบูรณ์แบบ สิ่งที่สำคัญคือตรรกะของเกมที่สามารถทดสอบได้ทำซ้ำได้ถูกแยกออกจากส่วนที่มีสถานะเป็นตัวตนน้อยกว่าเพื่อยืนยัน
Ant P

2

เป็นเวลาหลายปีแล้วที่ฉันทำ gamedev แต่เหนือคำตอบที่ดีมีบางสิ่งที่ฉันต้องการเพิ่มและรายละเอียด

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

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

อีกสิ่งหนึ่งคือรหัสฐานสำหรับเกมโดยทั่วไปจะไม่ได้รับการบำรุงรักษาและแก้ไขและขยายเป็นเวลาหลายปีและหลายปี มันไม่เหมือนกับนักพัฒนาของ Super Mario ที่พัฒนามาตั้งแต่แรกใน 6502 ชุดต้องมีอะไรที่คล้ายกับรหัสต้นฉบับมานานหลังจากเกมส่งมอบ Doom 3 อาจใช้โค้ดเป็นศูนย์ (หรือปิด) จาก Doom 1 หากมีแฟรนไชส์ที่ต่อเนื่องเกมใหม่ ๆ จะเหมือน "ภาคต่อ" มากกว่า "การอัพเกรด" เกมส่วนใหญ่เป็นเพียงการจัดส่งและอาจปล่อยแพทช์ DLC บางส่วนจากนั้นรหัสก็เสร็จสิ้น นั่นเป็นความแตกต่างอย่างมากจากอุตสาหกรรม VFX ของฉันที่ฉันทำงานเกี่ยวกับการดูแลรักษารหัสย้อนหลังไปถึงวัน Amiga ซึ่งได้รับการจัดวางและบำรุงรักษามานานหลายทศวรรษ เกมมักจะไม่ '

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

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

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

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

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

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


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