Assignment:
Working in Agile Environment and Developing Detailed Test Plans with Test Management Tool
Purpose:
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
Description:
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).
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  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 - 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.
Introduction:
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 above- implemented 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
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.
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.
Attachment:- Software Testing.rar