Manual Testing
Manual Testing was focused mainly on Testing Features and the Graphical User Interface.
Table of Contents
- Feature Testing
- GUI Testing
- Performance Testing
- Compatibility Testing
- Portability Testing
Feature Testing
In this section, testing focused on testing the features implemented and their basic functionality. These tests are primarily to detect potential unintended results that unit testing for the respective commands failed to detect.
Features related to Student Particulars
Add Student
-
Adding a student while all students are being shown
- Prerequisites: List all students using the
list
command. All students are shown in the list. - Test cases:
add n/Charles Ng te/@charles e/e0123434@u.nus.edu p/90390421
Expected: One new student will be added to the list. Details of the added student shown in the status message. Result display remains the same. Students can be found in Student Panel List on the left.add n/Charles Ng te/@charles e/e0123434@u.nus.edu
Expected: One new student will be added to the list. Phone Number is not supplied and will be defaulted toNA
. Details of the added student shown in the status message. Result display remains the same. Students can be found in Student Panel List on the left.add n/Charles Ng te/@charles
Expected: Required fieldEMAIL
is not supplied. No student is added. ErrorInvalid command format!
will be shown alongside with a proper usage of command. Result display remains the same.add n/Charles Ng te/@charles e/e0123434@u.nus.edu p/90
Expected:PHONE
field must be number with at least 3 digits or stringNA
. No new student is added. Error will be shown alongside with a proper usage of command. Result display remains the same.add n/Charles Ng te/@charles e/e0123434@u.nus.edu
followed byadd n/Charles Ng te/@charles e/e0123434@u.nus.edu
Expected: Student with existing name exists. No new student is added. ErrorThis student already exists ...
will be shown. Result display remains the same.
- Other incorrect delete commands to try:
add
Expected: Similar to cases of missing required field.add n/Charles
Expected: Similar to cases of missing required field.
- Prerequisites: List all students using the
-
Adding a student while only one student is being shown, with there being more than one student in the list
- Prerequisites: Filter students by their tag
streams
using thefilter streams
command. A subset of students shown. - Test cases:
add n/Charles Ng te/@charles e/e0123434@u.nus.edu p/90390421
Expected: One new student will be added. Details of the added student shown in the status message. Result display remains the same. Students can be found in Student Panel List on the left. This student will also be added to the actual list of students.add n/Charles Ng te/@charles e/e0123434@u.nus.edu
followed byfilter streams
followed byadd n/Charles Ng te/@charles e/e0123434@u.nus.edu
Expected: Student with the same found in full list of students. Duplicate detection is done on the full list of students, not on the current list in student list panel. No new student is added. ErrorThis student already exists ...
will be shown. Result display remains the same.
- Other incorrect delete commands to try:
add
Expected: Similar to cases of missing required field.add n/Charles
Expected: Similar to cases of missing required field.
- Prerequisites: Filter students by their tag
Delete Student
-
Deleting a student while all students are being shown
-
Prerequisites: List all students using the
list
command. Multiple students in the list. - Test cases:
delete 1
Expected: First student is deleted from the list. Details of the deleted student shown in the status message. Result display remains the same.delete 0
Expected: No student is deleted. Error details shown in the status message. Result display remains the same.
- Other incorrect delete commands to try:
delete
delete -1
delete x
(where x is larger than the list size)
Expected: Similar to previous.
-
-
Deleting a student while a selected group of students is being shown
-
Prerequisites: Filter students by their tag
streams
using thefilter streams
command. A subset of students shown. - Test cases:
delete 1
Expected: First student is deleted from the list. Details of the deleted student shown in the status message. Result display remains the same. This student will also be deleted in the main list.delete 0
Expected: No student is deleted. Error details shown in the status message. Result display remains the same.
- Other incorrect delete commands to try:
delete
delete x
(where x is larger than the current list size)
Expected: Similar to previous.
-
Tag Student
- Tag a student while all students are being shown, and no student is being viewed.
- Prerequisites: List all students using
list
command. List must contain at least 1 student. - Test cases:
tag 1 t/test
Expected: First student’s tag(s) is/are now replaced by “test”.tag 1 t/tag1 t/tag2
Expected: First student’s tag(s) is/are now replaced by “tag1” and “tag2”.tag 1 t/
Expected: First student’s tag(s) is/are now removed.tag 1 t/!!!!
Expected: First student’s tag(s) remain unchanged. Error details shown in the status message. Result display remain the same.
- Other incorrect tag commands to try:
tag t/test
(MissingINDEX
)tag -1 t/test
(INDEX
out of bound)tag 1 t/test t/
(Multiple tag entries cannot contain empty tags)tag 1 t/test tag1
(Tags can only contain one word)
- Prerequisites: List all students using
- Tag a student while all students are being shown, with a student being viewed.
- Prerequisites: List all students using
list
command. List must contain at least 1 student. View a student usingview 1
command. - The test cases mirror
Test 1
, with he student being viewed in the result display still being viewed in the same state after execution of the command regardless if the execution of the command is successful or not. To view the changes inTag
for the student being viewed in the result display, useview 1
after the tag command.
- Prerequisites: List all students using
Get Personal Detail
List of invariance to guide additional test case generation:
- At least one of
p/
,e/
, orte/
must be provided - Name tag
n/
is optional; its use indicates intention to get personal detail of students whose name matches the given keywords - Lack of phone number will not be explicitly shown, unless there are no other information to show.
- Current view of AcademyDirectory does not affect result
- View of AcademyDirectory always resets to the view that will be obtained when running
ListCommand
- Order of tags present to
GetCommand
does not matter.GetCommand
will prioritise showing phone number, followed by email address, followed by telegram handle. - If duplicates of the same tag is given, the last tag will be used regardless of its validity.
Below are a few test cases which checks for the above. The test cases are by no means exhaustive.
- Retrieving personal detail of all students while all students have a phone number.
- Prerequisites:
- All students in the list must have a phone number
- Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- Test cases:
get p/
Expected: Phone number of all students are shown in the result display.get e/
Expected: Email address of all students are shown in the result display.get te/
Expected: Telegram handle of all students are shown in the result display.get p/ e/
Expected: Phone number of all students are shown in the result display, followed by email address of all students.get e/ p/
Expected: Phone number of all students are shown in the result display, followed by email address of all students.get e/ p/ te/
Expected: Phone number of all students are shown in the result display, followed by email address and then by telegram handle.
- Prerequisites:
- Retrieving personal detail of all students. At least one student has no phone number and
at least one student has a phone number.
- Prerequisites:
- At least one student has no phone number and at least one student has a phone number.
- Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- Test Cases: Same as point 1
Expected: Same as point 1, but only students who have phone numbers will have their phone numbers displayed. No change in email address results and/or telegram handle results
- Prerequisites:
- Retrieving personal detail of all students. No student has a phone number.
- Prerequisites:
- No student has a phone number.
- Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- Test Cases: Same as point 1
Expected: Same as point 1, with the following (minor) changes- Feedback box will always say “Failed to receive one or more personal details. Showing what I can…” for all test cases.
- For test cases with tags
e/
and/orte/
, result display will still show email addresses and/or telegram handles - For test cases without the above tags, result display will show “Nothing to show…”
- Prerequisites:
- Retrieving personal detail of all students. No students are present in AcademyDirectory
- Prerequisites: Use
clear
command before beginning testing to make sure no students are present in AcademyDirectory - Test Cases: Same as point 1
Expected:- Feedback box will always say “Failed to receive one or more personal details. Showing what I can…” for all test cases.
- Result display will always show “Nothing to show…”
- Prerequisites: Use
- Retrieving personal detail of a student by keyword. At least one student whose name
matches the given keyword is present in AcademyDirectory. Said student has a phone number.
- Prerequisites:
- At least one student has a name matches
alex
. By match, we mean a case-insensitive keyword match i.e. both “Alex” and “aLeX” will match toalex
. See this matching behavior inFilterCommand
for more details. - Matched students have a phone number.
- Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- At least one student has a name matches
- Test cases:
get p/ n/alex
Expected: Phone number of all students whose name matchesalex
are shown in the result display.get e/ n/alex
Expected: Email address of all students whose name matchesalex
are shown in the result display.get te/ n/alex
Expected: Telegram handle of all students whose name matchesalex
are shown in the result display.get p/ e/ n/alex
Expected: Phone number of all students whose name matchesalex
are shown in the result display, followed by email address of all students.get e/ p/ te/ n/alex
Expected: Phone number of all students whose name matchesalex
are shown in the result display, followed by email address and then by telegram handle.get e/ n/alex p/ te/
Expected: Phone number of all students whose name matchesalex
are shown in the result display, followed by email address and then by telegram handle.get n/alex e/ p/ te/
Expected: Phone number of all students whose name matchesalex
are shown in the result display, followed by email address and then by telegram handle.
- Prerequisites:
- Retrieving personal detail of a student by keyword. At least one student whose name matches the given keyword
is present in AcademyDirectory. Said student/s have no phone numbers.
- Prerequisites:
- At least one student has a name matches
alex
. By match, we mean a case-insensitive keyword match i.e. both “Alex” and “aLeX” will match toalex
. See this matching behavior inFilterCommand
for more details. - Matched students have no phone numbers.
- Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- At least one student has a name matches
- Test cases: Same as point 5
Expected: Same as point 5, with the following (minor) changes- Feedback box will always say “Failed to receive one or more personal details. Showing what I can…” for all test cases.
- For test cases with tags
e/
and/orte/
, result display will still show email addresses and/or telegram handles - For test cases without the above tags, result display will show “Nothing to show…”
- Prerequisites:
- Retrieving personal detail of a student by keyword. No student whose name matches the given keyword is present in AcademyDirectory.
- Prerequisites:
- No student has a name which matches
alex
. By match, we mean a case-insensitive keyword match i.e. both “Alex” and “aLeX” will match toalex
. See this matching behavior inFilterCommand
for more details. - Run each test case twice, the first time by having all students listed using the
list
command, and the second time by having the view only show some students e.g. by usingfilter
command on the tags. Expected outcome is the same in both cases for all test cases
- No student has a name which matches
- Test cases: Same as point 5
Expected: Same as point 5, with the following (minor) changes- Feedback box will always say “Failed to receive one or more personal details. Showing what I can…” for all test cases.
- Result display will always show “Nothing to show…”
- Prerequisites:
Edit Personal Detail
-
Edit a student while all students are being shown
-
Prerequisites: List all students using the
list
command. All students are shown in the list. - Test cases:
edit 1 te/@charles
Expected: The first student in the list will have their telegram changed to@charles
. Details of the added student shown in the status message. Result display remains the same. Changes in that student can be viewed immediately in Student Panel List on the left.edit 0 te/@charles
Expected: No student is edited. Error details shown in the status message. Result display remains the same.edit 1 as/@charles
Expected: Edit command only works with personal details such asNAME
(n/
),PHONE
(p/
),EMAIL
(e/
) andTELEGRAM
(te/
). Assessment (as/
) can not be edited by this edit command. No student will be edited. ErrorInvalid command format!
will be shown alongside with a proper usage of command. Result display remains the same.edit 1 p/90
Expected:PHONE
field must be number with at least 3 digits or stringNA
. The first student is edited. Error will be shown alongside with a proper usage of command. Result display remains the same.edit 1 n/Charles
followed byedit 2 n/@charles
Expected: Student with existing name exists. First student is successfully edited. The second student is not edited. ErrorThis student already exists ...
will be shown. Result display remains the same.
- Other incorrect delete commands to try:
edit
Expected: NoINDEX
is supplied. Errorinvalid command format!
will be shown.edit -1
Expected: Similar to cases of invalidINDEX
field.edit 1 t/streams
Expected: Similar to cases of editing non-personal details.
-
-
Editing a student while a selected group of students is being shown
-
Prerequisites: Filter students by their tag
streams
using thefilter streams
command. A subset of students shown. - Test cases:
edit 1 n/Charles
Expected: The first student’s name will be added. Details of the edited student shown in the status message. Result display remains the same. Changes in that student can be viewed immediately in Student Panel List on the left. This student information will also be updated to in the full list of students.edit 2 n/Charles
Expected: Student with the same found in full list of students. Duplicate detection is done on the full list of students, not on the current list in student list panel. No student is edited. ErrorThis student already exists ...
will be shown. Result display remains the same.
- Other incorrect delete commands to try:
edit
Expected: NoINDEX
is supplied. Errorinvalid command format!
will be shown.edit -2
Expected: NoINDEX
is supplied. Errorinvalid command format!
will be shown.
-
Features related to Grades, Attendance and Participation
Add Grade
After every positive test case, use the command view 1
or simply click on the first student panel,
and open the “View Test Score” tab to view the changes in the grade.
- Record the grade of a single student’s assessment, while all students are being shown in the list and no student is being viewed.
- Prerequisites: List all students using the
list
command. Multiple students in the list. - Test cases:
grade 1 as/ra1 g/15
Expected: First student’s RA1 score is now updated to 15.grade 1 as/readingassessment1 g/15
Expected: No student’s grade is modified. Error details are shown in the status message indicating invalid assessment. Result display remains the same.grade 1 as/ra1 g/101
Expected: No student’s grade is modified. Error details are shown in the status message indicating invalid grade. Result display remains the same.
- Other incorrect grade commands to try:
grade
(Missing index, assessment and grade)grade 1
(Missing assessment and grade)grade 1 as/ra1
(Missing grade)grade 1 g/15
(Missing assessment)grade -1 as/ra1 g/15
(Index out of bound)
- Prerequisites: List all students using the
- Record the grade of a single student’s assessment, while all students are being shown in the list and a single student is being viewed with no tabs open.
- Prerequisites: List all students using
list
command. Multiple students in the list. View a single student usingview 1
. - The test cases mirror
Test 1
, with the student being viewed in the result display still being viewed in the same state with no tabs open after execution of the command regardless if the execution of the command is successful or not.
- Prerequisites: List all students using
- Record the grade of a single student’s assessment, while all students are shown in list and a student is being viewed with the “View Test Score” open
- Prerequisites: List all students using the list command. Multiple students in the list. View a single student using view 1. Click on “View Participation” in the result display.
- The test cases mirror Test 1, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Test Score” tab open.
Edit Attendance
- Marking a single student’s attendance while all students are being shown in list and no student is being viewed
- Prerequisites: List all students using the
list
command. Multiple students in the list. - Test cases:
attendance 1 ses/1 att/1
Expected: First student’s first Studio session is now marked as having attendedattendance 1 att/1 ses/1
Expected: First student’s first Studio session is now marked as having attendedattendance 1 ses/0 att/1
Expected: No student’s attendance is modified. Error details are shown in the status message indicating invalid session. Result display remains the same.attendance 1 ses/0 att/-1
Expected: No student’s attendance is modified. Error details are shown in the status message indicating invalid attendance. Result display remains the same.attendance 0 ses/1 att/1
Expected: No student’s attendance is modified. Error details are shown in the status message indicating invalid index. Result display remains the same.
- Other incorrect attendance commands to try:
attendance
(Missing index, session and attendance)attendance 1
(Missing session and attendance)attendance 1 att/1
(Missing session)attendance 1 ses/1
(Missing attendance)attendance x ses/y att/z
(Any case where x is an integer greater than the size of the student list, y is an integer out of the range of 0 and 12 inclusive or z is not 0 or 1)
- Prerequisites: List all students using the
- Marking a single student’s attendance while all students are shown in list and a student is being viewed with no tabs open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. - The test cases mirror
Test 1
, with the student being viewed in the result display still being viewed in the same state with no tabs open after execution of the command regardless if the execution of the command is successful or not.
- Prerequisites: List all students using the
- Marking a single student’s attendance while all students are shown in list and a student is being viewed with the “View Participation” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Participation” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Participation” tab open.
- Prerequisites: List all students using the
- Marking a single student’s attendance while all students are shown in list and a student is being viewed with the “View Test Score” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Test Score” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Test Score” tab open.
- Prerequisites: List all students using the
Edit Participation
- Updating a single student’s participation score while all students are being shown in list and no student is being viewed
- Prerequisites: List all students using the
list
command. Multiple students in the list. - Test cases:
participation 1 ses/1 add/1
Expected: First student’s first Studio session’s participation score is 1 greater than it was previously. If it was 500 previously, it would still be 500.participation 1 add/1 ses/1
Expected: First student’s first Studio session’s participation score is 1 greater than it was previously. If it was 500 previously, it would still be 500.participation 1 ses/0 add/1
Expected: No student’s participation is modified. Error details are shown in the status message indicating invalid session. Result display remains the same.participation 1 ses/1 add/-501
Expected: No student’s participation is modified. Error details are shown in the status message indicating invalid participation. Result display remains the same.participation 0 ses/1 add/1
Expected: No student’s participation is modified. Error details are shown in the status message indicating invalid index. Result display remains the same.
- Other incorrect participation commands to try:
participation
(Missing index, session and attendance)participation 1
(Missing session and attendance)participation 1 add/1
(Missing session)participation 1 ses/1
(Missing participation)participation x ses/y add/z
(Any case where x is an integer greater than the size of the student list, y is an integer out of the range of 0 and 12 inclusive or z is either greater than 500, or smaller than -501)
- Prerequisites: List all students using the
- Updating a single student’s participation while all students are shown in list and a student is being viewed with no tabs open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. - The test cases mirror
Test 1
, with the student being viewed in the result display still being viewed in the same state with no tabs open after execution of the command regardless if the execution of the command is successful or not.
- Prerequisites: List all students using the
- Updating a single student’s participation while all students are shown in list and a student is being viewed with the “View Participation” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Participation” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Participation” tab open.
- Prerequisites: List all students using the
- Updating a single student’s participation while all students are shown in list and a student is being viewed with the “View Test Score” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Test Score” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Test Score” tab open.
- Prerequisites: List all students using the
Features related to Visualization
View student information
- View all related information of a student
- Prerequisite: List all student using the
list
command. Multiple students are shown in the list. List should have exactly 6 students at the time of testing - Test cases:
view 1
Expected: All related information of the first student is shown on the result display visualizer on the right side. This includes: Student name, current tags, all academic-related information (assessment score, studio participation, studio attendance), and personal contact information (phone, email, telegram)
Expected: No information is modified, Academy Directory runs as normal
Expected: Status message is that users are viewing student at position 1 of the listview 6
Expected: All related information of the last student is shown on the result display visualizer on the right side. This includes: Student name, current tags, all academic-related information (assessment score, studio participation, studio attendance), and personal contact information (phone, email, telegram). No information is modified, Academy Directory runs as normal. Status message is that users are viewing student at position 6 of the listview 7
Expected: No view is shown on the result display. An error message is shown stating that index number is invalidview 0
,view add
,view myself in front of the mirror as a failure of society
Expected: No view is shown on the result display. An error message is shown stating that index number is invalid (in a sense that it must be a positive integer)
- View students when list is altered
- Prerequisite: Using filter to reduce the list view to 1 student only. List should only have one student.
- Test cases:
view 1
Expected: All related information are shown about the student. Status message is that users are viewing student at position 1 of the listview 2
Expected: No view is shown on the result display. An error message is shown stating that index number is invalid.
Significance: View works for the current index number shown on the student list only.
Show Grade
- Shows the collated scores of all the students in Academy Directory along with the average score, while grades for “RA1” not recorded for all students.
- Prerequisites:
- Clear the Academy Directory using the
clear
command. - Add three students:
add n/Alex e/alex@email.com te/@alex
add n/Bob e/bob@email.com te/@bob
add n/Carol e/carol@email.com te/@carol
- Clear the Academy Directory using the
- Test case:
show ra1
Expected: Scores displayed for all students should be “NA”, the number of students recorded should be “0”, and the average should be “NaN”.
- Prerequisites:
- Shows the collated scores of all the students in Academy Directory along with the average score, while grades for “RA1” recorded for some students.
- Prerequisites:
- Clear the Academy Directory using the
clear
command. - Add three students:
add n/Alex e/alex@email.com te/@alex
add n/Bob e/bob@email.com te/@bob
add n/Carol e/carol@email.com te/@carol
- Add grades for all students
grade 1 as/ra1 g/15
grade 2 as/ra1 g/16
- Clear the Academy Directory using the
- Test case:
show ra1
Expected: Scores displayed for the students should match the input grades, the number of students recorded should be “2”, and the average should be “15.50”.
- Prerequisites:
- Shows the collated scores of all the students in Academy Directory along with the average score, while grades for “RA1” recorded for all students.
- Prerequisites:
- Clear the Academy Directory using the
clear
command. - Add three students:
add n/Alex e/alex@email.com te/@alex
add n/Bob e/bob@email.com te/@bob
add n/Carol e/carol@email.com te/@carol
- Add grades for all students
grade 1 as/ra1 g/15
grade 2 as/ra1 g/16
grade 3 as/ra1 g/17
- Clear the Academy Directory using the
- Test case:
show ra1
Expected: Scores displayed for the students should match the input grades, the number of students recorded should be “3”, and the average should be “16”.
- Prerequisites:
Visualize all Grades
- Visualize class performance when all students grades are entered
- Prerequisites: All students grade from all assessments are entered
- Test case:
visualize
Expected: Box and Whisker plot shown in Result Display. The box includes median, 25%, 75%, max and min grades of all assessments.
- Visualize class performance when there are no grade.
- Prerequisites: No grade from any students or assessments are entered.
- Test case:
visualize
Expected: Box and Whisker plot shown in Result Display. The plot axis are shown without the data bar.
- Visualize class performance when some students’ grade are not entered.
- Prerequisites: There are grades from all assessments, however there are some students’ grades that are not entered yet.
- Test case:
visualize
Expected: Box and Whisker plot shown in Result Display. The box includes median, 25%, 75%, max and min grades of all assessments for the group of students with grades.
- Visualize class performance when some assessments’ grades are not entered.
- Prerequisites: There are some assessments’ grades that are not entered yet.
- Test case:
visualize
Expected: Box and Whisker plot shown in Result Display. The box includes median, 25%, 75%, max and min grades of assessments with grades. Assessments without grade will not show the data bar.
Filter Academy Directory
- Filters the student list while all students are being shown in the list.
- Prerequisites:
- Create students with the following commands:
add n/Student 1 e/test1@email.com te/@test1 t/tag1
add n/Student 2 e/test2@email.com te/@test2 t/tag2
- List all the students using the
list
command. After every test case, uselist
to display all the students.
- Create students with the following commands:
- Test cases:
filter student
Expected: Student list should be filtered to show Student 1 and Student 2.filter student 1
Expected: Student list should be filtered to show Student 1 and Student 2.filter 1
Expected: Student list should be filtered to show Student 1 only.filter tag1
Expected: Student list should be filtered to show Student 1 only.filter Student1
Expected: Student list should not show Student 1 and/or Student 2.filter tag
Expected: Student list should not show Student 1 and/or Student 2.filter
Expected: Student list should remain unchanged. Error details are shown in the status message indicating invalid command format. Result display remains the same.
- Prerequisites:
Sort Student List
- Sorting the student list while all students are shown in and a student is being viewed with no tabs open
- Prerequisites: List all students using the
list
command. Multiple students in the list. - Test cases:
sort attr/name ord/asc
Expected: Student list is now sorted by name in ascending order.sort ord/asc attr/name
Expected: Student list is now sorted by name in ascending order.sort attr/name ord/as
Expected: Student list’s sorting state remains unchanged. Error details are shown in the status message indicating invalid order. Result display remains the same.sort attr/nam ord/asc
Expected: Student list’s sorting state remains unchanged. Error details are shown in the status message indicating invalid attribute. Result display remains the same.
- Other incorrect sort commands to try:
sort
(Missing attribute and order)sort attr/name
(Missing order)sort ord/asc
sort attr/[ATTRIBUTE] ord/[ORDER]
(Any case where [ATTRIBUTE] is not any of the valid attributes, case-insensitive or [ORDER] is not ‘asc’ or ‘desc’, case-insensitive)
- Prerequisites: List all students using the
- Sorting the student list while all students are shown in list and a student is being viewed with no tabs open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. - The test cases mirror
Test 1
, with the student being viewed in the result display still being viewed in the same state with no tabs open after execution of the command regardless if the execution of the command is successful or not.
- Prerequisites: List all students using the
- Sorting the student list while all students are shown in list and a student is being viewed with the “View Participation” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Participation” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Participation” tab open.
- Prerequisites: List all students using the
- Sorting the student list while all students are shown in list and a student is being viewed with the “View Test Score” open
- Prerequisites: List all students using the
list
command. Multiple students in the list. View a single student usingview 1
. Click on “View Test Score” in the result display. - The test cases mirror
Test 1
, with the student being viewed in the result display in the state with no tabs open after successful execution of the command. If the execution of the command fails, the result display still shows the student with the “View Test Score” tab open.
- Prerequisites: List all students using the
Other Features
Launch and shutdown
-
Initial launch
-
Download the jar file and copy into an empty folder
-
Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.
-
-
Saving window preferences
-
Resize the window to an optimum size. Move the window to a different location. Close the window.
-
Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained.
-
List All Students
- List all students on Academy Directory
- Prerequisite: Application database is not empty (meaning that the
clear
command has not been executed, or that there are student entries on the student list) - Test cases:
list
Expected: All students are shown on the student list panellist 3
Expected: Error message is shown on the status message display stating that there is an invalid usage detected, no other argument should follow, and that the command is highlighted in red.list 02it0hg204
Expected: Error message is shown on the status message display, stating that there is an invalid usage detected, no other argument should follow, and that the command is highlighted in red.
- Prerequisite: Application database is not empty (meaning that the
Clear Student List
- List all students on Academy Directory
- Prerequisite: Application database is not empty (meaning that the
clear
command has not been executed, or that there are student entries on the student list) - Test cases:
clear
Expected: Student list panel on the left is emptied, with a status message stating that the entries have been cleared.clear 3
Expected: Error message is shown on the status message display stating that there is an invalid usage detected, no other argument should follow, and that the command is highlighted in red.
- Prerequisite: Application database is not empty (meaning that the
View Commit History
- View commit history when history is linear
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Remove version control folder (Default is
data/vc
; refer topreferences.json
for specific) - Start the application
- Remove version control folder (Default is
- Test cases:
history
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | Initial Commit
|/
The following example is a correct realization of the above template:
| * 65b8a - Mon, 8 Nov 2021 00:04:37 +0800 (HEAD) (MAIN)
| | Initial Commit
|/
The time shown follows the GMT+8 Time zone, and should correspond to the time when the application was started.- Continuing from above, run
clear
followed byhistory
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | Academy Directory has been cleared!
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for initial commit should not change
- A new commit is created, and its time should correspond to the time when the command
clear
was executed
- Continuing from above, run
add n/Alex e/alex@email.com te/@alex
followed byhistory
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | New student added: Alex
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Academy Directory has been cleared!
* [FIVE CHAR HASH] - DDD, dd Nov YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for initial commit should not change
- A new commit is created, and its time should correspond to the time when the command
add
was executed
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- View commit history when history branches
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Check that
UndoCommand
works, by following this - Remove version control folder (Default is
data/vc
; refer topreferences.json
for specific) - Start the application
- Check that
- Test cases:
- Basic Two-way Branching:
Execute the following commands in sequence:
clear
–>undo
–>add n/Alex e/alex@email.com te/@alex
–>history
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | New student added: Alex
* | [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (OLD)
| | Academy Directory has been cleared!
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for initial commit should follow the GMT+8 Time zone and should correspond to the time when the application was started.
- The commit corresponding with
clear
should have its time correspond to the time when the commandclear
was executed. - The commit corresponding with
add
should have its time correspond to the time when the commandadd
was executed. - The label “(OLD)” is on the commit which clears Academy Directory.
- The label “(HEAD)” and “(MAIN)” is on the latest commit i.e. the commit which adds
Alex
.
- Maintain branches when no new branch is created:
Continuing from above, executeclear
followed byhistory
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | Academy Directory has been cleared!
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| | New student added: Alex
* | [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (OLD)
| | Academy Directory has been cleared!
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for the last three commits should remain the same
- The label “(HEAD)” and “(MAIN)” is on the latest commit i.e. the commit which does
clear
- The label “(OLD)” is on the commit in the OLD branch i.e. the left branch
- New branch created on top of Two-way branch -> make former MAIN branch to OLD and new branch to MAIN
Continuing from above, executeundo
–>undo
–>add n/Bob e/bob@email.com te/@bob
–>history
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (MAIN)
| | New student added: Bob
* | [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (OLD)
| | Academy Directory has been cleared!
* | [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| | New student added: Alex
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for the last three commits should remain the same
- The commits in the formerly “(MAIN)” branch i.e. the right branch, are now in the “(OLD)” branch i.e. the left branch.
- The commit formerly labeled as “(MAIN)” is now labeled as “(OLD)”
- The label “(HEAD)” and “(MAIN)” is on the latest commit i.e. the commit which does
add n/Bob
- Basic Two-way Branching:
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
The above test cases tests for correctness for the basic behaviors of HistoryCommand
. They don’t have to be
executed with the exact commands given; using different version controlled commands in different order may lead to slightly different
commit message and/or date time shown. However, the general behavior as demonstrated above should remain the same. The
list of version controlled commands is in here.
Revert Commit History
- Revert to commit in the same branch
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Remove version control folder (Default is
data/vc
; refer topreferences.json
for specific) - Start the application
- Remove version control folder (Default is
- Test cases:
- Execute the following commands in sequence:
clear
->history
->revert HASH
,
whereHASH
refers to the five character hash of the latest commit as shown byhistory
Expected: Student list should be repopulated - Continuing from above, run
history
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (MAIN)
| | Academy Directory has been cleared!
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD)
| Initial Commit
Note a few things:- Date and time for initial commit should not change
- No new commit is created
- Execute the following commands in sequence:
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Revert to commit in a different branch
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Remove version control folder (Default is
data/vc
; refer topreferences.json
for specific) - Start the application
- Remove version control folder (Default is
- Test cases:
- Execute the following commands in sequence:
clear
–>undo
–>add n/Alex e/alex@email.com te/@alex
–>history
->revert HASH
whereHASH
refers to the five character hash of the commit which executesclear
, as shown byhistory
Expected: Student list should be empty - Continuing from above, run
history
Expected: Something like the following should appear
| * [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (MAIN)
| | New student added: Alex
* | [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800 (HEAD) (OLD)
| | Academy Directory has been cleared!
|/
* [FIVE CHAR HASH] - DDD, dd MMM YYYY hh:mm:ss +0800
| Initial Commit
Note a few things:- Date and time for initial commit should not change
- No new commit is created
- The label “(HEAD)” is now in the commit whose hash was passed to
revert
- Execute the following commands in sequence:
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
The above test cases tests for correctness for the basic behaviors of RevertCommand
. They don’t have to be
executed with the exact commands given; using different version controlled commands in different order may lead to slightly different
commit message and/or date time shown. However, the general behavior as demonstrated above should remain the same. The
list of version controlled commands is in here.
Undo/redo changes
- Undo a change
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Remove version control folder (Default is
data/vc
; refer topreferences.json
for specific) - Start the application
- Remove version control folder (Default is
- Test cases:
- Execute the following commands in sequence:
clear
->undo
,
Expected: Student list should be repopulated - Continuing from above, run
undo
Expected: The following message should appear:
“Unable to undo Academy Directory as requested … Is there anything to undo?”
- Execute the following commands in sequence:
- Prerequisite: Start with an empty commit history. To achieve this, do the following:
- Redo a change
- Prerequisite: Completed the above two test cases for undo and made no other changes
- Test cases:
- Continuing from point 1.2, execute
redo
Expected: Student list should be cleared - Continuing from above, run
redo
Expected: The following message should appear:
“Unable to redo Academy Directory as requested … Is there anything to redo?”
- Continuing from point 1.2, execute
The above test cases tests for correctness for the basic behaviors of UndoCommand
and RedoCommand
. They don’t have to be
executed with the exact commands given; using different version controlled commands may lead to slightly different
commit message and/or date time shown. However, the general behavior as demonstrated above should remain the same. The
list of version controlled commands is in here.
Help
- Test general help
- Prerequisite: Application is started
- Test case:
help
Expected: A pop-up window is shown summarizing the format of all commands for users, as well as a link to the web User Guide of Academy Directory Expected: All commands used in Academy Directory are shown, and the summary table does not lack any command. To assert this, compare the table to the actual User Guide web version and see the matched commands.
- Test specific help
- Prerequisite: Application is started
- Test cases:
help edit
Expected: A pop-up window is shown with a customized help message (based on the User Guide ofedit
command) on how to useedit
, including significance, format, and example.help visualize
Expected: A pop-up window is shown with a customized help message (based on the User Guide ofvisualize
command) on how to usevisualize
, including significance, format, and example.help ad
Expected: No pop-up window is shown, and an error message is shown as status message explaining that there exists no instruction for commandad
. Significance of the test case is that specifichelp
can only be useful when the command is typed in full rather than in partial - to view help for commandadd
, users need to type inhelp add
exactly.help r230thg4b0p2nnbtpbgetbi03
Expected: No pop-up window is shown, and an error message is shown as status message explaining that there exists no instruction for the command.
- Test functionality of pop-up window
- Prerequisite: Help window is already opened before by any mean, and is kept opened for testing
- Test cases:
- Focus on the Main Window, do not close Help Window, and type in
help add
or any other equivalent command
Expected: The help window is refocused with its content change to the newhelp
instead. - Click on the
Copy UG Guide
button on the right side, and access the link
Expected: The User Guide web-version of Academy Directory can be accessed, meaning that the link is indeed copied.
- Focus on the Main Window, do not close Help Window, and type in
Saving data [Coming Soon]
- Dealing with missing/corrupted data files
- Since data is stored locally, it has the potential to be corrupted or missing between uses.
Graphical User Interface (GUI) Testing
These tests are primarily focused on testing both the appearance and the functionality of the GUI when used by the user.
Visual Design
- Test application visual design
- Prerequisite: Application is started, the Main Window is opened, users have not entered any command or cleared any data previously, and there are some students on the records.
- Test cases:
- Assert that Academy Directory has a student list with the various student cards inside
Expected: Student list and student cards are shown to the users - Assert that Academy Directory has 4 menus in the top left corner of the Main Window
Expected: There are 4 menus, one with grade logo, one with statistics logo, one with clock logo, and one with question logo - Click on the first menu item with the Grade logo
Expected: 5 entries will pop up, showing users different options to show grades. - Assert that Academy Directory has an opaque rectangle in the top-right corner of the Main Window
Expected: The rectangle is shown to the user, and users cannot edit it or remove it. - Assert that Academy Directory has an opaque rectangle in the bottom-right corner of the Main Window
Expected: The rectangle is shown to the user, and users cannot edit it or remove it. - Assert that Academy Directory has a command box at the bottom of Main Window
Expected: The command box is shown to users, with a placeholder messageEnter something
, and users can edit the command box. - Type in
this is a test message
Expected: The command box showsthis is a test message
- meaning that the command box is able to received user’s request - Expand Academy Directory to full screen
Expected: Background image also expanded, alongside other components of the internal controls (result display, student list, and status message). No other visual misbehavior of the User Interface (image is cropped, whitespace exists, or lacking in any visual design) - Shrink Academy Directory to the smallest possible size
Expected: Academy Directory is not minimized completely as there is a minimal size for users to still see the data
- Assert that Academy Directory has a student list with the various student cards inside
User Interface Functionality
- Test Main Window User Interface functionality
- Test cases:
- Execute the command
help
Expected: Status logger displays a message that informs user a general help message is being shown. Help Window is popped up - Resize the Help Window by expand it to full screen
Expected: Help Window is expanded to full screen without compromising the content inside (the message is not being minimized or expanded, users are able to view the message regardless of the size). All commands are inside the help message. To check, scroll the window and see whether commandsparticipation
, orrevert
, orvisualize
are in the table - Close the help window
Expected: Help Window is closed successfully, without the Main Window being closed or affected as well - Click on the logger display and try to edit the message
Expected: Users cannot edit the message or remove the message. Reason is to avoid confusion in usage of the application - Enter
visualize
to the command box, and press enter
Expected: A box-whisker plot is shown to the users visualizing relative performance on student exam. - Attempt to click on the bottom-right rectangle and remove the data visualization
Expected: Users cannot remove or manipulated the shown data. - Enter
view 1
to the command box, and press enter
Expected: A visualized view of the student is shown in the bottom-right corner - Click on the drop-down menu with “View Participation” on the current view
Expected: The menu is dropped, and users can see the summary of student participation and attendance of CS1101S studio - Click on the drop-down menu with “View Test Score” on the current view
Expected: The previous menu is closed, the clicked menu is dropped, and users can see the summary of student test score of CS1101S - Enter
list
to the command box, and press enter
Expected: Theview
visualization of student information does not disappear even when the application is working at the background - Click on the first menu, then click on
Show RA1
entry
Expected: The equivalent to user inputshow RA1
will be executed on Academy Directory - Click on the first student card of the student list
Expected: A visualized view of the student is shown in the bottom right corner.
- Execute the command
- Test cases:
Performance testing
Visualization with large Academy Directory [Coming soon]
- Testing of large number of the
Visualize
function with a large number of students in Academy Directory- Potentially affects runtime and if so, Academy Directory might require optimization.
Limit test Academy Directory capacity [Coming soon]
- Testing the
Student
capacity that Academy Directory can handle- Things to look out for:
- Potential general loss in performance e.g less responsive buttons, longer startup time, longer time taken to process commands
- Things to look out for:
Compatibility testing
Cross-OS Compatibility [Coming soon]
-
Testing of Academy Directory on all mainstream OS such as
Windows
,MacOS
andLinux
. -
Testing of Academy Directory on more obscure OS such as different
Linux
distributions e.gKali Linux
.
Portability testing
Transfer of Academy Directory [Coming soon]
-
Testing transfer of Academy Directory between identical mainstream OS e.g from
MacOS
toMacOS
. -
Testing transfer of Academy Directory between different mainstream OS e.g from
MacOS
toWindows
.- Things to look out for:
- Hypothetically, a potential increase in time taken to execute
Visualize
after transfer e.gMacbook A
toMacbook B
and back toMacbook A
without changing any files.
- Hypothetically, a potential increase in time taken to execute
- Things to look out for: