dntoll
11-29-2005, 08:14 AM
Background
We are in the middle of the process of betatesting Time Breaker. Most "buggs" are rather easy to fix and after 34 iterations we have eliminated most errors and most of the ones reported are minor issues... But then there is one or two more serious buggs and they are much much harder to reproduce. So we have recently started to think about building a system for automated testing into our games.
The issues
When you introduce new features or refactor your code you normally just test the new features and do not test all features in the game. This means you can introduce new buggs in the game and no one will know before iteration testing (if you even test this then).
During testing you sometimes run in to buggs that are not that common, hopefully you can reproduce the error but if the tester(or her hardware) is not available, you might not be able to reproduce the error.
If you cannot reproduce the error you can only solve it by reviewing the code and guess what happened.
Todays solution
Some issues are pretty easy to discover through normal logging, we log a lot of things but you normally do not log inside the gameloop (for performance reasons) so when some rare thing happens during gameplay you dont have a clue how that happened or how to reproduce it...
the idea
The idea is to record and log every game and be able to reproduce the same game using the recorded data. (randseeds, frametime and inputs). That way we hope to solve these issues. By replaying the game using the recorded data we can hopefully reproduce buggs... It is also easier for the testers who does not have to describe the buggs...
The other thing is that when you ran into some rare bugg and fix it, you can create a new recording of the game where you reproduce the events leading to the bugg and save that loggfile as a testcase. When you introduce new features to the code you just play all testcases to check if the game still behaves normally...
The questions
Do you have any experiences off such a system or have such a system in your games?
How do you collect testing data from your users today? do you have any automated system for that? (ex automated uploading of logfiles, profiling etc.)
(sorry for the language errors, I´m too tired to correct them, phew... :o )
We are in the middle of the process of betatesting Time Breaker. Most "buggs" are rather easy to fix and after 34 iterations we have eliminated most errors and most of the ones reported are minor issues... But then there is one or two more serious buggs and they are much much harder to reproduce. So we have recently started to think about building a system for automated testing into our games.
The issues
When you introduce new features or refactor your code you normally just test the new features and do not test all features in the game. This means you can introduce new buggs in the game and no one will know before iteration testing (if you even test this then).
During testing you sometimes run in to buggs that are not that common, hopefully you can reproduce the error but if the tester(or her hardware) is not available, you might not be able to reproduce the error.
If you cannot reproduce the error you can only solve it by reviewing the code and guess what happened.
Todays solution
Some issues are pretty easy to discover through normal logging, we log a lot of things but you normally do not log inside the gameloop (for performance reasons) so when some rare thing happens during gameplay you dont have a clue how that happened or how to reproduce it...
the idea
The idea is to record and log every game and be able to reproduce the same game using the recorded data. (randseeds, frametime and inputs). That way we hope to solve these issues. By replaying the game using the recorded data we can hopefully reproduce buggs... It is also easier for the testers who does not have to describe the buggs...
The other thing is that when you ran into some rare bugg and fix it, you can create a new recording of the game where you reproduce the events leading to the bugg and save that loggfile as a testcase. When you introduce new features to the code you just play all testcases to check if the game still behaves normally...
The questions
Do you have any experiences off such a system or have such a system in your games?
How do you collect testing data from your users today? do you have any automated system for that? (ex automated uploading of logfiles, profiling etc.)
(sorry for the language errors, I´m too tired to correct them, phew... :o )