Testing

Ensuring our product is perfect

Testing Strategy

Test as we develop

This will be an iterative process where we will test each functionality that we make and test it ourselves if possible. As bugs are detected during the process, we will then fix them, to ensure that these bugs do not cause bigger errors to occur later on in the development process.

Objective testing:

As we develop, we will test it against the MoSCoW list to ensure that we are satisfying the original clients requirements, to ensure that the stakeholders are happy. As the project goes, we will be ticking off more and more of the requirements list.

Leave time for fixing at the end:

This will ensure that with enough time remaining, if we do come across any big errors at the end we will be able to fix them without having to worry about not meeting our deadlines. We will also then need to retest these, so having time is important.

Test the app alongside our client:

Run through our working app along with our client to ensure that they are satisfied. And if they aren’t happy with certain things, i.e. how certain requirements have been carried out, we can then fix it.

Beta testing (if time is available):

Let some potential users take a trial run to ensure that they are satisfied with the app and to find any errors. This will ensure that the users like the design of the app, the purpose of the app and that the app is doing what it is supposed to do successfully.

Testing

We did a lot of compatibility tests on different mobile devices and simulators, interactively simulating user journeys to check app functions as intended with debug prints along the way to perform manual checks, as well as user acceptance tests.


Unit/Integration Testing

We did this manually, reporting any bugs that we found (as shown in the Bug List table on the Evaluations page).

Unit Testing

To do unit testing, we used print statements, and running the app on the simulator. We first tested the functionality individually to find any errors. We would report any bugs that we found and try to fix it as soon as possible. Some unit tests that we did:

  • Ensuring that the data the user entered was being stored properly
  • Feeding in fake data to the function that drew graphs to ensure that the graph was being drawn correctly
  • Printing out the data that was converted into JSON to ensure that the format was correct
  • Printing out Boolean values to ensure that the tracking and permission buttons were working
  • Calling phone numbers through the app to ensure the call button was working
  • Print statements to ensure that the well-being score was being calculated correctly
  • Testing UI features in the simulator to ensure that they were working as intended, such as the score slider, the pre-filled message constructor
  • Forcing X-code to send notifications to the phone immediately, to test that they were being shown if the conditions were met

  • Integration Testing

    Once a lot of the functions had been written, we performed integration testing mainly through testing that the data that the app had collected was being used correctly where it was required. For example:

    • The tracking of steps and calls data was being used to draw the graphs against the well-being scores
    • The data that was collected at the beginning was being correctly used to:
      • Fill in the gaps in the pre-constructed message
      • Send of data to the linode server
      • Displaying in the contact history and contacts age
      • ...etc.

    Compatibility testing

    Test results table

    Device Weblink and app Making Calls Sending Texts Attach report Saving Image Weekly Nudge Sending Data Create Graph Rate WB Score Smooth UI
    iPhone 7 Plus (iOS 13.3.1) Y Y Y Y Y Y Y Y Y Y
    iPhone SE(iOS 13.3) Y Y Y Y Y Y Y Y Y Y
    iPhone 11 Pro (iOS 13.3.1) Y Y Y Y Y Y Y Y Y Y

    To test the compatibility of our app, we ran it on different devices and tested for certain functionalities.
    We got our client to run the app on their phone (iPhone 6) as well to ensure that everything was working smooth.

    During the compatibility testing, we encountered some errors:

    Bug Found Priority Fixed?
    Detailed look at database shows weekly calls is at 0, when it should be 2, all other data is functional. Medium Y
    Oversized network contact history label Low Y

    User acceptance testing

    At the end of prototype 1:

    A few versions of prototype is directly sent and tested by the potential users. User feedback we have received so far:
    • larger buttons
    • a pre-input minimum steps as a baseline

    Now:

    Once we had finished making the app, we ran through it with our client. Our client showed ran through the app with potential users and gave us their feedback.
    • The users liked how at the beginning of the app; they would be assisted when setting up the app.
    • They liked that they could share an image of their well-being diary as it was a good conversation starter
    • They liked that they would be nudged to talk to their core network
    • They liked that they would be nudged if they didn’t walk enough
    • They liked the user interface, especially that the messages were pre-formatted
    • The potential users didn’t really understand the purpose of sending across the fake(anonymised) and real data, but once the outbound postcode heat map (UCL team 28) was explained, they really liked it.