Introduction to Software Testing

Dr. Helene Waeselynck
LAAS-CNRS, Toulouse

12 hours, 3 credits

October 9 - October 11, 2012

Dipartimento di Ingegneria dell'Informazione: Elettronica, Informatica, Telecomunicazioni, largo L. Lazzarino, meeting room

Contacts: Prof. Cinzia Bernardeschi

   

Abstract

Software testing is a dynamic verification technique. It involves exercising a program with valued inputs, observing the outputs supplied in response to the inputs, and elaborating a pass/fail verdict. It is the most widespread approach used for quality assurance in the industry, and typically consumes as much as 40-50% of the total software development effort. Software testing is also a very active research field enjoying an excellent visibility at all major software engineering venues.

The course presents the fundamentals of software testing. It provides an understanding of testing problems, and covers the major test design methods. A practical perspective is adopted, with small examples illustrating the methods. More advanced topics are also introduced via a set of research papers to be analyzed by students.

Syllabus

  • Fundamentals of testing: role of testing throughout the software life cycle, test selection and oracle problems, test integration strategy, classification of test methods.
  • Usual structural & functional methods: control and data flow criteria, predicate coverage, domain testing, model-based testing (e.g., from finite state machines, labeled transition systems).
  • Mutation analysis: principle, examples of usage.
  • Non-deterministic testing: uniform profile, operational profile, profiles based on structural and functional criteria, search-based testing.