L.O.B.S.T.E.R.

Lightweight Open BMW Software Traceability Evidence Report
✔ !

Overview

Coverage

Category Ratio Coverage OK Items Total Items
Use Cases 77.8% 77.78% 7 9
System Requirements 100.0% 100.00% 12 12
Software Requirements 100.0% 100.00% 20 20
System Tests 100.0% 100.00% 17 17
Software Tests 100.0% 100.00% 16 16

Tracing policy

LOBSTER Tracing Policy n_1cf7e301510c711b73d2b182b9dcf084 Use Cases n_419cfc02b324dc7d8faefa90ed608fb0 System Requirements n_1cf7e301510c711b73d2b182b9dcf084->n_419cfc02b324dc7d8faefa90ed608fb0 n_9d273bd32c1fceb91b7d6a4d40e98bdd Software Requirements n_419cfc02b324dc7d8faefa90ed608fb0->n_9d273bd32c1fceb91b7d6a4d40e98bdd n_3f7ae1d4bec7e6d318ef39c7a7dcaa65 System Tests n_419cfc02b324dc7d8faefa90ed608fb0->n_3f7ae1d4bec7e6d318ef39c7a7dcaa65 n_c4738e043501e27ee3ef08d6a4883d27 Software Tests n_9d273bd32c1fceb91b7d6a4d40e98bdd->n_c4738e043501e27ee3ef08d6a4883d27

Filtering

Item Filters

Show Issues

Filter

Issues

Detailed report

Requirements and Specification

Use Cases

lobster/use_cases.trlc
TRLC Usecase UseCases.List_Ok_Items
As a traceability manager I want the traceability report to list items that
fulfill the tracing policy, and how they do so,
so that I can decide whether to release my product.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall list all tests that link to at least one requirement,
and the report shall list all linked requirements per test.

The use case applies to the reverse direction as well.
Issues:
  • missing reference to System Requirements
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Not_Ok_Items
As a traceability manager I want the traceability report to list items that
are not covered by other items, where coverage rules are specified by the
tracing policy,
so that I can identify gaps in the coverage.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall list all tests that do not link to any requirement.

The use case applies to the reverse direction as well.
Issues:
  • missing reference to System Requirements
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Item_Coverage
As a traceability manager I want the traceability report to show the fraction
of the number of items in one level (of the tracing policy)
which fulfill the tracing policy,
divided by the total number of items in that level (of the tracing policy).
The fraction shall be shown as percentage.

Example:
If the tracing policy is: Tests --(trace to)--> Requirements,
then the report shall show the fraction of requirements which are covered by at
least one test, divided by the total number of requirements.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Requirements_to_Tests
As a requirements manager I want the traceability report to show the list of
requirements which are covered by tests.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Requirements_without_Tests
As a requirements manager I want the traceability report to show the list of
requirements which are not covered by tests.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Tests_to_Requirements
As a requirements manager I want the traceability report to show the list of
tests covering requirements.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.List_Tests_without_Requirements
As a requirements manager I want the traceability report to show the list of
tests which are not covering any requirement.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Failure_On_Invalid_Input
As a CI administrator
I want that the tool exits with a non-zero return code whenever it encounters
invalid input
so that the CI pipeline can catch invalid input automatically.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Usecase UseCases.Tool_Usability
As a user of LOBSTER I want to have a good usability and standard
command-line ergonomics, like built-in help or automatic creation of output
destinations,
so that using the tools is intuitive and seamless in scripts and interactive
use.
Traces to:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

System Requirements

