HowTo go from multiple partially_verifies to a fully_verifies #3292
AlexanderLanin
started this conversation in
SW Dev Process Community
Replies: 1 comment 1 reply
|
How would this work with GTest's typed and parametrized tests? In junit XML, each instantiation is reported as a separate test. |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Design draft: aggregate requirement verification without
teststatusProblem statement
The test links already contain the execution result, including whether a test
passed. The missing information is the aggregate meaning of several links:
partially_verifies.able to tell whether those five tests, in combination, cover the complete
requirement.
teststatus/testcovered=YESstores that aggregate conclusion as amanually maintained, one-time-looking status on the requirement. It does not
show which tests justified it and can become stale when the requirement or a
test changes.
The desired information should not be stored in another requirement-level
source. It should be encoded on one selected, representative test and
recalculated from the current test links on every build.
This distinction is especially important for Feature Requirements. A Feature
Requirement describes externally visible feature behavior and does not know which
component or implementation will eventually realize it. Completeness cannot be
inferred by collecting all tests below the feature in the implementation
hierarchy.
What the current process already says
The process has the necessary concepts, but they are currently collapsed into a
requirement attribute:
requirement hash and the UIDs of the tests required to fully cover it
(
process/process_areas/verification/verification_concept.rst:190-201).Set Requirement Test Coverageworkflow says that complete coverage meansthe linked tests in sum fully satisfy the requirement
(
process/process_areas/verification/verification_workflows.rst:193-223).coverage of a requirement, and that skipped or non-executed tests belong in the
verification report and release notes
(
process/process_areas/verification/guidance/verification_guideline.rst:145-153).appropriate level at which a Feature Requirement can be verified without
knowing its implementation.
Proposed model: an anchor test
1. Ordinary test links remain unchanged
Test metadata describes the contribution of an individual test:
partially_verifiesmeans that this test covers some part of the requirement.The existing test link continues to provide the current execution result.
fully_verifiesremains available for the simple case where one test alonecovers the complete requirement:
2. Encode an aggregate on the selected test
When several tests are needed, select one representative or “most important”
test as the anchor. Encode the complete set on that test:
The semantics are:
The anchor is only the owner of this declaration. It is not necessarily the
test that covers the most behavior, and
fully_verifiesdoes not mean that theanchor passed. The result still comes from the test link status.
This keeps the information in the test sources, avoids a second requirement
database, and makes the complete set visible next to the test links that justify
it. The test IDs in
required_for_fully_verifyingmust be stable test UIDs.3. Recalculate the verdict on every build
For every
fully_verifiesdeclaration, the tool resolves the anchor and itsrequired tests and derives one result:
Nobody has to remember to set
teststatus=YESafter a test is added, removed,changed, or rerun. A failed, skipped, or non-executed required test immediately
makes the current release verdict not fully verified, while the anchor
declaration still records the intended complete test set.
Why this is better than a one-time requirement attribute
The existing process describes
testcovered=YES/complete test coverage=yesas the result of a committer confirming that linked tests in sum satisfy the
requirement. That is a useful review decision, but a Boolean on the requirement
loses the evidence behind the decision and looks permanent.
The anchor declaration keeps the decision close to its evidence and remains
declarative rather than being a status field:
A review remains necessary for the semantic question “is this union complete?”,
but the resulting verdict is always recomputed from the anchor's declared set
and current test results. There is no manual requirement-level
YESupdate.All reactions