Composing student assessments and tests is demanding and time-consuming, especially in technical disciplines, where tests tend to replace problem-oriented tasks. Many commercial and proprietary toolkits were developed to help teachers in these activities, which range from optical recognition scoring systems for standardized test forms, to specific software tools for test assembly based on random choice of questions from a database. In this paper we present the development of the software system "test" designed to help in frequent evaluations of knowledge for large groups with hundreds of students, performed by written tests. The system was initially designed and used for more than a decade in various implementations and technologies, for making and scoring tests for procedural programming courses that the authors teach. Through its development, a generalized conceptual model of the test with heterogeneous elements was designed, and supported by implementation of a class library testCore which represents a programming core of the "test" system. Functionality of the system includes definitions of multiple interdependent criteria for intelligent test composition performed by testGen component, as well as search and maintenance of tests, problems, and statistical analysis of students' results. The component testScore is designed to provide scoring methods on individual and group basis. Previously developed components testArs for optical recognition of scanned test forms and testMix for generating multiple versions of the same test by changing orders of questions and/or answers were integrated into the system. Tests can be exported to SCORM format or to Moodle, in order to provide students with interactive environment for knowledge testing. Possible improvements of the system include the use of genetic algorithms in automated test assembly, as well as introduction of parameterized problems, which can be especially convenient in the area of programming.