Kiểm tra tự động các trò chơi [đã đóng]


54

Có phương pháp thử nghiệm tự động của trò chơi?

Kinh nghiệm cụ thể được đánh giá cao, với thông tin liên quan về dự án như nền tảng và loại trò chơi nếu điều đó giúp làm rõ.

Câu trả lời:


74

Trò chơi độc lập một người. Đó là một trò chơi xe tăng nhiều người chơi với địa hình có thể phá hủy, và địa hình có thể phá hủy và mã va chạm tỏ ra hơi khó hiểu.

Cuối cùng tôi đã dựng lên một số AI câm cơ bản (bằng "câm", ý tôi là "hoàn toàn ngu ngốc" - họ sẽ chọn ngẫu nhiên "lái về phía xe tăng địch", "lái xe tăng khỏi xe tăng địch" và "lái theo hướng ngẫu nhiên ", Trong khi bắn ngẫu nhiên vũ khí chính) và chơi trò chơi với tốc độ khung hình tối đa trong khi ghi lại các phím bấm. Tôi có khoảng 10-15 lần thời gian thực. Mã này đã được xác nhận rất nhiều, vì vậy nếu có bất kỳ lỗi nào xảy ra, nó sẽ đổ toàn bộ nhật ký nhấn phím vào đĩa cùng với một báo cáo lỗi và hạt giống ngẫu nhiên ban đầu. Sau đó tôi có thể đi và phát lại nhật ký nhấn phím để sao chép chính xác trạng thái hoặc chỉ gỡ lỗi từ báo cáo lỗi.

Tôi đã để nó chạy liên tục trong nhiều tháng. Lúc đầu, nó sẽ hiếm khi có được một giờ mà không gặp sự cố - tôi đã phải ngồi đó và trông trẻ trong một tuần, giết chết một số lỗi khó hiểu mỗi ngày. Cuối cùng, nó đã đến điểm mà nó đã chạy trong một tuần giữa các lần thất bại, tương đương với khoảng 1500 giờ người chơi mỗi lần gặp sự cố.

Nó là vô giá và tôi chân thành giới thiệu nó.


1
Thực sự lắt léo! Vâng, keylog là chiến thắng thuần túy.
David McGraw

1
Tôi bối rối: "dựng lên một số AI câm cơ bản" và "ghi lại phím bấm" - ai nhấn phím? Tôi nghĩ Bạn để AI của mình tự chơi mà không có con người? Bạn đã thực sự để AI của mình chơi trò chơi bằng cách mô phỏng các phím bấm thay vì gọi các hàm api? Bây giờ sẽ là trơn tru!
Dave O.

4
@Dave Yeah Tôi sẽ thừa nhận rằng điều đó có thể gây nhầm lẫn. Các AI được thiết kế để cung cấp tất cả đầu ra của chúng thông qua các bộ điều khiển mô phỏng. Họ lấy trạng thái trò chơi làm đầu vào, nhưng không sửa đổi trạng thái trò chơi theo bất kỳ cách nào. Đây có lẽ là một ý tưởng khủng khiếp với giao diện người dùng chuột nhưng toàn bộ giao diện được thực hiện bằng gamepad, vì vậy nó hơi xấu nhưng có chức năng. Tôi đã ghi lại các phím bấm ảo của AI và ngoài ra, cùng một mã đã ghi lại các phím nhấn thực khi thử nghiệm nó với bạn bè.
ZorbaTHut

32

Đối với một MMO tôi đã làm việc (100 nhà phát triển, tập trung vào PC), chúng tôi đã cố gắng thêm một loạt thử nghiệm tự động khổng lồ với thành công khác nhau. Đây là những gì đã làm việc:

  • Các thử nghiệm cơ bản trong quá trình xây dựng tự động của chúng tôi là một chiến thắng lớn. Điều này bao gồm các nhiệm vụ như tạo nhân vật, chuyển bản đồ, chạy một số kiểm tra giao diện người dùng có thể viết kịch bản và tìm kiếm hành vi dự kiến. Điều này đã bắt được một số lượng lớn lỗi trước khi chúng thực sự đến phần còn lại của công ty.
  • Về cơ sở hạ tầng máy chủ, chúng tôi đã phát triển một loạt các thử nghiệm tự động khác nhau mô phỏng các giao dịch máy chủ MMO điển hình. Sau đó chúng tôi có thể phát lại chúng dưới nhiều tình huống khác nhau để so sánh hiệu suất hoặc đảm bảo an toàn. Theo thời gian, các thử nghiệm này ngày càng chính xác hơn cho đến khi nó biến thành phát lại dữ liệu được ghi trực tiếp
  • Chúng tôi đã viết một "người chơi giả mạo" sẽ ngẫu nhiên lang thang khắp thế giới, nhảy, giết chết mọi thứ và nói những điều ngẫu nhiên trong trò chuyện. Điều này tìm thấy một số lượng lớn các vấn đề vật lý và cơ sở hạ tầng.

