Download presentation
Presentation is loading. Please wait.
1
Critical Design Review
MAVEN Particles and Fields Flight Software Critical Design Review Testing Section Peter R. Harvey
2
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
3
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
4
Test Preparations Database & Display Preps
5
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 5
6
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 = 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) 6
7
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) mant = val&0xffff if((val&0x8000)==0): return(0) flt = mant*2**exp if(sign!=0): flt = -flt return(flt)
8
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 = 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 = #PASS if( difA > max(1,.002*abs(OffsetA) ) ): A_range= #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]),\ return( 3 - A_range - B_range - C_range) #number of errors TEST_SPIN_1.py RBSP_EFW_FSW_005_CTM.XLS
9
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 ) PF=("FAIL","PASS") errs=0 ebuf = 0x9a #EFIELD BUFFER START bbuf = ebuf+0x #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 ) OffsetA=0. CostermB=0. SintermC=0. for CostermB in ( , , 0.0, , *3): errs = errs+spin_test( ebuf, OffsetA, CostermB, SintermC) log('3.0 Injecting Sine Scales ', color=BLUE, attr=BOLD ) for SintermC in ( , , 0.0, , *3): log('4.0 Injecting Offset Errors ', color=BLUE, attr=BOLD ) SintermC=16384. for OffsetA in (1024.0, 128.0, , ): 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 )
10
Test Script Output Fri Aug 21 16:48: TEST_SPIN_1: Starting script TEST_SPIN_1.py Fri Aug 21 16:48: TEST_SPIN_1: ======================================== Fri Aug 21 16:48: TEST_SPIN_1: SPIN_1 : Spin Fit Calculations Check Fri Aug 21 16:48: TEST_SPIN_1: 1.1 Increasing TM Rate, Clear Start Fri Aug 21 16:48: TEST_SPIN_1: Fri Aug 21 16:48: TEST_SPIN_1: 2.0 Injecting Cosine Scales Fri Aug 21 16:48: efw_cmd_log: EFW_FITMODE(0, 1, 1) Fri Aug 21 16:48: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:48: efw_cmd_log: EFW_TABLE(4, 4) Fri Aug 21 16:48: efw_cmd_log: EFW_LOAD(0) Fri Aug 21 16:48: efw_cmd_log: SCE_CTRL_SET_SPIN_PULSE_TIME( ) Fri Aug 21 16:48: efw_cmd_log: EFW_DUMPADRX(0) Fri Aug 21 16:48: efw_cmd_log: EFW_DUMPADRE(0) Fri Aug 21 16:48: efw_cmd_log: EFW_DUMPADRH(154) Fri Aug 21 16:48: efw_cmd_log: EFW_DUMPADRL(0) Fri Aug 21 16:48: efw_cmd_log: EFW_TMDUMPSIZE(128) Fri Aug 21 16:48: efw_cmd_log: EFW_CLEAR() Fri Aug 21 16:48: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:48: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:48: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:48: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:48: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:48: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:48: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:48: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:48: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:48: 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: efw_cmd_log: EFW_FITSIM()
11
Test Script Output Fri Aug 21 16:48: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:48: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:48: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:48: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:48: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:49: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:49: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:49: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:49: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:49: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49: TEST_SPIN_1: Fri Aug 21 16:49: TEST_SPIN_1: 3.0 Injecting Sine Scales Fri Aug 21 16:49: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:49: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:49: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:49: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:49: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:49: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:49: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:49: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:50: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:50: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS
12
Test Script Output Fri Aug 21 16:50: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:50: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:50: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:50: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:50: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:50: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:50: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:50: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:50: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:50: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:50: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:50: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:51: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:51: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51: TEST_SPIN_1: Fri Aug 21 16:51: TEST_SPIN_1: 4.0 Injecting Offset Errors Fri Aug 21 16:51: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:51: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:51: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:51: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:51: efw_cmd_log: EFW_CMDS(1)
13
Test Script Summary Fri Aug 21 16:51: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:51: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:51: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:51: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:51: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:51: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:51: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:51: TEST_SPIN_1: GENERATING NEW WAVEFORM Fri Aug 21 16:51: efw_cmd_log: EFW_CMDS(1) Fri Aug 21 16:51: 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: efw_cmd_log: EFW_FITSIM() Fri Aug 21 16:52: TEST_SPIN_1: Simulated A,B,C = Fri Aug 21 16:52: TEST_SPIN_1: SPIN Results A,B,C,S = Fri Aug 21 16:52: TEST_SPIN_1: Verification A,B,C = PASS PASS PASS Fri Aug 21 16:52: TEST_SPIN_1: 5.0 Cleaning Up Fri Aug 21 16:52: TEST_SPIN_1: Error Summary = 0 errors found. Fri Aug 21 16:52: TEST_SPIN_1: Spin Fit Calculations : PASS Fri Aug 21 16:52: TEST_SPIN_1: ================END===================== Fri Aug 21 16:52: TEST_SPIN_1: Script TEST_SPIN_1.py completed
14
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
15
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 Real-Time, LDS, CPT Using DVF Simulations CodeWarrior PF I&T Support
16
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 (96 reqs) Testing Jan-Feb 2012 Op Build 3 Updates as Needed Testing Apr-May 2012
17
FSW_021_CTM reads the Inst CTM spreadsheets to build PF-level Database
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
18
PF I&T Testing Instrument CDI commands (3-bytes)
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)
19
Verification Software requirement verification recording, monitoring, and current status – databases and test reports; sample test verification matrix Verification Matrix in MAVEN_PF_FSW_002_SRS_Tables record test completion No Formal Testing Has Been Required Records to Date are in Log Book
20
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 200% Archive 200% CPU Intensive Processing 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
21
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
22
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 #
23
Software Maintenance Plan
FSW Maintenance PF DPU ETU & GSE Maintained in Flight Configuration CodeWarrior & GSEOS Licenses Maintained Inject test cases Display / verify result
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.