Làm thế nào để tự động hóa thử nghiệm trò chơi?


13

Tôi mới tham gia vào lĩnh vực thử nghiệm này. Tôi chỉ phát triển một trò chơi cơ bản bằng cách sử dụng công cụ thống nhất nhưng tôi muốn thử nghiệm nó.

Tôi đã kiểm tra bằng selen nhưng tôi không biết làm thế nào để nhận được giá trị được trả lại có thông tin về hành động đang được thực hiện trong trò chơi. Nếu tôi có thể nhận được giá trị thì tôi sẽ có thể thực hiện hành động cần thiết cho phù hợp.


4
Đây là một câu hỏi khá thú vị. Cá nhân tôi nghĩ rằng thử nghiệm đơn vị được đánh giá khá thấp trong phát triển trò chơi. Tuy nhiên, có vẻ như bạn quan tâm nhiều hơn đến thử nghiệm tích hợp tự động, điều này thường thực sự khó thực hiện trong phát triển trò chơi. Đặc biệt là khi trò chơi đang sử dụng ngẫu nhiên.
Philipp

Đạo cụ để thực hiện kiểm tra nghiêm túc & tìm kiếm các công cụ cho công việc đó. Thay vào đó, bạn có thể muốn hỏi về SO - họ có rất nhiều câu hỏi và trả lời về selen. Như @Philipp đã đề cập, một số loại thử nghiệm chơi game rất khó tự động hóa; tức là tôi chưa thấy một bài kiểm tra không giám sát để kiểm tra hiệu ứng hình ảnh.
Pikalek

1
Không rõ bạn muốn kiểm tra cái gì, nhưng có vẻ như bạn đang tìm kiếm một giá trị có thể được kiểm tra độc lập với trò chơi - một giá trị được trả về bởi một hàm. Và nếu vậy, bạn có thể đơn vị kiểm tra chức năng này và sẽ không quan trọng liệu nó có được sử dụng trong trò chơi hay không. Nếu bạn không biết cách thực hiện, hãy cho chúng tôi biết và tôi sẽ cố gắng viết câu trả lời liên quan đến thử nghiệm đơn vị.
MVCDS

Câu trả lời:


1

Có nhiều cách để kiểm tra một trò chơi, hai cách được sử dụng nhiều nhất là: kiểm tra đơn vị và tích hợp.

Đối với thử nghiệm đơn vịbạn đang thử nghiệm hoạt động bên trong của trò chơi mà không thực sự chạy nó. Bạn có thể làm điều này cho các mô-đun cụ thể có phần phụ thuộc được trừu tượng hóa (ví dụ: logic tính toán Quest XP bạn nhận được, dựa trên một tập hợp các yếu tố nhất định; liệu âm thanh đã cho có được phát hay không). Tùy thuộc vào mức độ trừu tượng logic của bạn, bạn có thể kiểm tra nhiều hơn, nhưng để thống nhất cụ thể, có thể khó hơn khi đưa ra cách kiến ​​trúc trò chơi được thực hiện (ví dụ: kế thừa từ monobehaviour). Tuy nhiên, áp dụng các mẫu OOP như thành phần, bạn có thể trích xuất các bit logic có thể được kiểm tra theo cách xác định (ví dụ: vật lý), ngay cả khi đôi khi nó có thể được coi là hơi cực. Tất cả phụ thuộc vào thời gian bạn có, bạn có bắt đầu từ đầu với dự án hay không, bạn có bao nhiêu kinh nghiệm, v.v. Nói chung, tôi không biết Không thấy nhiều thử nghiệm đơn vị trong các trò chơi so với các dự án phần mềm không phải trò chơi khác. Loại thử nghiệm này khá dễ dàng để tự động hóa khi bạn cung cấp các hành vi bị chế giễu mà bạn mô phỏng.

