
Software Quality Assurance and Testing Course description prof. A. C. (Alex) Telea
Overview of this document • For whom is this course • Contents • What you should know after • Assignment • Grading
For whom is this course • Software engineers (or people training to become one) • Interested in testing and maintenance • What you should know before: • Software (detailed) design experience • Good in at least one (object-oriented) language • Experience with small…midsize software projects • What will you know after: • how to efficiently design and apply a test suite • how to measure testability, maintainability(and a few other software metrics)
Contents • Several modules (subjects) • Mapping module-lecture not strictly 1-to-1 • Module 1: What is test engineering? • why do we need test engineering • how to model (and measure) quality • tests, bugs, errors, faults • testing from an economical perspective
Contents (cont.) • Module 2: Static testing techniques • software reviews and inspections • deskchecks and walkthroughs • formal verification • automated static analysis • Module 3: Design and implementation practices • architecture vs design • design quality predictors • metrics (size, complexity, fan-in/out, cohesion, …) • how to interpret software metrics
Contents (cont.) • Module 4: Structural (white box) testing • test categories (ordinary vs numerical code) • what to look for when testing • code coverage metrics (statement, branch, condition, path, loop, function, call, …) • testing strategies • Module 5: Behavioral (black box) testing • the need to reduce the # test cases • equivalence partitioning • boundary value analysis • timing and coordination
Contents (cont.) • Module 6: Additional testing strategies • integration testing (drivers and stubs) • stress testing • system testing • when to stop testing • Module 7: Test Management • testing styles (pragmatic, pioneer, analysis, facilitating) • test planning • testing models and standards (cost of poor quality, TMap, TPI, TMM)
Assignment • Grading based on a practical assignment: • You are given: • a real-world software tool (binary, source code, docs, input data) • You are asked to: • perform black-box (end-user level) and white-box (developer-level) testing on it • answer several specific questions on the testing and quality of the tool • write a report justifying all decisions made and obtained results
Assignment (cont.) What the software does: Image inpainting + = target image scratch image result image • Your task: • apply what you learn in the course to this software system! • test the software (design and apply tests) • assess the quality of the software
Assignment (cont.) • Way of working • Analyze the given software as if you were a real developer/tester in a real company • You can work in groups of max. two persons • you can use “pair programming” techniques • No lab sessions: software testing and quality assessment is not an “exercise”, but real individual work requiring time, patience, eye for detail • Be present at lectures: • many examples/details related to your project will be explained • you can ask questions on your assignment!
Grading • Based on your report • just as done in a real company • so your report should be detailed, complete, realistic • Report to be handed in after course • exact (strict) deadline will be communicated during lecture • Where you find all needed information: • website: www.cs.rug.nl/~alext/SQAT • slides, assignment details, software to work on, references • book: • A Practitioner's Guide to Software Test Design (Lee Copeland; Artech House, 2003) • can find open-source versions (see books.google.com) • myself: a.c.telea@rug.nl