MAVEN Particles and Fields Flight Software Critical Design

  • Slides: 23
Download presentation
MAVEN Particles and Fields Flight Software Critical Design Review Testing Section Peter R. Harvey

MAVEN Particles and Fields Flight Software Critical Design Review Testing Section Peter R. Harvey Sw. CDR (Peer) Review 1 UCB

Test Agenda I. Management Section Introduction Project Overview Management Overview Development Process and Plans

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 Sw. CDR (Peer) Review 2 UCB

Test Intro Test team q q Test Script Development, Execution : Peter Harvey DCB

Test Intro Test team q q Test Script Development, Execution : Peter Harvey DCB Support : Dorothy Gordon GSEOS Support, Network, Utilities: Tim Quinn Instrument Simulation: Brent M. Documentation q Software Test Plan : MAVEN_PF_FSW_006_STP. doc q Verification Matrix : included in STP q Traceability Matrix : MAVEN_PF_FSW_002_SRS_Tables. xls q Procedures : Boot procedures in June 2011, Op in Dec 2011 -Jan 2012 Test levels q q q q 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 q All Arms/Disarms, Errors and Events Verified q All Telemetry and Commands Used q All Requirements Verified q CPU Resource Usage Measured Sw. CDR (Peer) Review 3 UCB

Test Preparations Database & Display Preps Sw. CDR (Peer) Review 4 UCB

Test Preparations Database & Display Preps Sw. CDR (Peer) Review 4 UCB

Test Example Reqs Test Case: On Board Data Analysis – E & B Spin

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 Sw. CDR (Peer) Review 5 UCB

Test Example Reqs Test Case: On Board Data Analysis – E & B Spin

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) Sw. CDR (Peer) Review 6 UCB

Test Script Stds Script Demonstration • • Requirement identification Overall Consistent Format Library Support

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 * efw import * util import * __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, fl. Timeout=20) adstr = "0000" + hex(0 x 10000+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( 0 x 100+(ival&0 xff))[-2: ]+" " bytes = bytes + hex( 0 x 100+ ((ival>>8)& 0 xff))[-2: ]+" " efw. idpu_load(adstr, bytes) wait(APID_263, lambda: APID_263. CMDFLAG==0, fl. Timeout=20) def ffptoflt( val ): sign = val & 0 x 800000 exp = ((val & 0 x 7 F 0000) >> 16) - 64 - 16 mant = val&0 xffff if((val&0 x 8000)==0): return(0) flt = mant*2**exp if(sign!=0): flt = -flt return(flt) Sw. CDR (Peer) Review 7 UCB

Test Script Names Script Development • • Uses Cmds & Tlm names Result Logging

Test Script Names Script Development • • Uses Cmds & Tlm names Result Logging Pass/Fail criteria Error Accounting def spin_test( adr, Offset. A, Costerm. B, Sinterm. C): log('------ GENERATING NEW WAVEFORM ----- ', color=BLUE, attr=BOLD ) PF=("FAIL", "PASS") load_waveform( adr, Offset. A, Costerm. B, Sinterm. C) fcnt = APID_267. FITCOUNT #We'll watch this count up cmd. EFW_FITSIM() #Perform Fit wait(APID_267, lambda: APID_267. FITCOUNT>fcnt, fl. Timeout=20) log(" Simulated A, B, C = %8. 3 f" %(Offset. A, Costerm. B, Sinterm. C), color=BROWN, attr=BOLD ) wait(APID_26 A, lambda: True, fl. Timeout=20) #SW packet scale = 32768. 0 A = ffptoflt(APID_26 A. Ex_OFFSET)*scale B = ffptoflt(APID_26 A. Ex_COSINE)*scale C = ffptoflt(APID_26 A. Ex_SINE)*scale S = ffptoflt(APID_26 A. Ex_STDDEV)*scale log(" SPIN Results A, B, C, S = %8. 3 f" %(A, B, C, S), color=BROWN, attr=BOLD ) dif. A = abs(A-Offset. A) dif. B = abs(B-Costerm. B) dif. C = abs(C-Sinterm. C) A_range = B_range = C_range = 1 #PASS if( dif. A > max(1, . 002*abs(Offset. A) ) ): A_range=0 #FAIL if( dif. B > max(1, . 002*abs(Costerm. B)) ): B_range=0 if( dif. C > max(1, . 002*abs(Sinterm. C)) ): C_range=0 log(" Verification A, B, C = %8 s %8 s" % (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 Sw. CDR (Peer) Review 8 UCB

Test Script Format Script Development • • • Script Banner Consistent Format Name match

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 = 0 x 9 a 00 #EFIELD BUFFER START bbuf = ebuf+0 x 100 #BFIELD BUFFER START log('1. 1 Increasing TM Rate, Clear Start ', color=BLUE, attr=BOLD ) cmd. EFW_FITMODE(0, 1, 1) #No Sampling, E 12, 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 ) Offset. A=0. Costerm. B=0. Sinterm. C=0. for Costerm. B in (32768. 0, 16384. 0, 0. 0, -8192. 0*3): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) log('--------------------', color=BLUE, attr=BOLD ) log('3. 0 Injecting Sine Scales ', color=BLUE, attr=BOLD ) log('--------------------', color=BLUE, attr=BOLD ) Offset. A=0. Costerm. B=0. for Sinterm. C in (32768. 0, 16384. 0, 0. 0, -8192. 0*3): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) log('--------------------', color=BLUE, attr=BOLD ) log('4. 0 Injecting Offset Errors ', color=BLUE, attr=BOLD ) log('--------------------', color=BLUE, attr=BOLD ) Costerm. B=0. Sinterm. C=16384. for Offset. A in (1024. 0, 128. 0, -256. 0, -768. 0 ): errs = errs+spin_test( ebuf, Offset. A, Costerm. B, Sinterm. C) 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 ) Sw. CDR (Peer) Review 9 UCB

Test Script Output Fri Aug 21 16: 48: 08 2009 TEST_SPIN_1: Starting script TEST_SPIN_1.

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=0 x 00009 A 00, bytes=0 x(00, 8 A, 7 D, 41, 76, 6 D, 6 A, 82, 5 A, 1 C, 47, FB, 30, F 8, 18, 00, 08, E 7, 05, CF, E 4, B 8, 7 E, A 5, 93, 95, BF, 89, 76, 82, 00, 80, 76, 82, BF, 89, 93, 95, 7 E, A 5, E 4, B 8, 05, CF, 08, E 7, 00, F 8, 18, FB, 30, 1 C, 47, 82, 5 A, 6 D, 6 A, 41, 76, 8 A, 7 D)) Fri Aug 21 16: 48: 13 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 48: 21 2009 TEST_SPIN_1: Simulated = 0. 000 32768. 000 0. 000 Fri Aug 21 16: 48: 23 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 32764. 500 -0. 000 Fri Aug 21 16: 48: 23 2009 TEST_SPIN_1: Verification A, B, C = PASS 1. 477 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=0 x 00009 A 00, bytes=0 x(00, 40, C 5, 3 E, 20, 3 B, 36, 35, 41, 2 D, 8 E, 23, 7 D, 18, 7 C, 00, 00, 84, F 3, 83, E 7, 72, DC, BF, D 2, CA, E 0, C 4, 3 B, C 1, 00, C 0, 3 B, C 1, E 0, C 4, CA, BF, D 2, 72, DC, 83, E 7, 84, F 3, 00, 7 C, 0 C, 7 D, 18, 8 E, 23, 41, 2 D, 36, 35, 20, 3 B, C 5, 3 E)) 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 Fri Aug 21 16: 48: 41 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 863 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=0 x 00009 A 00, bytes=0 x(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() Sw. CDR (Peer) Review 10 UCB

Test Script Output Fri Aug 21 16: 48: 53 2009 TEST_SPIN_1: Simulated = 0.

Test Script Output Fri Aug 21 16: 48: 53 2009 TEST_SPIN_1: Simulated = 0. 000 Fri Aug 21 16: 48: 59 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 Fri Aug 21 16: 48: 59 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 000 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=0 x 00009 A 00, bytes=0 x(00, E 0, 9 E, E 0, 70, E 2, 65, E 5, 60, E 9, 39, EE, C 2, F 3, C 2, F 9, 00, 3 E, 06, 3 E, 0 C, C 7, 11, A 0, 16, 9 B, 1 A, 90, 1 D, 62, 1 F, 00, 20, 62, 1 F, 90, 1 D, 9 B, 1 A, A 0, 16, C 7, 11, 3 E, 0 C, 3 E, 06, 00, C 2, F 9, C 2, F 3, 39, EE, 60, E 9, 65, E 5, 70, E 2, 9 E, E 0)) Fri Aug 21 16: 49: 05 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 49: 13 2009 TEST_SPIN_1: Simulated = 0. 000 -8192. 000 0. 000 Fri Aug 21 16: 49: 17 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 -8190. 750 -0. 033 Fri Aug 21 16: 49: 17 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 504 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=0 x 00009 A 00, bytes=0 x(00, A 0, D 9, A 1, 4 F, A 7, 2 E, B 0, 1 F, BC, AB, CA, 44, DB, 46, ED, 00, BA, 12, BC, 24, 55, 35, E 1, 43, D 2, 4 F, B 1, 58, 27, 5 E, 00, 60, 27, 5 E, B 1, 58, D 2, 4 F, E 1, 43, 55, 35, BC, 24, BA, 12, 00, 46, ED, 44, DB, AB, CA, 1 F, BC, 2 E, B 0, 4 F, A 7, D 9, A 1)) Fri Aug 21 16: 49: 23 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 49: 29 2009 TEST_SPIN_1: Simulated = 0. 000 -24576. 000 0. 000 Fri Aug 21 16: 49: 35 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 -24575. 500 -0. 170 Fri Aug 21 16: 49: 35 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 494 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=0 x 00009 A 00, bytes=0 x(00, F 8, 18, FB, 30, 1 C, 47, 82, 5 A, 6 D, 6 A, 41, 76, 8 A, 7 D, 00, 8 A, 7 D, 41, 76, 6 D, 6 A, 82, 5 A, 1 C, 47, FB, 30, F 8, 18, 00, 08, E 7, 05, CF, E 4, B 8, 7 E, A 5, 93, 95, BF, 89, 76, 82, 00, 80, 76, 82, BF, 89, 93, 95, 7 E, A 5, E 4, B 8, 05, CF, 08, E 7)) Fri Aug 21 16: 49: 41 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 49 2009 TEST_SPIN_1: Simulated = 0. 000 32768. 000 Fri Aug 21 16: 49: 53 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 -0. 082 32764. 500 Fri Aug 21 16: 49: 53 2009 TEST_SPIN_1: Verification A, B, C = PASS 1. 477 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=0 x 00009 A 00, bytes=0 x(00, 7 C, 0 C, 7 D, 18, 8 E, 23, 41, 2 D, 36, 35, 20, 3 B, C 5, 3 E, 00, 40, C 5, 3 E, 20, 3 B, 36, 35, 41, 2 D, 8 E, 23, 7 D, 18, 7 C, 00, 00, 84, F 3, 83, E 7, 72, DC, BF, D 2, CA, E 0, C 4, 3 B, C 1, 00, C 0, 3 B, C 1, E 0, C 4, CA, BF, D 2, 72, DC, 83, E 7, 84, F 3)) Fri Aug 21 16: 49: 59 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 50: 05 2009 TEST_SPIN_1: Simulated = 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 Fri Aug 21 16: 50: 11 2009 TEST_SPIN_1: Verification A, B, C Sw. CDR (Peer) Review A, B, C = PASS 0. 863 PASS 11 UCB

Test Script Output Fri Aug 21 16: 50: 11 2009 TEST_SPIN_1: ------ GENERATING NEW

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=0 x 00009 A 00, bytes=0 x(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 = 0. 000 Fri Aug 21 16: 50: 29 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 Fri Aug 21 16: 50: 29 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 000 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=0 x 00009 A 00, bytes=0 x(00, C 2, F 9, C 2, F 3, 39, EE, 60, E 9, 65, E 5, 70, E 2, 9 E, E 0, 00, E 0, 9 E, E 0, 70, E 2, 65, E 5, 60, E 9, 39, EE, C 2, F 3, C 2, F 9, 00, 3 E, 06, 3 E, 0 C, C 7, 11, A 0, 16, 9 B, 1 A, 90, 1 D, 62, 1 F, 00, 20, 62, 1 F, 90, 1 D, 9 B, 1 A, A 0, 16, C 7, 11, 3 E, 0 C, 3 E, 06)) Fri Aug 21 16: 50: 35 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 50: 41 2009 TEST_SPIN_1: Simulated = 0. 000 -8192. 000 Fri Aug 21 16: 50: 47 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 -0. 010 -8190. 750 Fri Aug 21 16: 50: 47 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 504 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=0 x 00009 A 00, bytes=0 x(00, 46, ED, 44, DB, AB, CA, 1 F, BC, 2 E, B 0, 4 F, A 7, D 9, A 1, 00, A 0, D 9, A 1, 4 F, A 7, 2 E, B 0, 1 F, BC, AB, CA, 44, DB, 46, ED, 00, BA, 12, BC, 24, 55, 35, E 1, 43, D 2, 4 F, B 1, 58, 27, 5 E, 00, 60, 27, 5 E, B 1, 58, D 2, 4 F, E 1, 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 = 0. 000 -24576. 000 Fri Aug 21 16: 51: 05 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 0. 000 -0. 057 -24572. 000 Fri Aug 21 16: 51: 05 2009 TEST_SPIN_1: Verification A, B, C = PASS 1. 734 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=0 x 00009 A 00, bytes=0 x(00, 04, 7 C, 10, 7 D, 1 C, 8 E, 27, 41, 36, 39, 20, 3 F, C 5, 42, 00, 44, C 5, 42, 20, 3 F, 36, 39, 41, 31, 8 E, 27, 7 D, 1 C, 7 C, 10, 04, 84, F 7, 83, EB, 72, E 0, BF, D 6, CA, CE, E 0, C 8, 3 B, C 5, 00, C 4, 3 B, C 5, E 0, C 8, CA, CE, BF, D 6, 72, E 0, 83, EB, 84, F 7)) Fri Aug 21 16: 51: 11 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 51: 17 2009 TEST_SPIN_1: Simulated = 1024. 000 0. 000 16384. 000 Fri Aug 21 16: 51: 17 2009 TEST_SPIN_1: SPIN Results A, B, C, S = 1024. 000 A, B, C 0. 059 16382. 000 Fri Aug 21 16: 51: 17 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 781 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) Sw. CDR (Peer) Review 12 UCB

