Skip to content

Functional Test Plan

sgfost edited this page Jan 30, 2023 · 15 revisions

Introduction

Functional testing is a type of software testing that validates the software system against the functional requirements and specifications of the project. The goal of functional testing is to test each component and its function and compare the testing results with the expected outcome.

For the purpose of this project, the focus of this testing is frontend testing to verify the frontend functionality, GUI, and Usability and ensure that every user is protected from any bugs.

Test Process

Step Description
1 Understand application use cases and functions
2 Identify test input or valid test data
3 Compute the expected outcomes with the selected test input values
4 Execute test cases
5 Compare actual and computed expected result

Objectives and Tasks

High-Level Functions

Testing the Port of Mars application will focus on the following high-level functions:

Function Definition Example
Mainline Test the main functions of the application Can a user login with proper credentials?
Usability Test the basic usability of the application Can a user easily navigate through the application using the provided navigation tools?
Accessibility Test the accessibility of the application Can vision-impaired users use the system?
Error Conditions Test whether error messages are or need to be displayed. If an error message is displayed, determine if the message is helpful to the user. Does an error message appear when a game disconnects to inform the user they have been disconnected?

Use Cases

A user can:

Onboarding Requirements
1 Access and use the Port of Mars application across all browsers and resolutions greater and including iPad
2 Access and use the Port of Mars application if they are visually impaired
3 Sign up/Sign back in with a Google or Facebook account
4 View and sign consent form with a valid email
5 Verify their email
Lobby Requirements
1 Join the game lobby/dashboard page after consenting and verifying their email
2 See a list of active waiting rooms
3 Rejoin a game automatically from the lobby if they have an ongoing game that was exited out of
4 Join an existing room, create a new one, or start a game alone with bots
5 When inside a waiting room, start a game with bots or vote ready if not the leader
6 Visually see that a game is starting with a short timer when reaching max capacity (5 players)
Game Requirements
1 Join a game from the lobby
2 Be replaced by a temporary bot if deemed idle
3 Can reset idle timer and play again by clicking on a modal
4 Use chat to communicate with other players in every phase of a round in the game (besides during 'Solar Flare' event
5 Use the report button on a chat message to report a player for abuse of the CoC
6 View a log of the history of events that have transpired during the duration of the game in the 'Mars Log'
7 Click 'Ready to Advance' to set their readiness
8 Draw the correct amount of Events based on the System Health
9 Vote during an event requiring player interaction
10 See Mars Event effects applied as described
11 Invest time blocks to increase System Health during the investment phase of the game
12 Invest time blocks to purchase Resources at the correct price during the investment phase of the game
13 Trade altruistically (1-0 or 0-1 trades)
14 Send a Trade to other players during Trade phase
15 Cancel or accept a trade
16 Purchase Accomplishments with Resources during Purchase phase
17 Discard Accomplishments during Discard phase
18 In the case of Victory, view winners on Victory screen
19 In the case of Defeat or Victory, review the Mars Log on the screen in descending order
20 Press a button to exit to the game lobby, and is not logged out in doing so

In addition to the use cases described above, ensure that conditions are valid throughout game play. For example, ensuring the conditions of a game are correct for all corner cases (e.g. are consecutive Event effects being applied correctly? Is contributed System Health being calculated and applied correctly?)

Testing Strategy

Below are suggestions for useful tools.

Game Dev Mode

  1. Login to the game with the developer login.
  2. On the Player Dashboard, click Join a Game.
  3. Click Distribute Groups button to be allocated into a game.
  4. On the left side, click the round arrow button to slide out a navigation menu.
  5. On the navigation menu, click Enable DevTools.

Once DevTools is enabled, the following shortcuts are available to use:

Keystroke Command
q Reset game to Round 1.
r Advance the game to the next Phase

Test Data

Data recorded during the game will be delivered to the interns in CSV file format for data analysis.

Report Bugs and Issues

For any bugs that you encounter, submit an issue on GitHub.

Submitting a GitHub Issue

The development team utilizes GitHub's issue tracker to keep a list of issues relating to the Port of Mars application. Open questions, action items, bugs and play test notes and tasks are typically documented in the Issues section by the development team.

Prerequisites: own a GitHub account

Step Direction
1 Go to the Port of Mars GitHub repository.
2 In the horizontal tabbed menu at the top of the repository, click Issues.
3 Click the green New Issue button.
4 Populate the new issue text fields with a title and description of the issue. Be sure to label the issue appropriately. Since the focus is frontend testing, most of the time the labels will be frontend and bug.
5 Review your new issue, and then click the Submit New Issue button.

Cross-Browser Testing

Dev tools can be used to view the browser in different resolutions. To toggle responsive design mode in your browser: Ctrl + Shift + M to view the application in a responsive design mode. You can switch the device views and view the application in various resolutions.

https://www.browserling.com/

Frontend Performance Testing

  • Page Speed : add-on by Google; evaluates the web page and provides suggestions to minimize loading time; makes web page retrieval quicker when users access web pages using Google search engine.