lobster/tools/cpptest/requirements/config.trlc
TRLC System_requirement cpptest_req.Config_File_Not_Found
IF the file given through the command line option "--config" does not exist,
THEN the tool SHALL print an error message stating that the file is not an
existing file to STDERR
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Config_File_Invalid_YAML
IF the file given through the command line option "--config" contains invalid
YAML syntax,
THEN the tool SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Config_File_Invalid_Content
IF the config file does not contain the mandatory key "codebeamer_url",
OR the optional key "output_file" is present but is not a string,
OR the optional key "kind" is present but is not a string,
OR "kind" is a string but is not one of "req", "act", "imp",
THEN the tool SHALL print an error message identifying the violation to STDERR
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Output_File_Config_Option
IF the config option "output_file" is given,
THEN the tool SHALL write the generated LOBSTER items, in the LOBSTER
interchange format, to that file.
OTHERWISE the tool SHALL write them to "report.lobster".
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
lobster/tools/cpptest/requirements/extraction.trlc
TRLC System_requirement cpptest_req.All_Recognized_Tests_Extracted
The tool SHALL generate exactly one LOBSTER item per recognized test case found
in the consumed input files, and SHALL exclude any test case whose documentation
contains a "NOTRACING" annotation.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Requirement_References_Extracted_As_Tags
IF a test case's documentation contains one or more "@requirement" tags,
given either in the "CB-#nnn" format or as a codebeamer HTTP URL,
THEN the tool SHALL add a tracing target for each referenced requirement to the
corresponding LOBSTER item.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Test_Without_References_Marked_Orphan
OTHERWISE (a test case's documentation contains no "@requirement" tag)
the tool SHALL still generate a LOBSTER item for that test case, without
any tracing target.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
lobster/tools/cpptest/requirements/input_files.trlc
TRLC System_requirement cpptest_req.Default_Files_Is_Current_Directory
IF the config option "files" is not given,
THEN the tool SHALL use the current working directory as the sole input,
applying the same directory-search rule as for an explicitly configured
directory.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Input_Directory_Traversal
IF a list element given through the config option "files" is a directory,
THEN the tool SHALL recursively search that directory
AND SHALL treat every file found with one of the extensions ".cpp", ".cc",
".c", ".h" as an additional input file, ignoring any other file found there.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Explicit_File_Ignores_Extension
IF a list element given through the config option "files" is a file,
THEN the tool SHALL process it as an input file, regardless of its file
extension.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.Input_Not_File_Not_Directory
IF a list element given through the config option "files" is neither a file
nor a directory,
THEN the tool SHALL print an error message identifying the offending element
to STDERR
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC System_requirement cpptest_req.No_Test_Files_Found
IF the resolved set of input files (after applying [[Input_Directory_Traversal]]
and [[Explicit_File_Ignores_Extension]]) is empty,
THEN the tool SHALL print an error message identifying the configured "files"
option to STDERR
AND SHALL exit with a non-zero return code.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Software Requirements

lobster/tools/cpptest/requirements/software_requirements.trlc
TRLC Software_requirement cpptest_req.Get_Test_File_List_Searches_Directories
The function get_test_file_list SHALL, for every directory entry, recursively
collect the files matching the given extension list.
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Get_Test_File_List_Raises_When_No_Match
The function get_test_file_list SHALL raise ValueError, identifying the
configured file/directory list,
IF the resulting list of test files is empty.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Get_Test_File_List_Raises_On_Invalid_Path
The function get_test_file_list SHALL raise FileNotFoundError, identifying the
offending entry,
IF a file/directory list entry is neither an existing file nor an existing
directory.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Parse_Config_File_Returns_Config_Fields
The function parse_config_file SHALL return a Config object with the fields
codebeamer_url, kind, files, and output_file, populated from the config file
or their default values.
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Parse_Config_File_Raises_When_File_Missing
The function parse_config_file SHALL raise FileNotFoundError,
IF the given config file path does not exist.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Parse_Config_File_Raises_On_Invalid_YAML
The function parse_config_file SHALL raise LOBSTER_Exception,
IF the config file contains invalid YAML syntax.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Parse_Config_File_Validates_Mandatory_And_Optional_Keys
The function parse_config_file SHALL raise KeyError,
IF the config file does not contain the mandatory key "codebeamer_url".
OTHERWISE, IF the optional key "output_file" or "kind" has an invalid type, or
"kind" is not one of "req", "act", "imp",
THEN the function SHALL raise ValueError.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Config_Files_Defaults_To_Current_Directory
The dataclass Config SHALL default its "files" field to a list containing only
the current directory (".") when not explicitly given.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Get_Test_File_List_Explicit_File_Ignores_Extension
The function get_test_file_list SHALL add a list entry that is a file directly
to the returned list, without checking it against the given extension list.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Run_Lobster_Cpptest_Processes_Single_File
The function run_lobster_cpptest, IF config.files names a single existing file,
SHALL write a LOBSTER item for every recognized test case found in that file,
using absolute file paths in the generated item locations.
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Run_Lobster_Cpptest_Processes_Single_Directory
The function run_lobster_cpptest, IF config.files names a single directory,
SHALL write a LOBSTER item for every recognized test case found in that
directory.
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Run_Lobster_Cpptest_Raises_On_Invalid_Path
The function run_lobster_cpptest SHALL raise FileNotFoundError and SHALL NOT
create an output file,
IF a config.files entry is neither an existing file nor an existing directory.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Run_Lobster_Cpptest_Separates_Referenced_And_Orphan_Items
The function run_lobster_cpptest SHALL write, for every recognized test case, a
LOBSTER item that carries a tracing reference for every resolved requirement
tag, OR, IF none could be resolved, a LOBSTER item without any tracing
reference.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.Collect_Test_Cases_Parses_Requirement_Tags
The function collect_test_cases_from_test_files SHALL return one TestCase per
recognized test case, with its "requirements" list populated from the
"@requirement" tags found in that test case's documentation.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Recognizes_Supported_Macros_And_Definition_Range
The class TestCase SHALL recognize a test case at any line matching one of the
supported test macros (TEST, TEST_P, TEST_F, TYPED_TEST, TYPED_TEST_P,
TYPED_TEST_SUITE, TEST_P_INSTANCE, TEST_F_INSTANCE), SHALL extract its suite and
test name, and SHALL determine the line range of its documentation comment and
of its definition (up to the matching closing brace).
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Parses_Requirement_Tags
The class TestCase SHALL parse every "@requirement" tag in a test case's
documentation, in either the "CB-#nnn" format or as a codebeamer HTTP URL, and
SHALL accept multiple tags separated by commas, spaces, or newlines.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Parses_Required_By_Tags
The class TestCase SHALL parse every "@requiredby" tag in a test case's
documentation, matching the "scope::name" syntax, and SHALL accept multiple
tags separated by commas or newlines.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Parses_Test_And_Brief_Tags
The class TestCase SHALL parse the "@test" and "@brief" tags of a test case's
documentation, normalizing multi-line values into a single string.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Parses_Testmethods_Tag_Filters_Invalid
The class TestCase SHALL parse the "@testmethods" tag of a test case's
documentation, and SHALL silently drop any value that is not one of the
supported test methods (TM_EQUIVALENCE, TM_PAIRWISE, TM_GUESSING, TM_BOUNDARY,
TM_CONDITION, TM_REQUIREMENT, TM_TABLE).
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
TRLC Software_requirement cpptest_req.TestCase_Parses_Version_Tag_Pads_To_Requirement_Count
The class TestCase SHALL parse the "@version" tag of a test case's
documentation, and, IF fewer version values than requirement tags are given,
SHALL pad the version list by repeating its last value, so that every
requirement tag has a corresponding version value.
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Implementation

Verification and Validation

System Tests

tests_system/lobster_cpptest/test_config_exceptions.py
PyUnit Test test_config_exceptions.ConfigParserExceptionsCpptestTest.test_missing_config_file:34
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_config_exceptions.ConfigParserExceptionsCpptestTest.test_config_file_errors:51
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_config_exceptions.ConfigParserExceptionsCpptestTest.test_config_file_syntax_error:97
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_cpptest/test_directories.py
PyUnit Test test_directories.DirectoriesCpptestTest.test_all_files_from_current_directory_consumed:36
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_directories.DirectoriesCpptestTest.test_files_from_specified_directory_consumed:76
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_directories.DirectoriesCpptestTest.test_specified_directory_and_files_consumed:109
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_directories.DirectoriesCpptestTest.test_no_cpptest_file:146
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_cpptest/test_extension.py
PyUnit Test test_extension.ExtensionCpptestTest.test_valid_extension_file:35
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_extension.ExtensionCpptestTest.test_invalid_extension_file:65
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_extension.ExtensionCpptestTest.test_no_input_file:95
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_cpptest/test_multiple_files.py
PyUnit Test test_multiple_files.MultipleFilesCpptestTest.test_multiple_files:35
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_multiple_files.MultipleFilesCpptestTest.test_multiple_valid_invalid_files:69
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_multiple_files.MultipleFilesCpptestTest.test_no_input_file:103
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_cpptest/test_references.py
PyUnit Test test_references.ReferencesCpptestTest.test_no_references_cpptest_file:35
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_references.ReferencesCpptestTest.test_one_reference_in_cpptest_file:63
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_references.ReferencesCpptestTest.test_many_references_in_cpptest_file:91
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
tests_system/lobster_cpptest/test_valid_scenario.py
PyUnit Test test_valid_scenario.InputFileCpptestTest.test_valid_input_cpptest_file:34
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

Software Tests

tests_unit/lobster_cpptest/test_cpptest.py
PyUnit Test test_cpptest.LobsterCpptestTests.test_collect_test_cases_from_test_files:70
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_parse_config_file:85
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_get_test_file_list:96
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_get_test_file_list_no_file_with_matching_extension:112
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_get_test_file_list_not_existing_file_dir:129
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_single_file:146
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_single_directory:178
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_not_existing_file_dir:201
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_separate_output_config:228
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.LobsterCpptestTests.test_test_case_parsing:283
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.ParseConfigFileErrorTests.test_missing_file_raises:471
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.ParseConfigFileErrorTests.test_invalid_yaml_raises:476
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.ParseConfigFileErrorTests.test_missing_codebeamer_url_raises:482
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.ParseConfigFileErrorTests.test_invalid_kind_value_raises:488
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.ConfigDefaultsTest.test_files_defaults_to_current_directory:498
Derived from:
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC
PyUnit Test test_cpptest.GetTestFileListExplicitExtensionTest.test_explicit_file_ignores_extension:505
Build Reference: main | Timestamp: 2026-10-19 07:48:19+00:00 UTC

LOBSTER Version: 1.1.0-dev