Để thử nghiệm tích hợp , bạn tương tác với trò chơi "toàn bộ" tại một thời điểm nhất định, khi tất cả các bộ phận đang chạy. Tùy thuộc vào độ sâu của những thứ bạn muốn kiểm tra, tôi thấy nó có thể rất dễ để hoàn toàn không thể.

Một ý tưởng sẽ là xây dựng "kiểm tra tích hợp", ghi lại mọi hành động (hầu hết) mà nó thực hiện (nghĩa là sinh ra quái vật, phát âm thanh, hiệu ứng bắt đầu, sinh sản hạt). Sau khi nó chạy trong một thời gian nhất định, bạn có thể kiểm tra nhật ký để xem liệu nó có khớp với một mẫu nhất định hay không (điều này cũng phụ thuộc vào mức độ ngẫu nhiên của trò chơi, dựa trên các đầu vào). Bây giờ, điều này nghe có vẻ đơn giản, nhưng câu hỏi là: làm thế nào bạn bảo trò chơi thực hiện các hành động mong muốn? Điều này đưa tôi đến ý tưởng thứ hai.

Một ý tưởng khác là sẽ có loại máy chủ trong trò chơi, một lần nữa, cho mục đích thử nghiệm, có thể xử lý các yêu cầu (ví dụ: thông qua API REST) ​​và hoạt động theo các thực thể. Các yêu cầu có thể là: di chuyển sang trái, nhảy, xoay X độ, thay đổi chế độ xem, v.v ... Với phương pháp này, bạn cũng có thể thực hiện "kiểm tra" rằng trò chơi đang hoạt động như mong đợi, bằng cách kiểm tra trực tiếp trạng thái hoặc xác minh ảo nhật ký các sự kiện đã xảy ra. Cách tiếp cận này được sử dụng bởi các công cụ kiểm tra giao diện người dùng khác cho điện thoại di động (ví dụ: Xamarin Test Cloud)

Đối với phần điều khiển, nếu trò chơi của bạn dựa trên cảm ứng / trình duyệt, thay vào đó bạn có thể mô phỏng các hành động thông qua một thiết bị cảm ứng / nhập liệu ảo, nhưng điều này khó hơn một chút, tùy thuộc vào độ phức tạp của hành động.

Một ý tưởng khác, liên quan đến khía cạnh trực quan, là chụp một số ảnh chụp màn hình tham chiếu, hình ảnh trong giai đoạn ban đầu và so sánh chúng sau khi chuỗi hành động tương tự xảy ra trên một bản dựng mới hơn. Việc so sánh có thể có một khoản trợ cấp sai lệch cụ thể, để bảo vệ chống lại những thay đổi nhỏ. Trong các thử nghiệm, bạn có thể đăng nhập các màn hình không khớp và thấy sự khác biệt. Nó có thể là trường hợp màn hình tham chiếu cần phải được cập nhật do những thay đổi khác nhau. Trong trường hợp đó, trò chơi có thể được chạy lại với các hành động đặt trước và hình ảnh tham chiếu được cập nhật. Điều này có thể sẽ không hoạt động tốt với các hệ thống hạt hoặc các cảnh được tạo ngẫu nhiên, trừ khi bạn sử dụng ý tưởng trước đó để đặt một số loại hạt giống, được sử dụng để tạo ra các hạt.

Đối với âm thanh, nó có thể khó hơn một chút, vì nó sẽ liên quan đến việc "nghe" thiết bị OUT (điều này không phải lúc nào cũng có thể xảy ra, vì nó phụ thuộc vào phần cứng của hệ thống). Nhưng nếu có thể, bạn có thể thực hiện so sánh dựa trên tham chiếu giống như bạn làm với hình ảnh.

Tôi hy vọng điều này làm sáng tỏ về cách bạn có thể tự động hóa thử nghiệm trò chơi.

Chỉnh sửa sau: Tôi chỉ thấy rằng có một câu hỏi liên quan khác có thể cung cấp cho bạn một số gợi ý về cách bạn thực hiện một số bit nhất định: Kiểm tra trò chơi tự động

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.