Câu trả lời:
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ó.
Đố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:
Điều gì đã không làm việc:
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".
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.
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.
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:
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.