Điều gì đã không làm việc:

  • Chúng tôi đã cố gắng thêm một số thử nghiệm tự động định hướng chiến đấu rất cụ thể vào trình xây dựng tự động, nhưng về cơ bản điều này không bao giờ hoạt động. Nó sẽ hoạt động trong khoảng 3 ngày sau khi được triển khai, cho đến khi một nhà thiết kế hoặc nghệ sĩ thay đổi một cái gì đó và thử nghiệm sẽ thất bại, đưa ra các báo động thất bại trong quá trình xây dựng. 90% thời gian không phải là vấn đề thực sự. Các thử nghiệm này quá mỏng manh và thực sự thử nghiệm lối chơi cụ thể trên một bản đồ cụ thể với các quyền hạn cụ thể có thể không thể nhầm lẫn
  • Chúng tôi đã thử thực hiện một thử nghiệm hiệu suất tự động để so sánh hiệu suất của máy khách (FPS trung bình, v.v.) so với hiệu suất được ghi lại từ một tuần trước. Điều này cũng khá mong manh vì các bản demo mà chúng tôi sử dụng cho mục đích này có xu hướng bị thối khá thường xuyên và rất khó để xác định liệu sự chậm lại có phải do mất hiệu suất thực tế hoặc một số tác dụng phụ của quá trình thử nghiệm.

18

Làm việc trên một trò chơi chiến lược 4x với chiến đấu 3d (nghĩ rằng Homewworld gặp Masters Of Orion) mà không may không bao giờ nhìn thấy ánh sáng khi công ty hết tiền ..

Tôi luôn đảm bảo rằng bạn có thể chơi trò chơi mà không cần người chơi để chúng tôi có thể để trò chơi chạy qua đêm.

Chúng tôi có thể tắt chiến đấu 3d (đơn giản hóa thành kết quả ngẫu nhiên) và chúng tôi để công cụ chiến lược AI tự chơi. Điều này tìm thấy nhiều lỗi và vấn đề. Không chỉ hiển thị các lỗi chặn mà cả các lỗi chiến lược trong đó các chiến lược AI (ví dụ) sẽ bị bế tắc và tiêu tốn 1000 lượt không làm "điều đúng đắn". Những loại lỗi này rất khó phát hiện ra chỉ là "chơi trò chơi".


Hừm, tôi sẽ không nghĩ đây là thử nghiệm tự động - nhưng tôi đoán bạn đã đúng. Tôi đã làm điều tương tự trong một vài năm, chỉ chưa bao giờ nghĩ về nó theo cách đó.
mmyer

13

Trên một game bắn súng góc nhìn người thứ nhất mà tôi đã làm việc (Descent 3 - linux / mac / windows, ~ 30 người trong nhóm vào năm 1999), khả năng ghi / phát lại bản demo hóa ra cực kỳ hữu ích. Tôi đã thực hiện một tùy chọn trong đó bạn có thể phát lại bản demo nhanh như trò chơi có thể kết xuất khung hình và đó trở thành một cách tuyệt vời để xác minh hiệu suất sau khi một loạt các thay đổi.

Nó cũng thực hiện rất nhiều mã ngoài hệ thống kết xuất, vì vậy nó là một kiểm tra độ tỉnh táo tốt. Sau khi thực hiện một loạt các thay đổi, tôi chỉ có thể chạy phát lại bản demo của 10 phút chơi trò chơi. Nhiều lần nó sẽ bắt một lỗi trong một khu vực mà tôi không nghĩ sẽ tự kiểm tra.


8

Chúng tôi đã có một game bắn súng thế giới mở (x360, PS3, PC) sử dụng một ống khói nhanh trên máy chủ xây dựng - nó tải trò chơi, bước qua giao diện người dùng, chạy [hình đại diện] về phía trước, bỏ ảnh chụp màn hình và thoát ra. Nếu cctray phát hiện ra lối thoát sạch, bản dựng đã thành công.

