ITECH 7409: Software Testing
Assignment 2: Working in Agile Environment and Developing Detailed Test
Plans with Test Management Tool
Due Date: Thursday, Sep 27, 2018 - 16:00
Submission: via Moodle
Special Remark: The description of the assignment is the continuation of Assignment-1. This assignment is a group assessment, where one submission is made per group and all individuals in the group receive the same grade. There should be 2-3 students in each group.
Refer to Course Description, especially in regard to: Extensions, Special Consideration, Late Submissions, and Plagiarism.
***Beware about the late penalty mentioned in the course description***
The purposes of the assignment:
• Practice and improve your team working skills
• Write professional level testing documentation
• Develop a good understanding of professional industry standards for software testing
• Practice an Agile Testing environment and use of Agile toolchains
Consider the following Class Diagrams of Figure 1. The class (called Repository) contains 3 types of data for multiple persons. The attributes are Name, Phone, and Address, and they are grouped as Info. That is, the class Repository contains the array (Vector) of Info. The private member variable of the Info class is a list in the Repository class. There are various public methods to access and mutate the list variable of the class (Repository).
Figure 1: Class Diagram of Repository and Info classes
Sample information stored in an object of the Repository class is shown in the following table:
Name Phone Address
John +16456712345 VA, USA
Merry +16456712345 VA, USA
John +61423456134 Sydney, Australia
Albert +61412098765 Melbourne, Australia
Josh +61231212312 Canberra, Australia
Andy +61728382818 Hobart, Australia
Phillip +61428382819 Brisbane, Australia
Kevin +61341231239 Brisbane, Australia
Here is the detailed description of the Repository class:
i) list: Vector Into - the list is a vector of Info class where info class contains three private variables and 6 public functions. Since the scope of the assignment is restricted to Repository class, the description of Info class’s methods is skipped here. Please note that, a person will have one name with exactly one phone number and address. The Name, Phone Number pair uniquely identifies a person. However, a phone number can be used by multiple persons and multiple persons may have
the same address. A person must have a name and the phone number, but the address field might be empty.
ii) Add (Info): String – Adds the information about a person and returns the success message (“Successfully Inserted”) when the insertion is successful. If the insert is unsuccessful, it returns (“Error in Insertion”).
iii) EditInfo (String, String, String, String): String – Edits the information about a person. The first and second string contains the Name and Phone Number, respectively, that uniquely identifies a person. The third string is the attribute to change and the fourth string is the modified value of that attribute. For example, if the function call is EditInfo (“John”, “+16456712345”, “Address”, “NY, USA”), then it will replace the address to “NY, USA” of the person whose name is “John” and the phone number is “+16456712345”. The function call will return “Successfully Edited”, however, if no such data is found, it will return “No Such Data Found”.
iv) Delete (String, String): String – This function will simply delete the entry from the list. The name and the phone number are the arguments of the function. If the information is deleted successful, it will return the string “Successfully Deleted”, otherwise “Error in Deletion”.
v) Count(): Int – This function returns the number of persons on the list.
vi) Count(String, String): Int – This function returns the number of persons having a common attribute. The first string indicates attribute to search and the second string indicates the value of the attribute. For example, Count (“Name”, “John”) will return 2 as there are 2 persons with the name John in the current list.
vii) IsAvailable (String, String): Bool – Checks whether a particular attribute has a given value. The first string contains the attribute and the second string contains the value of the attribute.
viii) IsMultipleName(String): Bool – Checks whether a name is available multiple times in the list. The string parameter contains the name of the person.
ix) Show (String, String): vector Info - Searches for a particular attribute. The first string is the attribute and the second string is the value of the attribute. The functions return a vector so that it may contain multiple records. For example, if the call is Show(“Name”, “John”), it will return two records in the vector.
x) CountNoAddress(): Int – Returns the number of records that have no address.
Consider that the above classes are already implemented and the unit testing is already done. Now a different group of the developer is implementing a software based on the aboveimplemented classes. Now the software will be deployed in a cloud service and will be open for any number of users. In addition, the software is synced with your phonebook. The features of the Software include:
1. The user will first create an account in the deployed site (say www.phonebook.com)
2. The user will be allowed to create multiple sheets in a phonebook and each sheet can contain information about 10000 persons (The structure of information of a person is discussed in Info Class).
3. In the phone set, user have to log in to that website [or a dedicated app using user’s credential (username and password)]
4. After that, both the phonebook and the account in www.phonebook.com will always remain synced. That is, whatever you add/edit in the phone book will be synced in the website and vice versa.
5. A user can share a sheet with his/her friend using the friend’s email address and that email address must be used to log on to the system (www.phonebook.com)
6. If a user (say A) provides a write access to his/her friend (say B), then B will be able to modify any contact information, otherwise, B can only see the information of the sheet(s) (read-only)
7. A user will be able to select any number of the sheet from his account to be synced with the phone number.
8. The user will be able to import a bunch of information in a sheet from any CSV (Comma Separated Values) file and that information will be stored in a selected sheet.
9. The user will be able to export a sheet in a CSV file.
[Of course you need an app to be installed in your mobile, but for simplicity, we avoid testing that app. Assume that the app is installed and you have finished login activities for the app]
As mentioned earlier, the classes, along with the methods (I-IX) and the features of the website (1-9) are already developed by two different group of software developers. The Unit tests for the methods of the classes are already tested by the developers of the first group and you need not worry about the correctness of the classes/object. Now the website will be deployed on a server and then will be opened for all.
As a group of Software Engineers in Test, you/your group are assigned to perform the black box testing for the developed website.
For the deployed site (say www.phonebook.com), what you need to do:
1. Develop a detailed test plan for functional testing using Test Rail*. Your Test plan (Suit) should contain multiple test cases for each of the 9 scenarios
2. Develop integration and acceptance testing with the plan for Performance Testing (Stress testing, load testing, volume testing). You should also use TestRail* for writing the test cases and scenarios.
3. Maintain your splitted work through your Trello Board, prioritize them and estimate their size (Big/Medium/Small). Also, maintain each of your timing using punchtime, and submit the printout of everyone’s punchtime log in pdf format. You should also submit the printout of your Trello board in pdf format.
4. Take the printout of all the test cases (summary) and submit the pdf with your assignment
5. In a text file, provide your login credential so that tutor can log in directly to check the work
*It is encouraged to use Test Rail as the Test Case Management Software, however, you can select one of the tools you worked while performing Assignment-1.
A. Test Rail: https://www.gurock.com/testrail
B. Trello and Punchtime
Assessment Components Marks
Developing Unit Test Modules
i) Test Plan (Functional) 50
ii) Test Plan (Integration) 10
iii) Test Plan (Acceptance) 10
iv) Test Plan (Performance) 10
v) A printout (in pdf) of Trello board and Punchtime log 20
Assignment Weight 20%
Special Remarks: Since the assignment submission requires you to work in the Agile environment and then you have to submit the pdf for Trello and Punchtime, you must give at least 2 weeks to complete the assignment. You should immediately start understanding the Punchtime and Trello to complete the task properly.