230 likes | 369 Views
MAVEN Particles and Fields Flight Software Critical Design Review Testing Section Peter R. Harvey. Test Agenda. I. Management Section Introduction Project Overview Management Overview Development Process and Plans Software status II. Requirements & Operational Concept
E N D
MAVEN • Particles and Fields • Flight Software • Critical Design Review • Testing Section • Peter R. Harvey
Test Agenda • I. Management Section • Introduction • Project Overview • Management Overview • Development Process and Plans • Software status • II. Requirements & Operational Concept • III. Design Section • Software Overview • Module Descriptions • Issues, etc. • IV. Software Testing • Test Plans, Documents, Databases • Delivery, Installation, and Maintenance • V. Abbreviations and Acronyms • Agenda defined by MAVEN Software Management Plan, rev B format for SwCDR
Test Intro • Test team • Test Script Development, Execution : Peter Harvey • DCB Support : Dorothy Gordon • GSEOS Support, Network, Utilities: Tim Quinn • Instrument Simulation: Brent M. • Documentation • Software Test Plan : MAVEN_PF_FSW_006_STP.doc • Verification Matrix : included in STP • Traceability Matrix : MAVEN_PF_FSW_002_SRS_Tables.xls • Procedures : Boot procedures in June 2011, Op in Dec 2011-Jan 2012 • Test levels • Function Simulation w/Single Stepping, Standard Log Book Records • Function Simulation w/Scripted Input, Standard Log Book Records • Function Real-Time on DVF System, Standard Log Book Records • Module Real-Time on DVF System w/Script, Automated Log • Long Duration Stress Test on DVF w/Script, Automated Log • Comp. Performance Test on DVF System w/Script, Automated Log • FSW Support to DCB, PFDPU I&T Test Completeness • All Arms/Disarms, Errors and Events Verified • All Telemetry and Commands Used • All Requirements Verified • CPU Resource Usage Measured
Test Preparations Database & Display Preps
Test Example Reqs Test Case: On Board Data Analysis – E & B Spin Fits Sine-Wave Least Squares Fit Calculations are Performed 32 16-bit data points are taken at Equal Angles and Stored in Array Spin Fit Reduces 32 samples to Offset, Sine & Cosine terms
Test Example Reqs Test Case: On Board Data Analysis – E & B Spin Fits Spin Fit Matrix Results are A, B, C, Sigma (floating point), N (1 byte) Fast Flt Point = 1 sign bit, 7 exponent bits, 16 mantissa bits Each fit time tagged in MET (4 seconds, 2 subseconds) Each Spin Generates 3+3+13+13= 32 bytes Spin Packet is 8 Spins or 208 bytes Performance: Fit Requires ~720,000 cycles (~43 msec est., 35 measured) Angular Error at 6 RPM (worst case) is +/- 0.5 degrees (sampling)
Test Script Stds • Script Demonstration • Requirement identification • Overall Consistent Format • Library Support (efw, util) • Function Definitions """ TEST_SPIN_1 : TEST SPIN FIT Computations REV -, 8/21/09 PRH SPIN_1 : SPIN shall compute a sine wave least squares fit of a 32 element array of 16-bit A/D values. The basic formula is x[i] = A + B*cos(i) + C*sin(i) """ from math import * from efw import * from util import * from __main__ import * # required for access to APID_nnn telemetry blocks def load_waveform( adr, A, B, C): cmd.EFW_CMDS( 1 ) wait(APID_263, lambda: APID_263.CMDFLAG==1, flTimeout=20) adstr = "0000" + hex(0x10000+adr)[3:7] bytes = " " for i in range(32): phi = 2*pi*i/32 val = A + B*cos(phi) + C*sin(phi) ival= int(val) bytes = bytes + hex( 0x100+(ival&0xff))[-2:]+" " bytes = bytes + hex( 0x100+ ((ival>>8)& 0xff))[-2:]+" " efw.idpu_load(adstr, bytes) wait(APID_263, lambda: APID_263.CMDFLAG==0, flTimeout=20) def ffptoflt( val ): sign = val & 0x800000 exp = ((val & 0x7F0000) >> 16) - 64 - 16 mant = val&0xffff if((val&0x8000)==0): return(0) flt = mant*2**exp if(sign!=0): flt = -flt return(flt)
Test Script Names • Script Development • Uses Cmds & Tlm names • Result Logging • Pass/Fail criteria • Error Accounting def spin_test( adr, OffsetA, CostermB, SintermC): log('------ GENERATING NEW WAVEFORM --------- ', color=BLUE, attr=BOLD ) PF=("FAIL","PASS") load_waveform( adr, OffsetA, CostermB, SintermC) fcnt = APID_267.FITCOUNT #We'll watch this count up cmd.EFW_FITSIM() #Perform Fit wait(APID_267, lambda: APID_267.FITCOUNT>fcnt, flTimeout=20) log(" Simulated A,B,C = %8.3f %8.3f %8.3f" %(OffsetA,CostermB,SintermC),\ color=BROWN, attr=BOLD ) wait(APID_26A, lambda:True, flTimeout=20) #SW packet scale = 32768.0 A = ffptoflt(APID_26A.Ex_OFFSET)*scale B = ffptoflt(APID_26A.Ex_COSINE)*scale C = ffptoflt(APID_26A.Ex_SINE)*scale S = ffptoflt(APID_26A.Ex_STDDEV)*scale log(" SPIN Results A,B,C,S = %8.3f %8.3f %8.3f %8.3f" %(A,B,C,S), color=BROWN, attr=BOLD ) difA = abs(A-OffsetA) difB = abs(B-CostermB) difC = abs(C-SintermC) A_range = B_range = C_range = 1 #PASS if( difA > max(1,.002*abs(OffsetA) ) ): A_range=0 #FAIL if( difB > max(1,.002*abs(CostermB)) ): B_range=0 if( difC > max(1,.002*abs(SintermC)) ): C_range=0 log(" Verification A,B,C = %8s %8s %8s" % (PF[A_range],PF[B_range],PF[C_range]),\ color=BROWN, attr=BOLD ) return( 3 - A_range - B_range - C_range) #number of errors TEST_SPIN_1.py RBSP_EFW_FSW_005_CTM.XLS
Test Script Format • Script Development • Script Banner • Consistent Format • Name match to requirements • Section 1 typical setup • Section 2-N subtests • Section N+1 Cleanup&Summary def main(): log('========================================', color=BLUE, attr=BOLD ) log('SPIN_1 : Spin Fit Calculations Check ', color=BLUE, attr=BOLD ) log('========================================', color=BLUE, attr=BOLD ) PF=("FAIL","PASS") errs=0 ebuf = 0x9a00 #EFIELD BUFFER START bbuf = ebuf+0x100 #BFIELD BUFFER START log('1.1 Increasing TM Rate, Clear Start ', color=BLUE, attr=BOLD ) cmd.EFW_FITMODE(0,1,1) #No Sampling, E12,Bx calcs cmd.EFW_TABLE(4,4) #OUTPTR=0 (start of buffer) cmd.EFW_LOAD(0) # SC_SPIN(6) #Get Space Weather faster DUMPADR(ebuf) cmd.EFW_TMDUMPSIZE(128) cmd.EFW_CLEAR() log('---------------------------------------', color=BLUE, attr=BOLD ) log('2.0 Injecting Cosine Scales ', color=BLUE, attr=BOLD ) log('---------------------------------------', color=BLUE, attr=BOLD ) OffsetA=0. CostermB=0. SintermC=0. for CostermB in (32768.0, 16384.0, 0.0, -8192.0, -8192.0*3): errs = errs+spin_test( ebuf, OffsetA, CostermB, SintermC) log('---------------------------------------', color=BLUE, attr=BOLD ) log('3.0 Injecting Sine Scales ', color=BLUE, attr=BOLD ) log('---------------------------------------', color=BLUE, attr=BOLD ) OffsetA=0. CostermB=0. for SintermC in (32768.0, 16384.0, 0.0, -8192.0, -8192.0*3): errs = errs+spin_test( ebuf, OffsetA, CostermB, SintermC) log('---------------------------------------', color=BLUE, attr=BOLD ) log('4.0 Injecting Offset Errors ', color=BLUE, attr=BOLD ) log('---------------------------------------', color=BLUE, attr=BOLD ) CostermB=0. SintermC=16384. for OffsetA in (1024.0, 128.0, -256.0, -768.0 ): errs = errs+spin_test( ebuf, OffsetA, CostermB, SintermC) log('5.0 Cleaning Up ', color=BLUE, attr=BOLD ) log('Error Summary = %d errors found.'% errs, color=BLUE, attr=BOLD ) log('Spin Fit Calculations : %s'% PF[errs==0], color=BLUE, attr=BOLD ) log('================END=====================', color=BLUE, attr=BOLD )
Test Script Output Fri Aug 21 16:48:08 2009 TEST_SPIN_1: Starting script TEST_SPIN_1.py Fri Aug 21 16:48:08 2009 TEST_SPIN_1: ======================================== Fri Aug 21 16:48:08 2009 TEST_SPIN_1: SPIN_1 : Spin Fit Calculations Check Fri Aug 21 16:48:08 2009 TEST_SPIN_1: ======================================== Fri Aug 21 16:48:08 2009 TEST_SPIN_1: 1.1 Increasing TM Rate, Clear Start Fri Aug 21 16:48:08 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:48:08 2009 TEST_SPIN_1: 2.0 Injecting Cosine Scales Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_FITMODE(0, 1, 1) Fri Aug 21 16:48:08 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:48:08 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_TABLE(4, 4) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_LOAD(0) Fri Aug 21 16:48:08 2009 efw_cmd_log: SCE_CTRL_SET_SPIN_PULSE_TIME(6000000) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_DUMPADRX(0) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_DUMPADRE(0) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_DUMPADRH(154) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_DUMPADRL(0) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_TMDUMPSIZE(128) Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_CLEAR() Fri Aug 21 16:48:08 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48:08 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 80, 8A, 7D, 41, 76, 6D, 6A, 82, 5A, 1C, 47, FB, 30, F8, 18, 00, 00, 08, E7, 05, CF, E4, B8, 7E, A5, 93, 95, BF, 89, 76, 82, 00, 80, 76, 82, BF, 89, 93, 95, 7E, A5, E4, B8, 05, CF, 08, E7, 00, 00, F8, 18, FB, 30, 1C, 47, 82, 5A, 6D, 6A, 41, 76, 8A, 7D)) Fri Aug 21 16:48:13 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:48:21 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 32768.000 0.000 Fri Aug 21 16:48:23 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 32764.500 -0.000 1.477 Fri Aug 21 16:48:23 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48:23 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:48:23 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48:24 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 40, C5, 3E, 20, 3B, 36, 35, 41, 2D, 8E, 23, 7D, 18, 7C, 0C, 00, 00, 84, F3, 83, E7, 72, DC, BF, D2, CA, CA, E0, C4, 3B, C1, 00, C0, 3B, C1, E0, C4, CA, CA, BF, D2, 72, DC, 83, E7, 84, F3, 00, 00, 7C, 0C, 7D, 18, 8E, 23, 41, 2D, 36, 35, 20, 3B, C5, 3E)) Fri Aug 21 16:48:29 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:48:37 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 16384.000 0.000 Fri Aug 21 16:48:41 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 16381.750 0.047 0.863 Fri Aug 21 16:48:41 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48:41 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:48:41 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48:42 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00)) Fri Aug 21 16:48:47 2009 efw_cmd_log: EFW_FITSIM()
Test Script Output Fri Aug 21 16:48:53 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 0.000 Fri Aug 21 16:48:59 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 0.000 0.000 0.000 Fri Aug 21 16:48:59 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48:59 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:48:59 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49:00 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, E0, 9E, E0, 70, E2, 65, E5, 60, E9, 39, EE, C2, F3, C2, F9, 00, 00, 3E, 06, 3E, 0C, C7, 11, A0, 16, 9B, 1A, 90, 1D, 62, 1F, 00, 20, 62, 1F, 90, 1D, 9B, 1A, A0, 16, C7, 11, 3E, 0C, 3E, 06, 00, 00, C2, F9, C2, F3, 39, EE, 60, E9, 65, E5, 70, E2, 9E, E0)) Fri Aug 21 16:49:05 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49:13 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 -8192.000 0.000 Fri Aug 21 16:49:17 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 -8190.750 -0.033 0.504 Fri Aug 21 16:49:17 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49:17 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:49:17 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49:18 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, A0, D9, A1, 4F, A7, 2E, B0, 1F, BC, AB, CA, 44, DB, 46, ED, 00, 00, BA, 12, BC, 24, 55, 35, E1, 43, D2, 4F, B1, 58, 27, 5E, 00, 60, 27, 5E, B1, 58, D2, 4F, E1, 43, 55, 35, BC, 24, BA, 12, 00, 00, 46, ED, 44, DB, AB, CA, 1F, BC, 2E, B0, 4F, A7, D9, A1)) Fri Aug 21 16:49:23 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49:29 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 -24576.000 0.000 Fri Aug 21 16:49:35 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 -24575.500 -0.170 0.494 Fri Aug 21 16:49:35 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49:35 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:49:35 2009 TEST_SPIN_1: 3.0 Injecting Sine Scales Fri Aug 21 16:49:35 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:49:35 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:49:35 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49:36 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, F8, 18, FB, 30, 1C, 47, 82, 5A, 6D, 6A, 41, 76, 8A, 7D, 00, 80, 8A, 7D, 41, 76, 6D, 6A, 82, 5A, 1C, 47, FB, 30, F8, 18, 00, 00, 08, E7, 05, CF, E4, B8, 7E, A5, 93, 95, BF, 89, 76, 82, 00, 80, 76, 82, BF, 89, 93, 95, 7E, A5, E4, B8, 05, CF, 08, E7)) Fri Aug 21 16:49:41 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49:49 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 32768.000 Fri Aug 21 16:49:53 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 -0.082 32764.500 1.477 Fri Aug 21 16:49:53 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49:53 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:49:53 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49:54 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, 7C, 0C, 7D, 18, 8E, 23, 41, 2D, 36, 35, 20, 3B, C5, 3E, 00, 40, C5, 3E, 20, 3B, 36, 35, 41, 2D, 8E, 23, 7D, 18, 7C, 0C, 00, 00, 84, F3, 83, E7, 72, DC, BF, D2, CA, CA, E0, C4, 3B, C1, 00, C0, 3B, C1, E0, C4, CA, CA, BF, D2, 72, DC, 83, E7, 84, F3)) Fri Aug 21 16:49:59 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50:05 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 16384.000 Fri Aug 21 16:50:11 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 0.016 16381.750 0.863 Fri Aug 21 16:50:11 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS
Test Script Output Fri Aug 21 16:50:11 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:50:11 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50:12 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00)) Fri Aug 21 16:50:17 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50:25 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 0.000 Fri Aug 21 16:50:29 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 0.000 0.000 0.000 Fri Aug 21 16:50:29 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:50:29 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:50:29 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50:30 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, C2, F9, C2, F3, 39, EE, 60, E9, 65, E5, 70, E2, 9E, E0, 00, E0, 9E, E0, 70, E2, 65, E5, 60, E9, 39, EE, C2, F3, C2, F9, 00, 00, 3E, 06, 3E, 0C, C7, 11, A0, 16, 9B, 1A, 90, 1D, 62, 1F, 00, 20, 62, 1F, 90, 1D, 9B, 1A, A0, 16, C7, 11, 3E, 0C, 3E, 06)) Fri Aug 21 16:50:35 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50:41 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 -8192.000 Fri Aug 21 16:50:47 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 -0.010 -8190.750 0.504 Fri Aug 21 16:50:47 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:50:47 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:50:47 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50:48 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 00, 46, ED, 44, DB, AB, CA, 1F, BC, 2E, B0, 4F, A7, D9, A1, 00, A0, D9, A1, 4F, A7, 2E, B0, 1F, BC, AB, CA, 44, DB, 46, ED, 00, 00, BA, 12, BC, 24, 55, 35, E1, 43, D2, 4F, B1, 58, 27, 5E, 00, 60, 27, 5E, B1, 58, D2, 4F, E1, 43, 55, 35, BC, 24, BA, 12)) Fri Aug 21 16:50:53 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51:01 2009 TEST_SPIN_1: Simulated A,B,C = 0.000 0.000 -24576.000 Fri Aug 21 16:51:05 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 0.000 -0.057 -24572.000 1.734 Fri Aug 21 16:51:05 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51:05 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:51:05 2009 TEST_SPIN_1: 4.0 Injecting Offset Errors Fri Aug 21 16:51:05 2009 TEST_SPIN_1: --------------------------------------- Fri Aug 21 16:51:05 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:51:05 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51:06 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, 04, 7C, 10, 7D, 1C, 8E, 27, 41, 31, 36, 39, 20, 3F, C5, 42, 00, 44, C5, 42, 20, 3F, 36, 39, 41, 31, 8E, 27, 7D, 1C, 7C, 10, 00, 04, 84, F7, 83, EB, 72, E0, BF, D6, CA, CE, E0, C8, 3B, C5, 00, C4, 3B, C5, E0, C8, CA, CE, BF, D6, 72, E0, 83, EB, 84, F7)) Fri Aug 21 16:51:11 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51:17 2009 TEST_SPIN_1: Simulated A,B,C = 1024.000 0.000 16384.000 Fri Aug 21 16:51:17 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 1024.000 0.059 16382.000 0.781 Fri Aug 21 16:51:17 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51:17 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:51:17 2009 efw_cmd_log: EFW_CMDS(1)
Test Script Summary Fri Aug 21 16:51:18 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(80, 00, FC, 0C, FD, 18, 0E, 24, C1, 2D, B6, 35, A0, 3B, 45, 3F, 80, 40, 45, 3F, A0, 3B, B6, 35, C1, 2D, 0E, 24, FD, 18, FC, 0C, 80, 00, 04, F4, 03, E8, F2, DC, 3F, D3, 4A, CB, 60, C5, BB, C1, 80, C0, BB, C1, 60, C5, 4A, CB, 3F, D3, F2, DC, 03, E8, 04, F4)) Fri Aug 21 16:51:23 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51:29 2009 TEST_SPIN_1: Simulated A,B,C = 128.000 0.000 16384.000 Fri Aug 21 16:51:35 2009 TEST_SPIN_1: SPIN Results A,B,C,S = 128.000 0.070 16382.250 0.672 Fri Aug 21 16:51:35 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51:35 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:51:35 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51:36 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, FF, 7C, 0B, 7D, 17, 8E, 22, 41, 2C, 36, 34, 20, 3A, C5, 3D, 00, 3F, C5, 3D, 20, 3A, 36, 34, 41, 2C, 8E, 22, 7D, 17, 7C, 0B, 01, FF, 84, F2, 83, E6, 72, DB, BF, D1, CA, C9, E0, C3, 3B, C0, 00, BF, 3B, C0, E0, C3, CA, C9, BF, D1, 72, DB, 83, E6, 84, F2)) Fri Aug 21 16:51:41 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51:49 2009 TEST_SPIN_1: Simulated A,B,C = -256.000 0.000 16384.000 Fri Aug 21 16:51:53 2009 TEST_SPIN_1: SPIN Results A,B,C,S = -255.883 0.059 16382.750 0.531 Fri Aug 21 16:51:53 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51:53 2009 TEST_SPIN_1: ------ GENERATING NEW WAVEFORM --------- Fri Aug 21 16:51:53 2009 efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51:54 2009 efw: idpu_load(addr=0x00009A00, bytes=0x(00, FD, 7C, 09, 7D, 15, 8E, 20, 41, 2A, 36, 32, 20, 38, C5, 3B, 00, 3D, C5, 3B, 20, 38, 36, 32, 41, 2A, 8E, 20, 7D, 15, 7C, 09, 01, FD, 84, F0, 83, E4, 72, D9, BF, CF, CA, C7, E0, C1, 3B, BE, 00, BD, 3B, BE, E0, C1, CA, C7, BF, CF, 72, D9, 83, E4, 84, F0)) Fri Aug 21 16:51:59 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:52:05 2009 TEST_SPIN_1: Simulated A,B,C = -768.000 0.000 16384.000 Fri Aug 21 16:52:11 2009 TEST_SPIN_1: SPIN Results A,B,C,S = -767.922 -0.023 16383.500 0.385 Fri Aug 21 16:52:11 2009 TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:52:11 2009 TEST_SPIN_1: 5.0 Cleaning Up Fri Aug 21 16:52:11 2009 TEST_SPIN_1: Error Summary = 0 errors found. Fri Aug 21 16:52:11 2009 TEST_SPIN_1: Spin Fit Calculations : PASS Fri Aug 21 16:52:11 2009 TEST_SPIN_1: ================END===================== Fri Aug 21 16:52:11 2009 TEST_SPIN_1: Script TEST_SPIN_1.py completed
Test Environment Test Environment Test Platform ETU DCB or ETU PFDPU Test Equipment: GSE PC GSEOS Software Spacecraft Sim. Instrument Sim. Logic Analyser* Digital Scope* Data Storage: All instrument data and housekeeping Command/Event logs Network access (to Science and Remote GSE computers) *: Not shown Src: MAVEN_PF_FSW_006_STP Revision -, 4/22/2011
Real-Time, LDS, CPT Using DVF Simulations CodeWarrior PF I&T Support Test Environment • Test Levels • Function Simulation w/Single Stepping, Standard Log Book Records • Function Simulation w/Scripted Input, Standard Log Book Records • Function Real-Time on DVF System, Standard Log Book Records • Module Real-Time on DVF System w/Script, Automated Log • Long Duration Stress Test on DVF w/Script, Automated Log • Comp. Performance Test on DVF System w/Script, Automated Log • FSW Support to DCB, PFDPU I&T
Test Timeline • Build test timeline and ordered list of components and requirements to be tested in each build • Boot Build 2 • All 65 testable reqs • Testing June 2011 • Op Build 2 • Modules 1-9 (75 reqs) • Testing Nov-Dec 2011 • Modules 10-17 (96 reqs) • Testing Jan-Feb 2012 • Op Build 3 • Updates as Needed • Testing Apr-May 2012
PF I&T Testing • PF I&T Preparation • Organized Compatible CTM Data Bases • Settle on Naming Convention • Will Reuse Inst. Scripts & Displays • Demonstrated at EM I&T with all Inst • Review Safing Enables and Pull Any Scripted Arming Instrument Test Configurations FSW_021_CTM reads the Inst CTM spreadsheets to build PF-level Database PF Test Configuration
PF I&T Testing MAVEN_PF_GSE_001A_SWECTM.xls et al MAVEN_PF_FSW_021_CTM.xls Instrument CDI commands (3-bytes) Converted to PF CDI commands (4-bytes)
Verification • Software requirement verification recording, monitoring, and current status – databases and test reports; sample test verification matrix • Verification Matrix inMAVEN_PF_FSW_002_SRS_Tables record test completion • No Formal Testing Has Been Required • Records to Date are in Log Book
CPT and Stress Tests • Acceptance Testing • Performed on ETU PF System • Highly Automated Using Approved Test Scripts • Comprehensive Performance Test All Requirements Verified All Arms/Disarms Verified All Errors and Events Verified All Telemetry and Commands Used All PF Mode Configurations Used CPU Resource Usage Measured • Long Duration & Stress Test • High Rate of Commands • Command Pass Simulation Every Hour for 72 hours • Memory Load – Uplink of Script Database (1KB) • Serial Commands – Max commands rate for 250 commands • Memory Dump Script Database • Execute Script and Verify Results • High Rate of Telemetry • Continuous Telemetry at 200% nominal • Real Time Data @ 200% • Archive Playback @ 200% • CPU Intensive Processing • Calculations @ 100% • Archive Writing (200% nominal) • Data Compression Enabled • SDRAM and SRAM Memory Scrubbing Enabled • Verification • Test Status Logged Every Hour • No Errors in FSW or GSE • No Memory Leaks
Acceptance Testing • Acceptance process – reviews (e.g., Acceptance Test Readiness Review, Acceptance Test Review), approval, and signoff processes • Final Builds Have Review/Test/Review Sequence • ATRR • LDS • CPT • ATR • Approval and Signoff • PF PM • PF SQA
Delivery & Installation • Disposition of source code and tools, handling of load images, installation of databases, etc. • All Source and Object Code is Version Controlled (Tortoise SVN) • Boot PROM Image -> Flight and DVF ETU PROM • EEPROM Images that are installed in Flight system also installed in DVF • Version identification and documentation • FSW telemeters its Version # • EEPROM Directory has Version # included • All RTS sequences are required to have a version #
Software Maintenance Plan • FSW Maintenance • PF DPU ETU & GSE Maintained in Flight Configuration • CodeWarrior & GSEOS Licenses Maintained Inject test cases Display / verify result