A TTCN-3 nyelv alapvető szemantikus és fordítási egysége a modul. A modulnak két, szintaktikailag jól elkülönülő része van, a definíciós illetve a control rész.
A modul definíciós részében szerepelhetnek:
A modulok control része szintén két részre bontható, ez a lokális definíciók, illetve a testcase futtatási rész (execute parancs segítségével). Lokális definíciók csak a control részből láthatóak, azonban az adott modul definíciós részében szereplő komponensek a teljes modulban használhatóak.
Lehetőség nyílik továbbá az egyes deklarációk és definíciók láthatóságának megadására. A public, private és friend módosítók viselkedése azonos a C++-ban megszokottal. A nyelvben a modulok közötti láthatóságot az import kulcsszóval módosíthatjuk. Lehetőség van egy modul teljes publikus tartalmának importálására, ugyanakkor megadhatunk szűkítéseket is (például importálandó eljárásak név szerint felsorolása vagy összes template importálása).
Azonosítók a teljes scope hierarchiában egyediek kell legyenek, amennyiben egy scope-ben ez mégsem teljesül úgy az fordítási idejű hibát eredményez.
A TTCN3 nyelv legmagasabb szintű egysége a modul, melyet nem lehet sub-modulokra bontani. Bármely modul importálhat definiciókat más modulokból, illetve a moduloknak lehetnek modulparaméterei. Nincsenek globális változók.
A TTCN3 nyelv kilenc hatókört különböztet meg:
Minden láthatósági kör opcionális deklarációkból áll. Ugyan nincsenek globális változók, de a modulok definíciós részében deklarált változók globálisan láthatóvá tehetők a modul importálásával. A definíciós részben deklarált azon változók, melyek nem valamilyen másik hatókör részei az adott modul bármely más részében használathatóak (függvények, testcase-ek, altstep-ek). A modul kontroll részében definiált változók csak lokálisan használhatóak (a kontroll részben). A teszt komponensekben létrehozott definíciók használhatóak minden olyan komponens esetében, mely kiterjeszti őt, illetve minden olyan függvényben, testcase-ben, altsetp-ben, amelyeknek a runs on klózja az adott komponens vagy az őt kiterjesztő komponens. A testcase-ek, alstep-ek és függvények önálló láthatósági köröket képeznek. A bennük létrehozott deklarációk lokálisak, csak az ő törzsükben láthatóak, nincs köztük hierarchikus összefüggés. Utasításblokkokban lévő deklarációk érvényességi köre, csak az adott utasitásblokkban érvényes, még akkor is ha ezek valamilyen függvény, testcase, altstep törzsében találhatóak. Az utasitásblokkok és a beágyazott utasításblokkok közt hierarchikus összefüggés van (a beágyazott utasításblokkban láthatóak a „külső” utasításblokk definíciói).
A modul definíciós részében a definíciókat csoportokba(group) foglalhatjuk. A definíciók csoportosításának célja a kód olvashatóságának segitése, valamint a modul logikai struktúrájának létrehozása (amennyiben szükséges). Csoportokon belül további csoportok hozhatóak létre, melyekre szükség esetén ponttal elválasztva tudunk hivatkozni. Definíciós csoportot minden olyan helyen létrehozhatunk, ahol a definiálás megengedett. A csoportok nem rendelkeznek hatáskörrel. A csoportazonosítóknak nem kell egyedieknek lenni, kivétel a legfelső szinte lévő csoportok csoportazonosítói, valamint az azonos szinten lévő alcsoportok azonosítói. A csoportok minden esetben publikus láthatóságúak.
A legfelső szintű modul definíciók és az import definíciók láthatósággal rendelkeznek, amelyeket explicit módon megadhatunk. Alapértelmezetten mindegyik public láthatóságú, kivétel az importált és a friend definíciók. Az importált definíciók alapértelmezetten private láthatóságúak, a friend definíciók szintén, és ez nem is módosítható. A csoport definíciól public láthatóságúak. A láthatóság szabályozza, hogy egy legfelső szintű definíció valamint egy import állítás importálható más modul által.A public láthatóságú definíciók importálhatóak más modulok által. A friend típusú definíciók csak friend modulok által importálhatóak, mig a private láthatóságúak nem importálhatóak más modulokba.