Verification Plan - HomeDivision/Choreless GitHub Wiki

The primary type of testing for our web application will be manual testing. With our team having no prior experience using automation testing tools for web applications, we agreed that with the short time span of the project, it might take too much time to learn the automation tools rather than developing the actual application. Although manual testing can be tedious, the smaller scale of our web application will help alleviate some of the scalability issues that manual testing can generate.

Verification Process

For our application, our code repository will consist of three primary branches: an individual branch that each developer will have, a test branch, and a production branch. Our testing and build process will incorporate these branches in the following manner:

  • All primary development will be done on the local branch of each developer
  • When a developer has completed a feature or is ready to push a change, it will first be pushed to the test branch
  • Before pushing to the test branch, that developer must run all tests for the features/pages that they changed (tests are specified below)
  • If a test does not pass, that developer may not push to the test branch and must refactor their code until it passes all of the tests
  • Once the developer has confirmed that all of the tests run on their branch, they may push to the test branch
  • After pushing to the test branch, the developer must inform both Albert and Thomas that they have pushed to test branch
  • Albert and Thomas will then re-run the manual tests to ensure that they are working in addition to other integration tests depending on what code was pushed
  • If the code does not pass all of the tests, Albert or Thomas will rollback the test branch to before the push and the developer must refactor their code again
  • Once the code does pass all tests, Albert or Thomas will merge and push the test branch to the production branch

Test Types

For each requirement, tests will be marked under one of these categories:

Integration Test: Requirements marked with this test will be tested to ensure that that they work with other features within the application (e.g. creating a new chore list updates the list of chores available for chore cards).

Manual Unit Test: Requirements marked with this test will be tested to ensure that they meet all of the requirements and that the feature works on the specific page that it is on.

UI/UX Test: Requirements marked with this test will ensure that things such as visual looks and aesthetics match with the design requirements.

Testing Steps

The following tables include the basic test steps for each feature or page for our application

Landing Page

Requirement: Explains what this web application does and key features of the application and includes a summary of the problem statement and mission statement

UI/UX Test

  • Confirm that a description of Choreless exists on the page
  • Confirm that the description covers both the mission statement and problem statement
  • Confirm that it meets style guidelines

Requirement: Button that links to registration page for new users

UI/UX Test

  • Confirm existence of button Manual Unit Test
  • Confirm that the link goes to the registration page

Requirement: Text hyperlink to login page for existing users

UI/UX Test

  • Confirm existence of hyperlink Manual Unit Test
  • Confirm that the link goes to the login page

Login Feature

Requirement: User is able to log into the service using an email and password that matches the login credentials of an existing account

Integration Test

  • User can log into the web app from the login page using the test account Manual Unit Test
  • Confirm that the test account is able to log in

Requirement: User is able to reset their password through an online system using the email address associated with their account

Integration Test

  • Reset the password on an existing account works sucessfully
  • Login and logout to confirm that the password successfully reset Manual Unit Test
  • An email for password reset email should be sent by the system
  • Confirm that password can be reset
  • New passwords must meet the password minimum security requirements
    • Password must be between 6 and 20 alphanumeric characters
    • An error message should display if a bad password is given
  • Logging in with an invalid email account should result in a failed login attempt

Registration Feature

Requirement: User is able to register for a new account with the service which requires an email address, nickname, and password

  • The email address must be a valid email address format
  • The email address that the user inputs must not already be associated with another account
  • The nickname must be alphanumeric characters or spaces
  • The password must be between 6 and 20 alphanumeric characters
  • The password must match the retype password field to successfully create an account

Integration Test

  • Confirm with Firebase that a new account was created Manual Unit Test
  • Email Address
    • Try an invalid email address without the @ and/or domain extension, such as “myemail.”
    • Input valid email such as ”[email protected].” Ensure the @ symbol and the domain extension is present.
  • Nickname
    • Test a non-alphanumeric character
    • Input invalid nickname such as “|coolguy123!|”
    • Input a valid nickname such as "testing"
  • Password
    • Test less than 5 alphanumeric characters, such as “pass”
    • Test more than 20 alphanumeric characters
    • Have a non-alphanumeric character in a password between 6 and 20 alphanumeric characters
    • Input a valid password such as “password1”

