common/Production/ProductionUiCordonel.UnitTests/Features/ProductionProcessCheckProductionState.feature
2026-04-23 17:50:07 +02:00

623 lines
53 KiB
Gherkin

# ================================================================================================================================
Feature: CheckProductionState
Test the functionality of the executed production steps and preconditions needed for finalizing of the Cordonel and to prepare it
for shipping.
# ================================================================================================================================
@CheckEolProgress
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_001]_Check_EOL_Progress
FUNCTION: Check if an EOL-Progress has all information needed to start the check of all production states.
PRESETS: none
INPUTS: The values needed to be predefined automatically by the "Sentinel" on EOL-Progress creation:
"EOL Id" can be set to any number unequal to 0, 0 will cause an error,
"EOL StartDate" set to "UTC Now" to take the actual date, else set to "unknown" will leave the date empty
"Cordonel PcbId" needed for comparison to
"EOL PcbId".
"Partial Compare" "X" will be used to check if the string contains a substring defined in the "StringReturn".
"Partial Compare" "-" will force the string being exact as defined!
OUTPUT: "StringReturn" as test result containing the expected string or "null" as error result from the method.
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the property to be checked for 'EOLSoftwareNameAndVersion'
And Name the object type holding the property 'StringReturn'
And Name the private function to be checked for functionality 'CheckEolProgress'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | EOL Id | EOL StartDate | Cordonel PcbId | EOL PcbId | Partial Compare | StringReturn | Comment |
| 1 | 123 | UTC Now | 182100041 | 182100041 | X | Cordonel | EOL Progress successfully created |
| 2 | 123 | UTC Now | 0 | 182100041 | - | null | Unmatching Cordonel PcbId |
| 3 | 123 | UTC Now | 182100041 | 0 | - | null | Unmatching EOL PcbId |
| 4 | 123 | unknown | 182100041 | 182100041 | - | null | Start date not set |
| 5 | 0 | UTC Now | 182100041 | 182100041 | X | null | EOL Id not set |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckProductionProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_002]_Check_Requirements
FUNCTION: Check if any requirement is defined being active for this Cordonel.
PRESETS: none
INPUTS: Requirements "Standard Id" just a number or "null",
"Standard Version" just a number or "null",
"Standard IsActive" if "X" else "-",
"Special Id just a number or "null"",
"Special Version" just a number or "null" and
"Special IsActive" if "X" else "-".
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the property to be checked for 'RequirementRequestChecked'
And Name the object type holding the property 'EOLStatus'
And Name the private function to be checked for functionality 'CheckRequirements'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Standard Id | Standard Version | Standard IsActive | Standard IsApproved | Special Id | Special Version | Special IsActive | Special IsApproved | EOL Status | Comment |
| 1 | 10 | 5 | X | X | null | null | - | - | Okay | Standard Requirement is active and approved |
| 2 | 10 | 5 | X | X | 5 | 3 | X | - | Okay | Standard Requirement is active and approved, special is active but not approved |
| 3 | 10 | 5 | - | - | 5 | 3 | X | X | Okay | Special Requirement is active and approved |
| 4 | 10 | 5 | X | X | 5 | 3 | X | X | Okay | Both Requirements are active and approved |
| 5 | 10 | 5 | - | - | 5 | 3 | - | - | Failed | No Requirement is active and no requirement approved |
| 6 | 10 | 5 | X | - | 5 | 3 | - | - | Failed | Standard Requirement is active but not approved |
| 7 | 10 | 5 | - | - | 5 | 3 | X | - | Failed | Special Requirement is active but not approved |
| 8 | null | null | - | - | null | null | - | - | Failed | No Requirement is defined |
| 9 | null | null | - | - | 5 | 3 | X | X | Failed | Missing Standard Requirement |
| 10 | null | null | X | X | null | null | - | - | Failed | Standard Requirement is active but undefined |
| 11 | null | 5 | X | X | null | null | - | - | Failed | Standard Requirement is active but Id missing |
| 12 | 10 | null | X | X | null | null | - | - | Failed | Standard Requirement is active but version missing |
| 13 | 10 | 5 | X | X | null | 2 | X | X | Failed | Special Requirement is active but Id missing |
| 14 | 10 | 5 | X | X | 5 | null | X | X | Failed | Special Requirement is active but version missing |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckProductionProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_003]_Check_CSD_Status
FUNCTION: Check the Customer Specific Document (CSD) for its status.
PRESETS: none
INPUTS: "CSD ID" the identification number of the CSD,
"CSD Name" a string for verbose identification,
"CSD Code" the code in SAP,
"CSD Status" giving the status "Null", "New", "Blocked", "Known" or "Released".
OUTPUT: "StatusReturn" with results "Okay", "Failed" or "Warning"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the object type holding the property 'StatusReturn'
And Name the private function to be checked for functionality 'ValidateCsd'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | CSD ID | CSD Name | CSD Code | CSD Status | StatusReturn | Comment |
| 1 | 3100782 | CSD 767978 Canal de Isabel | O1 | Released | Okay | Released CSD approved for production |
| 2 | 3100782 | CSD 767978 Canal de Isabel | O1 | Known | Warning | Known CSD temporary for production |
| 3 | 3100782 | CSD 767978 Canal de Isabel | O1 | New | Failed | New CSD invalid for production |
| 4 | 3100782 | CSD 767978 Canal de Isabel | O1 | Blocked | Failed | Blocked CSD invalid for production |
| 5 | null | CSD 767978 Canal de Isabel | O1 | Released | Failed | Invalid CSD ID invalid for production |
| 6 | 3100782 | null | O1 | Released | Failed | Invalid CSD Name invalid for production |
| 7 | 3100782 | CSD 767978 Canal de Isabel | null | Released | Failed | Invalid CSD Code invalid for production |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckProductionProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_004]_Check_ProductionOrderNo
FUNCTION: Compare the Cordonel production-order with the production-order from the requirement to validate that the correct requirements
going to be used for the check of the actual production state.
PRESETS: none
INPUTS: "Cordonel ProdOrderNo" and "Requirement ProdOrderNo"
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckProductionOrderNumber'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'RequirementOrderChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Cordonel ProdOrderNo | Requirement ProdOrderNo | EOL Status | Comment |
| 1 | 3118323 | 3118323 | Okay | Order number is identical |
| 2 | 3118323 | 0 | Failed | Unmatching Requirement Order number |
| 3 | 0 | 3118323 | Failed | Unmatching Cordonel Order number |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCordonelProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_005]_Check_PcbId
FUNCTION: Compare the PcbId from Cordonel, EOL-progress and requirement.
PRESETS: none
INPUTS: "Cordonel PcbId", EOL PcbId and "Requirement PcbId". If the requirement-PcbId id is "null" then the requirement is order based
and not just for a single Cordonel!
OUTPUT: "EOL Status" with results "Okay", "Failed" or "Skipped"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckPcbId'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'RequirementPcbIdChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# An order based requirement needs a "null" for "Requirement PcbId"
| TestNo | Cordonel PcbId | EOL PcbId | Requirement PcbId | EOL Status | Comment |
| 1 | 182100041 | 182100041 | null | Skipped | Order based requirement |
| 2 | 182100041 | 182100041 | 182100041 | Okay | PcbId is identical |
| 3 | 182100041 | 0 | 182100041 | Failed | Unmatching EOL Progress PcbId |
| 4 | 182100041 | 182100041 | 0 | Failed | Unmatching Requirement PcbId |
| 5 | 0 | 182100041 | 182100041 | Failed | Unmatching Cordonel PcbId |
| 6 | 1821000 | 182100041 | 182100041 | Failed | Cordonel PcbId to short |
| 7 | null | 182100041 | 182100041 | Failed | Cordonel PcbId is null |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCordonelProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_006]_Check_Region
FUNCTION: Compare the Region from Cordonel and requirement.
PRESETS: none
INPUTS: "Cordonel Region" and "Requirement Region".
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckRegion'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'RequirementRegionChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Cordonel Region | Requirement Region | EOL Status | Comment |
| 1 | EMEA | EMEA | Okay | Region is identical |
| 2 | NA | NA | Okay | Region is identical |
| 3 | EMEA | NA | Failed | Unmatched Region |
| 4 | null | EMEA | Failed | Unknown Cordonel Region |
| 5 | EMEA | null | Failed | Unknown Requirement Region |
| 6 | null | null | Failed | Unspecified Region |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCordonelProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_007]_Check_LUT_CRC
FUNCTION: Check for the checksum (cyclic redundancy check - CRC) of the metrology lookup-table.
PRESETS: none
INPUTS: "Cordonel LUT CRC" and "Requirement LUT CRC" just a string representing a number in hex e.g. "0xEB7C.
OUTPUT: "StringReturn" as test result containing the expected string or "null" as error result from the method.
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckLutCrc'
And Name the object type holding the property 'StringReturn'
And Name the property to be checked for 'ProductionStatusLutCrc'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# "StringReturn" "null" is the error return from the functions based on strings as return value!
| TestNo | Cordonel LUT CRC | Requirement LUT CRC | StringReturn | Comment |
| 1 | 0xEB7C | 0xEB7C | 0xEB7C | LUT CRC is identical |
| 2 | 0x0000 | 0xEB7C | null | Wrong Cordonel LUT CRC |
| 3 | 0xEB7C | 0x0000 | null | Wrong Requirement LUT CRC |
| 4 | null | 0xEB7C | null | Cordonel LUT CRC undefined |
| 5 | 0xEB7C | null | null | Requirement LUT CRC undefined |
| 6 | null | null | null | LUT CRC's undefined |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCordonelProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_008]_Check_Meter_Size
FUNCTION: Compare the Meter Size from Cordonel and requirement.
PRESETS: none
INPUTS: "Cordonel Meter Size" and "Requirement Meter Size" as strings naming the size as e.g. "DN50", "US1_5" or "1 1/2 INC".
OUTPUT: "StringReturn" as test result containing the expected string or "null" as error result from the method.
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckMeterSize'
And Name the object type holding the property 'StringReturn'
And Name the property to be checked for 'ProductionStatusMeterSize'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# "StringReturn" "null" is the error return from the functions based on strings as return value!
| TestNo | Cordonel Meter Size | Requirement Meter Size | StringReturn | Comment |
| 1 | DN50 | DN50 | DN50 | Meter size is identical |
| 2 | US1_5 | 1 1/2 INC | 1 1/2 INC | Meter size is identical but uses different naming |
| 3 | DN80 | 1 1/2 INC | null | Wrong Requirement Meter size |
| 4 | null | DN50 | null | Cordonel Meter size undefined |
| 5 | DN50 | null | null | Requirement Meter size undefined |
| 6 | null | null | null | Meter sizes undefined |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCordonelProperties
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_009]_Check_FW_and_Apps
FUNCTION: Compare Cordonel installed Firmware and Apps with required Firmware.
All Apps will be verified for their versions and CRC.
The Core-Revision will be validated.
PRESETS: none
INPUTS: "Cordonel Core Revision" as float specifying the Breeze operating system version, it will be checked if it is compatible to
the installed FW version.
"Cordonel FW Version" this will be installed to the MockGenesis:
Check if a valid FW package is in "C:\User\[UserName]\AppData\Roaming\Genesis\MockFwExamples" like "EMEA_R130" or "NA_R2006"
Those FW package directories need to contain the "Cordonel FW Version" without the "." between major, minor and build version.
The default FW installed in the MockGenesis is hard coded to R1.3.0B.
"Requirement FW Version" this version should be installed. It will be loaded from the location "C:\User\[UserName]\AppData\
Roaming\Genesis\MockFwExamples".
"Modify AppID" any application with its decimal version which should be modified to pass the negative tests:
"Erase App" "X" for simulated erasure else "-",
"Change App Version" "X" to set this to an unspecified version else "-",
"Change App CRC" "X" to set it to an invalid CRC else "-".
OUTPUT: "StringReturn" as test result containing the expected string or "null" as error result from the method, else it returns the
valid installed FW version string.
COMMENT: NCrunch needs programming parameters in a specific folder
"[SolutionPath]\Hardware\WaterMeter\Genesis\MockGenesis\MockFwExamples" as it copies all assemblies to a
special NCrunch working folder which is total separated from the project specific "\bin\Debug" folder!
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckFwAndApps'
And Name the object type holding the property 'StringReturn'
And Name the property to be checked for 'ProductionStatusFwVersion'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# "StringReturn" "null" is the error return from the functions based on strings as return value!
| TestNo | Cordonel Core Revision | Cordonel FW Version | Requirement FW Version | Modify AppId | Erase App | Change App Version | Change App CRC | StringReturn | Comment |
| 1 | 1.71 | R1.3.0B | R1.3.0B | null | - | - | - | R1.3.0B | FW Version is identical |
| 2 | 1.71 | R2.0.06 | R2.0.06 | null | - | - | - | R2.0.06 | FW Version is identical |
| 3 | 1.60 | R1.3.0B | R1.3.0B | null | - | - | - | null | Core revision is incompatible |
| 4 | 1.71 | R1.3.0B | R1.2.47 | null | - | - | - | null | Wrong FW version installed |
| 5 | 1.71 | R1.3.0B | R1.3.0B | 15 | X | - | - | null | Genesis flow is invalid |
| 6 | 1.71 | R1.3.0B | R1.3.0B | 15 | - | X | - | null | Genesis flow version modified |
| 7 | 1.71 | R1.3.0B | R1.3.0B | 15 | - | - | X | null | Genesis flow CRC modified |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckKitronRadioSignalLevels
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_010]_Check_Kitron_Radio_Signal_Levels
FUNCTION: Check if radio signal levels have been defined (contained in parameter list) FOR THIS cORDONEL SIZE AND LENGHT.
PRESETS: none
INPUTS: .
OUTPUT: "StatusReturn" with results "Okay" or "Failed"
COMMENT: NCrunch needs programming parameters in a specific folder
"[SolutionPath]\Hardware\WaterMeter\Genesis\MockGenesis\MockRawParameterExamples" as it copies all assemblies to a
special NCrunch working folder which is total separated from the project specific "\bin\Debug" folder!
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckKitronRadioSignalLevels'
And Name the object type holding the property 'StatusReturn'
# Name one production process to be checked in advance to the real test. This can be done more than once to fill a list with
# all required preceding production processes to check an entire sequence of processes.
And Define production process for sequencing before test 'ExecFinalParametrization'
And Define production process for sequencing before test 'CheckFinalParametrization'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Cordonel Meter Size | StatusReturn | Comment |
| 1 | DN50 | Okay | Valid Kitron radio calibration values |
| 2 | DN02 | Failed | Missing Kitron radio calibration values |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckLifetimes
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_011]_Check_Remaining_Battery_Load
FUNCTION: Compare the remaining battery load from Cordonel and the requirement.
PRESETS: none
INPUTS: "Normal Current [uA]" multiplied with exceeded lifetime together with "Production Drained [%] for an alternative threshold,
set to "null" if the standard check based on "Max Drained [%]" shall be used.
"Production Supplement [%]" additional allowed drainage of batteries during production, set to "null" if the standard check
based on "Max Drained [%]" shall be used.
"Actual Lifetime [days]" is the time in days the Cordonel after Kitron production, set to 0 to create an error.
"Actual Drained [%]" Standard threshold for actual drained battery load based on prediction from firmware and exceeded
lifetime, set to 0 to create an error.
"Max Drained [%]" Threshold for allowed drainage at EOL in standard check. If alternative threshold is active then this is
the ABSOLUTE LIMIT.
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckRemainingBatteryLoad'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'ProductionStatusBatteryLoadChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Normal Current [uA] | Production Supplement [%] | Actual Lifetime [days] | Actual Drained [%] | Max Drained [%] | EOL Status | Comment |
| 1 | 119.8 | 1.5 | 90 | 2.0 | 5.0 | Okay | Alternative threshold okay |
| 2 | 119.8 | 1.5 | 90 | 2.5 | 5.0 | Failed | Alternative threshold exceeded |
| 3 | 119.8 | 1.5 | 180 | 2.5 | 2.0 | Failed | Absolute max drained limit exceeded |
| 4 | null | null | 90 | 2.0 | 2.0 | Okay | Normal threshold okay |
| 5 | null | null | 90 | 2.5 | 2.0 | Failed | Normal threshold exceeded |
| 6 | null | null | 0 | 2.0 | 5.0 | Failed | Lifetime of 0 days error |
| 7 | null | null | 90 | 0.0 | 5.0 | Failed | Drained load of 0 % error |
| 8 | null | null | 90 | 2.0 | null | Failed | Max remaining battery load is null |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckLifetimes
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_012]_Check_Remaining_Lifetime
FUNCTION: Compare the remaining life time reported by the Cordonel and the requirement.
PRESETS: none
INPUTS: "Actual Lifetime [days]" is the time in days the Cordonel after Kitron production,
"Actual Drained [%]" is used to calculate the drained load to forecast the remaining lifetime,
"Required Lifetime [years]" Threshold for remaining lifetime.
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckRemainingLifetime'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'ProductionStatusRemainingLifeTimeChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Actual Lifetime [days] | Required Lifetime [years] | Actual Drained [%] | EOL Status | Comment |
| 1 | 90 | 20.0 | 1.0 | Okay | Remaining lifetime as required |
| 2 | 365 | 5.0 | 10.0 | Okay | Remaining lifetime as required |
| 3 | 90 | 20.0 | 2.0 | Failed | Remaining lifetime to short |
| 4 | 0 | 20.0 | 1.0 | Failed | Actual lifetime of 0 days error |
| 5 | 90 | 20.0 | 0.0 | Failed | Actual drained load of 0 % error |
| 6 | 90 | null | 1.0 | Failed | Required lifetime is null |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckLifetimeS
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_013]_Check_Storage_Months
FUNCTION: Compare the production date reported by the Cordonel with the actual date and check the requirement.
PRESETS: none
INPUTS: "Assembly Months before Now" as zero or negative floating point number or invalid if set to "null".
"Max Storage Months" floating point number of months allowed until production has to be finalized.
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckStorageMonths'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'MaxStorageMonthsChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Assembly Months before Now | Max Storage Months | EOL Status | Comment |
| 1 | -3.0 | 3.0 | Okay | Storage months in range |
| 2 | -3.0 | 2.0 | Failed | Exceeded maximal allowed storage time |
| 3 | null | 2.0 | Failed | Error assembly months are null |
| 4 | -3.0 | null | Failed | Error max storage months are null |
| 5 | 3.0 | 3.0 | Failed | Error assembly time lies in the future |
| 6 | -3.0 | -3.0 | Failed | Error storage months is negative |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCalibrations
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_014]_Check_Preadjustment
FUNCTION: Check the database content reporting a flow-test preadjustment.
PRESETS: none
INPUTS: "Test Bench Fields" the array of test bench fields
"Test Bench State[4]" the field containing a number if preadjustment successfully executed, null if not.
"Skip Calib" to skip all calibration related checks
OUTPUT: "EOL Status" with results "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckPreadjustment'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'ProductionStatusZeroFlowChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Test Bench Fields | Test Bench State[4] | Skip Calib | EOL Status | Comment |
| 1 | 5 | 21 | X | Skipped | Skipped calibration checks by requirement |
| 2 | 5 | 21 | - | Okay | Test bench preadjustment succeeded |
| 3 | 5 | 0 | - | Okay | Test bench preadjustment succeeded |
| 4 | 5 | 500 | - | Okay | Test bench preadjustment succeeded |
| 5 | 4 | 21 | - | Failed | Error test bench fields too little |
| 6 | 5 | null | - | Failed | Error test bench status[4] is null |
| 7 | null | 21 | - | Failed | Error test bench fields null |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCalibrations
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_015]_Check_Flow_Test_State
FUNCTION: Check the database content reporting the flow-test state.
PRESETS: none
INPUTS: "Test Bench Fields" the array of test bench fields
"Test Bench State[5]" the field containing a number of 30 if calibration succeeded
"Skip Calib" to skip all calibration related checks if set to "X" else "-".
OUTPUT: "EOL Status" with results "Skipped", "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckFlowTestState'
And Name the object type holding the property 'EOLStatus'
And Name the property to be checked for 'ProductionStatusCalibrationChecked'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
| TestNo | Test Bench Fields | Test Bench State[5] | Skip Calib | EOL Status | Comment |
| 1 | 6 | 30 | X | Skipped | Skipped calibration checks by requirement |
| 2 | 6 | 30 | - | Okay | Test bench calibration succeeded |
| 3 | 6 | 30 | - | Okay | Test bench calibration succeeded |
| 4 | 5 | 30 | - | Failed | Error test bench fields too little |
| 5 | 6 | 29 | - | Failed | Error test bench status[5] number to small |
| 6 | 6 | 31 | - | Failed | Error test bench status[5] number to large |
| 7 | 6 | null | - | Failed | Error test bench status[5] is null |
| 8 | null | 30 | - | Failed | Error test bench fields null |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckCalibrations
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_016]_Check_Calib_Factors
FUNCTION: Compare the calibration values reported by the Cordonel with the flow-test calibration values reported by the database.
PRESETS: All calibration values not covered by this test in valid range.
INPUTS: "Meter Calib Fact 1/2/3" Meter calibration factors 1, 2 and 3 stored in and read out from the Cordonel,
"DB Calib Fact 1/2/3" Required calibration factors 1, 2 and 3 reported by the database.
"Skip Calib" to skip all calibration related checks if set to "X" else "-".
OUTPUT: "StatusReturn" with results "Skipped", "Okay" or "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the private function to be checked for functionality 'CheckCalibrationValues'
And Name the object type holding the property 'StatusReturn'
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# REMIND: The highest priority has the equality of the calibration factors between Meter and database. If those
# don't match, the check of valid range and set to default values doesn't come in focus!
| TestNo | Meter Calib Fact 1 | Meter Calib Fact 2 | Meter Calib Fact 3 | DB Calib Fact 1 | DB Calib Fact 2 | DB Calib Fact 3 | Skip Calib | StatusReturn | Comment |
| 1 | 10000 | 20000 | 30000 | 10000 | 20000 | 30000 | X | Skipped | Skipped calib checks per requirement |
| 2 | 10000 | 20000 | 30000 | 10000 | 20000 | 30000 | - | Okay | Valid calib factors |
| 3 | 15625 | 20000 | 30000 | 15625 | 20000 | 30000 | - | Okay | Valid calib factors (1 default) |
| 4 | 15625 | 15625 | 30000 | 15625 | 15625 | 30000 | - | Okay | Valid calib factors (2 defaults) |
| 5 | 15625 | 15625 | 15625 | 15625 | 15625 | 15625 | - | Warning | Invalid Meter calib factors (3 defaults) |
| 6 | 10000 | 20000 | 30000 | 10000 | 44444 | 30000 | - | Failed | Inconsistent calib factors DB to Meter |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================
@CheckProductionStateProcess
Scenario: [SRS_TBF_EOL_PP_CHECK_PROD_STATE_017]_Check_Complete_Flow_Production_State
FUNCTION: Check the entire production process sequence except the database calls with all underlaying sub-processes.
PRESETS: Preset all values with valid parameters to pass the test as "Okay" needed to successfully pass all underlaying tests:
- EOL Id | EOL StartDate | Cordonel PcbId | EOL PcbId
- Standard Id | Standard Version | Standard IsActive | Special Id | Special Version
- CSD ID | CSD Name | CSD Code | CSD Status
- Cordonel ProdOrderNo | Requirement ProdOrderNo
- Cordonel PcbId | EOL PcbId | Requirement PcbId |
- Cordonel Region | Requirement Region
- Cordonel LUT CRC | Requirement LUT CRC
- Cordonel Meter Size | Requirement Meter Size
- Cordonel Core Revision | Cordonel FW Version | Requirement FW Version
- Actual Lifetime [days] | Actual Drained [%] | Max Drained [%]
- Actual Lifetime [days] | Required Lifetime [years] | Actual Drained [%]
- Assembly Months before Now | Max Storage Months
- Test Bench Fields | Test Bench State[4]
- Test Bench Fields | Test Bench State[5]
- Meter Calib Fact 1 | Meter Calib Fact 2 | Meter Calib Fact 3 | DB Calib Fact 1 | DB Calib Fact 2 | DB Calib Fact 3
INPUTS: "Kill x" forces the test to fail to check if all tests are executed. REMIND: Only ONE should be set to "X"!
Leave all others as "-" to observe better the unique setup!
OUTPUT: "StatusReturn" with results "Okay" or "Failed",
additional check of complete EOL progress status. The expected EOL result will be set with the preset values and
modified with the "Kill x" from "Okay" to "Failed"
#--------------------------------- Prepare Tests ----------------------------------------------------------------------------
Given Initialize new test scenario for production process 'CheckProductionState'
And Name the public function to be checked for functionality 'ExecuteProcess'
And Name the object type holding the property 'StatusReturn'
# Activate the entire equality EOL progress check between requirement and result
And Activate EOL progress check
# Name one production process to be checked in advance to the real test. This can be done more than once to fill a list with
# all required preceding production processes to check an entire sequence of processes.
And Define production process for sequencing before test 'ExecFinalParametrization'
And Define production process for sequencing before test 'CheckFinalParametrization'
# The input initializations don't have a "TestNo" nor a result (EOLStatus, StringReturn or StatusReturn) as those are commonly used for
# all tests specified in "Input matrix defining the test cases and results". All these inputs have a setup to pass the overall test with
# positive feedback (all are good).
And Input initializations for the test matrix and presets to pass the preceding tests
| EOL Id | EOL StartDate | Cordonel PcbId | EOL PcbId | Comment |
| 123 | UTC Now | 182100041 | 182100041 | EOL Progress successfully created |
And Input initializations for the test matrix and presets to pass the preceding tests
| Standard Id | Standard Version | Standard IsActive | Standard IsApproved | Special Id | Special Version | Comment |
| 10 | 5 | X | X | null | null | Standard Requirement is active and approved |
And Input initializations for the test matrix and presets to pass the preceding tests
| CSD ID | CSD Name | CSD Code | CSD Status | Comment |
| 3100782 | CSD 767978 Canal de Isabel | O1 | Released | Released CSD approved for production |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel ProdOrderNo | Requirement ProdOrderNo | Comment |
| 3118323 | 3118323 | Order number is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel PcbId | EOL PcbId | Requirement PcbId | Comment |
| 182100041 | 182100041 | 182100041 | PcbId is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel Region | Requirement Region | Comment |
| EMEA | EMEA | Region is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel LUT CRC | Requirement LUT CRC | Comment |
| 0xEB7C | 0xEB7C | LUT CRC is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel Meter Size | Requirement Meter Size | Comment |
| DN50 | DN50 | Meter size is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Cordonel Core Revision | Cordonel FW Version | Requirement FW Version | Comment |
| 1.71 | R1.3.0B | R1.3.0B | FW Version is identical |
And Input initializations for the test matrix and presets to pass the preceding tests
| Max Drained [%] | Comment |
| 2.0 | Normal threshold okay |
And Input initializations for the test matrix and presets to pass the preceding tests
| Actual Lifetime [days] | Required Lifetime [years] | Actual Drained [%] | Comment |
| 90 | 20.0 | 1.0 | Remaining lifetime as required |
And Input initializations for the test matrix and presets to pass the preceding tests
| Assembly Months before Now | Max Storage Months | Comment |
| -3.0 | 3.0 | Storage months in range |
And Input initializations for the test matrix and presets to pass the preceding tests
| Test Bench Fields | Test Bench State[4] | Comment |
| 5 | 21 | Test bench preadjustment succeeded |
And Input initializations for the test matrix and presets to pass the preceding tests
| Test Bench Fields | Test Bench State[5] | Comment |
| 6 | 30 | Test bench calibration succeeded |
And Input initializations for the test matrix and presets to pass the preceding tests
| Meter Calib Fact 1 | Meter Calib Fact 2 | Meter Calib Fact 3 | DB Calib Fact 1 | DB Calib Fact 2 | DB Calib Fact 3 | Comment |
| 10000 | 20000 | 30000 | 10000 | 20000 | 30000 | Valid calib factors |
#--------------------------------- Define Test-Cases -------------------------------------------------------------------------
And Input matrix defining the test cases and results
# "Kill x" forces the test to fail to check if all tests are executed. REMIND: Set only ONE to "X" and leave all others as "-"! Otherwise the test will FAIL!
| TestNo | Kill EOL | Kill Requ | Kill Order | Kill PcbId | Kill Region | Kill LUT | Kill Size | Kill FW | Kill Load | Kill LifeTime | Kill StoreTime | Kill PreAdj | Kill FlowTest | Kill Calib | Kill RadioParam | StatusReturn | Comment |
| 1 | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Okay | Test sequence complete |
| 2 | X | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill EOL generation |
| 3 | - | X | - | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill requirement |
| 4 | - | - | X | - | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill production order check |
| 5 | - | - | - | X | - | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill PcbId check |
| 6 | - | - | - | - | X | - | - | - | - | - | - | - | - | - | - | Failed | Detected kill region check |
| 7 | - | - | - | - | - | X | - | - | - | - | - | - | - | - | - | Failed | Detected kill LUT check |
| 8 | - | - | - | - | - | - | X | - | - | - | - | - | - | - | - | Failed | Detected kill meter size check |
| 9 | - | - | - | - | - | - | - | X | - | - | - | - | - | - | - | Failed | Detected kill FW check |
| 10 | - | - | - | - | - | - | - | - | X | - | - | - | - | - | - | Failed | Detected kill battery load check |
| 11 | - | - | - | - | - | - | - | - | - | X | - | - | - | - | - | Failed | Detected kill life time check |
| 12 | - | - | - | - | - | - | - | - | - | - | X | - | - | - | - | Failed | Detected kill storage time check |
| 13 | - | - | - | - | - | - | - | - | - | - | - | X | - | - | - | Failed | Detected kill preadjustment check |
| 14 | - | - | - | - | - | - | - | - | - | - | - | - | X | - | - | Failed | Detected kill flow test check |
| 15 | - | - | - | - | - | - | - | - | - | - | - | - | - | X | - | Failed | Detected kill calibrations check |
| 16 | - | - | - | - | - | - | - | - | - | - | - | - | - | - | X | Failed | Detected kill radio parameter |
When Execute the generic tests
Then Check the generic test results
# ================================================================================================================================