D3. Test Plan

Ideal

Unit Testing

  • Jest – Jest is a Javascript testing framework used primarily for unit testing, and it is the default framework for React Native. It has no configuration requirements, which makes it easy and fast for developers to start using Jest.
  • Unit tests for all JavaScript functions, specifically components and state changes.

Integration and System Testing (with UI)

  • Detox – Detox is a framework used for end-to-end (e2e) testing in React Native, which includes all stages of an application from setting up the environment to expected events/behaviors—simulating the process any user has to go through to use the application. It supports Android and iOS devices. The basic steps are creating an instance of an emulator on a mobile device, installing and initializing the application, executing routines, and expecting certain events to happen. Doing these steps manually can take a long time, which is why Detox supports e2e automation.
  • E2e tests for all specified user interactions and workflows according to (definite) user requirements and stories.
  • Ensure UI works as expected on both Android and iOS devices.

Descriptions of Types of End Users

  • Person with food allergies (or has a loved one with food allergies)
    • Should be able to create an account
    • Should be able to login
    • Should be able to specify and save food allergies and dietary preferences
    • Should be able to search for restaurants by name
    • Should be able to filter during restaurant search
    • Should be able to see separate lists for menu items that meet profile specifications
    • Should be able to see all menu items
    • Should be able to see labels on menu items based on meeting the three different profile specifications
  • Administrator/Client
    • Should be able to add new restaurants
    • Should be able to delete restaurants
  • Restaurant Vendor
    • Should be able to update menu items and their ingredients

Performance, Reliability, Etc. Testing

  • Firebase Performance Monitoring – A service provided by Google Firebase to collect performance data from applications for review and analysis. Through real-time updates on performance, developers can identify and fix performance issues. Some key capabilities are measuring app startup time and HTTP network requests, as well as breaking down performance metrics into specific attributes.
  • Gatling – Gatling is a load- and performance-testing framework with a scenario-based approach and detailed reporting. The primary benefits of load testing are for improving use during peak traffic and response time for users, as well as reducing debug time and optimizing the application’s infrastructure.
  • Measure performance and reliability through certain tests:
    • Creating more user accounts
    • Multiple concurrent users
    • Differing the number of food allergies and dietary restrictions specified
    • Adding more restaurants and menu items
    • Comparing over span of week/month

Acceptance Testing

  • As a team, manually test interactions and workflow for each user.
  • With the client, demo the application and allow the client to manually test the application themself.

Reality (in Progress)

Unit Testing

  • Jest
  • Unit tests for all JavaScript functions, specifically components and state changes.
  • (Will add more specificity)

Integration and System Testing (with UI)

  • Detox
  • E2e tests for all specified user interactions and workflows according to (definite) user requirements and stories.
  • Ensure UI works as expected on both Android and iOS devices.
  • (Will add more specificity)

Descriptions of Types of End Users

  • Person with food allergies
    • Should be able to create an account
    • Should be able to login
    • Should be able to specify and save food allergies and dietary preferences
    • Should be able to search for restaurants by name
    • Should be able to filter during restaurant search
    • Should be able to see separate lists for menu items that meet profile specifications
    • Should be able to see all menu items
    • Should be able to see labels on menu items based on meeting the three different profile specifications

Performance, Reliability, Etc. Testing

  • Firebase Performance Monitoring

Acceptance Testing

  • As a team, manually test interactions and workflow for each user.
    • On the “Create Account” page, click through boxes for “Full Name,” “Email Address,” and “Password.” Users are able to see each box populate with letters as they type on the keyboard. For filling out the “Email Address” and “Password,” if the format is incorrect or the password is weak, a warning should pop-up and the user shouldn’t be able to click the “Sign Up” button. Upon clicking on the “Sign Up” button for submission, users should gain access to the app.
      • There should be another page to give users a short introduction to SafeEats and its purpose.
        • Another page for saying they understand the app cannot be held responsible <not necessarily written out, but placeholder text for client to fill in>.
    • On the “Log In” page
      • Click through boxes for “Email Address” and “Password.” Users are able to see each box populate with letters as they type on the keyboard. When they click the button to login, they should be logged into their account with their personal information. Otherwise, a notification should pop-up that their email address or password was incorrect.
    • On the main page
      • Click search bar,
        • Filter through restaurants based on selections.
        • View restaurants that meet those filters.
      • Scroll through “featured partners,”
        • Able to click on “View All” to see rest of partners.
        • Able to click on featured partners to see menu items.
      • When viewing menu items on a restaurant’s page,
        • There should be one list of menu items excluding food allergens.
    • On the “User Profile”
      • See personal information populate in “Personal Information,” which would just be “Name” and “Email” if the user just signed up.
      • Users can click on the “edit pencil” icon to change and add to personal information.
      • In “My Allergies,” users can click on circles to add food items as allergies or remove from allergies.
      • When users click on “Log Out,” users are logged out and return to the main app screen. The input fields should be empty.
  • With the client, demo the application and allow the client to manually test the application themself.