Test Suite: T003 { Test One: Save a game, no exceptions ------------------------------------ [Use Case]: AGM003 [Precondition]: - Game is running and game is in progress [Input/Trigger]: - Actor Selects "Saves Game" [Expected Result]: - Game data is saved to a specified file [Notes]: - The user can save the game by clicking on the "Save Game" option from the application menu. - The test that the game has been saved the tester loads the same game. If the save was successful the game resumes from the same point. Test Two: Save a game with illegal name --------------------------------------- [Use Case]: AGM003 [Precondition]: - Game is running and user has started playing [Input/Trigger]: - Save game option is clicked and user specified a file name with illegal characters in it. Or the file name is longer than the allowed length. [Expected Results]: - Error message is shown to user. Nothing is saved. } Test Suite: T004 { Test One: Save a score, but cancel request ------------------------------------------ [Use Case]: AGM004 [Preconditions]: - There exists an active Game Session of an arbitrary type. ie Brickles, Bowling, or Pong has begun. [Input/Trigger]: - The user selects "Save Score" from the application menu. - The user cancels the save request in the File Name window. [Expected Results]: - The user selects "Save Score" from the application menu - The game engine pauses - A File Name Window is presented to the user - Closing the File Name Window (cancelling the request to save the score) unpauses the game session, resuming play for the user at the time of the pause. [Notes] - No file was created and no score was saved as a result of the previous steps. } Test Suite: T006 -> T008 { Test One: Test user boundaries of all three games ------------------------------------------------- [Use Case]: AGM006 -> AGM008 [Precondition]: - An active game session of an arbitrary type has begun. [Input/Trigger]: - The game's user-controllable object (ie. Paddle, Bowling ball) is moved to the far right and user keeps pressing the right directional button. * Observation: Pong, if played with paddles moving vertically, will not be tested as so. Perhaps instead the movable object should be tested for moving off of the screen, with the user trying to move it further. [Expected Results]: - The user-controllable object stays at far right position hitting a wall but not moving over the wall. * Observation: Bowling has no "walls" per se, perhaps we should say the user-controllable object may not move out of the game boundary, defined per game type. [Notes]: - This seems like it should be broken into three test cases, one for each type of game, as the rules of boundary interaction or direction of play are not consistant across all three games. Test Two: Test ability to instantiate a game of any type -------------------------------------------------------- [Use Case]: AGM006 -> AGM008 [Precondition]: - AGM011 (Install game) has completed successfully. * Implied [Input/Trigger]: - The user clicks on Play (Brickles or Pong or Bowling). [Expected Results]: - Standard Instances of the required classes are created. - The application enters the ready state. [Notes]: - This is a generalization of a more specific test case, from Suite . } Test Suite: T006 { Test One: Testing Brickles end-game conditions ---------------------------------------------- [Use Case]: AGM006 [Precondition]: - Brickles game was started and has stopped [Input/Trigger]: - Actor responds to Win/Lose/Tie dialog window by clicking the left mouse button [Expected Results]: - Reinitialize Brickles. Display a new game board. [Notes]: - The game stops when the player wins, looses or ties the game. This is represented by the Stop message. - A dialogue box depicting the outcome appears. - On clicking the left mouse button the dialog box disappears. This is represented by the new Mouse message. - The game is reinitialized and a new game board is displayed. Test Two: Testing Brickles Puck striking a brick ------------------------------------------------ [Use Case]: AGM006 [Precondition]: - Instance of Brickles Game running. Game is in the PLAY state. [Input/Trigger]: - A puck strikes a brick. [Expected Results]: - Puck uses collision algorithm. - Reflects appropriately from brick. - Adds appropriately to score. - Affects brick (ex damage brick, remove brick) } Test Suite: T007 { Test One: Starting a game of Pong --------------------------------- [Use Case]: AGM007 [Precondition]: - The software has been installed on the system. - The user has started the software on the system. [Input/Trigger]: - The user selects 'Play' from the application menu - The software initializes the new game - The software displays a new game board - The user clicks the left mouse button to begin the game [Expected Results]: - The game has begun. - The user was able to start the game successfully. [Notes]: - This test case is a subset of from Suite . } Test Suite: T008 { Test One: Testing a frame of Bowling ------------------------------------ [Use Case]: AGM008 [Precondition]: - AGM011 (Install game) has completed successfully. [Input/Trigger]: - The user chooses to start a new game of Bowling. - The user clicks the left mouse button to begin the game. - The user positions the ball on screen via the mouse. - The user left clicks to send the ball down the alley. - The user repeats the last step, sending a second ball down the alley. [Expected Results]: - The system initializes the game and displays the game board, ready for the user to play. - After the user positions the mouse and clicks, the system moves the ball down the alley using a randomly selected algorithm. - When the ball reaches the pins, any collisions result in the pins moving in ways determined by the physics of the collision. - Then the system counts the number of pins knocked down. - The score is then computed for the frame by adding the total from both throws and is displayed for the user. Test Two: Testing a STRIKE in Bowling ------------------------------------- [Use Case]: AGM008 [Precondition]: - Instance of Bowling Game running. - Game in PLAY state. - The game is in the first roll of a given frame. - User clicks the left mouse button to send the ball down the alley, according to the movement algorithm [Input/Trigger]: - Ball strikes pins and scores STRIKE. (Ambitious, are we?) [Expected Results]: - Frame is recorded as a STRIKE. } Test Suite: T013 { Test One: Testing Game Speed Slider ----------------------------------- [Use Case]: AGM013 [Precondition]: - A game session of an arbitrary type has been started, and is currently in the play state. - There exists a UI slider to change the speed of gameplay. [Input/Trigger]: - User changes the speed from the default to a desired speed. * Assumption: Speed is set to max, to simplify this one test case. [Expected Results]: - The speed of gameplay now reflects the change previously made by the user. }