<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.webhuis.nl:443/index.php?action=history&amp;feed=atom&amp;title=Test_Traceability_Matrix</id>
	<title>Test Traceability Matrix - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.webhuis.nl:443/index.php?action=history&amp;feed=atom&amp;title=Test_Traceability_Matrix"/>
	<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Test_Traceability_Matrix&amp;action=history"/>
	<updated>2026-09-11T06:35:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.webhuis.nl:443/index.php?title=Test_Traceability_Matrix&amp;diff=4754&amp;oldid=prev</id>
		<title>Martin: Created page with &quot;&lt;span id=&quot;test-traceability-matrix&quot;&gt;&lt;/span&gt; = Test Traceability Matrix =  {| !width=&quot;23%&quot;| Field !width=&quot;76%&quot;| Value |- | Document ID | PGCBL-TTM-001 |- | Document Type | Test Traceability Matrix |- | System | pgcobol — Prime Numbers Application v1.0 |- | Version | 1.0 |- | Status | Draft — test cases not yet written; matrix is a planning skeleton |- | Owner | QA Lead / Lead Developer |- | Author | [derived from PGCBL-BRD-001 and PGCBL-NFR-001] |- | Created | 2026-03...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Test_Traceability_Matrix&amp;diff=4754&amp;oldid=prev"/>
		<updated>2026-03-25T15:31:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;span id=&amp;quot;test-traceability-matrix&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = Test Traceability Matrix =  {| !width=&amp;quot;23%&amp;quot;| Field !width=&amp;quot;76%&amp;quot;| Value |- | Document ID | PGCBL-TTM-001 |- | Document Type | Test Traceability Matrix |- | System | pgcobol — Prime Numbers Application v1.0 |- | Version | 1.0 |- | Status | Draft — test cases not yet written; matrix is a planning skeleton |- | Owner | QA Lead / Lead Developer |- | Author | [derived from PGCBL-BRD-001 and PGCBL-NFR-001] |- | Created | 2026-03...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;test-traceability-matrix&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Test Traceability Matrix =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;23%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;76%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| Document ID&lt;br /&gt;
| PGCBL-TTM-001&lt;br /&gt;
|-&lt;br /&gt;
| Document Type&lt;br /&gt;
| Test Traceability Matrix&lt;br /&gt;
|-&lt;br /&gt;
| System&lt;br /&gt;
| pgcobol — Prime Numbers Application v1.0&lt;br /&gt;
|-&lt;br /&gt;
| Version&lt;br /&gt;
| 1.0&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Draft — test cases not yet written; matrix is a planning skeleton&lt;br /&gt;
|-&lt;br /&gt;
| Owner&lt;br /&gt;
| QA Lead / Lead Developer&lt;br /&gt;
|-&lt;br /&gt;
| Author&lt;br /&gt;
| [derived from PGCBL-BRD-001 and PGCBL-NFR-001]&lt;br /&gt;
|-&lt;br /&gt;
| Created&lt;br /&gt;
| 2026-03-17&lt;br /&gt;
|-&lt;br /&gt;
| Last modified&lt;br /&gt;
| 2026-03-17&lt;br /&gt;
|-&lt;br /&gt;
| Classification&lt;br /&gt;
| Internal&lt;br /&gt;
|-&lt;br /&gt;
| Parent document&lt;br /&gt;
| PGCBL-BRD-001, PGCBL-NFR-001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;version-history&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Version History ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Version&lt;br /&gt;
! Date&lt;br /&gt;
! Author&lt;br /&gt;
! Status&lt;br /&gt;
! Change Summary&lt;br /&gt;
|-&lt;br /&gt;
| 0.1&lt;br /&gt;
| 2026-03-17&lt;br /&gt;
| —&lt;br /&gt;
| Draft&lt;br /&gt;
| Planning skeleton&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;table-of-contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
# [[#1-purpose-and-how-to-use-this-matrix|Purpose and How to Use This Matrix]]&lt;br /&gt;
# [[#2-test-levels-and-types|Test Levels and Types]]&lt;br /&gt;
# [[#3-requirements-coverage-matrix|Requirements Coverage Matrix]]&lt;br /&gt;
# [[#4-test-case-catalogue|Test Case Catalogue]]&lt;br /&gt;
# [[#5-defect-traceability|Defect Traceability]]&lt;br /&gt;
# [[#6-coverage-summary|Coverage Summary]]&lt;br /&gt;
# [[#7-open-issues|Open Issues]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;purpose-and-how-to-use-this-matrix&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 1. Purpose and How to Use This Matrix ==&lt;br /&gt;
&lt;br /&gt;
A Test Traceability Matrix (TTM) provides bidirectional traceability between:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Business Requirement  ←→  Design Element  ←→  Test Case  ←→  Test Result&amp;lt;/pre&amp;gt;&lt;br /&gt;
It answers two critical questions:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Completeness:&amp;#039;&amp;#039;&amp;#039; Is every requirement covered by at least one test? (forward trace)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Necessity:&amp;#039;&amp;#039;&amp;#039; Does every test correspond to a requirement? (backward trace — prevents test bloat)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;status-values-used-in-this-document&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Status values used in this document ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Status&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Meaning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Planned&amp;lt;/code&amp;gt;&lt;br /&gt;
| Test case defined; not yet implemented&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Implemented&amp;lt;/code&amp;gt;&lt;br /&gt;
| Test case exists in the test suite&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Passed&amp;lt;/code&amp;gt;&lt;br /&gt;
| Test executed and passed in the latest run&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Failed&amp;lt;/code&amp;gt;&lt;br /&gt;
| Test executed and failed in the latest run&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Blocked&amp;lt;/code&amp;gt;&lt;br /&gt;
| Cannot be run due to an open defect or missing dependency&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;N/A&amp;lt;/code&amp;gt;&lt;br /&gt;
| Not applicable to this version&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;test-case-id-scheme&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== Test case ID scheme ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;TC-&amp;amp;lt;LEVEL&amp;amp;gt;-&amp;amp;lt;NNN&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
LEVEL:&lt;br /&gt;
  UT   Unit test  (single program in isolation)&lt;br /&gt;
  IT   Integration test (two or more programs together)&lt;br /&gt;
  ST   System test (full end-to-end)&lt;br /&gt;
  NFT  Non-functional test (performance, security, etc.)&lt;br /&gt;
&lt;br /&gt;
NNN: zero-padded sequence&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
  TC-UT-001   Unit test #1&lt;br /&gt;
  TC-ST-001   System test #1&lt;br /&gt;
  TC-NFT-001  Non-functional test #1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;test-levels-and-types&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 2. Test Levels and Types ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;unit-tests-ut&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 2.1 Unit tests (UT) ===&lt;br /&gt;
&lt;br /&gt;
Test a single COBOL program in isolation using a synthetic control block. No real database or print file is required; stubs or mocks may be used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Target programs:&amp;#039;&amp;#039;&amp;#039; primesgen (sieve logic), primes (SQL operations), primesui (print formatting)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;integration-tests-it&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 2.2 Integration tests (IT) ===&lt;br /&gt;
&lt;br /&gt;
Test two or more programs working together. Typically: primesgen + primes (with a real database), or primesgen + primesui (with a real print file).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;system-tests-st&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 2.3 System tests (ST) ===&lt;br /&gt;
&lt;br /&gt;
Test the complete stack end-to-end: compile all programs, set up the database, run primesmain with a command-line argument, inspect all outputs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;non-functional-tests-nft&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 2.4 Non-functional tests (NFT) ===&lt;br /&gt;
&lt;br /&gt;
Test quality attributes: performance, security (credential exposure), operability (return code, log completeness).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements-coverage-matrix&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 3. Requirements Coverage Matrix ==&lt;br /&gt;
&lt;br /&gt;
Each row is a requirement. Each column is a test case. A cell contains &amp;lt;code&amp;gt;✓&amp;lt;/code&amp;gt; if the test covers that requirement.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;functional-requirements-from-pgcbl-brd-001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3.1 Functional Requirements (from PGCBL-BRD-001) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;5%&amp;quot;| Req ID&lt;br /&gt;
!width=&amp;quot;14%&amp;quot;| Requirement summary&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-UT-001&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-UT-002&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-UT-003&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-UT-004&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-UT-005&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-IT-001&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-IT-002&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-ST-001&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-ST-002&lt;br /&gt;
!width=&amp;quot;7%&amp;quot;| TC-ST-003&lt;br /&gt;
!width=&amp;quot;6%&amp;quot;| Coverage&lt;br /&gt;
|-&lt;br /&gt;
| FR-01&lt;br /&gt;
| Prime generation (generate arg)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-02&lt;br /&gt;
| Trial-division algorithm correctness&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-03&lt;br /&gt;
| Prime reporting (report arg)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-04&lt;br /&gt;
| Print report format (6/line, heading, footing)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-05&lt;br /&gt;
| Console logging&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-06&lt;br /&gt;
| Error handling — bad arg&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-06&lt;br /&gt;
| Error handling — DB connect failure&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| FR-06&lt;br /&gt;
| Error handling — print file cannot open&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;non-functional-requirements-from-pgcbl-nfr-001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== 3.2 Non-Functional Requirements (from PGCBL-NFR-001) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;8%&amp;quot;| Req ID&lt;br /&gt;
!width=&amp;quot;21%&amp;quot;| Requirement summary&lt;br /&gt;
!width=&amp;quot;12%&amp;quot;| TC-NFT-001&lt;br /&gt;
!width=&amp;quot;12%&amp;quot;| TC-NFT-002&lt;br /&gt;
!width=&amp;quot;12%&amp;quot;| TC-NFT-003&lt;br /&gt;
!width=&amp;quot;12%&amp;quot;| TC-NFT-004&lt;br /&gt;
!width=&amp;quot;12%&amp;quot;| TC-NFT-005&lt;br /&gt;
!width=&amp;quot;10%&amp;quot;| Coverage&lt;br /&gt;
|-&lt;br /&gt;
| NFR-PERF-01&lt;br /&gt;
| Generation throughput ≥ 1,000/sec&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| NFR-PERF-03&lt;br /&gt;
| Divider lookup &amp;amp;lt; 50 ms&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| NFR-REL-01&lt;br /&gt;
| Batch completes without intervention&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| TC-ST-001/002 cover this&lt;br /&gt;
|-&lt;br /&gt;
| NFR-REL-02&lt;br /&gt;
| Graceful DB failure&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| NFR-SEC-01&lt;br /&gt;
| No hard-coded credentials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
|&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| NFR-OPER-02&lt;br /&gt;
| Non-zero return code on failure&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| ✓&lt;br /&gt;
| Planned&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;test-case-catalogue&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 4. Test Case Catalogue ==&lt;br /&gt;
&lt;br /&gt;
Each test case below is a planning entry. Fields marked &amp;lt;code&amp;gt;[TBD]&amp;lt;/code&amp;gt; must be completed when the test is implemented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-ut-001-sieve-known-prime-confirmation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-UT-001 — Sieve: known prime confirmation ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-UT-001&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Unit&lt;br /&gt;
|-&lt;br /&gt;
| Program under test&lt;br /&gt;
| primesgen (r80-test-number logic)&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-02&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Verify that known prime numbers are correctly identified.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| A test harness that can call primesgen with a synthetic primes-session and a stub primes DAL returning pre-set dividers. Prime 2 pre-seeded in stub.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| Candidates: 3, 5, 7, 11, 13, 17, 19 (all prime). Stub DAL returns pre-calculated divisors.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| Each candidate is written (r85-write-prime called) exactly once for each prime. No composite candidate is written.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-ut-002-sieve-known-composite-rejection&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-UT-002 — Sieve: known composite rejection ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-UT-002&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Unit&lt;br /&gt;
|-&lt;br /&gt;
| Program under test&lt;br /&gt;
| primesgen&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-02&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Verify that known composite numbers are not written as primes.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| Same harness as TC-UT-001.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| Candidates: 4, 6, 8, 9, 10, 15, 21, 25, 49.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| r85-write-prime is never called for any of these candidates.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-ut-003-ui-six-per-line-accumulation&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-UT-003 — UI: six-per-line accumulation ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-UT-003&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Unit&lt;br /&gt;
|-&lt;br /&gt;
| Program under test&lt;br /&gt;
| primesui&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-04&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Verify that exactly 6 prime entries are accumulated before a line is written to the print file.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| Call primesui with ui-methods=“start”; then call with ui-methods=“write” seven times. Inspect file after calls 6 and 7.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| u-sequence = 1–7; u-number = 2, 3, 5, 7, 11, 13, 17.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| One line written after 6th entry. File buffer reset. 7th entry starts a new accumulation cycle.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-ut-004-ui-print-file-cannot-be-opened&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-UT-004 — UI: print file cannot be opened ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-UT-004&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Unit&lt;br /&gt;
|-&lt;br /&gt;
| Program under test&lt;br /&gt;
| primesui&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-06&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Verify that primesui returns ui-method-result = 1 when the print file cannot be created (e.g. directory is read-only).&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| Set up a read-only target directory so &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt; cannot be created.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| Call primesui with ui-methods=“start”.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| ui-method-result = 1; error status displayed on console; no abort/crash.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-ut-005-dal-database-connection-failure&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-UT-005 — DAL: database connection failure ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-UT-005&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Unit&lt;br /&gt;
|-&lt;br /&gt;
| Program under test&lt;br /&gt;
| primes (DAL)&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-06&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Verify that primes returns dal-result = 1 and logs a message when the database is unreachable.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| PostgreSQL not running, or DATASRC points to an invalid host.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| CALL primes USING primes-dal with dal-methods=“connect”.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| dal-result = 1; SQLCODE ≠ 0; error message on console; no crash.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-it-001-generation-integration-first-100-primes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-IT-001 — Generation integration: first 100 primes ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-IT-001&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Integration&lt;br /&gt;
|-&lt;br /&gt;
| Programs under test&lt;br /&gt;
| primesgen + primes (DAL)&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-01, FR-02&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Run the full generate path for the first 100 primes (up to 541). Verify correctness of results in the database.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| Database reset (&amp;lt;code&amp;gt;reset-primes.sql&amp;lt;/code&amp;gt;). Prime 2 manually inserted. PostgreSQL running. primesui replaced with a stub that accepts “write” calls silently.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| Generate until test-number &amp;amp;gt; 541.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| &amp;lt;code&amp;gt;SELECT prime FROM primes.primes ORDER BY ident&amp;lt;/code&amp;gt; returns exactly the first 100 primes: 2, 3, 5, 7, 11, … 541.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| 100 rows; each row is a known prime; no duplicates; sequence matches insertion order.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| D-01 (generate loop commented out in primesmain — this test bypasses primesmain and calls primesgen directly)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-it-002-report-integration-all-primes-from-database&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-IT-002 — Report integration: all primes from database ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-IT-002&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Integration&lt;br /&gt;
|-&lt;br /&gt;
| Programs under test&lt;br /&gt;
| primesgen + primes (DAL) + primesui&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-03, FR-04&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Seed 12 known primes in the database; run the report path; inspect &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| Database reset. Insert the first 12 primes (2 through 37) manually.&lt;br /&gt;
|-&lt;br /&gt;
| Test data&lt;br /&gt;
| 12 primes → 2 data lines (6 per line); should produce one page with heading, 2 data lines, footing.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt; contains: heading line, column header line, data line 1 (primes 2–13), data line 2 (primes 17–37), footing line with page 1.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-st-001-system-test-full-generate-run-first-1000-primes&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-ST-001 — System test: full generate run (first 1,000 primes) ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-ST-001&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| System&lt;br /&gt;
|-&lt;br /&gt;
| Programs under test&lt;br /&gt;
| All (primesmain → primesgen → primes + primesui)&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-01, FR-02, FR-05&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Full end-to-end generate run via &amp;lt;code&amp;gt;primesmain generate&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| All programs compiled and linked. Database reset. Prime 2 seeded. Fix for D-01 (generate loop) applied or tested separately.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| Database contains the first 1,000 primes (2 through 7,919). Console log shows all lifecycle messages. Process exits without crash.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Blocked — D-01 (generate loop commented out)&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| D-01&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-st-002-system-test-full-report-run&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-ST-002 — System test: full report run ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-ST-002&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| System&lt;br /&gt;
|-&lt;br /&gt;
| Programs under test&lt;br /&gt;
| All (primesmain → primesgen → primes + primesui)&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-03, FR-04, FR-05&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Full end-to-end report run via &amp;lt;code&amp;gt;primesmain report&amp;lt;/code&amp;gt; after TC-ST-001 has populated the database.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| TC-ST-001 has run successfully; database contains at least 1,000 primes.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt; contains all primes in order; correct page headings and footings; last page flushed correctly.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-st-003-system-test-bad-command-line-argument&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-ST-003 — System test: bad command-line argument ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-ST-003&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| System&lt;br /&gt;
|-&lt;br /&gt;
| Programs under test&lt;br /&gt;
| primesmain&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| FR-06&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Run &amp;lt;code&amp;gt;primesmain badarg&amp;lt;/code&amp;gt;; verify graceful exit.&lt;br /&gt;
|-&lt;br /&gt;
| Pre-conditions&lt;br /&gt;
| All programs compiled.&lt;br /&gt;
|-&lt;br /&gt;
| Expected result&lt;br /&gt;
| Console message “Bad parameter, program initialisation failed.” Process exits. No database connection attempted.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|-&lt;br /&gt;
| Defects linked&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-nft-001-performance-generation-throughput&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-NFT-001 — Performance: generation throughput ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-NFT-001&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Non-functional&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| NFR-PERF-01&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Time the generation of the first 10,000 primes; calculate primes-per-second.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| ≥ 1,000 primes/second.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned — requires D-01 fix and index on &amp;lt;code&amp;gt;ident&amp;lt;/code&amp;gt; (NFR-PERF-03)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-nft-002-performance-divider-lookup-query-plan&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-NFT-002 — Performance: divider lookup query plan ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-NFT-002&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Non-functional&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| NFR-PERF-03&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Run EXPLAIN ANALYZE on &amp;lt;code&amp;gt;SELECT prime FROM primes.primes WHERE ident = 500&amp;lt;/code&amp;gt; with 1,000 rows in the table.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| Query plan shows Index Scan; execution time &amp;amp;lt; 50 ms.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned — likely to fail until index on &amp;lt;code&amp;gt;ident&amp;lt;/code&amp;gt; is added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-nft-003-reliability-graceful-db-failure-mid-run&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-NFT-003 — Reliability: graceful DB failure mid-run ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-NFT-003&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Non-functional&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| NFR-REL-02&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Kill the PostgreSQL process during a report run; verify clean exit and no zombie connections.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| Program logs an error and exits; &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt; is closed; no orphan DB connections.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-nft-004-security-no-credentials-in-binary&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-NFT-004 — Security: no credentials in binary ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-NFT-004&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Non-functional&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| NFR-SEC-01&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Run &amp;lt;code&amp;gt;strings primes&amp;lt;/code&amp;gt; (the compiled binary) and grep for the password string &amp;lt;code&amp;gt;pr1mes_user&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| String not found in binary.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned — expected to FAIL until ADR-006 remediation is applied&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;tc-nft-005-operability-non-zero-return-code-on-error&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
=== TC-NFT-005 — Operability: non-zero return code on error ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Field&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Value&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| TC-NFT-005&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Non-functional&lt;br /&gt;
|-&lt;br /&gt;
| Requirements covered&lt;br /&gt;
| NFR-OPER-02&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| Run &amp;lt;code&amp;gt;primesmain badarg&amp;lt;/code&amp;gt;; check &amp;lt;code&amp;gt;echo $?&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| Pass criteria&lt;br /&gt;
| Exit code ≠ 0.&lt;br /&gt;
|-&lt;br /&gt;
| Status&lt;br /&gt;
| Planned — expected to FAIL until &amp;lt;code&amp;gt;MOVE 1 TO RETURN-CODE&amp;lt;/code&amp;gt; is added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;defect-traceability&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 5. Defect Traceability ==&lt;br /&gt;
&lt;br /&gt;
Known defects identified during reverse engineering, linked to the test cases that expose them:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Defect ID&lt;br /&gt;
!width=&amp;quot;24%&amp;quot;| Description&lt;br /&gt;
!width=&amp;quot;39%&amp;quot;| Test cases affected&lt;br /&gt;
!width=&amp;quot;15%&amp;quot;| Status&lt;br /&gt;
|-&lt;br /&gt;
| D-01&lt;br /&gt;
| Generate loop commented out in primesmain&lt;br /&gt;
| TC-ST-001, TC-NFT-001&lt;br /&gt;
| Open — blocks system-level generation tests&lt;br /&gt;
|-&lt;br /&gt;
| D-02&lt;br /&gt;
| Prime 2 not seeded by algorithm&lt;br /&gt;
| TC-IT-001, TC-ST-001&lt;br /&gt;
| Open — manual pre-step required&lt;br /&gt;
|-&lt;br /&gt;
| D-03&lt;br /&gt;
| Connection alias mismatch (&amp;lt;code&amp;gt;primes&amp;lt;/code&amp;gt; vs &amp;lt;code&amp;gt;primesdb&amp;lt;/code&amp;gt;)&lt;br /&gt;
| TC-ST-001, TC-ST-002&lt;br /&gt;
| Open — may cause runtime failure&lt;br /&gt;
|-&lt;br /&gt;
| D-04&lt;br /&gt;
| Hard-coded credentials&lt;br /&gt;
| TC-NFT-004&lt;br /&gt;
| Open — expected test failure&lt;br /&gt;
|-&lt;br /&gt;
| D-05&lt;br /&gt;
| No index on &amp;lt;code&amp;gt;primes.ident&amp;lt;/code&amp;gt;&lt;br /&gt;
| TC-NFT-001, TC-NFT-002&lt;br /&gt;
| Open — performance defect&lt;br /&gt;
|-&lt;br /&gt;
| D-06&lt;br /&gt;
| No process return code on error&lt;br /&gt;
| TC-NFT-005&lt;br /&gt;
| Open — expected test failure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;coverage-summary&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 6. Coverage Summary ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Category&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Total requirements&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Tests planned&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Tests passing&lt;br /&gt;
!width=&amp;quot;20%&amp;quot;| Coverage %&lt;br /&gt;
|-&lt;br /&gt;
| Functional (FR)&lt;br /&gt;
| 8&lt;br /&gt;
| 8&lt;br /&gt;
| 0&lt;br /&gt;
| 0% (tests not yet run)&lt;br /&gt;
|-&lt;br /&gt;
| Non-functional (NFR)&lt;br /&gt;
| 10&lt;br /&gt;
| 6&lt;br /&gt;
| 0&lt;br /&gt;
| 0%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Total&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;18&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;14&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Target before release: 100% functional coverage; 80% non-functional coverage.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;open-issues&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 7. Open Issues ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| ID&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Issue&lt;br /&gt;
!width=&amp;quot;18%&amp;quot;| Owner&lt;br /&gt;
!width=&amp;quot;21%&amp;quot;| Target&lt;br /&gt;
!width=&amp;quot;21%&amp;quot;| Status&lt;br /&gt;
|-&lt;br /&gt;
| OI-01&lt;br /&gt;
| D-01 (generate loop) blocks TC-ST-001, TC-NFT-001 — must be fixed before system testing&lt;br /&gt;
| Developer&lt;br /&gt;
| —&lt;br /&gt;
| Open&lt;br /&gt;
|-&lt;br /&gt;
| OI-02&lt;br /&gt;
| No test harness / stub exists for any program; unit tests cannot run until stubs are written&lt;br /&gt;
| QA / Developer&lt;br /&gt;
| —&lt;br /&gt;
| Open&lt;br /&gt;
|-&lt;br /&gt;
| OI-03&lt;br /&gt;
| TTM coverage for NFR-MAIN (maintainability) NFRs is not yet defined&lt;br /&gt;
| QA&lt;br /&gt;
| —&lt;br /&gt;
| Open&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
Terug naar: [[Design standards]] | [[Cobol and PostgreSQL]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
</feed>