Test Script Summary Fri Aug 21 16: 51: 18 2009 efw: idpu_load(addr=0 x 00009

Test Script Summary Fri Aug 21 16: 51: 18 2009 efw: idpu_load(addr=0 x 00009 A 00, bytes=0 x(80, 00, FC, 0 C, FD, 18, 0 E, 24, C 1, 2 D, B 6, 35, A 0, 3 B, 45, 3 F, 80, 45, 3 F, A 0, 3 B, B 6, 35, C 1, 2 D, 0 E, 24, FD, 18, FC, 0 C, 80, 04, F 4, 03, E 8, F 2, DC, 3 F, D 3, 4 A, CB, 60, C 5, BB, C 1, 80, C 0, BB, C 1, 60, C 5, 4 A, CB, 3 F, D 3, F 2, DC, 03, E 8, 04, F 4)) Fri Aug 21 16: 51: 23 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 51: 29 2009 TEST_SPIN_1: Simulated = 128. 000 0. 000 16384. 000 Fri Aug 21 16: 51: 35 2009 TEST_SPIN_1: SPIN Results A, B, C, S = A, B, C 128. 000 0. 070 16382. 250 Fri Aug 21 16: 51: 35 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 672 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=0 x 00009 A 00, bytes=0 x(00, FF, 7 C, 0 B, 7 D, 17, 8 E, 22, 41, 2 C, 36, 34, 20, 3 A, C 5, 3 D, 00, 3 F, C 5, 3 D, 20, 3 A, 36, 34, 41, 2 C, 8 E, 22, 7 D, 17, 7 C, 0 B, 01, FF, 84, F 2, 83, E 6, 72, DB, BF, D 1, CA, C 9, E 0, C 3, 3 B, C 0, 00, BF, 3 B, C 0, E 0, C 3, CA, C 9, BF, D 1, 72, DB, 83, E 6, 84, F 2)) 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 Fri Aug 21 16: 51: 53 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 531 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=0 x 00009 A 00, bytes=0 x(00, FD, 7 C, 09, 7 D, 15, 8 E, 20, 41, 2 A, 36, 32, 20, 38, C 5, 3 B, 00, 3 D, C 5, 3 B, 20, 38, 36, 32, 41, 2 A, 8 E, 20, 7 D, 15, 7 C, 09, 01, FD, 84, F 0, 83, E 4, 72, D 9, BF, CA, C 7, E 0, C 1, 3 B, BE, 00, BD, 3 B, BE, E 0, C 1, CA, C 7, BF, CF, 72, D 9, 83, E 4, 84, F 0)) Fri Aug 21 16: 51: 59 2009 efw_cmd_log: EFW_FITSIM() Fri Aug 21 16: 52: 05 2009 TEST_SPIN_1: Simulated = -768. 000 0. 000 16384. 000 Fri Aug 21 16: 52: 11 2009 TEST_SPIN_1: SPIN Results A, B, C, S = -767. 922 A, B, C -0. 023 16383. 500 Fri Aug 21 16: 52: 11 2009 TEST_SPIN_1: Verification A, B, C = PASS 0. 385 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 Sw. CDR (Peer) Review 13 UCB

