Requirements
{%if not validation.is_valid %}This report has {{ validation.invalid_reqs | length }} invalid requirement{% if validation.invalid_reqs | length != 1 %}s{% endif %}:
-
{% for invalid_req in validation.invalid_reqs %}
- {{ self::break_id(id=invalid_req) }} {% endfor %}
{{ unrelated.traces | length }} unrelated traces.
{% endif %} {% if unrelated.coverage | length > 0 %}{{ unrelated.coverage | length }} unrelated coverage.
{% endif %} {% if unrelated.verified_requirements | length > 0 %}{{ unrelated.verified_requirements | length }} unrelated verified requirements.
{% endif %}Overview
-
Existing requirements: {{ overview.req_cnt }}
-
Traced requirements: {{ overview.traced_cnt }} ({{ overview.traced_ratio * 100 | round(precision = 2) }}%)
-
Covered requirements: {{ overview.covered_cnt }} ({{ overview.covered_ratio * 100 | round(precision = 2) }}%)
-
Passed requirements: {{ overview.passed_cnt }} ({{ overview.passed_ratio * 100 | round(precision = 2) }}%)
-
Manual requirements verified: {% if overview.verified_cnt %} {{ overview.verified_cnt }} ({{ overview.verified_ratio * 100 | round(precision = 2) }}%) {% else %} - {% endif %}
Status
| ID | Tracing | Coverage | Manual |
|---|---|---|---|
| {{ self::break_id(id=req.id) }} {% if req.manual %} (manual{% if not req.valid %}, invalid{% endif %}) {% elif req.deprecated %} (deprecated{% if not req.valid %}, invalid{% endif %}) {% elif not req.valid %} (invalid) {% endif %} |
{% if req.trace_info.traced %}
traced
{% elif req.manual %}
-
{% else %}
untraced
{% endif %}
|
{% if req.test_coverage_info.passed %}
passed
{% elif req.test_coverage_info.covered %}
failed
{% elif req.manual %}
-
{% else %}
uncovered
{% endif %}
|
{% if req.verified_info | length > 0 %}
verified
{% elif not req.manual %}
-
{% else %}
unverified
{% endif %}
|
Details
{{ self::break_id(id=req.id) }} {% if req.manual %} (manual{% if not req.valid %}, invalid{% endif %}) {% elif req.deprecated %} (deprecated{% if not req.valid %}, invalid{% endif %}) {% elif not req.valid %} (invalid) {% endif %}
Parent: {% if req.parents %} {% for parent in req.parents %} {{ self::break_id(id=parent) }} {% endfor %} {% else %}none{% endif %}
Status (manual)
|
{% if req.verified_info | length > 0 %}
verified
{% else %}
unverified
{% endif %}
|
Status
|
{% if req.trace_info.traced %}
traced
{% elif req.manual %}
-
{% else %}
untraced
{% endif %}
|
{% if req.test_coverage_info.passed %}
passed
{% elif req.test_coverage_info.covered %}
failed
{% elif req.manual %}
-
{% else %}
uncovered
{% endif %}
|
| verified | |
| unverified |
{{ req.title }}
{{ req.origin }} {% if req.rendered_data %}Details
Direct Children ({{ req.direct_children | length }})
{% if req.direct_children | length > 0 %}-
{% for child_id in req.direct_children %}
- {{ self::break_id(id=child_id) }} {% endfor %}
Direct Traces ({{ req.trace_info.direct_traces | length }})
{% if req.trace_info.direct_traces | length > 0 %}| name | file | line |
|---|---|---|
| {% if trace.item_name %}{{ trace.item_name }}{% else %}-{% endif %} | {{ trace.filepath }} | {{ trace.line }} |
Indirect Traces ({{ req.trace_info.indirect_traces | length }})
{% if req.trace_info.indirect_traces | length > 0 %}-
{% for indirect_trace in req.trace_info.indirect_traces %}
-
Traced ID: {{ self::break_id(id=indirect_trace.traced_id) }}
{% for trace in indirect_trace.traces %}file line {% endfor %}{{ trace.filepath }} {{ trace.line }}
{% endfor %}
Direct Coverage ({{ req.test_coverage_info.direct_coverage | length }})
{% if req.test_coverage_info.direct_coverage | length > 0 %}-
{% for test_run in req.test_coverage_info.direct_coverage %}
-
{{ test_run.name }}
{{ test_run.date | date(format="%Y-%m-%d %H:%M:%S", timezone="Europe/Berlin") }}-
{% for test in test_run.tests %}
-
{% if test.passed %}passed{% else %}failed{% endif %} {{ test.name }}
{% for trace in test.traces %}file line {% endfor %}{{ trace.filepath }} {{ trace.line }}
{% endfor %}
{% endfor %}
-
Indirect Coverage ({{ req.test_coverage_info.indirect_coverage | length }})
{% if req.test_coverage_info.indirect_coverage | length > 0 %}-
{% for coverage in req.test_coverage_info.indirect_coverage %}
-
Covered ID: {{ self::break_id(id=coverage.covered_id) }}
-
{% for test_run in coverage.test_runs %}
-
{{ test_run.name }}
{{ test_run.date | date(format="%Y-%m-%d %H:%M:%S", timezone="Europe/Berlin") }}-
{% for test in test_run.tests %}
-
{% if test.passed %}passed{% else %}failed{% endif %} {{ test.name }}
{% for trace in test.traces %}file line {% endfor %}{{ trace.filepath }} {{ trace.line }}
{% endfor %}
{% endfor %}
-
{% endfor %}
-
Verified in Reviews ({{ req.verified_info | length }})
{% if req.verified_info | length > 0 %}| review-name | review-date | comment |
|---|---|---|
| {{ info.review_name }} | {{ info.review_date }} | {{ info.comment }} |
Tests
Overview
-
Existing tests: {{ tests.overview.test_cnt }}
-
Run tests: {{ tests.overview.ran_cnt }} ({{ tests.overview.ran_ratio * 100 | round(precision = 2) }}%)
-
Passed tests: {{ tests.overview.passed_cnt }} ({{ tests.overview.passed_ratio * 100 | round(precision = 2) }}%)
-
Failed tests: {{ tests.overview.failed_cnt }} ({{ tests.overview.failed_ratio * 100 | round(precision = 2) }}%)
-
Skipped tests: {{ tests.overview.skipped_cnt }} ({{ tests.overview.skipped_ratio * 100 | round(precision = 2) }}%)
{{ test_run.name }}
{{ test_run.date | date(format="%Y-%m-%d %H:%M:%S", timezone="Europe/Berlin") }}
{% if test_run.overview.failed_cnt > 0 or test_run.overview.ran_cnt != test_run.overview.test_cnt %} failed {% elif test_run.overview.skipped_cnt == test_run.overview.test_cnt %} skipped {% elif test_run.overview.passed_cnt == test_run.overview.test_cnt %} passed {% else %} partial-passed {% endif %}
Overview
-
Existing Tests: {{ test_run.overview.test_cnt }}
-
Run tests: {{ test_run.overview.ran_cnt }} ({{ test_run.overview.ran_ratio * 100 | round(precision = 2) }}%)
-
Passed tests: {{ test_run.overview.passed_cnt }} ({{ test_run.overview.passed_ratio * 100 | round(precision = 2) }}%)
-
Failed tests: {{ test_run.overview.failed_cnt }} ({{ test_run.overview.failed_ratio * 100 | round(precision = 2) }}%)
-
Skipped tests: {{ test_run.overview.skipped_cnt }} ({{ test_run.overview.skipped_ratio * 100 | round(precision = 2) }}%)
Tests
{{ test.name }}
{% if test.state == 'Passed'%} passed {% elif 'Skipped' in test.state %} skipped {% else %} failed {% endif %}
File: {{ test.filepath }}
Line: {{ test.line }}
Covers {{ test.covers | length }} requirement{% if test.covers | length != 1 %}s{% endif %}
-
{% for id in test.covers %}
- {{ self::break_id(id=id) }} {% endfor %}
Logs during test run...
{{ test_run.logs }}
Reviews ({{ reviews | length }})
{% for review in reviews %}{{ review.name }}
{{ review.date }}
Reviewer: {{ review.reviewer }}
Verified Requirements ({{ review.requirements | length }})
{% if review.requirements | length > 0 %}-
{% for req in review.requirements %}
-
{{ self::break_id(id=req.id) }}
{{ req.comment }}
{% endfor %}
{{ review.comment }}