Test Plan and Cases (TPC) Version 4.0

Test Plan and Cases (TPC)

Pic Share App (RA)

Team 1

Logan Chang – Project Manager, Developer

Jiashun Zhou – Developer

Yew Hua Chua – Developer

Haihao Lu – Developer

Yunwei Yuan – Developer

Yao Wang – Developer

Weili Zhang – Developer

Joseph Mouawad – Developer

Nicholas Funk – Developer, Tester

27 April 2016

Version History

Date / Author / Version / Changes made / Rationale /
11/25/15 / Larry Stratton / 1.0 / ·  Added initial test plan and test cases / ·  Initial draft
12/07/15 / Larry Stratton / 2.0 / ·  Update test plan / ·  Submission of DCP
02/12/16 / Nicholas Funk / 3.0 / ·  Added all the required test cases
·  Update test plan / ·  Submission of RDCP
04/27/16 / Yew Hua Chua / 4.0 / ·  Update final test plan and test cases / ·  Submission of AS-BUILT package

Table of Contents

Test Plan and Cases (TPC) i

Table of Contents Iii

Table of Tables v

1. Introduction 9

2. Test Strategy and Preparation 10

2.1 Hardware preparation 10

2.2 Software preparation 10

2.3 Other pre-test preparations 11

2.4 Requirements Traceability 12

3. Test Identification 16

3.1 Create Event 16

3.2 Search by Location 24

3.3 Upload a Photo to the User’s current location 333

3.4 Delete uploaded Photos 388

3.5 Download Photos for Events 466

3.6 User Interface Interactions 50

3.7 Administrator Photo Management 555

3.8 Create Account 655

3.9 Search for Event 733

3.10 Join an Event 777

3.11 Upload Photos to Events 833

3.12 Take Photos with Device Camera 899

3.13 Account Login and Logout 944

3.14 Automated System Functions 1055

4. Resources and schedule 109

4.1 Resources 10909

4.2 Staffing and Training Needs 10909

4.3 Schedule 110

48

TPC_ASBUILT_S16b_T01_V4.0.docx Version Date: 04/27/16

Test Plan and Cases (TPC) Version 4.0

Table of Tables

Table 2.4.1: Requirements Traceability Matrix 12

Table 3.1.1: TC-01-01 Check create public event with valid hashtag name 17

Table 3.1.2: TC-01-02 Check create private event with valid hashtag name and password 18

Table 3.1.3: TC-01-03 Check create public event with invalid hashtag name 19

Table 3.1.4: TC-01-04 Check create private event with invalid hashtag name 20

Table 3.1.5: TC-01-05 Check create private event with invalid password 21

Table 3.1.6: TC-01-06 Check create public event with no network connection 22

Table 3.1.7: TC-01-07 Check create public event with already used hashtag name 23

Table 3.2.1: TC-02-01 Functional Sensor Test 25

Table 3.2.2: TC-02-02 Non-Functional Sensor Test 26

Table 3.2.3: TC-02-03 Populated Location Query Test 27

Table 3.2.4: TC-02-04 Null-Result Location Query Test 28

Table 3.2.5: TC-02-05 Valid Database Connection Test 29

Table 3.2.6: TC-02-06 Invalid Database Connection Test 30

Table 3.2.7: TC-02-07 Non-Connection Database Error Test 31

Table 3.2.8: TC-02-08 Partial-Result Location Filter Test 32

Table 3.3.1: TC-03-01 Choose a photo to upload 34

Table 3.3.2: TC-03-02 Upload a photo with valid tag data and server connectivity 35

Table 3.3.3: TC-03-03 Upload a photo with invalid tag data 36

Table 3.3.4: TC-03-04 Upload a photo with no server connectivity 37

Table 3.4.1: TC-04-01 Check deleting a photo when every part of the system works well 39

Table 3.4.2: TC-04-02 Check deleting a photo without Internet access 40

Table 3.4.3: TC-04-03 Check deleting a photo when server is unavailable 41

Table 3.4.4: TC-04-04 Check event owner able to delete a photo uploaded to their event 42

Table 3.4.5: TC-04-05 Check event owner able to cancel deleting a photo 43

Table 3.4.6: TC-04-06 Check event owner deleting a photo without Internet access 44

Table 3.4.7: TC-04-07 Check event owner deleting a photo when server is unavailable 45

Table 3.5.1: TC-05-01 Check downloading a photo when every part of the system works well 47

Table 3.5.2: TC-05-02 Check downloading a photo with Internet interruption 48

Table 3.5.3: TC-05-03 Check downloading a photo when local device is out of storage 49

Table 3.6.1: TC-06-01 Check navigation bar display 51

Table 3.6.2: TC-06-02 Check navigation bar input receipt 52

Table 3.6.3: TC-06-03 Check navigation invoke functionality 53

Table 3.6.4: TC-06-04 Check event expiration countdown 54

Table 3.7.1: TC-07-01 Check search for photo by user with legal name 56

Table 3.7.2: TC-07-02 Check search for photo by user automatically 57

Table 3.7.3: TC-07-03 Check search for photo by user without Internet access 58

Table 3.7.4: TC-07-04 Check search for photo by event hashtag with legal name 59

Table 3.7.5: TC-07-05 Check search for photo by event hashtag automatically 60

Table 3.7.6: TC-07-06 Check search for photo by event hashtag without Internet access 61

Table 3.7.7: TC-07-07 Check admin able to delete photo 62

Table 3.7.8: TC-07-08 Check admin able to cancel photo deletion 63

Table 3.7.9: TC-07-09 Check admin not able to delete photo during connection error 64

Table 3.8.1: TC-08-01 Check creating an account with correct information 66

Table 3.8.2: TC-08-02 Check creating an account with missing required field 67

Table 3.8.3: TC-08-03 Check creating an account with email address or username that is already in use 68

Table 3.8.4: TC-08-04 Check creating an account with username or password that does not meet requirements 69

Table 3.8.5: TC-08-05 Check adding a photo to profile from camera device 70

Table 3.8.6: TC-08-06 Check removing a photo from profile 71

Table 3.8.7: TC-08-07 Check adding a photo from photo roll 72

Table 3.9.1: TC-09-01 Check input search term legality 74

Table 3.9.2: TC-09-02 Check server error status 75

Table 3.9.3: TC-09-03 Test search response speed 76

Table 3.10.1: TC-10-01 Check user able to join public event 78

Table 3.10.2: TC-10-02 Check user able to join private event with correct password 79

Table 3.10.3: TC-10-03 Check user unable to join private event with incorrect password 80

Table 3.10.4: TC-10-04 Check user able to cancel joining an event 81

Table 3.10.5: TC-10-05 Check user able to view joined events 82

Table 3.11.1: TC-11-01 Check upload to event which user has joined 84

Table 3.11.2: TC-11-02 Check upload to event which user has not joined 85

Table 3.11.3: TC-11-03 Check upload to event when device has no network connection 86

Table 3.11.4: TC-11-04 Check upload to event when database unavailable 87

Table 3.11.5: TC-11-05 Check user cancels upload action 88

Table 3.12.1: TC-12-01 Check user able to take a photo 90

Table 3.12.2: TC-12-02 Check user able to retake a photo 91

Table 3.12.3: TC-12-03 Check user able to cancel taking a photo 92

Table 3.12.4: TC-12-04 Check user attempt to take photo while there is a camera error 93

Table 3.13.1: TC-13-01 Check user able to login with valid username and correct password 95

Table 3.13.2: TC-13-02 Check user unable to login with valid username and incorrect password 96

Table 3.13.3: TC-13-03 Check user unable to login with invalid username 97

Table 3.13.4: TC-13-04 Check user able to log out of account 98

Table 3.13.5: TC-13-05 Check user able to cancel log out of account 99

Table 3.13.6: TC-13-06 Check administrator able to login with valid username and correct password 100

Table 3.13.7: TC-13-07 Check administrator unable to login with valid username and incorrect password 101

Table 3.13.8: TC-13-08 Check administrator unable to login with invalid username 102

Table 3.13.9: TC-13-09 Check administrator able to log out of account 103

Table 3.13.10: TC-13-10 Check administrator able to cancel log out of account 104

Table 3.14.1: TC-14-01 Check system deletes expired location photos automatically 106

Table 3.14.2: TC-14-02 Check system deletes expired event photos automatically 107

Table 3.14.3: TC-14-03 Check system deletes expired events automatically 108

Table 4.3.1: Assigned Testing Team Member Testing Schedule 11010

48

TPC_ASBUILT_S16b_T01_V4.0.docx Version Date: 04/27/16

Test Plan and Cases (TPC) Version 4.0

1.  Introduction

The purpose of testing within this project is to demonstrate to the client that the requirements were satisfied and if not, that they can then be fixed to meet requirements. Since the project involves a mobile application and is being developed for the iOS ecosystem, the application will first be tested on a software-based emulator. Once core-functionality has been tested, the client can then choose whether to expand testing to specific iPhone versions to be able to guarantee platform-wide usage.