Requirement: Button to complete registration process that validates and verifies the information before submission

Integration Test

  • Clicking the register button will always update the firebase database with the new user
  • The button will redirect the user to the join/create group page when the registration is successful

UI/UX Test

  • Confirm that the button exists

Manual Unit Test

  • Clicking on the button will check the form inputs and will trigger an alert for the user of any forms that do not have valid input
  • Clicking on the button will log the user in when registration is successful

Requirement: User is presented with the option to create a group or join an existing group using a Group passcode

UI/UX Test

  • User is presented with a button to join an existing group
  • User is presented with a button to create a new group

Manual Unit Test

  • Clicking on the button to join an existing group leads to the join a group page
  • Clicking on the button to create a new group leads to the create a new group page

Create a Group Feature

Requirement: User is able to create a new group

  • User is able to input a group name (does not need to be unique)
  • Group name must be alphanumeric characters or spaces
  • Group name must be at least 3-30 alphanumeric characters long and cannot start or end with a space

Manual Unit Test

  • Confirm that users are able to create new groups
  • Group name
    • Test a group name less than 3 alphanumeric or space characters
    • Test a group name more than 30 alphanumeric or space characters
    • Test a group name with non-alphanumeric or space characters
    • Test a group name that starts or ends with a space
    • Test a valid group name such as “Test group”
  • Creating a valid group updates the firebase database with the new group

Requirement: System must generate a unique Group Passcode for each group

  • The generated unique passcode will be 6 characters

Manual Unit Test

  • Generated passcode is unique among all other passcodes
  • Passcode is 6 characters long

Requirement: Group creator is able to send an email to invite others to this group

  • This email contains the generated Group passcode, group name, and a link to the login/register page
  • All invited email addresses must be a valid email address format

UI/UX Test

  • Sent email must contain the group passcode, group name, and a link to the login/register page

Manual Unit Test

  • Confirm that after creating a group, users are able to input email addresses to invite others to join that group
  • Email address
    • Try an invalid email address without the @ and/or domain extension, such as “myemail.”
    • Input valid email such as ”[email protected].” Ensure the @ symbol and the domain extension is present.

Requirement: Group creator is able to add new chores to their group (refer to add chores feature for more details)

  • Default set of chores can be added to the group’s initial chore list
  • Creator can opt out to not have default set of chores

Integration Test

  • All selected default chores are updated in the group’s chore list

Manual Unit Test

  • Group creator is able to select chores from a set of default chores
  • Group creator has the option to opt out of any default chores and start adding their own chores

UI/UX Test

  • After selecting chores or opting out, the user is redirected to the group settings page

Join a Group Feature

Requirement: After completing registration, user is able to input a Group passcode which then adds their account to the group with a matching Group passcode

Integration Test

  • Users without groups should direct here
  • User should be directed to the Weekly Calendar page after joining a group

Manual Unit Test

  • Check Firebase to make sure user is set up
  • Check Firebase to make sure user is added to group

Requirement: If Group passcode does not match any existing Group passcode, user is prompted to try again

Manual Unit Test

  • System should be going through groups from Firebase to check for the correct group
  • User should not be seeing any behind the scenes information, only the error.

Edit Group and Group Members Feature

Requirement: All users can edit each other’s chore goals

Integration Test

  • Goal is updated for the user

Manual Unit Test

  • Check Firebase to make sure user goal is updated

Requirement: All users can set the same chore goal for all group members at once

  • Group-wide chore goals will overwrite all individual user goals

Integration Test

  • Goal is updated for the user on this page
  • Goal is updated on the Weekly Calendar Page

Manual Unit Test

  • Check Firebase to make sure user goal is updated

Requirement: All users should be able to remove users

Integration Test

  • Members list is updated on this page as well as the Weekly Calendar Page

Manual Unit Test

  • Check Firebase to make sure user was actually removed

Requirement: All users have the option to generate a new Group passcode which will replace the old Group passcode

Integration Test

  • Joining with the new passcode works from Join Group Page
  • Test to make sure old passcode no longer works.

Manual Unit Test

  • Check Firebase to make sure passcode is updated and that users are joining with new passcode

Requirement: All users should be able to invite new members to the group

Integration Test

  • Join with the group passcode from the Join Group Page
  • Check with test email to see if email was actually sent

Manual Unit Test

  • Check Firebase to make sure user was actually added

Add Chores Feature

Requirement: Each chore name must be unique and must contain only alphanumeric characters or spaces

Manual Unit Test

  • Check Firebase to make sure chores are not duplicated
  • System should double check with chore list to make sure there are no duplicates

UI/UX Test

  • User should be notified through an error message if this requirement is not met

Requirement: All users are able to create a new chore and add it to the group

Integration Test

  • Make sure the new chores show up when a user tries to make a new chore card

Manual Unit Test

  • Check Firebase to make sure the chore is added to the chore list

UI/UX Test

  • The new chore should be reflected in the group settings page

Requirement: All users are able to remove existing chores within their group

Integration Test

  • Make sure the chore is removed and the chore cards are also removed

Manual Unit Test

  • Check Firebase to make sure the chore is removed from the chore list

UI/UX Test

  • The chore list in the group settings page should reflect the change

Requirement: All users can modify existing chore properties (name, description, frequency, and chore type)

Integration Test

  • Make sure other group members see the changes and that the changes are visible with the chore cards

Manual Unit Test

  • Check Firebase to make sure the chore is updated with the new information

UI/UX Test

  • The changes should be visible from the group settings page

Requirement: The platform will provide 10 default chores that the group members can quickly add to their group chore list

  • The list of chores will contain ten chores that we will pre-determine for users to be able to select from (e.g. clean dishes, sweep floors)

Manual Unit Test

  • Make sure each default chore has all the information needed to create a chore

UI/UX Test

  • This should always be visible for the user

Add a Chore Card Feature

Requirement: All users can add a chore card or edit existing chore cards

Integration Test

  • Make sure the new chore cards are visible from the Weekly and Monthly pages

Manual Unit Test

  • Check the chore cards list on Firebase to make sure the new card is added

Requirement: Each chore card contains: due date, date assigned, assigned chore, member assigned, completion status, type of chore (weekly or monthly)

  • To create a chore card, a user needs to input an assigned chore (taken from the group’s chore list) and the type of chore (weekly or monthly)
  • The due date, date assigned, member assigned, and completion status fields will be updated when the chore card is assigned on the weekly calendar
  • A monthly chore is not worth any points, and plays no role in the weekly chore goal

Manual Unit Test

  • Make sure the required information is included once the card is successfully added

UI/UX Test

  • Chores shown should only be from the group’s chore list
  • Make sure the necessary information is filled out, if not display an error message and highlight the missing fields

Weekly Calendar Feature

Requirement: All unassigned chore cards within a group are visible to users of that group.

Manual Unit Test

  • For each user in a group, need to confirm that the chore cards exist and are visible to each user.
  • Confirm that someone not assigned to group is unable to view that group’s chores.

UI/UX Test

  • Confirm list of unassigned chore cards includes all available unassigned chores on the right side of the calendar, and are marked as incomplete.

Requirement: Users can only assign chore cards to themselves.

Integration Test

  • Move a chore card to another group’s member row for any day of the week
    • You should be unable to assign chores to other people
  • Move a chore card to your own row for any day of the week
    • Firebase should update your users' chores accordingly

UI/UX Test

  • Cards should move locations

