Unit Testing - mwgeurts/viewray_fielduniformity GitHub Wiki

The principal features of the ViewRay Field Uniformity-Timing Check application have been tested between versions for a set of test suites to determine if regressions have been introduced which may effect the results. These results are summarized below, grouped by test suite. Note that pre-releases have not been included in this unit testing.

Unit testing was performed using an automated test harness developed to execute each unit test stored in UnitTest() and, where relevant, compare the results to pre-validated reference data. Refer to the documentation UnitTest() for a description and conditions of each unit test and UnitTestHarness() for details on how the unit test is executed for each software version and test suite. Each Unit Test is referenced to one or more Requirements through the Traceability Matrix using the Test ID.

Unit tests developed for performance requirements are separated from functional or interface tests (even if they execute the same code) to allow the performance metric, typically time to execute, to be reported in addition to the conventional Pass/Fail test outcome. The purpose of this, along with the cyclomatic complexity and code analyzer summary unit tests (which uniquely do not trace to a requirement) are to not only test unit test passing but to also help identify poor coding practices. Performance tests that pass requirement but are significantly worse than prior versions of the application are further analyzed for refactoring opportunities to maintain code simplicity.

Contents

Test System Configuration

Computation times are documented based on the following system configuration and reflect elapsed real time (as opposed to CPU time). Note, other hardware configurations may also be run during compatibility testing.

Specification Configuration
Operating System Mac OS X 10.10.2
Processor Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz
Frequency 1800 MHz
Number of Cores 2
L2 Cache (per core) 256 KB
Memory 4.00 GB (0.09 GB available)
Graphics Card No compatible GPU device found
Graphics Total Memory
Graphics Memory Available
CUDA Version
MATLAB Version R2015a

27.3cm Test Suite Results

Input Data Value
Reference Data ./reference/AP_10P5X10P5_PlaneDose_Vertical_Isocenter.dcm
./reference/AP_27P3X27P3_PlaneDose_Vertical_Isocenter.dcm
Gamma Criteria 3%/1mm
Measured Data Head1_G90_27p3.prm
ID Test Case Version 1.0 Version 1.1.0 Version 1.1.1
1 Application Loads Successfully Pass Pass Pass
2 Application Load Time1 0.7 sec 0.9 sec 1.0 sec
3 Code Analyzer Messages 2 0 0
4 Cumulative Cyclomatic Complexity 261 395 403
5 Reference Data Loads Successfully Pass Pass Pass
6 Reference MLC X Data within 1%/0.1 mm Pass Pass Pass
7 Reference MLC Y Data within 1%/0.1 mm2 Fail Pass Pass
8 H1 Browse Loads Data Successfully Pass Pass Pass
9 Browse Callback Load Time 2.2 sec 3.8 sec 4.1 sec
10 MLC X Profile within 0.1% Pass Pass Pass
11 MLC Y Profile within 0.1% Pass Pass Pass
12 Positive Diagonal Profile within 0.1%3 N/A Pass Pass
13 Negative Diagonal Profile within 0.1%3 N/A Pass Pass
14 Timing Profile within 0.1% Pass Pass Pass
15 MLC X Gamma within 0.11 Pass Pass Pass
16 MLC Y Gamma within 0.11,2 Fail Pass Pass
17 Positive Diagonal Gamma within 0.13 N/A Pass Pass
18 Negative Diagonal Gamma within 0.13 N/A Pass Pass
19 Statistics within 0.1 sec/mm/%1,4 Pass Fail Pass
20 H1 Figure Display Functional Pass Pass Pass
21 H2 Browse Loads Data Successfully Pass Pass Pass
22 H3 Browse Loads Data Successfully Pass Pass Pass
23 H2 Figure Display Functional Pass Pass Pass
24 H3 Figure Display Functional Pass Pass Pass
25 Print Report Functional N/A Pass Pass
26 Print Report Time N/A 4.4 sec 4.5 sec
27 H1 Clear Button Functional Pass Pass Pass
28 H2 Clear Button Functional Pass Pass Pass
29 H3 Clear Button Functional Pass Pass Pass
30 Documentation Exists Pass Pass Pass

