ฉันจะรันการทดสอบการใช้งานกับเกม Unity3D ได้อย่างไร


25

บริบท

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

ฉันรู้อยู่แล้วว่ามีชุดเครื่องมือทดสอบหน่วยสำหรับ Unity3d ที่มีอยู่เป็นสินทรัพย์ ฉันใช้มันเป็นชุดทดสอบหน่วยดังนั้นฉันจึงทดสอบโมเดลของฉัน (คลาส)

ตัวอย่างการทดสอบประเภทใดที่ฉันกำลังคิด

สำหรับ "การทดสอบการใช้งาน" ฉันหมายถึงสิ่งนี้:

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

คำถาม

Q1:ฉันจะเขียนและเรียกใช้การทดสอบการใช้งานสำหรับเกมได้อย่างไร สิ่งนี้มักจะทำใน UnityTestTools (UTT) หรือไม่

Q2:ถ้า UTT มากกว่าสำหรับการทดสอบหน่วยแล้วมีชุดแยกต่างหากสำหรับการทดสอบการทำงานหรือไม่ อันไหน?

หมายเหตุ:

ฉันกำลังตั้งเป้าหมาย Android และทำงานอยู่ Unity5.3.1f1


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

3
จริงๆแล้วไม่มี เครื่องมือทดสอบ Unity ประกอบด้วยชุดเครื่องมือสำหรับการทดสอบการรวมและการยืนยันมากมายตั้งแต่รุ่นแรก หากคุณไม่เห็นสิ่งนี้ใน UTT ในตัวให้ดาวน์โหลด UTT แบบเต็มจาก Store Asset
Maxim Kamalov

ลองดูที่เอกสารการทดสอบการทำงานUnity Test Runner Docจะอนุญาตให้ทั้งโหมดการเล่นและการทดสอบโหมดแก้ไข
Racksay

คำตอบ:


1

ตามที่ฉันเข้าใจคุณกำลังต้องการทำความเข้าใจกับการทดสอบระบบอัตโนมัติใน Unity

เครื่องมือทดสอบความสามัคคี

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

วิธีที่ดีที่สุดในการทดสอบระบบอัตโนมัติในรูปแบบใดก็ตามคือทำในสภาพแวดล้อมที่ใกล้เคียงกับการผลิตมากที่สุด การใช้บางอย่างเช่นเครื่องมือทดสอบ Unity (อยู่ใน Unity Editor) ดูเหมือนเป็นความคิดที่ไม่ดีสำหรับทุกคนที่เขียนการทดสอบการรวมระบบแบบเดิม

ทำไม? เนื่องจากมีการทดสอบการรวมใด ๆ คุณต้องการให้มีสิ่งพิเศษน้อยที่สุดที่ทำให้แอปพลิเคชันของคุณไม่ทำงานเมื่อผู้ใช้เปิด ตัวแก้ไข Unity อาจมีประสิทธิภาพหรือลักษณะการทำงานแตกต่างจากรุ่น iOS (ตัวอย่าง)

เหตุใดจึงต้องใช้เครื่องมือทดสอบ Unity (UTT)

เหตุผลหลักคือความสะดวกสบาย ทั้ง Unity Editor และ UTT ถูกสร้างขึ้นให้ใช้งานง่ายและใช้งานง่าย คุณจะมีการทดสอบการเขียนเวลาง่ายๆเชื่อมต่อพวกเขากับเกมเฉพาะของคุณและทำความเข้าใจเมื่อพวกเขาล้มเหลว

ความแตกต่างของพฤติกรรมระหว่าง Unity Editor กับการผลิตคืออะไร

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

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

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

การเริ่มต้นแอปพลิเคชันและการทดสอบด้วยตนเอง

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

นี่คือวิธีการที่:

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

ทางเลือก

ไม่น่าแปลกใจที่ทุกอย่างเกี่ยวข้องกับความสามัคคีเรามีทางเลือกมากกว่าสองสามทาง นี่คือบางส่วนที่คุณอาจต้องการพิจารณา:

  • ใช้ซีลีเนียมและไดรเวอร์ซีลีเนียมสำหรับความสามัคคี เสียงที่มีแนวโน้ม
  • แพคเกจการทดสอบ UIซึ่งจะช่วยให้การทดสอบการทำงานภายในของผู้เล่นที่มากเกินไป
  • ใช้Uniumเพื่อส่งข้อมูลไปยังกรอบการทดสอบภายนอก

ขึ้นอยู่กับขนาดและขอบเขตของโครงการของคุณคุณอาจต้องการจ้างหนึ่งหรือหลายตัวเลือกที่ฉันระบุไว้ด้านบน

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