| Requirements Summary | ||
|---|---|---|
| Count | Percentage | |
| #Requirements | 1 | 100.0% |
| Manual Requirements | 0 | 0.0% |
| Manual & Auto Requirements | 0 | 0.0% |
| Automated Requirements | 1 | 100.0% |
| Invalid | 0 | 0.0% |
| PASS | 0 | 0.0% |
| FAIL | 0 | 0.0% |
| Not tested | 1 | 100.0% |
| Protocol Summary | ||
|---|---|---|
| Count | Percentage | |
| #Protocols | 10 | 100.0% |
| PASS | 10 | 100.0% |
| FAIL | 0 | 0.0% |
| TP-001: load empty data and initialize it | Start date : 2026-01-14 22:40:38 MST |
| At: test_tp001_model.py(57) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
Objectives:
|
|
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | load empty project | True | True | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(108) |
| 2 | N/A | add criteria | greater than 0 | 2 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(137) |
| 3 | N/A | modify criteria context | greater than 0 | 4 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(153) |
| 4 | N/A | rank criteria | greater than 0 | 8 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(197) |
| 5 | N/A | load tasks | greater than 0 | 10 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(241) |
| 6 | N/A | check compids | greater than 0 | 13 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(262) |
| 7 | N/A | compare each criteria for each combo of tasks | greater than 0 | 14 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(296) |
| 8 | N/A | report ranking of each tasks per criteria | 100 +/-1 | 101 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(363) |
| 9 | N/A | report overall rank of each task | 100 | 100 | PASS | 2026-01-14 22:40:38 tester: auto test_tp001_model.py(389) |
| 10 | N/A | delete tasks and criteria | True | True | PASS | 2026-01-14 22:40:39 tester: auto test_tp001_model.py(97) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-002: add/delete/edit tasks or criteria | Start date : 2026-01-14 22:40:39 MST |
| At: test_tp002_add_delete.py(56) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
Objectives:
|
|
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | load existing empty4.json | 0.2 | 0.2 | PASS | 2026-01-14 22:40:39 tester: auto test_tp002_add_delete.py(112) |
| 2 | N/A | add, delete, modify criteria | greater than 0 | 25 | PASS | 2026-01-14 22:40:39 tester: auto test_tp002_add_delete.py(168) |
| 3 | N/A | modify criteria ranks | 1.0 +/-0.015 | 0.99 | PASS | 2026-01-14 22:40:39 tester: auto test_tp002_add_delete.py(195) |
| 4 | N/A | add, delete, modify tasks | greater than 0 | 30 | PASS | 2026-01-14 22:40:39 tester: auto test_tp002_add_delete.py(292) |
| 5 | N/A | misc. functions | False | False | PASS | 2026-01-14 22:40:39 tester: auto test_tp002_add_delete.py(84) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-003: load, save and check_and_fix functions | Start date : 2026-01-14 22:40:39 MST |
| At: test_tp003_model_load_save.py(57) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | load various json files | greater than 0 | 35 | PASS | 2026-01-14 22:40:39 tester: auto test_tp003_model_load_save.py(121) |
| 2 | N/A | call check and fix | {'t1-t2': None} | {'t1-t2': None} | PASS | 2026-01-14 22:40:39 tester: auto test_tp003_model_load_save.py(268) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-020: load empty data and initialize it | Start date : 2026-01-14 22:40:40 MST |
| At: test_tp020_gui_basic.py(40) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:40:40 tester: auto test_tp020_gui_basic.py(83) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:40:40 tester: auto test_tp020_gui_basic.py(87) |
| 3 | N/A | load empty project | normal | normal | PASS | 2026-01-14 22:40:41 tester: auto test_tp020_gui_basic.py(102) |
| 4 | N/A | save initial file content | {'next_task_id': 1, 'next_crit_id': 1, 'crits': {}, 'tasks': {}, 'comps': {}} | {'next_task_id': 1, 'next_crit_id': 1, 'crits': {}, 'tasks': {}, 'comps': {}} | PASS | 2026-01-14 22:40:41 tester: auto test_tp020_gui_basic.py(373) |
| 5 | N/A | add criteria | {'next_task_id': 1, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 1, 'rank': 0.33, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 1, 'rank': 0.33, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 1, 'rank': 0.33, 'context': 'context3'}}, 'tasks': {}, 'comps': {'c1': {}, 'c2': {}, 'c3': {}}} | {'next_task_id': 1, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 1, 'rank': 0.33, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 1, 'rank': 0.33, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 1, 'rank': 0.33, 'context': 'context3'}}, 'tasks': {}, 'comps': {'c1': {}, 'c2': {}, 'c3': {}}} | PASS | 2026-01-14 22:40:43 tester: auto test_tp020_gui_basic.py(373) |
| 6 | N/A | load tasks | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 1, 'rank': 0.33, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 1, 'rank': 0.33, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 1, 'rank': 0.33, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c2': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c3': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 1, 'rank': 0.33, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 1, 'rank': 0.33, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 1, 'rank': 0.33, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c2': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c3': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | PASS | 2026-01-14 22:40:45 tester: auto test_tp020_gui_basic.py(373) |
| 7 | N/A | rank criteria | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.5, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 3, 'rank': 0.3, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.2, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c2': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c3': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.5, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 3, 'rank': 0.3, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.2, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c2': {'t1-t2': None, 't1-t3': None, 't2-t3': None}, 'c3': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | PASS | 2026-01-14 22:40:46 tester: auto test_tp020_gui_basic.py(373) |
| 8 | N/A | compare each criteria for each combo of tasks | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.5, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 3, 'rank': 0.3, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.2, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c2': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c3': {'t1-t2': 0, 't1-t3': 1, 't2-t3': 1}}} | {'next_task_id': 4, 'next_crit_id': 4, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.5, 'context': 'context1'}, 'c2': {'name': 'crit2', 'rawrank': 3, 'rank': 0.3, 'context': 'context2'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.2, 'context': 'context3'}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c2': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c3': {'t1-t2': 0, 't1-t3': 1, 't2-t3': 1}}} | PASS | 2026-01-14 22:40:47 tester: auto test_tp020_gui_basic.py(373) |
| 9 | N/A | delete a criteria after tasks have been added | {'next_task_id': 4, 'next_crit_id': 5, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.62, 'context': 'context1'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.25, 'context': 'context3'}, 'c4': {'name': 'crit4', 'rawrank': 1, 'rank': 0.12, 'context': ''}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c3': {'t1-t2': 0, 't1-t3': 1, 't2-t3': 1}, 'c4': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | {'next_task_id': 4, 'next_crit_id': 5, 'crits': {'c1': {'name': 'crit1', 'rawrank': 5, 'rank': 0.62, 'context': 'context1'}, 'c3': {'name': 'crit3', 'rawrank': 2, 'rank': 0.25, 'context': 'context3'}, 'c4': {'name': 'crit4', 'rawrank': 1, 'rank': 0.12, 'context': ''}}, 'tasks': {'t1': {'name': 'task1'}, 't2': {'name': 'task2'}, 't3': {'name': 'task3'}}, 'comps': {'c1': {'t1-t2': 1, 't1-t3': 1, 't2-t3': 0}, 'c3': {'t1-t2': 0, 't1-t3': 1, 't2-t3': 1}, 'c4': {'t1-t2': None, 't1-t3': None, 't2-t3': None}}} | PASS | 2026-01-14 22:40:53 tester: auto test_tp020_gui_basic.py(373) |
| 10 | N/A | delete a task | ack | ack | PASS | 2026-01-14 22:40:54 tester: auto test_tp020_gui_basic.py(352) |
| 11 | N/A | disconnect from GUI API server | False | False | PASS | 2026-01-14 22:40:55 tester: auto test_tp020_gui_basic.py(77) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-021: load an existing file | Start date : 2026-01-14 22:40:59 MST |
| At: test_tp021_gui_file_open.py(42) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:40:59 tester: auto test_tp021_gui_file_open.py(68) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:40:59 tester: auto test_tp021_gui_file_open.py(72) |
| 3 | N/A | load existing project | False | False | PASS | 2026-01-14 22:41:00 tester: auto test_tp021_gui_file_open.py(98) |
| 4 | N/A | use File|Saveas with a new name | True | True | PASS | 2026-01-14 22:41:01 tester: auto test_tp021_gui_file_open.py(125) |
| 5 | N/A | use File|Close to close and no save/save the file | 4 | 4 | PASS | 2026-01-14 22:41:03 tester: auto test_tp021_gui_file_open.py(192) |
| 6 | N/A | use File|Exit to close and no save/save the file | False | False | PASS | 2026-01-14 22:41:07 tester: auto test_tp021_gui_file_open.py(228) |
| 7 | N/A | disconnect from GUI API server | None | None | PASS | 2026-01-14 22:41:12 tester: auto None |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-022: file exit with a save | Start date : 2026-01-14 22:41:13 MST |
| At: test_tp022_gui_file_exit_save.py(42) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:41:13 tester: auto test_tp022_gui_file_exit_save.py(58) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:41:14 tester: auto test_tp022_gui_file_exit_save.py(62) |
| 3 | N/A | use File|Exit to close and save the file | 4 | 4 | PASS | 2026-01-14 22:41:14 tester: auto test_tp022_gui_file_exit_save.py(110) |
| 4 | N/A | disconnect from GUI API server | None | None | PASS | 2026-01-14 22:41:21 tester: auto None |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-023: untitled file close and exit | Start date : 2026-01-14 22:41:22 MST |
| At: test_tp023_gui_file_untitled.py(41) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:41:22 tester: auto test_tp023_gui_file_untitled.py(58) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:41:22 tester: auto test_tp023_gui_file_untitled.py(62) |
| 3 | N/A | open an untitled project and close/exit it | False | False | PASS | 2026-01-14 22:41:23 tester: auto test_tp023_gui_file_untitled.py(139) |
| 4 | N/A | disconnect from GUI API server | None | None | PASS | 2026-01-14 22:41:32 tester: auto None |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-024: recent file close and exit | Start date : 2026-01-14 22:41:32 MST |
| At: test_tp024_gui_file_recent.py(41) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:41:32 tester: auto test_tp024_gui_file_recent.py(57) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:41:33 tester: auto test_tp024_gui_file_recent.py(61) |
| 3 | N/A | open a recent file and close | out/ver_tp022.json | out/ver_tp022.json | PASS | 2026-01-14 22:41:34 tester: auto test_tp024_gui_file_recent.py(81) |
| 4 | N/A | disconnect from GUI API server | False | False | PASS | 2026-01-14 22:41:34 tester: auto test_tp024_gui_file_recent.py(51) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-080: run the scenario in README.md | Start date : 2026-01-14 22:41:38 MST |
| At: test_tp080_gui_readme.py(39) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | start Gui | False | False | PASS | 2026-01-14 22:41:38 tester: auto test_tp080_gui_readme.py(92) |
| 2 | N/A | connect harness to GUI App server | True | True | PASS | 2026-01-14 22:41:38 tester: auto test_tp080_gui_readme.py(96) |
| 3 | N/A | start a new project | normal | normal | PASS | 2026-01-14 22:41:39 tester: auto test_tp080_gui_readme.py(111) |
| 4 | N/A | create 3 new tasks | 3 | 3 | PASS | 2026-01-14 22:41:39 tester: auto test_tp080_gui_readme.py(119) |
| 5 | N/A | change their names to tv, computer, phone | new3 | new3 | PASS | 2026-01-14 22:41:39 tester: auto test_tp080_gui_readme.py(135) |
| 6 | N/A | save file as out/ver_tp080.json | False | False | PASS | 2026-01-14 22:41:40 tester: auto test_tp080_gui_readme.py(143) |
| 7 | N/A | add 3 criteria | is useful | is useful | PASS | 2026-01-14 22:41:40 tester: auto test_tp080_gui_readme.py(192) |
| 8 | N/A | rank criteria | 3 | 3 | PASS | 2026-01-14 22:41:41 tester: auto test_tp080_gui_readme.py(213) |
| 9 | N/A | compare each criterion for each combo of tasks | is useful | is useful | PASS | 2026-01-14 22:41:42 tester: auto test_tp080_gui_readme.py(257) |
| 10 | N/A | check overall ranks | asksaveasfilename | asksaveasfilename | PASS | 2026-01-14 22:41:52 tester: auto test_tp080_gui_readme.py(82) |
| 11 | N/A | disconnect from GUI API server | False | False | PASS | 2026-01-14 22:41:54 tester: auto test_tp080_gui_readme.py(86) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| TP-099: miscellaneous chacks | Start date : 2026-01-14 22:41:58 MST |
| At: test_tp099_misc.py(45) | Requirements : see below |
| Software Version: N/A | Serial number: N/A |
| Objectives: N/A | |
| Preconditions: N/A | Deviations: N/A |
| Step | Req. | Execution Instructions | Expected | Actual | Pass / Fail | Date |
|---|---|---|---|---|---|---|
| 1 | N/A | check version | 0.1.0 | 0.1.0 | PASS | 2026-01-14 22:41:58 tester: auto test_tp099_misc.py(48) |
| 2 | N/A | check svc | greater than 0 | 44 | PASS | 2026-01-14 22:41:58 tester: auto test_tp099_misc.py(70) |
| 3 | N/A | check cfg | True | True | PASS | 2026-01-14 22:41:58 tester: auto test_tp099_misc.py(80) |
| 4 | N/A | check app_status | False | False | PASS | 2026-01-14 22:41:58 tester: auto test_tp099_misc.py(128) |
| Req. | Desc. |
|---|---|
| N/A | No requirements found |
| Req. Id | Protocol |
|---|---|
| SRS-001 (auto) |
Desc: TODO The module shall provide something ERR missing test case for this requirement
|