Requirement: As chore cards are assigned, the list of available chore cards is updated for all users of that group.

Integration Test

  • Firebase card statuses should update to become assigned

UI/UX Test

  • Cards should disappear from the chore card list on the right

Requirement: Users can choose which day they want to assign a chore card.

Integration Test

  • Firebase should update the card assignment dates accordingly

Manual Unit Test

  • Assign a chore card to your own row for Sunday
  • Keep moving the same chore card to other days of the week until all seven days are tested
  • Confirm adding a chore to the week will increase the user’s potential weekly chore points in Firebase

Requirement: Adding a chore card to the week will update the user’s potential weekly chore points

Manual Unit Test

  • Confirm adding a chore to the week will increase the user’s potential weekly chore points in Firebase

UI/UX Test

  • Confirm that the weekly progress bar at the bottom reflects
  • Adding a chore card to your own row will increase the secondary color of the progress bar
  • Removing a chore card from your own row will decrease secondary color of the progress bar

Requirement: Each chore can be marked as complete

  • A chore card cannot be marked as completed if it is set to a future day of the week
  • A completed chore increases the user’s weekly chore points

Manual Unit Test

  • Confirm marking of chore as complete in Firebase

Integration Test

  • Cannot mark a chore card on a future day of the week as complete
  • Able to mark a chore card on the current day of the week as complete
  • Able to mark a chore card on a previous day of the week as complete

UI/UX Test

  • Confirm field for complete is checked for the completed chore
  • Marking a chore card as increase will increase the primary color of the weekly progress bar

Requirement: User can view their progress towards their personal weekly chore point goal

Integration Test

  • Adding a chore card to your own row will increase your total potential amount of points for the week
  • Removing a chore card from your own row will decrease your total potential amount of points for the week
  • Marking a chore as complete increases your current amount of points for the week

UI/UX Test

  • The weekly progress bar is visible at the bottom of the calendar

Monthly Calendar Feature

Requirement: All unassigned chore cards within a group are visible to users of that group

Manual Unit Test

  • For each user in a group, need to confirm that the chore cards exist and are visible to each user.
  • Confirm that someone not assigned to group is unable to view that group’s chores.

UI/UX Test

  • Confirm list of unassigned chore cards includes all available unassigned chores, and are marked as incomplete.

Requirement: Users can assign chore cards to only themselves for only the current month

Manual Unit Test

  • Confirm assignment is reflected in Firebase backend.
  • Confirm user cannot assign chores to another user, should not have options for assignment to another user.
  • Confirm user cannot assign chores outside of current month

UI/UX Test

  • Confirm assigning of chore card should only allow for current month, and should mention that it is only for that user

Requirement: As chore cards are assigned, the list of available chores is updated for all users of that group

Manual Unit Test

  • Confirm for each user, updating one user’s assigned chores reflects across all users currently viewing calendar.
  • Confirm assigned chores do not show up in list of available chores when it is assigned.

Requirement: Each chore card can be marked as complete (same completion requirements from the weekly calendar apply)

Manual Unit Test

  • Confirm marking of chore as complete in Firebase

UI/UX Test

  • Confirm field for complete is checked for the completed chore

User Settings

Requirement: User should be able to change their own color to represent themselves in their group

Integration Test

  • Upon changing color, the changed color should reflect in settings and monthly/weekly calendar views

UI/UX Test

  • Confirm color change occurred in weekly/monthly calendar view

Requirement: User should be able to change their nickname to another valid nickname

Integration Test

  • Upon changing nickname, the change should reflect across user settings page as well as in top right of navigation where user nickname is displayed.

Requirement: User should be able to change their email to another valid email address

Integration Test

  • Upon changing email, change should be reflected in user settings page once they navigate back to it.
  • If user logs out, they should be logging in with the new email

Requirement: User should be able to change their password to another valid password

Integration Test

  • Upon logging out and in process of logging back in, the new password should be what allows them to login instead of old password.