Welcome to the TUES website at UT-Dallas
According to a study commissioned by the National Institute of Standards and Technology in 2002, software bugs cost the U.S. economy an estimated $59.5 billion annually, or about 0.6 percent of the nation’s gross domestic product (GDP). The same study also found that more than one third of these costs, or an estimated $22.2 billion, could be eliminated by an improved testing infrastructure. These numbers would be significantly higher if the study were conducted today.
It is notable that software testing continues to be the primary approach used in practice to ensure the development of high quality software. It is also estimated that more than 60% of the development cost is spent on testing for many software systems. However, a large part of the problem is not as much the amount of testing that is performed on software, as much as it is “who” the software is tested by, and “how” these testers go about doing it. Many personnel responsible for software testing are software engineers with a very basic background in testing, mostly restricted to the application of a small set of testing tools. A simple knowledge of how to apply a few testing tools cannot hope to substitute for a strong foundation in software testing principles and methodologies. The fact of the matter is that a significant number of the people responsible for testing the software that we rely on may not be adequately prepared for the task at hand.
If we were to trace this deficiency in software testing background back to its source, we would end up at the educational institutions responsible for teaching and training people to test software.
Thus, if today’s software testers are not sufficiently armed with the knowledge required to test software well, then it is most likely because they have not been adequately trained to do so. This is one of the root causes of the current state of software testing, and it is here that we need to begin to remedy the problem.
This project focuses on the teaching of software testing principles and techniques at appropriate stages of the undergraduate Computer Science and Software Engineering education, with basic skills introduced in beginner programming courses, and more advanced topics covered at the high level courses. It not only encourages students to invest more time in testing, and consequently produce programs with fewer bugs, but also to establish a correct concept and realize that testing is actually an integral part of the programming process rather than some afterthought conducted in an ad hoc manner.
An important innovation of this project is the development of a set of modularized course material, not based on specific testing techniques or tools, but rather on the various aspects of software testing. There is a many-to-many relationship between courses and modules such that educational material can be selectively applied to any appropriate course in a minimally intrusive and non-restrictive way. This allows instructors to use their own discretion to determine which parts of each module are appropriate for their students. This project provides appropriate training in software testing to students, not only those who choose software testing as a profession, but also those who might work in any aspect of software development. It helps universities produce a well educated and well trained workforce that is critical to the success of the software industry.