D3. Testing

  1. Ideal Testing Plan (what would we have done if we had all the time we needed)
    1. Unit Testing
      1. Jest – we will use Jest to write unit tests for individual components and application logic. Jest provides built-in matchers and assertions, as well as tools for mocking and spying on functions and components.
      2. Detox – we will use Detox to write integration tests that cover complex user workflows and interactions. Detox provides APIs for simulating user interactions with the application, such as tapping buttons, entering text, and swiping.
    2. Integration and System Testing
      1. We will write integration tests that simulate user flows using Detox to interact with the application, and Jest to make assertions about the expected behavior of the application.
    3. Description of Tools used
      1. Jest: The default template of React Native ships with Jest testing framework. It includes a preset that’s tailored to this environment so testing can be done without tweaking the configuration and mocks straight away.
      2. Detox: a gray box end-to-end testing and automation library that is specifically designed for testing mobile apps. It supports both Android and iOS platforms and can be used with popular frameworks such as React Native.
      3. Firebase Performance Monitoring: Firebase Performance Monitoring is a service provided by Google Firebase that allows you to monitor the performance of your mobile app on real devices in the wild. It provides a dashboard that shows performance metrics such as network response time, app startup time, and UI rendering time. It also allows you to track custom metrics and view performance data based on user segments.
      4. Gatling: a powerful load and performance testing tool that can help identify performance bottlenecks and scalability issues in web and mobile applications. Its scenario-based approach and detailed reporting make it a popular choice among developers and testers.
    4. Description of Types of End Users
      1. People with allergies
        1. Can they see which menu items are safe for them to eat?
        2. Can they interact with the application in a way that’s meaningful to them?
        3. Can they have results filtered based on their allergies?
      2. Restaurant owners
        1. Can they add menu items and ingredients to the app?
        2. Can they flag menu items with the potential allergens they contain?
      3. Client
        1. Are the definite requirements met?
    5. Performance, Reliability Testing
      1. Tools such as JMeter, LoadRunner, Gatling, and Firebase Performance Monitoring can be used to perform performance testing. These tools allow us to simulate high user loads and measure the response time and throughput of the application, which can help identify performance bottlenecks.
      2. We will create test scenarios that simulate user behavior, such as browsing menus, viewing nearby restaurants, and filtering searches. These scenarios should be designed to stress test the application and uncover performance bottlenecks.
    6. Acceptance Testing
      1. We will create acceptance test cases that cover the key features and functionality of the application. These test cases should be designed to validate the acceptance criteria and ensure that the application meets the desired quality standards. Example test cases will be taken from our definite requirements, discussed with the client.
  1. Realistic Testing Plan (what are we actually going to test)
    1. Unit Testing
      1. React Native unit testing is done through the Jest testing framework. This is the default testing framework that is also used by Facebook.
      2. Detox will be used to write tests for specific stories for the front end of the program.
    2. Integration and System Testing
      1. Jest and Detox are  not only used for unit testing but also integration testing. Our goal is to use the Jest and Detox frameworks throughout our entire application.
    3. Description of Tools used
      1. Jest: The default template of React Native ships with Jest testing framework. It includes a preset that’s tailored to this environment so testing can be done without tweaking the configuration and mocks straight away.
      2. Detox: a gray box end-to-end testing and automation library that is specifically designed for testing mobile apps. It supports both Android and iOS platforms and can be used with popular frameworks such as React Native.
    4. Description of Types of End Users
      1. Client
        1. Are the definite requirements met?
        2. Is the functionality of the application satisfactory?
    5. Performance, Reliability
      1. We will create minimal test scenarios that simulate user behavior, such as browsing menus, viewing nearby restaurants, and filtering searches. These scenarios will try to stress test the application and uncover performance bottlenecks.
    6. Acceptance Testing
      1. We will create acceptance test cases that cover the key features and functionality of the application.