CS 447 Software Testing, Quality Assurance, and Maintenance


Objectives

To introduce students to systematic testing of software systems, software verification, symbolic execution, software debugging, quality assurance, measurement and prediction of software reliability, project management, software maintenance, software reuse, reverse engineering.

Intended Audience

CS 447 is a course for CS major students, and is normally taken in a student's 4B term. This course is one of three that form the basis for the software engineering option. Students from other plans in Computer Science may elect to enrol in this course.

Related Courses

Prerequisites: CS 350; Computer Science students only.

Antirequisites: SE 465.

Related courses: CS 445, CS 447.

Cross-listed as: ECE 453.

Hardware/Software

Used in Course: Rational Rose, SDL, X-Runner, ITEX.

Assumed Background: Strong familiarity with UNIX, C/C++ and Tcl/Tk.

References

Software Testing, by Paul C. Jorgensen, CRC Press, 1995. Course notes.

Schedule

3 lecture hours, 1 tutorial hour, and 1 discussion hour (for project group meetings). Normally available in Winter.

Notes

  1. The Course Project builds on CS 446.

Outline

Introduction (2 hours)

Overview of the maintenance and testing activities within the software life cycle. Brief introduction to project related CASE tools and necessary background.

Software Maintenance (12 hours)

Major maintenance activities. Estimating maintenance costs and productivity. Predicting maintainability with software quality metrics. Economics and expectations of software reengineering. Principles of software reuse and reverse engineering techniques.

Project Management (3 hours)

Cost estimation. Project scheduling. Specification of work units.

Quality Assurance (4 hours)

Introduction, examination of various quality/complexity metrics. Software availability. Measurement and prediction of software reliability.

Non-execution based testing (5 hours)

Software verification, correctness proofs, symbolic execution, walkthroughs, inspections.

Testing in the Small (5 hours)

Testing strategies, including unit level, path and dataflow testing, domain testing, decision tables, and state-based testing. Coverage metrics. Impact of object-oriented testing. Effort, efficiency, and effectiveness concerns.

Testing in the Large (5 hours)

Integration (decomposition based, bottom-up, top-down, call graph based, path based, MM paths and atomic system functions). Validation and system testing (data, action, port, event and thread testing, structural and functional approaches, operational profiles). TTCN test suites.