MET CS 773 Software Testing and Quality Assurance

Last updated November 3, 2004: Last few changes often in red font

Background of the Instructor changed if this is red Learning Objectives changed if this is red
Contacting Eric Braude changed if this is red Plagiarism Warning changed if this is red
Evaluation of Students changed if this is red Policies – Miscellaneous changed if this is red
Forums: Past and Present changed if this is red Project Structure and Evaluation changed if this red
Home Page of Eric Braude changed if this is red Textbooks and Materials changed if this is red
Homework and Due Dates changed if this is red Topics and Class Dates changed if this is red

Description from Catalog:

This course covers the theory and practice of quality assurance and testing for each step of the software development cycle.  It introduces, defines, and contrasts the two pillars of software quality: Verification and Validation.  The course covers test case design techniques, test coverage criteria, and tools for static and dynamic analysis.  IEEE standards for test design and documentation are included.  The course explains test-driven development and its relation with validation in the small and the large. QA for maintenance and legacy applications are covered.  The course explores experimental and contemporary approaches to quality such as those inherent in agile development.  Laboratory course. 4 cr


Prerequisites:

(1)     MET CS 566 or equivalent experience

(2)   MET CS 673 (Software Engineering) or equivalent experience in software development.


Learning Objectives

  • Develop a quality software mindset
  • Understand how to program with testing in mind
  • Be able to plan for testing
  • Be able to test in the small
  • Be able to test in the large

Textbook and Materials

  • Recommended: JUnit in Action by Massol; Manning 2003, ISBN 1-930110-99-5 ($25.17 at Walmart.com) (ask me about this before buying)
  • Recommended (not required): Software Testing: A Craftsman’s Approach, Second Edition, by Paul Jorgensen, ISBN: 0849308097  (ask me about this before buying)
  • Notes will be distributed for each class

Project Structure and Evaluation

Students will be required to write and present a paper that will contain a specialized aspect of test or QA implementation.  The paper will concern a testing method, theory or tool.  Examples include: Testing Web applications, automated testing, testing real-time applications, QA tools, and bug tracking environments.

The project will be in two phases.  The proposal phase will count for 20% of the grade and the remainder 80%.


Evaluation of Students

The allocation of grades will be as follows.

Exercises:        60%

Project:             40%

Students may be given a number of pass/fail assignments throughout the semester.  A “Pass” grade is required on all of these.  A grade of A or A+ may be given for a pass/fail homework when the student has gone well beyond the requirements of the problem and has performed exceptionally.

Late homework will not be accepted unless there is a reason why it was impossible to perform the work in time given work and emergency conditions.  In that case, the written reason should be attached to the homework, which will be graded on a pass/fail basis if the reason is accepted by me.


Warning concerning plagiarism

Please cite all references and uses of the work of other.  All instances of plagiarism must be reported to the College for action.  e-mail, see or call me if you have any doubts about the proper use of others’ material. In any case, clearly acknowledge all sources in the context they are used, including code, of course.


Syllabus

Class Date Topic Chapters / Notes Project:

(The dates in this column are approximate: See “homework dates due” section for official dates)

1 9/13 Quality and Ethics in Software Engineering

Creating a software application involves many error-prone steps and many requirements that are unknown at the outset.  We explore the implications of this for quality and developer ethics.

Notes .
2 9/20
Process Quality

Quality Assurance Plans; CMM

Notes
3 9/27 QA and Metrics in Project Management

Advisability of metrics, define several, and investigate their practicality; verification vs. validation

Notes Identify paper topics: assigned.
4 10/4
QA in Requirements

How to evaluate the quality of an SRS; discuss embedding tests into an SRS

Behavioral testing in the absence of requirements.

Notes Paper proposal due

Requirements QA assigned

5 10/18
QA in Designs

Ways to measure the effectiveness of design; Design reliability (e.g., through components and re-use); error processing and security assurance processing

Notes Design QA assigned
6 10/25
Testing Principles

This class covers the goals and basis for testing.

Notes Test-driven implementation assigned
7 11/1
Verifying Implementation

Ways to assess the quality of implementations outside of testing; test-driven development

Notes Intermediate paper due

Final paper form assigned

8 11/8 Unit Testing

Introduction to unit (part) testing. Techniques of unit testing.

Notes Unit test assignment
9 11/15 To be determined
10 11/22
Post-unit Testing  I

Regression, interface, integration, system, acceptance and installation testing.

Notes
11 11/29 Post-unit Testing  II Notes
12 12/6
QA in Maintenance

Refactoring

Principles of maintenance

Maintenance quality techniques; refactoring as a maintenance and quality tool.

13 12/13 Presentations Notes Final paper due
14 12/20 To be determined

Forums — past and present

Spring 2004:  Group home page: http://groups.yahoo.com/group/773Sp04

Summer 2004:  Group home page:http://groups.yahoo.com/group/773Su04

Fall 2004: Group home page: http://groups.yahoo.com/group/773F04/ Group email: 773F04@yahoogroups.com