Reference

Complete guide to TS 38.523 test cases

Structure of 3GPP TS 38.523 for NR: the -1/-2/-3 split, clause numbering, how test case IDs map to procedures, and which subsets matter per device class.

10 min read

TS 38.523 is the 5G NR protocol conformance specification. If you only remember one thing: the part number tells you what kind of document you are reading.

DocumentContent
TS 38.523-1Protocol test case definitions (prose) — what each case does
TS 38.523-2Applicability — PICS-driven selection tables
TS 38.523-3The executable TTCN-3 abstract test suite

Clause map

texttext
4    Idle mode operations (cell selection, reselection, PLMN)
5    Layer 2 (MAC, RLC, PDCP, SDAP)
6    RRC (connection control, reconfiguration, measurement)
7    NAS / 5GMM and 5GSM (registration, sessions, security)
8    IMS / VoNR
9    NSA / EN-DC and multi-RAT
10   Positioning, MBS, and later-release features

Reading a test case ID

The ID is a clause path, not an arbitrary number. This is why a failure report citing TC_6_1_1_1 and clause 24.501:5.5.1.2.4 is immediately actionable: one names the test, the other names the requirement.

texttext
TC_6_1_1_1
 |   | | | +-- variant / sub-case
 |   | | +---- test purpose index
 |   | +------ sub-clause
 |   +-------- clause (6 = RRC)
 +------------ test case

Typical applicable counts

Device classApplicable NR cases (Rel-18)
NR SA only, single band, no IMS~380
NR SA + VoNR, single band~520
NR SA + NSA, multi-band~647
Full feature set incl. CA and slicing1,100+

noteDerive your own number rather than trusting these: aeon cases applicable --pics ./pics.yaml --count

Running the whole applicable set

On a physical tester this is a multi-week booking. On lane fan-out it is an overnight job, which is the practical reason cloud execution changes how often teams run the full set: from once per release to every night.

bashbash
aeon cases applicable --pics ./pics.yaml --release 18 --json > applicable.json
aeon exec run --cases-from applicable.json --build rc3 --lanes 12 --wait
aeon coverage show --build rc3 --release 18

Run this against a real SDR lane

The tester is a service, not a box. Push a build, reserve a lane, get a verdict.