- Academic Programs
- Our Department
- Student Life
- Alumni & Industry
By the end of this course, it is expected that the students will be able to:
According to the laws of software evolution (1) a software system must continually evolve over time to remain useful/functional, and (2) as a software system evolves, its complexity increases unless work is done to maintain it. Software maintenance is believed to consume as high as 80% of the total software life cycle costs, and is estimated at around $70 billion annually. On the other hand, software failures have been estimated to costs as high as $60 billion annually, making software testing an essential component of software engineering.
This course is a study of the state-of-art methodologies, tools and techniques to support software developers during their software testing and maintenance tasks.
The aim of this course is to provide the students with knowledge and hands-on experience in testing and maintaining software applications as well as understanding of current research topics in this area, and an opportunity to critically write and review related research papers.
The course will cover fundamental concepts and challenges related to testing and maintenance with emphasis on: renovation, migration, reverse engineering, impact analysis, dynamic analysis, test cast generation, test oracles, coverage and adequacy analysis, mutation testing, search-based testing, web testing, GUI testing, fault localization, regression testing, and automation and tool building.