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.