Test Environment Test Platform ETU DCB or ETU PFDPU Test Equipment: GSE PC GSEOS

Test Environment Test Platform ETU DCB or ETU PFDPU Test Equipment: GSE PC GSEOS Software Spacecraft Sim. Instrument Sim. Logic Analyser* Digital Scope* Src: MAVEN_PF_FSW_006_STP Revision -, 4/22/2011 Data Storage: All instrument data and housekeeping Command/Event logs Network access (to Science and Remote GSE computers) *: Not shown Sw. CDR (Peer) Review 14 UCB

Test Environment Real-Time, LDS, CPT Using DVF Simulations Code. Warrior PF I&T Support Test

Test Environment Real-Time, LDS, CPT Using DVF Simulations Code. Warrior PF I&T Support Test Levels q q q q 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 Sw. CDR (Peer) Review 15 UCB

Test Timeline Build test timeline and ordered list of components and requirements to be

Test Timeline Build test timeline and ordered list of components and requirements to be tested in each build q q q Boot Build 2 All 65 testable reqs Testing June 2011 q q q Op Build 2 Modules 1 -9 (75 reqs) Testing Nov-Dec 2011 Modules 10 -17 (96 reqs) Testing Jan-Feb 2012 q q q Op Build 3 Updates as Needed Testing Apr-May 2012 Sw. CDR (Peer) Review 16 UCB

PF I&T Testing PF I&T Preparation q Organized Compatible CTM Data Bases q Settle

PF I&T Testing PF I&T Preparation q Organized Compatible CTM Data Bases q Settle on Naming Convention q Will Reuse Inst. Scripts & Displays Instrument Test Configurations q Demonstrated at EM I&T with all Inst q Review Safing Enables and Pull Any Scripted Arming FSW_021_CTM reads the Inst CTM spreadsheets to build PF-level Database PF Test Configuration Sw. CDR (Peer) Review 17 UCB

PF I&T Testing MAVEN_PF_GSE_001 A_SWECTM. xls et al MAVEN_PF_FSW_021_CTM. xls Instrument CDI commands (3

PF I&T Testing MAVEN_PF_GSE_001 A_SWECTM. xls et al MAVEN_PF_FSW_021_CTM. xls Instrument CDI commands (3 -bytes) Converted to PF CDI commands (4 -bytes) Sw. CDR (Peer) Review 18 UCB

Verification Software requirement verification recording, monitoring, and current status – databases and test reports;

Verification Software requirement verification recording, monitoring, and current status – databases and test reports; sample test verification matrix q Verification Matrix in MAVEN_PF_FSW_002_SRS_Tables record test completion q No Formal Testing Has Been Required q Records to Date are in Log Book Sw. CDR (Peer) Review 19 UCB

CPT and Stress Tests Acceptance Testing Performed on ETU PF System Highly Automated Using

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 (1 KB) 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 • • • Sw. CDR (Peer) Review 20 Test Status Logged Every Hour No Errors in FSW or GSE No Memory Leaks UCB

Acceptance Testing Acceptance process – reviews (e. g. , Acceptance Test Readiness Review, Acceptance

Acceptance Testing Acceptance process – reviews (e. g. , Acceptance Test Readiness Review, Acceptance Test Review), approval, and signoff processes q Final Builds Have Review/Test/Review Sequence q ATRR q LDS q CPT q ATR q Approval and Signoff q PF PM q PF SQA Sw. CDR (Peer) Review 21 UCB

Delivery & Installation Disposition of source code and tools, handling of load images, installation

Delivery & Installation Disposition of source code and tools, handling of load images, installation of databases, etc. q All Source and Object Code is Version Controlled (Tortoise SVN) q Boot PROM Image -> Flight and DVF ETU PROM q EEPROM Images that are installed in Flight system also installed in DVF Version identification and documentation q FSW telemeters its Version # q EEPROM Directory has Version # included q All RTS sequences are required to have a version # Sw. CDR (Peer) Review 22 UCB

Software Maintenance Plan FSW Maintenance PF DPU ETU & GSE Maintained in Flight Configuration

Software Maintenance Plan FSW Maintenance PF DPU ETU & GSE Maintained in Flight Configuration Code. Warrior & GSEOS Licenses Maintained Inject test cases Display / verify result Sw. CDR (Peer) Review 23 UCB