From c348d47a1e1478ebf38f5e5231a88dc054131b10 Mon Sep 17 00:00:00 2001
From: mugdhadhole1 <161293900+mugdhadhole1@users.noreply.github.com>
Date: Tue, 4 Feb 2025 18:08:45 +0530
Subject: [PATCH] Adjust LOBSTER tracing policy (#194)
Adjust tracing policy to reflect requirement levels and measure the
coverage
The requirements-to-test coverage per system requirements and per unit
requirements is done separately
Introduced new levels in the tracing policy:
- system requirement
- system test
- software requirement
- software test
- code
---
Makefile | 15 +-
lobster/tools/lobster-trlc-software.conf | 3 +
...ter-trlc.conf => lobster-trlc-system.conf} | 0
lobster/tools/lobster.conf | 19 +-
.../rbt-output-file/.gitkeep | 0
.../selenium-test/test_html_report.html | 386 ------------------
.../online_report/rbt-output-file/.gitkeep | 0
.../rbt-output-file/.gitkeep | 0
.../selenium-test/test_html_report.py | 0
.../expected-output/expected-output.lobster | 6 +-
tests-system/lobster-trlc-system-test.py | 4 +-
11 files changed, 34 insertions(+), 399 deletions(-)
create mode 100644 lobster/tools/lobster-trlc-software.conf
rename lobster/tools/{lobster-trlc.conf => lobster-trlc-system.conf} (100%)
rename tests-system/{lobster-core/ci_report => lobster-ci-report}/rbt-output-file/.gitkeep (100%)
delete mode 100644 tests-system/lobster-core/html_report/selenium-test/test_html_report.html
delete mode 100644 tests-system/lobster-core/online_report/rbt-output-file/.gitkeep
rename tests-system/{lobster-core/html_report => lobster-html-report}/rbt-output-file/.gitkeep (100%)
rename tests-system/{lobster-core/html_report => lobster-html-report}/selenium-test/test_html_report.py (100%)
diff --git a/Makefile b/Makefile
index b7b0ad69..2e12e9d3 100644
--- a/Makefile
+++ b/Makefile
@@ -135,18 +135,25 @@ tracing-%: report.lobster-%
report.lobster-%: lobster/tools/lobster.conf \
code.lobster-% \
unit-tests.lobster-% \
- requirements.lobster-% \
+ system_requirements.lobster-% \
+ software_requirements.lobster-% \
system-tests.lobster-%
lobster-report \
--lobster-config=lobster/tools/lobster.conf \
--out=report.lobster
lobster-online-report report.lobster
-requirements.lobster-%: lobster/tools/requirements.rsl
+system_requirements.lobster-%: lobster/tools/requirements.rsl
$(eval TOOL_PATH := $(subst -,/,$*))
lobster-trlc lobster/tools/$(TOOL_PATH) lobster/tools/requirements.rsl \
- --config-file=lobster/tools/lobster-trlc.conf \
- --out requirements.lobster
+ --config-file=lobster/tools/lobster-trlc-system.conf \
+ --out system_requirements.lobster
+
+software_requirements.lobster-%: lobster/tools/requirements.rsl
+ $(eval TOOL_PATH := $(subst -,/,$*))
+ lobster-trlc lobster/tools/$(TOOL_PATH) lobster/tools/requirements.rsl \
+ --config-file=lobster/tools/lobster-trlc-software.conf \
+ --out software_requirements.lobster
code.lobster-%:
$(eval TOOL_PATH := $(subst -,/,$*))
diff --git a/lobster/tools/lobster-trlc-software.conf b/lobster/tools/lobster-trlc-software.conf
new file mode 100644
index 00000000..f8ac4ed7
--- /dev/null
+++ b/lobster/tools/lobster-trlc-software.conf
@@ -0,0 +1,3 @@
+req.Software_Requirement {
+ description = description
+}
diff --git a/lobster/tools/lobster-trlc.conf b/lobster/tools/lobster-trlc-system.conf
similarity index 100%
rename from lobster/tools/lobster-trlc.conf
rename to lobster/tools/lobster-trlc-system.conf
diff --git a/lobster/tools/lobster.conf b/lobster/tools/lobster.conf
index 3bbe1b1a..cef8c9dd 100644
--- a/lobster/tools/lobster.conf
+++ b/lobster/tools/lobster.conf
@@ -1,14 +1,23 @@
-requirements "Specification" {
- source: "requirements.lobster";
+requirements "System Requirement" {
+ source: "system_requirements.lobster";
+}
+
+requirements "Software Requirement" {
+ source: "software_requirements.lobster";
+ trace to: "System Requirement";
}
implementation "Code" {
source: "code.lobster";
- trace to: "Specification";
+ trace to: "Software Requirement";
}
-activity "Test" {
+activity "System Test" {
source: "system-tests.lobster";
+ trace to: "System Requirement";
+}
+
+activity "Software Test" {
source: "unit-tests.lobster";
- trace to: "Specification";
+ trace to: "Software Requirement";
}
diff --git a/tests-system/lobster-core/ci_report/rbt-output-file/.gitkeep b/tests-system/lobster-ci-report/rbt-output-file/.gitkeep
similarity index 100%
rename from tests-system/lobster-core/ci_report/rbt-output-file/.gitkeep
rename to tests-system/lobster-ci-report/rbt-output-file/.gitkeep
diff --git a/tests-system/lobster-core/html_report/selenium-test/test_html_report.html b/tests-system/lobster-core/html_report/selenium-test/test_html_report.html
deleted file mode 100644
index 50050301..00000000
--- a/tests-system/lobster-core/html_report/selenium-test/test_html_report.html
+++ /dev/null
@@ -1,386 +0,0 @@
-
-
-
-L.O.B.S.T.E.R.
-
-
-
-
-
L.O.B.S.T.E.R.
-
Lightweight Open BMW Software Traceability Evidence Report
-
-
-
-
Overview
-
-
-
-
Coverage
-
-
-Category |
-Ratio |
-Coverage |
-OK Items |
-Total Items |
-
-
-
-
-Requirements |
-0.0% |
-
-
- |
-0 |
-3 |
-
-
-code |
-0.0% |
-
-
- |
-0 |
-3 |
-
-
-
-
-
-
Issues
-
-
Detailed report
-
-
Requirements and Specification
-
Requirements
-
.\main.trlc
-
-
-
TRLC Requirement vanillaEg.trlc
-
-
-
Treat Requirements Like Code
-
-
-
Issues:
-
-- missing reference to code
-
-
-
-
-
-
-
-
TRLC Requirement vanillaEg.lobster
-
-
-
Lightweight Open BMW Software Traceability Evidence Report
-
-
-
Issues:
-
-- missing reference to code
-
-
-
-
-
-
Codebeamer https://codebeamer.company.net/, tracker 65426
-
-
-
codebeamer Technical requirement traffic light detection
-
-
-Status: Valid
-
-
-
Issues:
-
-- missing reference to code
-
-
-
-
-
-
Implementation
-
code
-
.\Test_Setup\main.py
-
-
-
Python Function main.greet_user
-
-
-
Issues:
-
-- unknown tracing target req welcome.greet
-- missing up reference
-
-
-
-
-
-
.\software.py
-
-
-
Python Function software.hello
-
-
-
-
-
-
-
Python Function software.hello1
-
-
-
-
-
Verification and Validation
-
-
-
-
-
diff --git a/tests-system/lobster-core/online_report/rbt-output-file/.gitkeep b/tests-system/lobster-core/online_report/rbt-output-file/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/tests-system/lobster-core/html_report/rbt-output-file/.gitkeep b/tests-system/lobster-html-report/rbt-output-file/.gitkeep
similarity index 100%
rename from tests-system/lobster-core/html_report/rbt-output-file/.gitkeep
rename to tests-system/lobster-html-report/rbt-output-file/.gitkeep
diff --git a/tests-system/lobster-core/html_report/selenium-test/test_html_report.py b/tests-system/lobster-html-report/selenium-test/test_html_report.py
similarity index 100%
rename from tests-system/lobster-core/html_report/selenium-test/test_html_report.py
rename to tests-system/lobster-html-report/selenium-test/test_html_report.py
diff --git a/tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/expected-output/expected-output.lobster b/tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/expected-output/expected-output.lobster
index 03740651..a057a1da 100644
--- a/tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/expected-output/expected-output.lobster
+++ b/tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/expected-output/expected-output.lobster
@@ -15,7 +15,7 @@
"commit": "main",
"file": "tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/input/basic.py",
"line": 5,
- "exec_commit_id": "6fa7eadf8b9841fedc7a74a6147247ac830fd2bf"
+ "exec_commit_id": "516d5994e4c6ef566f89b44f0c9b9e0a4741b4d5"
},
"name": "basic.trlc_reference",
"messages": [],
@@ -36,7 +36,7 @@
"commit": "main",
"file": "tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/input/basic.py",
"line": 13,
- "exec_commit_id": "6fa7eadf8b9841fedc7a74a6147247ac830fd2bf"
+ "exec_commit_id": "516d5994e4c6ef566f89b44f0c9b9e0a4741b4d5"
},
"name": "basic.Example.helper_function",
"messages": [],
@@ -55,7 +55,7 @@
"commit": "main",
"file": "tests-system/lobster-online-report/rbt-valid-flow/valid-scenario/input/basic.py",
"line": 17,
- "exec_commit_id": "6fa7eadf8b9841fedc7a74a6147247ac830fd2bf"
+ "exec_commit_id": "516d5994e4c6ef566f89b44f0c9b9e0a4741b4d5"
},
"name": "basic.Example.nor",
"messages": [
diff --git a/tests-system/lobster-trlc-system-test.py b/tests-system/lobster-trlc-system-test.py
index b133d8fd..6b4eeb27 100755
--- a/tests-system/lobster-trlc-system-test.py
+++ b/tests-system/lobster-trlc-system-test.py
@@ -26,7 +26,9 @@
from trlc.trlc import Source_Manager
from trlc.errors import Message_Handler
-TEST_DIR = "tests-system/lobster-" + sys.argv[1]
+tool_name = (sys.argv[1].split("/")[1] if "core/" in sys.argv[1]
+ else sys.argv[1]).replace("_", "-")
+TEST_DIR = f"tests-system/lobster-{tool_name}"
TARGET = "system-tests.lobster"
def process(testname, mapping):