The application involves persisting and retrieving photo data for a specified period of time before photos are deleted. Paid versions allow for extended storage duration. As a result of these requirements, a back-end COTS solution of Parse was chosen. This allowed for reduced complexity in designing a system that will allow for reliably uploading photos and distributing them, but also implies that the team cannot test all aspects of the mobile application and will have to trust in Parse’s own reliability and dependability guarantees. Despite an assumption of trust in Parse’s guarantees, the team can still test basic connectivity guidelines and potential errors associated with a database management system and a server not hosted by the team. In particular, reliable photo uploading, photo downloading, and user management can be tested through Parse’s own interface. Concurrently, the interactions between the mobile application users and the back-end as well as the expected downloads to push new uploads can be tested without having to know the details that Parse omits.

Thus, the majority of testing will focus on the mobile application’s front-end functionality and the interactions with the back-end Parse. Detailed scaling, load testing, and other issues associated with wide-spread adoption will not be tested because it will be assumed that the back-end solution will provide these capabilities at different paid service levels. The client can then choose to pay for greater functionality at greater cost, without worrying about scalability testing.

As it was announced that Parse would be ending its services on January 28, 2017, the team has built a custom backend by deploying the Parse open source server code on Heroku and MongoLab. In order to facilitate smooth transition from Parse to the team's custom backend in the future, the admin tool is implemented and tested on the custom backend.

To complete the testing, the team has used JIRA as a bug tracking system. The team took a hybrid approach by having a different tester for each week and the assigned tester was responsible for performing tests on a particular group of test cases. The assigned tester would create a new JIRA ticket for each test case that failed and somebody in the team would be assigned to fix the bug and perform the testing of that test case again.

2.  Test Strategy and Preparation

The team will approach testing using requirements-test traceability and value-based test prioritization. This will be done to ensure focused testing that will meet the client’s needs, while helping to meet the client’s requirements within a semester timeline.

2.1  Hardware preparation

Hardware testing for the mobile application front-end will be primarily done through simulation using the developer emulator. Testing for specific hardware devices such as an iPhone6 or an iPhone5 will require new negotiation with the client to determine explicit hardware testing requirements.

The database back-end hardware will not be tested in a hardware context, since the COTS solution Parse has been selected. Hardware functionality from Parse will be assumed to meet Parse’s own guidelines at a paid service level. This also applies to the custom backend as it is hosted on Heroku and MongoLab.

2.2  Software preparation

Building maintainable software is one of the key quality attributes of our system. Informative, easy-to-use tests are a key aspect of the maintainability of the system.
We can accomplish this through test driven development. For each requirement and its accompanying use cases, the test cases will be developed for the requirement, and then implemented in the code.

Our class diagrams define a blueprint for our code. Since the class diagrams span multiple use cases, we will identify which requirements contribute to each class diagram (see traceability matrix in the next section) and define the tests for those requirements before building the classes shown in the class diagram. This will ensure that our code meets our system requirements. We will define a script to execute the suite of regression tests. Through the script, automated testing during development and onward in system maintenance will ensure that the system continues to fulfill its intended function.

We have elected not to utilize code generators because we aren’t doing model-based development. However, our process includes detailed comments for each object, method and attribute. Additionally, diagnostic tests will be created as part of the test suite that not only indicates that a problem occurs, but also provides detail about the problem. Test failure messages will include: the class and method where the failure occurred, test failure criteria, relevant state information, comments on likely sources of failures and potential resolutions.

2.3  Other pre-test preparations

In order to fully test the mobile application, the team should start looking for representative users who would be available to test after all team testing is completed. This will allow for non-development team constructive criticism, which will help to demonstrate that the UX and core-functionality requirements appropriately satisfy a representative example of future users of the mobile application.

2.4  Requirements Traceability

Table 2.4.1: Requirements Traceability Matrix

# / Requirements / Use Case # / Use Case Description / Sequence Diagram / Class Diagram / Test Case /
1 / The system shall allow a user to upload a photo to an event. / 1,24 / Upload photo to my event, Search for event & upload photo / Upload photo to my event / Photo Management / 11
2 / The system shall allow a user to reserve a hashtag for a private event, allowing the user to specify a password to upload and view photos of the event. / 4, 5,6,7,8 / Create private event, Reserve Hashtag, Set a password, View photos of event, View event with password / Set a password, reserve a hashtag, view photos of event/private with password / Event Management / 1
3 / The system shall allow users to view photos uploaded from nearby locations in a grid layout. / 9 / Search by location / Search Location / Search Location / 2