CS 619 - Software Testing and Quality Evaluation

 

Credits: 3

 

Course Description

 

This course presents concepts and techniques for testing software and assuring its quality. Topics cover software testing at the unit, module, substem, and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Professor's note: The course will attempt to prepare students to test software in structured, organized ways. This course should provide practical knowledge of a variety of ways to test software, an understanding of some of the tradeoff's between testing techniques, and a feel for the practice of software testing and the research in software testing.

 

Needed Skills

 

Students should have had an undergraduate course in software engineering, CS 616, and/or software engineering experience. Also, students should have knowledge of graph theory and predicate logic.

 

Learning Outcomes

 

Students will learn about high level software testing concepts. They will learn to apply a number of detailed testing methods, such as application of the prime implicant coverage criteria to DNF representations. They will explore current topics such as Dataflow and Controlflow-base test adequacy criteria.

 

Week by Week Course Outline

 

This is a sample outline. Exact outline will be determined by the instructor offering this course.

 

Week Topics
1 Overview of Software Testing, background terminology and definitions
2 Graph coverage
3 Graph coverage
4 Graph coverage for code
5 Graph coverage for other artifacts
6 Use case graph coverage
7 Logic testing
8 More logic testing
9 Still more logic testing
10 Input space partitioning
11 DNF testing
12 Syntax testing, mutation analysis
13 Input structure testing (BNF)
14-15 Potpourri of topics

 

Examinations

 

Exact details about examinations in this course will be determined by the instructor offering the course. Typically there will be one in-class midterm and one in-class final examination. Specific details will be made available in the syllabus at the start of each semester in which the course is offered.

 

Grading

 

A student's grade will be determined by a weighted average of homework assignments, paper summaries, weekly quizzes, a midterm, and the final examination. The faculty offering the course will make the details available at the start of the course. A typical weighting is:

 

Weekly homework assignments/paper summaries - 33%
Weekly quizzes - 33%
Midterm - 17%
Final - 17%

 

Possible Textbooks

 

Paul Ammann and Jeff Offutt,
Coverage Criteria for Software Testing (in progress)
Web access will be given to this text.