# Requirement Traceability This document shows how requirements map to tests via pytest markers and docstrings, plus how to visualize coverage. ## Conventions - Requirement IDs: `REQ-xxx` - Use markers in tests: `@pytest.mark.req_001`, `@pytest.mark.req_002`, etc. - Include readable requirement list in the test docstring under `Requirements:` ## Example ```python @pytest.mark.req_001 @pytest.mark.req_003 """ Title: Mock LIN Interface - Send/Receive Echo Test Requirements: REQ-001, REQ-003 """ ``` ## Mermaid: Requirement → Tests map Note: This is illustrative; maintain it as your suite grows. ```mermaid flowchart LR R1[REQ-001: LIN Basic Ops] R2[REQ-002: Master Request/Response] R3[REQ-003: Frame Validation] R4[REQ-004: Timeout Handling] T1[test_mock_send_receive_echo] T2[test_mock_request_synthesized_response] T3[test_mock_receive_timeout_behavior] T4[test_mock_frame_validation_boundaries] R1 --> T1 R3 --> T1 R2 --> T2 R4 --> T3 R1 --> T4 R3 --> T4 ``` ## Generating a live coverage artifact (optional) You can extend `conftest_plugin.py` to emit a JSON file with requirement-to-test mapping at the end of a run by scanning markers and docstrings. This can fuel dashboards or CI gates. Suggested JSON shape: ```json { "requirements": { "REQ-001": ["tests/test_smoke_mock.py::TestMockLinInterface::test_mock_send_receive_echo", "..."] }, "uncovered": ["REQ-010", "REQ-012"] } ```