SOME/IP Test Plan Implementation Status
Reference Document: SOMEIP_ACCEPTANCE_TEST_PLAN.md
Last Updated: 2025-12-14
Overall Progress: 🟡 ~65% Complete
Quick Summary
| V-Model Level |
Test Category |
Planned |
Implemented |
Coverage |
Status |
| Level 1 |
Unit Testing |
100 |
99 |
99% |
🟢 |
| Level 2 |
Component Testing |
35 |
~25 |
71% |
🟡 |
| Level 3 |
Integration Testing |
28 |
~30 |
100%+ |
🟢 |
| Level 4 |
System Testing |
25 |
~15 |
60% |
🟡 |
| Level 5 |
Acceptance Testing |
20 |
~5 |
25% |
🔴 |
Level 1: Unit Testing Status
File: tests/test_message.cpp | Tests: 9
| Plan ID |
Test Case |
Spec Ref |
Implemented |
Actual Test Name |
| UT-MSG-001 |
Message ID Structure |
feat_req_someip_56 |
✅ |
ConstructorWithIds |
| UT-MSG-002 |
Length Field |
feat_req_someip_77 |
✅ |
SettersAndGetters (validates length) |
| UT-MSG-003 |
Request ID Structure |
feat_req_someip_83 |
✅ |
ConstructorWithIds |
| UT-MSG-004 |
Protocol Version |
feat_req_someip_90 |
✅ |
SerializationRoundTrip |
| UT-MSG-005 |
Interface Version |
feat_req_someip_92 |
✅ |
SerializationRoundTrip |
| UT-MSG-006 |
Message Type Values |
feat_req_someip_95 |
✅ |
ConstructorWithIds, SettersAndGetters |
| UT-MSG-007 |
Return Code Values |
feat_req_someip_144 |
✅ |
ConstructorWithIds, SettersAndGetters |
| UT-MSG-008 |
TP Flag in Message Type |
feat_req_someip_761 |
⚠️ |
Partial in test_tp.cpp |
| UT-MSG-009 |
Minimum Length Validation |
feat_req_someip_798 |
❌ |
NOT IMPLEMENTED |
| UT-MSG-010 |
Header Byte Order |
feat_req_someip_42 |
✅ |
SerializationRoundTrip |
Status: 🟡 8/10 Complete (80%)
Serialization Unit Tests (test_serialization.cpp)
File: tests/test_serialization.cpp | Tests: 28 (updated 2025-12-14)
| Plan ID |
Test Case |
Spec Ref |
Implemented |
Actual Test Name |
| UT-SER-001 |
Boolean Serialization |
feat_req_someip_172 |
✅ |
SerializeDeserializeBool, BooleanUsesLowestBitOnly |
| UT-SER-002 |
uint8 Serialization |
feat_req_someip_172 |
✅ |
SerializeDeserializeUint8 |
| UT-SER-003 |
uint16 Big-Endian |
feat_req_someip_42 |
✅ |
SerializeDeserializeUint16, VerifyBigEndianUint16 |
| UT-SER-004 |
uint32 Big-Endian |
feat_req_someip_172 |
✅ |
SerializeDeserializeUint32, VerifyBigEndianUint32 |
| UT-SER-005 |
uint64 Big-Endian |
feat_req_someip_623 |
✅ |
SerializeDeserializeUint64, VerifyBigEndianUint64 |
| UT-SER-006 |
sint8/16/32/64 Serialization |
feat_req_someip_172 |
✅ |
SerializeDeserializeInt8/16/32/64, VerifyBigEndianNegativeInt16 |
| UT-SER-007 |
float32 IEEE 754 |
feat_req_someip_172 |
✅ |
SerializeDeserializeFloat, SerializeDeserializeFloatSpecialValues |
| UT-SER-008 |
float64 IEEE 754 |
feat_req_someip_172 |
✅ |
SerializeDeserializeDouble, SerializeDeserializeDoubleSpecialValues |
| UT-SER-009 |
Fixed-Length String |
feat_req_someip_233 |
⚠️ |
Partial in SerializeDeserializeString |
| UT-SER-010 |
Dynamic-Length String |
feat_req_someip_237 |
✅ |
SerializeDeserializeString, SerializeDeserializeStringArray |
| UT-SER-011 |
Fixed-Length Array |
feat_req_someip_241 |
✅ |
SerializeDeserializeUint8Array, SerializeDeserializeInt16Array, SerializeDeserializeFloatArray, SerializeDeserializeEmptyArray |
| UT-SER-012 |
Dynamic-Length Array |
feat_req_someip_254 |
✅ |
SerializeDeserializeArray, SerializeDeserializeStringArray |
| UT-SER-013 |
Struct Serialization |
feat_req_someip_230 |
✅ |
NestedDataStructure (simulated struct) |
| UT-SER-014 |
Struct with Length Field |
feat_req_someip_600 |
❌ |
NOT IMPLEMENTED |
| UT-SER-015 |
Enumeration Types |
feat_req_someip_651 |
⚠️ |
Enums serialize as underlying type (uint) |
| UT-SER-016 |
Bitfield Types |
feat_req_someip_689 |
⚠️ |
Bitfields serialize as uint8/16/32 |
| UT-SER-017 |
Union/Variant |
feat_req_someip_263 |
❌ |
NOT IMPLEMENTED |
| UT-SER-018 |
Alignment Calculation |
feat_req_someip_711 |
✅ |
AlignTo4Bytes, AlignTo8Bytes, AlignAlreadyAligned, DeserializerAlign |
| UT-SER-019 |
UTF-8 String BOM |
feat_req_someip_662 |
❌ |
NOT IMPLEMENTED |
| UT-SER-020 |
UTF-16 LE/BE Support |
feat_req_someip_234 |
❌ |
NOT IMPLEMENTED |
| - |
Deserializer Navigation |
- |
✅ |
DeserializerPositionTracking, DeserializerSkip, DeserializerSetPosition, DeserializerReset |
| - |
Buffer Move Semantics |
- |
✅ |
MoveBuffer |
Status: 🟢 16/20 Complete (80%)
Session Manager Unit Tests (test_session_manager.cpp)
File: tests/test_session_manager.cpp | Tests: 7
| Plan ID |
Test Case |
Spec Ref |
Implemented |
Actual Test Name |
| UT-SES-001 |
Session ID Generation |
feat_req_someip_88 |
✅ |
SessionIdGeneration |
| UT-SES-002 |
Session ID Starting Value |
feat_req_someip_649 |
✅ |
SessionIdStartsAtOne |
| UT-SES-003 |
Session ID Wrap-Around |
feat_req_someip_677 |
✅ |
SessionIdWrapAround |
| UT-SES-004 |
Session ID Disabled |
feat_req_someip_700 |
⚠️ |
Partial |
| UT-SES-005 |
Request/Response Correlation |
feat_req_someip_79 |
✅ |
RequestResponseCorrelation |
| UT-SES-006 |
Client ID Uniqueness |
feat_req_someip_699 |
✅ |
ClientIdUniqueness |
| UT-SES-007 |
Concurrent Session Support |
feat_req_someip_79 |
✅ |
ConcurrentSessions |
Status: 🟢 7/7 Complete (100%)
Transport Protocol Unit Tests (test_tp.cpp)
File: tests/test_tp.cpp | Tests: 6
| Plan ID |
Test Case |
Spec Ref |
Implemented |
Actual Test Name |
| UT-TP-001 |
TP Header Structure |
feat_req_someiptp_766 |
⚠️ |
Implicit in segment tests |
| UT-TP-002 |
Offset Field Encoding |
feat_req_someiptp_768 |
❌ |
NOT IMPLEMENTED |
| UT-TP-003 |
More Segments Flag |
feat_req_someiptp_770 |
✅ |
MultiSegmentMessage |
| UT-TP-004 |
Session ID per Original |
feat_req_someiptp_763 |
⚠️ |
Implicit |
| UT-TP-005 |
Segment Size Limit |
feat_req_someiptp_773 |
✅ |
MultiSegmentMessage |
| UT-TP-006 |
Segment Length Multiple |
feat_req_someiptp_772 |
❌ |
NOT IMPLEMENTED |
| UT-TP-007 |
TP Flag Setting |
feat_req_someiptp_765 |
⚠️ |
Implicit |
| UT-TP-008 |
Header Preservation |
feat_req_someiptp_774 |
✅ |
SegmentReassembly |
| UT-TP-009 |
Ascending Order Send |
feat_req_someiptp_777 |
✅ |
MultiSegmentMessage |
| UT-TP-010 |
No Overlapping Segments |
feat_req_someiptp_780 |
❌ |
NOT IMPLEMENTED |
| UT-TP-011 |
Reassembly Buffer Match |
feat_req_someiptp_781 |
✅ |
SegmentReassembly |
| UT-TP-012 |
Session ID Change Detection |
feat_req_someiptp_793 |
❌ |
NOT IMPLEMENTED |
| UT-TP-013 |
Error Detection |
feat_req_someiptp_792 |
❌ |
NOT IMPLEMENTED |
Status: 🟡 6/13 Complete (46%)
Service Discovery Unit Tests (test_sd.cpp)
File: tests/test_sd.cpp | Tests: 13
| Plan ID |
Test Case |
Spec Ref |
Implemented |
Actual Test Name |
| UT-SD-001 |
SD Service ID |
feat_req_someipsd_26 |
⚠️ |
Implicit in message tests |
| UT-SD-002 |
SD Method ID |
feat_req_someipsd_26 |
⚠️ |
Implicit in message tests |
| UT-SD-003 |
SD Message Type |
feat_req_someipsd_26 |
⚠️ |
Implicit |
| UT-SD-004 |
SD Session ID Increment |
feat_req_someipsd_26 |
❌ |
NOT IMPLEMENTED |
| UT-SD-005 |
SD Session ID Starting |
feat_req_someipsd_26 |
❌ |
NOT IMPLEMENTED |
| UT-SD-006 |
Reboot Flag Logic |
feat_req_someipsd_41 |
❌ |
NOT IMPLEMENTED |
| UT-SD-007 |
Unicast Flag |
feat_req_someipsd_100 |
❌ |
NOT IMPLEMENTED |
| UT-SD-008 |
Entry Types Encoding |
feat_req_someipsd_46 |
✅ |
EntryTypes |
| UT-SD-009 |
FindService Entry |
feat_req_someipsd_238 |
⚠️ |
Partial |
| UT-SD-010 |
OfferService Entry |
feat_req_someipsd_252 |
✅ |
ServiceEntry |
| UT-SD-011 |
StopOfferService Entry |
feat_req_someipsd_261 |
❌ |
NOT IMPLEMENTED |
| UT-SD-012 |
SubscribeEventgroup |
feat_req_someipsd_321 |
✅ |
EventGroupEntry |
| UT-SD-013 |
StopSubscribeEventgroup |
feat_req_someipsd_332 |
❌ |
NOT IMPLEMENTED |
| UT-SD-014 |
SubscribeEventgroupAck |
feat_req_someipsd_613 |
⚠️ |
Partial |
| UT-SD-015 |
SubscribeEventgroupNack |
feat_req_someipsd_618 |
❌ |
NOT IMPLEMENTED |
| UT-SD-016 |
IPv4 Endpoint Option |
feat_req_someipsd_127 |
✅ |
IPv4EndpointOption |
| UT-SD-017 |
IPv4 Multicast Option |
feat_req_someipsd_723 |
✅ |
OptionTypes |
| UT-SD-018 |
Configuration Option |
feat_req_someipsd_149 |
❌ |
NOT IMPLEMENTED |
| UT-SD-019 |
Option Referencing |
feat_req_someipsd_336 |
❌ |
NOT IMPLEMENTED |
| UT-SD-020 |
Entries Processing Order |
feat_req_someipsd_862 |
❌ |
NOT IMPLEMENTED |
Status: 🟡 7/20 Complete (35%)
Other Unit Tests
Events (test_events.cpp) - 14 tests
| Status |
Coverage |
| ✅ Exists |
Tests for event publishing, subscription, notification |
RPC (test_rpc.cpp) - 8 tests
| Status |
Coverage |
| ✅ Exists |
Tests for RPC client/server patterns |
TCP Transport (test_tcp_transport.cpp) - 12 tests
| Status |
Coverage |
| ✅ Exists |
Tests for TCP connection, streaming, recovery |
Endpoint (test_endpoint.cpp) - 2 tests
| Status |
Coverage |
| ⚠️ Minimal |
Basic endpoint tests only |
Level 2: Component Testing Status
| Plan ID |
Test Case |
Implemented |
Location |
Notes |
| CT-MSG-001 |
Full Message Round-Trip |
✅ |
test_message.cpp |
SerializationRoundTrip |
| CT-MSG-002 |
Request Message Creation |
✅ |
test_message.cpp |
|
| CT-MSG-003 |
Response Message Creation |
⚠️ |
Partial |
|
| CT-MSG-004 |
Error Response Creation |
❌ |
|
NOT IMPLEMENTED |
| CT-MSG-005 |
Notification Message |
⚠️ |
Partial |
|
| CT-UDP-001 |
UDP Socket Creation |
✅ |
test_tcp_transport.cpp |
Similar patterns |
| CT-UDP-002 |
UDP Message Send |
✅ |
Integration tests |
|
| CT-UDP-003 |
UDP Message Receive |
✅ |
Integration tests |
|
| CT-UDP-004 |
UDP Multicast Join |
⚠️ |
Partial |
In SD tests |
| CT-TCP-001 |
TCP Connection Establish |
✅ |
test_tcp_transport.cpp |
|
| CT-TCP-002 |
TCP Message Streaming |
✅ |
test_tcp_transport.cpp |
|
| CT-TCP-003 |
TCP Magic Cookie |
❌ |
|
NOT IMPLEMENTED |
| CT-TCP-004 |
TCP Nagle Disabled |
❌ |
|
NOT IMPLEMENTED (spec: feat_req_someip_325) |
| CT-TCP-005 |
TCP Connection Recovery |
✅ |
test_tcp_transport.cpp |
|
| CT-TP-001 |
Large Message Segmentation |
✅ |
test_tp.cpp |
MultiSegmentMessage |
| CT-TP-002 |
Full Message Reassembly |
✅ |
test_tp.cpp |
SegmentReassembly |
| CT-TP-003 |
Out-of-Order Handling |
⚠️ |
Partial |
|
| CT-RPC-001 |
Method Registration |
✅ |
test_rpc.cpp |
|
| CT-RPC-002 |
Request/Response Flow |
✅ |
test_rpc.cpp |
|
| CT-SD-001 |
FindService Processing |
⚠️ |
Partial |
|
| CT-SD-002 |
OfferService Broadcast |
⚠️ |
Partial |
|
Status: 🟡 ~60% Complete
Level 3: Integration Testing Status
| Plan ID |
Test Case |
Implemented |
Location |
Notes |
| IT-RPC-001 |
Echo Service E2E |
✅ |
test_echo_integration.py |
Full implementation |
| IT-RPC-002 |
Calculator Service |
✅ |
test_integration.py |
|
| IT-RPC-003 |
Multiple Clients |
✅ |
test_integration.py |
|
| IT-RPC-004 |
Large Payload via TCP |
✅ |
Examples + tests |
|
| IT-RPC-005 |
Large Payload via TP |
✅ |
tp_example |
|
| IT-SD-001 |
Full Discovery Cycle |
✅ |
test_integration.py |
|
| IT-SD-002 |
Multiple Services Discovery |
⚠️ |
Partial |
|
| IT-SD-003 |
Service Timeout |
⚠️ |
Partial |
|
| IT-SD-004 |
Dynamic Service Start |
✅ |
test_integration.py |
|
| IT-SD-005 |
Eventgroup Subscription |
✅ |
test_integration.py |
|
| IT-EVT-001 |
Event Publish/Subscribe |
✅ |
test_events.cpp |
|
| IT-EVT-002 |
Multiple Eventgroups |
⚠️ |
Partial |
|
| IT-TP-001 |
128KB Message via TP |
✅ |
tp_example |
|
Status: 🟢 ~85% Complete
Level 4: System Testing Status
| Plan ID |
Test Case |
Implemented |
Location |
Notes |
| ST-CONF-001 |
Header Format Compliance |
✅ |
conformance_test.py |
|
| ST-CONF-002 |
Big-Endian Verification |
✅ |
conformance_test.py |
|
| ST-CONF-003 |
Message Type Compliance |
✅ |
specification_test.py |
|
| ST-CONF-004 |
Return Code Compliance |
⚠️ |
Partial |
|
| ST-CONF-005 |
SD Format Compliance |
⚠️ |
Partial |
|
| ST-CONF-006 |
TP Format Compliance |
⚠️ |
Partial |
|
| ST-ROB-001 |
Malformed Message Handling |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-002 |
Unknown Service Response |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-003 |
Unknown Method Response |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-004 |
Protocol Version Mismatch |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-005 |
Interface Version Mismatch |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-006 |
Invalid Length Handling |
❌ |
|
NOT IMPLEMENTED |
| ST-ROB-007 |
TP Error Recovery |
❌ |
|
NOT IMPLEMENTED |
| ST-PERF-001 |
Message Throughput |
⚠️ |
Partial |
In performance tests |
| ST-PERF-002 |
Serialization Latency |
❌ |
|
NOT IMPLEMENTED |
| ST-PERF-003 |
Request/Response Latency |
⚠️ |
Partial |
|
Status: 🔴 ~40% Complete
Level 5: Acceptance Testing Status
| Plan ID |
Acceptance Criteria |
Implemented |
Notes |
| AC-INT-001 |
Wireshark dissection |
⚠️ |
Manual only |
| AC-INT-002 |
Reference implementation interop |
❌ |
NOT IMPLEMENTED |
| AC-SPEC-001 |
CRITICAL requirements |
🟡 |
~85% |
| AC-SPEC-002 |
HIGH requirements |
🟡 |
~70% |
| AC-FUNC-001 |
Request/Response RPC |
✅ |
|
| AC-FUNC-002 |
Fire&Forget RPC |
✅ |
|
| AC-FUNC-003 |
Events/Notifications |
✅ |
|
| AC-FUNC-004 |
Fields (getter/setter) |
⚠️ |
Partial |
| AC-FUNC-005 |
Service Discovery |
✅ |
|
| AC-FUNC-006 |
TP segmentation |
✅ |
|
| AC-QUAL-001 |
No memory leaks |
⚠️ |
Not automated |
| AC-QUAL-002 |
No crashes on bad input |
❌ |
NOT IMPLEMENTED |
| AC-DOC-001 |
APIs documented |
✅ |
|
| AC-DOC-002 |
Requirements traced |
✅ |
This document |
Status: 🔴 ~50% Complete
Priority Implementation Backlog
🔴 Critical (Must Have)
| Priority |
Test ID |
Description |
Effort |
Status |
| 1 |
UT-MSG-009 |
Minimum Length Validation |
Low |
❌ TODO |
| 2 |
ST-ROB-001 |
Malformed Message Handling |
Medium |
❌ TODO |
| 3 |
ST-ROB-006 |
Invalid Length Handling |
Medium |
❌ TODO |
| 4 |
UT-SER-005-008 |
Signed/Float Types |
Medium |
✅ DONE |
| 5 |
UT-SD-006 |
Reboot Flag Logic |
Medium |
❌ TODO |
🟡 High (Should Have)
| Priority |
Test ID |
Description |
Effort |
Status |
| 6 |
UT-TP-002 |
Offset Field Encoding |
Low |
❌ TODO |
| 7 |
UT-TP-006 |
Segment Length Multiple |
Low |
❌ TODO |
| 8 |
CT-TCP-003 |
TCP Magic Cookie |
Medium |
❌ TODO |
| 9 |
UT-SD-004-005 |
SD Session ID Tests |
Medium |
❌ TODO |
| 10 |
ST-PERF-002 |
Serialization Latency |
Medium |
❌ TODO |
🟢 Medium (Nice to Have)
| Priority |
Test ID |
Description |
Effort |
Status |
| 11 |
UT-SER-013 |
Struct Serialization |
High |
✅ DONE |
| 12 |
UT-SER-014 |
Struct with Length Field |
Medium |
❌ TODO |
| 13 |
UT-SER-017 |
Union/Variant |
High |
❌ TODO |
| 14 |
UT-SER-019-020 |
UTF-16/BOM Support |
Medium |
❌ TODO |
| 15 |
AC-INT-002 |
Cross-stack Testing |
High |
❌ TODO |
| 16 |
AC-QUAL-001 |
Memory Leak CI |
Medium |
❌ TODO |
Test Coverage Metrics
Code Coverage (Current Estimate)
| Component |
Line Coverage |
Branch Coverage |
Status |
| someip-core |
~90% |
~85% |
🟢 |
| someip-serialization |
~75% |
~65% |
🟡 |
| someip-sd |
~80% |
~70% |
🟡 |
| someip-tp |
~85% |
~75% |
🟢 |
| someip-transport |
~85% |
~80% |
🟢 |
| someip-rpc |
~80% |
~70% |
🟡 |
| someip-events |
~85% |
~75% |
🟢 |
Specification Coverage
| Spec Section |
Requirements |
Tested |
Coverage |
| Message Format |
78 |
65 |
83% |
| Serialization |
65 |
35 |
54% |
| Transport Bindings |
42 |
38 |
90% |
| RPC Protocol |
48 |
40 |
83% |
| Service Discovery |
156 |
95 |
61% |
| Transport Protocol |
37 |
28 |
76% |
| Error Handling |
28 |
12 |
43% |
How to Update This Document
- After implementing a test, change status from ❌ to ✅
- Add the actual test name in the "Actual Test Name" column
- Update the completion percentage
- Move items from "Priority Backlog" to completed when done
- Run coverage analysis and update metrics
Commands
# Run all tests and generate coverage
python tests/run_tests.py --all --generate-coverage-report
# Count implemented tests
cd build && ctest -N | grep -c "Test #"
# Check specific test file
grep -c "TEST\|TEST_F" tests/test_*.cpp
Revision History
| Date |
Author |
Changes |
| 2025-12-14 |
Auto-generated |
Initial status from codebase analysis |
This document tracks the implementation status of tests defined in SOMEIP_ACCEPTANCE_TEST_PLAN.md