This project is focusing on the teaching of software testing principles and techniques at appropriate stages of the undergraduate Computer Science and Software Engineering education. Basic skills are introduced in beginner programming courses, and more advanced topics are 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 modularized course material that is not based on specific testing techniques or tools, but rather according to 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 minimum 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 is providing appropriate training in software testing to students, not only to those who choose software testing as a profession, but also to those who might work in any aspect of software development. It is helping universities produce a well educated and well trained workforce that is critical to the success of the software industry.

Project Report

Software has become fundamental to our everyday lives. Regradless of age, gender, occupation, nationality, etc., each of us depends on software in some way. Yet software is far from defect-free, and very large sums of money are spend each year merely to fix and maintain defective software.According to a study by NIST in 2012, software bugs cost the U.S. economy an estomated $59.5 billion annually (about 0.6% GDP). The same study also found that more than one third of these costs could be eliminated by an improved testing infrastructure. Furthermore, these estimates have not taken into account potential deaths or catastrophic financial loss associated with failure of mission-critical sofware. These figures would be much higher if the study were conducted today. Altough software testing continues to be the primary approach used to ensure development of high quality software, this subject rarely appears in undergraduate curricula. Thus, it becomes the primary motivation to have a TUES project such as this one to emphasize the importance of teaching software testing in multiple computer science and software engineering undergraduate courses, with basic skills introduced in beginning programming courses and more advanced tioics covered in higher-level courses. Offering a single elective course is not a complete solution to the issue of software testing; these techniques require repeated practice before they become second nature. It is critical that testing sould be an integral part of student practices even for beginning programming assignments. Our objectives include the following: producing undergraduates with increased software testing competence to help them improve software quality at a lower cost, develping appropriate instructional materials that can be used in many courses, introducing testing principles and techniques into multiple undergraduate CS and SE courses, identifying the deficiencies of current testing techniques and tools, and exposing undergraduates to software testing with the intent of promoting further research in their graduate studies. The most significant outcome of our project is the creation of educational modules (including professionally edited videos and PowerPoint slide shows) for software testing that do not carter to one particular form of testing, a tool or a set of tools, or one particular course. Rather, our modules focus on the various aspects of software testing and can be applied across multitude of courses. We emphasize a many-to-many relationship between modeuls and courses, which means that a single module may be used in many courses, or one course may draw from multiple modules. In short, software testing will be taught in CS/SE courses spanning multiple years and not just in one or two upper-level courses. We also emphasize that not all topics in a module must be covered in every course that the module is employed. Instructors can use their own discretion to determine which of these topics are appropaite for their students. In this way, our modules are minimally intrusive and non-restrictive and are to be used in tandem with the existing course as opposed to detracting from it. Consdering that our budget is reduced by more than 50%, this project, altough listed as Type II, is closer to Type I, in wich the instructional practice across multiple institutions is not required. Nevertheless, we made our best effort to involve instructors from several institutions. In addition to the PI and co-PIs, there are 15 faculty members in computer science from UTD, and five members from four other institutions. These institutions, including a community college, an HBCU (Historically Black Colleges and Unversities), and a university with a small computer science department with limited resources, have used our materials to teach software testing in their classes. Based on quantitative data analyses using exam scores of software testing related questions, qualitative written comments, and responses to questionnaires via anonymous end-of-semester sureys, it is clear that students understand the importance of software testing and intend to use the techniques discussed in class to improve the quality of their programming assignments. Overall, more than 3,000 undergraduates from 13 courses at five dfferent universities have benefited from this project. Our project results have been disseminated widely via workshop/conference presentations such as IEEE CSEE&T (Conference on Software Engineering Education and Training), the annual ASEE (American Society for Engineering Education) conference, the annual ACET (Association for Computer Educators in Texas) conference, and the NSF project showcase at the annual ACM SIGCSE (Special Interest Group on Computer Science Education) conference. We have also produced videos of lectures on course modules developed by this project. These, along with the corresponding PowerPoint slides, are posted at http://paris.utdallas.edu/tues (the website designated for this project). This information not only increases the appeal of our program by helping students better understand software testing, but can also be used at any time as self-study material by those who did ot attend our software testing lectures.

Agency
National Science Foundation (NSF)
Institute
Division of Undergraduate Education (DUE)
Type
Standard Grant (Standard)
Application #
1023071
Program Officer
michael erlinger
Project Start
Project End
Budget Start
2010-09-01
Budget End
2014-08-31
Support Year
Fiscal Year
2010
Total Cost
$249,957
Indirect Cost
Name
University of Texas at Dallas
Department
Type
DUNS #
City
Richardson
State
TX
Country
United States
Zip Code
75080