Chúng tôi đã thực hiện nó trong khoảng năm cuối cùng của dự án và với quy mô nhóm ~ 100 devs.

Nó rất hiệu quả trong việc bắt lỗi showstopping nhưng thật dễ dàng để tạo ra một bản dựng vượt qua mức khói nhưng thất bại ở hầu hết các cấp độ "thực" hoặc không hoạt động trong chế độ nhiều người chơi, hoặc làm cho AI trở nên hoàn hảo. Nó chắc chắn là đáng làm.

Tôi đã nghe kể từ khi tôi rời đi, họ đã bắt đầu điều hành một loạt các ống khói lớn hơn, được trang bị cho nhiều PC. Rõ ràng việc duy trì các ống khói là một vấn đề và có một nhóm nhỏ chuyên giữ máy chủ và phần mềm xây dựng, vì vậy tôi không thể nói liệu đó có phải là thành công hay không.


6

Trải nghiệm của tôi với Kiểm tra tự động trong quá trình phát triển Crysis 2 có sẵn tại đây: http://yetanothergameprogrammingblog.blogspot.com/2010/06/aaa-automated-testing.html

Tóm lược:

  • Kiểm tra tự động đã cải thiện tính ổn định của phân phối, tăng năng suất cho cả người tạo nội dung và kỹ sư
  • Kiểm thử tự động là một công cụ hiệu quả để cải thiện chất lượng mã và giảm cơ hội phải làm thêm giờ
  • Nhìn chung, ngành công nghiệp trò chơi nói chung rất phản động, thử nghiệm tự động đáp ứng một số lập luận phi lý chống lại
  • Đừng gọi nó là thử nghiệm, hãy gọi nó là cái gì khác, gần như mọi thứ khác (Hãy nhìn vào Hành vi-Phát triển theo hướng)
  • Hãy linh hoạt, viết các bài kiểm tra tốt là khó và đòi hỏi các kỹ năng không có sẵn rộng rãi trong ngành Công nghiệp Trò chơi

2

Phát triển trò chơi thực sự là một trong những trường hợp mà thử nghiệm đơn vị dường như có ý nghĩa với tôi, bởi vì sự tương tác giữa các hệ thống rời rạc là rất phổ biến. Thiết kế theo hợp đồng tất nhiên là một phần của điều này, và nên được lên kế hoạch ngay từ ngày đầu phát triển, nhưng tôi không hiểu tại sao nó không thể được thực hiện sau đó khi cho rằng điều đó tồn tại.

Phần khó là, tất nhiên, kiểm tra tích hợp. Rất nhiều trò chơi có thể được kiểm tra chỉ bằng cách lặp lại bản demo hoặc một cái gì đó, nhưng thứ đó về mặt khái niệm khá dễ gỡ lỗi - nơi tôi quan tâm hơn đến việc dành thời gian của mình để lộ các lỗi sẽ xảy ra khi người chơi làm gì đó, với suy nghĩ rằng một lỗi mà người chơi không bao giờ thấy rõ ràng là ít quan trọng hơn một lỗi mà người chơi mắc phải.

Điều này là khá khó khăn, rõ ràng. Các chiến thuật hoạt động trên các ứng dụng khác (làm mờ, vượt qua dự kiến ​​/ thất bại, v.v.) không hoạt động tốt ở đây. Trong các hệ thống có thể tạo tập lệnh, có vẻ như việc xây dựng một tập các kịch bản thử nghiệm để mô phỏng người chơi là cách để đi (xem câu trả lời của JZig). Nhưng thử nghiệm đặc biệt cho những thứ mà người chơi có thể gặp trực tiếp khiến tôi trở thành nơi tốt nhất để tập trung thời gian của bạn cho cả mục đích thử nghiệm tự động và con người.


9
Nhưng người chơi không bao giờ làm những gì bạn mong đợi một người lành mạnh sẽ làm. Đó là lý do tại sao bạn không thấy những thứ như thang máy bị trục trặc trong Call of Duty cho đến khi phát hành. Bởi vì có hàng ngàn người đang làm những thứ mà các nhà phát triển và những người thử nghiệm không bao giờ nghĩ sẽ thử. Ngay khi ai đó tạo ra mô phỏng hoàn hảo của một game thủ 16 tuổi đầy ám ảnh, chúng tôi sẽ đạt đến điểm kỳ dị phát triển trò chơi :)
Casey Wagner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.