1Prior to Version 1.1 only the 27.3 cm x 27.3 cm reference profile existed
2#10 In Version 1.0 a bug was identified where MLC Y T&G effect was not accounted for in the reference data
3Prior to Version 1.1 diagonal profiles were not available
4#11 In Version 1.1.0 a bug was identified where flatness was computed incorrectly

10.5cm Test Suite Results

Input Data Value
Reference Data ./reference/AP_10P5X10P5_PlaneDose_Vertical_Isocenter.dcm
./reference/AP_27P3X27P3_PlaneDose_Vertical_Isocenter.dcm
Gamma Criteria 3%/1mm
Measured Data Head3_G90_10p5.prm
ID Test Case Version 1.0 Version 1.1.0 Version 1.1.1
1 Application Loads Successfully Pass Pass Pass
2 Application Load Time1 0.7 sec 0.9 sec 0.9 sec
3 Code Analyzer Messages 2 0 0
4 Cumulative Cyclomatic Complexity 261 395 403
5 Reference Data Loads Successfully Pass Pass Pass
6 Reference MLC X Data within 1%/0.1 mm Pass Pass Pass
7 Reference MLC Y Data within 1%/0.1 mm2 Fail Pass Pass
8 H1 Browse Loads Data Successfully Pass Pass Pass
9 Browse Callback Load Time 2.0 sec 3.7 sec 3.6 sec
10 MLC X Profile within 0.1% Pass Pass Pass
11 MLC Y Profile within 0.1% Pass Pass Pass
12 Positive Diagonal Profile within 0.1%3 N/A Pass Pass
13 Negative Diagonal Profile within 0.1%3 N/A Pass Pass
14 Timing Profile within 0.1% Pass Pass Pass
15 MLC X Gamma within 0.11 Fail Pass Pass
16 MLC Y Gamma within 0.11,2 Fail Pass Pass
17 Positive Diagonal Gamma within 0.13 N/A Pass Pass
18 Negative Diagonal Gamma within 0.13 N/A Pass Pass
19 Statistics within 0.1 sec/mm/%1,4 Fail Fail Pass
20 H1 Figure Display Functional Pass Pass Pass
21 H2 Browse Loads Data Successfully Pass Pass Pass
22 H3 Browse Loads Data Successfully Pass Pass Pass
23 H2 Figure Display Functional Pass Pass Pass
24 H3 Figure Display Functional Pass Pass Pass
25 Print Report Functional N/A Pass Pass
26 Print Report Time N/A 4.4 sec 4.1 sec
27 H1 Clear Button Functional Pass Pass Pass
28 H2 Clear Button Functional Pass Pass Pass
29 H3 Clear Button Functional Pass Pass Pass
30 Documentation Exists Pass Pass Pass

1Prior to Version 1.1 only the 27.3 cm x 27.3 cm reference profile existed
2#10 In Version 1.0 a bug was identified where MLC Y T&G effect was not accounted for in the reference data
3Prior to Version 1.1 diagonal profiles were not available
4#11 In Version 1.1.0 a bug was identified where flatness was computed incorrectly

Code Coverage

Function Version 1.0 Version 1.1.0 Version 1.1.1
AnalyzeProfilerFields 71.9% 70.6%
BrowseCallback 91.2% 91.2%
CalcGamma 41.8% 39.8% 39.8%
ClearCallback 100.0% 100.0%
Event 60.0% 60.0% 60.0%
FieldUniformity 88.5% 80.4% 81.3%
LoadProfilerDICOMReference 81.2% 74.6%
LoadVersionInfo 88.5% 88.5% 88.5%
ParseSNCprm 68.6% 70.6%
PrintReport 76.3% 74.7%
UpdateDisplay 93.0% 94.7% 94.7%
UpdateStatistics 83.7% 93.0% 93.0%
⚠️ **GitHub.com Fallback** ⚠️