Testing

User Testing and Design

Testing Strategy

Our testing strategy has been clear from the beginning, and was outlined by the philosophy of agile development, specifically continuous testing. To put it simply, this is a testing strategy of testing early, often and everywhere.

In the next couple of sections, we will explain the types of tests that we have conducted. Chosen supporting data on these tests can then be found at Test Cases & Feedback from testers and project partners.

Unit and integration testing

To a certain extent, we have also completed integration testing of our components. This is because we have tested the individual components, such as the Apple Watch, the Kinect and the server individually and after thoroughly testing these components, we have tested these systems together, integrated. For example, the merging functionw as tested when we send data from the Kinect and Apple Watch to the server.

Compatibility Testing

We have tested the Apple Watch code on all of the Apple Watch Series in the XCode Simulator, since we did not have them on hand physically. The Kinect had to be designed for the Kinect 2 specifically, so compatibility testing did not apply.

Responsive Design testing

Responsiveness design testing was only useful for the Apple Watch code by using the Apple Watch simulator which the users tested on. They tried to use different version/options of the UI and provided spoken feedback for each. This type of testing led to the final design of the Apple Watch UI. For example, the users wanted to see live data on the display as well as being to view the data after their session. Therefore, the UI was modified to be able to display live user health statistics throughout the session.

Performance/Stress testing

We were unable to perform effective stress testing due to hardware limitations as we only disposed with one Apple Watch and two Kinects.

Nonetheless we have tried to type in session data manually as well as send it through the devices at the same time, along with creating many sessions in a very short period. Even though this was not ideal, it was the best we could do in this situation.

User Acceptance Testing

Test Cases & Feedback from testers and project partners

Our project partners provided us with contant feedback on our bi-weekly calls. Here are a couple examples: They have often directed us on the right track when we thought of features that were outside the scope of the project such as determining the type of dance by analyzing the music. Furthermore, we had the Kinect stop the dance session after the hands of a user were raised for 5 seconds. The clients thought that this could lead to ending the session accidently as some dance moves require the users hands to be raised. They therefore suggested that we could end the dance session when the user steps out of the frame for a certain time period which is how the final implementation works. They also gave us ideas about more health metrics that we could record such as maximum limb height.

Overall, the project partners were very satisfied with what we managed to implement.

We user-tested our whole system on 5 users, fitting the Jakob Nielsen [1] suggestion that 3 to 5 evaluators is optimal. Despite them being our friends, we told them ot be as harsh as they wanted and not to hold back. Here's what they had to say:

Timestamp Name Apple Watch UI: Kinect UI: Server UI:
Like? Comments: Like? Comments: Like? Comments:
3/19/2020 19:31:48 Rajesh Goyal I think the initial screen is done quite well and does not allow for user error which is great. It is really cool that it measures so much interesting data and utilises the apple watch accelerometer to measure distance and spins and everything, really cool. WOW! THATS SO COOL! I hope there's some sort of portal to view the videos but its fine if there isn't, that's crazy cool. The UI was pretty easy to read, simple instructions, good disclaimer from the Kinect message for transparency with the user. 🔧 The time stamp field still allows for erroneous input, maybe calendar selection if the format is dd-mm-yyyy. The way it stops you from entering letters, it doesnt stop the letter "e". This may have broken the server...
3/19/2020 19:47:38 Rikaz Rameez It is very staightforward and easy to use The skeleton is very useful in seeing how the Kinect tracks your limbs. Maybe some prompts on if you are too close/too far from the kinect would be useful. I really like the setup process - very descriptive and straightforward. 🔧 The server doesn't have units for the headings for each metric which makes it unclear exactly what each number means. More detailed time stamps would be better, and if the column headings in the table scrolled with the headings it would help in seeing the data representations better.
3/19/2020 19:55:24 Joel Morgan N/A I enjoyed testing this! It would be good if the delete button would refresh the page, but it's great otherwise.
3/19/2020 20:04:32 Eesha Irfan 🔧 I think it should be clear that when you stop measuring on the apple watch, it does not stop the video on the Kinect. N/A 🔧 I think it was hard to remember all the different column titles.
3/19/2020 20:53:24 Govind Balla Make the metrics screen more colourful, ie differentiate between calories and bpm etc. Other than that, it is good The only thing I would change it to split it into a different colour scheme and font. Looked good

Here's a short compilation of the users playing with the system:

Functionality Testing

This type of testing happened during the development process: for each new method we created, we tested its functionality in a variety of situations and made sure it produced repeatable and reliable results.

Kinect - Basic Skeletal Tracking and Obtaining Joint Co-ordiante

Test method: having user performing actions at different position to the camera.

Test result:

X Co-ordinate Y Co-ordinate Z Co-ordinate
Position 1 -0.195 0.796 2.012
Position 2 0.451 0.779 2.124

Comment: the co-ordiantes of each joint are obtained successfully. As you can see from the table from position 1 to 2, when users move from the left of camera to the right, the X co-ordinate (horizontal distance) changes but Y (height) and Z (vertical distance) remains about the same. However, if the joint is behind the body or other object so that it can not be seen by the camera, the co-ordinate of that joint will be random value and keeps changing.

Kinect - Activity Level

Activity level is a method that calculate the average displacement of each joint moved between per frame; we can use this result to determine how active the person in front the camera is.

Test method: having user performing actions at different active level.

Test result:

Stand Still Gentle Movement Vigorous Movement
Test 1 0.001 0.016 0.116
Test 2 0.002 0.014 0.132

Comment: the value is almost zero when the user stands still and the faster and the further user moves, the higher the activity level value.

Video:

Kinect - Joint Angle

The angle between different joints can be calculated when the joint name is provided, however, some joint angles are set to be the angle between the two joints specified (which forms a bone) and the person's body (which is obtained by the top, middle, and bottom spine joints).

Test method: having user performing actions at different angle.

Test result:

Right angle Parallel
Right Shoulder Joint 81°-97° 7°-9°
Right Elbow Joint 87°-93° 177°-179°

Comment: The angle result can successfully represent the actual angle between joints. As the table shows, the results are not stable and can have a small range of error, this is due to the fact that we observed joint angles by using the bones, but the Kinect calculates it using joint positions, so its result angle may not be fully realistic.

Video:

Apple Watch - No of Spins

We have a method using the gyroscope and accelerometer inside the apple watch to identify the number of turns the person performed.

Test method: having a person perform by turning at different angles and speeds, and comparing the results with the amount of spins that actually happened.

Test result:

Slow Spins Normal Spins Fast Spins Spins at different angles
Actual Spins 50 50 50 50
Recorded Spins 39 54 65 46

Comment: In most condition the turns are recognised properly, however when you are turning too fast, the method result appears to be higher than the actual result.

Kinect - Video Saving and Skeletal Mapping

Our system saves a video each time: we checked the video saved (and watched the live feed) to identify and fix bugs. Here's an example:


Kinect System Testing: studio setting with dancing - User Acceptance Testing

We set up the UCL South Cloisters (where various University Dance groups often practice and choreograph performances) as if it were a studio, using the software we created.
This was a full Kinect system test, with a typical user: our friend Rachel (who is a dancer) got to test our system and give us feedback.


Session ID: Apple Watch testing

When we decided to implement a user-entered Session ID, we tested how feasible this was on the Apple Watch:


Note:

We were still in the testing and designing phase of our project when we produced this video for prototype 1:

It shows the Apple Watch spin feature in great detail, which we were testing at the time.