Execution traces produced by software systems during their operation can capture important runtime information, and thus are valuable sources for validating software functional properties. Automating the validation of such properties is currently achieved by writing test scripts, where most of the effort focuses on programming operations rather than specifying properties clearly. Improving this practice calls for domain-specific languages that can capture properties exhibited in traces at a higher abstract level. This paper presents a Test Behavior Language (TBL) that uses parameterized patterns as logical predicates to specify and validate trace-based properties abstractly but precisely. TBL has been used to automate the testing of several software systems, including a large telecommunication system. Initial results show that TBL is powerfulfor validating complex properties of these systems in real time, resulting in a big increase in the thoroughness of behavioral analysis and the number of bugs revealed. TBL also reduces the effort of script writing. TBL specifications range from 1/2 to 1/5 the size of their Tcl script counterparts, with a greater benefit realized where thorough trace analysis is needed.