Software Testing: Lecture slides and notes

This page has all the lecture material used in the course classified by topic. As the course develops some of this material will be augmented with commentaries. You can see the 2009-10 slides here. The slides were revised in 2010.

Software Testing — Lecture Notes and Readings
Topic Lecture Notes / Description Readings Resources / Tutorials
Introduction 1. Software Testing: Overview

This lecture provides a general introduction to the Software Testing course.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 1, Software Test and Analysis in a Nutshell SLIDES
  • Textbook (Pezzè and Young): Chapter 2, A Framework for Test and Analysis SLIDES
  • Whittaker, J.A., What is software testing? And why is it so hard?, IEEE Software, vol.17, no.1, pp.70-79, Jan/Feb 2000. [DOI link]

Suggested Readings

  • Butler, R.W.; Finelli, G.B., The infeasibility of quantifying the reliability of life-critical real-time software, IEEE Transactions on Software Engineering, vol.19, no.1, pp.3-12, Jan 1993. [DOI link]
  • Bev Littlewood and Lorenzo Strigini. 1993. Validation of ultrahigh dependability for software-based systems. Commun. ACM 36, 11 (November 1993), 69-80. [DOI link]
Unit test tools 2. Tools for Unit Test — JUnit

This lecture introduces the basic concepts of Unit Testing, and how they are supported by JUnit a framework for writing tests. It shows examples how JUnit is supported by Eclipse IDE.

[Slides]

Required Readings

  • JUnit Test Infected: Programmers Love Writing Tests — an introduction to JUnit. [URL]
  • Using JUnit With Eclipse IDE — an O'Reilly article. [URL]
  • Unit Testing in Jazz Using JUnit — an NCSU Open Lab article on using JUnit with Eclipse. [URL]

Suggested Readings

  • Michael Olan. 2003. Unit testing: test early, test often. J. Comput. Small Coll. 19, 2 (December 2003), 319-328. [URL]
Getting started with Eclipse and JUnit

Activity: to start using JUnit within Eclipe — review and try the example of defining tests for a Triangle class.

Video: this video tutorial shows how to create a new Eclipse project and start writing JUnit tests first.

Lifecycle 3. Testing in the Lifecycle

This lecture discusses Software Testing with respect to different software development proceses and relevant factors (e.g. risk, cost, etc.).

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 4, Test and Analysis Activities within a Software Process SLIDES
  • Textbook (Pezzè and Young): Chapter 20, Planning and Monitoring the Process SLIDES

Suggested Readings

  • Gregory M. Kapfhammer, Software Testing, In A. Tucker (Ed.), Second Edition, The Computer Science and Engineering Handbook, Chapter 105, CRC Press, 2004. [URL]
  • Mary Jean Harrold. 2000. Testing: a roadmap. In Proceedings of the Conference on The Future of Software Engineering (ICSE '00). ACM, New York, NY, USA, 61-72. [DOI link]
  • Winokur, M.; Grinman, A.; Yosha, I.; Gallant, R.; Measuring the effectiveness of introducing new methods in the software development process, Euromicro Conference, 1998. Proceedings. 24th , vol.2, no., pp.800-807 vol.2, 25-27 Aug 1998. [DOI link]
Preparatory Activity — Understanding the Practical

Activity: to become familiar with the first Software Testing Practical, identify any relevant questions, think about what kind of information you might need to know, and to look at the code you are about to test.

Black-box testing 4. Specification-Based Testing 1

This lecture introduces functional testing.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 10, Functional Testing SLIDES
  • T. J. Ostrand and M. J. Balcer. 1988. The category-partition method for specifying and generating fuctional tests. Commun. ACM 31, 6 (June 1988), 676-686. [DOI link]
Black-box testing 5. Specification-Based Testing 2

This lecture is concerned with model-based testing, that is, coverage criteria and test cases generated from relevant software models like, e.g., control flow graphs, finate state machines and grammars.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 5, Finate Models SLIDES
  • Textbook (Pezzè and Young): Chapter 11, Combinatorial Testing SLIDES
  • Textbook (Pezzè and Young): Chapter 14, Model-Based Testing SLIDES

Suggested Readings

  • David Harel, Statecharts: a visual formalism for complex systems, Science of Computer Programming, Volume 8, Issue 3, June 1987, pp. 231-274. [DOI link]
  • John Rushby, Using model checking to help discover mode confusions and other automation surprises, Reliability Engineering & System Safety, Volume 75, Issue 2, February 2002, pp. 167-177. [DOI link]
Tutorial 3

Tutorial 3 is a run-through of category-partition testing using an example from the textbook.

White-box testing 6. Structural Testing

This lecture introduces the basic concepts of structural testing. In particular, it discusses basic structural coverage criteria: Statement Coverage, Branch Coverage, Condition Coverage and Path Coverage.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 12, Structural Testing SLIDES

Suggested Readings

  • Hong Zhu, Patrick A. V. Hall, and John H. R. May. 1997. Software unit test coverage and adequacy. ACM Comput. Surv. 29, 4 (December 1997), 366-427. [DOI link]
White-box testing 7. Data Flow Coverage 1

This lecture introduces the basic concepts of Data Flow Coverage.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 6, Dependence and Data Flow Models SLIDES
  • Textbook (Pezzè and Young): Chapter 13, Data Flow Testing SLIDES
  • P. G. Frankl and E. J. Weyuker. 1988. An Applicable Family of Data Flow Testing Criteria. IEEE Trans. Softw. Eng. 14, 10 (October 1988), 1483-1498. [DOI link]

Suggested Readings

  • L. A. Clarke, A. Podgurski, D. J. Richardson and Steven J. Zeil, A Formal Evaluation of Data Flow Path Selection Criteria, IEEE Transactions on Software Engineering, 15 (11), November 1989, pp. 1318-1332. [DOI link]
  • Lori A. Clarke, Andy Podgurski, Debra J. Richardson, and Steven J. Zeil. 1985. A comparison of data flow path selection criteria. In Proceedings of the 8th international conference on Software engineering (ICSE '85). IEEE Computer Society Press, Los Alamitos, CA, USA, 244-251. [URL]
  • S.C. Ntafos. 1988. A Comparison of Some Structural Testing Strategies. IEEE Trans. Softw. Eng. 14, 6 (June 1988), 868-874. [DOI link]
  • Sandra Rapps and Elaine J. Weyuker. 1982. Data flow analysis techniques for test data selection. In Proceedings of the 6th international conference on Software engineering (ICSE '82). IEEE Computer Society Press, Los Alamitos, CA, USA, 272-278. [URL]
Tutorial 4

Tutorial 4 is concerned with Structural Testing.

Adequacy 8. Data Flow Coverage 2

This lecture discusses and compares the main coverage criteria.

[Slides]

Required Readings

  • Textbook (Pezzè and Young): Chapter 9, Test Case Selection and Adequacy SLIDES
Tutorial 5

Tutorial 5 is concerned with Data Flow Testing.

Test adequacy 9. Mutation Testing

This lecture introduces mutation testing.

[Slides]

Required Readings
  • Textbook (Pezzè and Young): Chapter 16, Fault-Based Testing SLIDES
  • Yu-Seung Ma, Jeff Offutt and Yong-Rae Kwon, MuJava: An Automated Class Mutation System. Journal of Software Testing, Verification and Reliability, 15(2):97-133, June 2005. [DOI link]
  • A. Jefferson Offutt, Ammei Lee, Gregg Rothermel, Roland H. Untch, and Christian Zapf. 1996. An experimental determination of sufficient mutant operators. ACM Trans. Softw. Eng. Methodol. 5, 2 (April 1996), 99-118. [DOI link]
Tutorial 6

Tutorial 6 is concerned with Mutation Testing.

Integration 10. Integration Testing

This lecture introduces integration testing.

[Slides]

Required Readings
  • Textbook (Pezzè and Young): Chapter 21, Integration and Component-based Software Testing SLIDES
  • Textbook (Pezzè and Young): (beginning of) Chapter 15, Testing Object-Oriented Software SLIDES
  • Robyn R. Lutz, Analyzing Software Requirements Errors in Safety-Critical, Embedded Systems, In Proceedings of the IEEE International Symposium on Requirements Engineering. IEEE Computer Society Press, Jan, 1993. [DOI link]
  • Jeff Offutt, Aynur Abdurazik and Roger T. Alexander (2000). An Analysis Tool for Coupling-based Integration Testing, The Sixth IEEE International Conference on Engineering of Complex Computer Systems (ICECCS '00), pp 172--178. [DOI link]
Tutorial 7

Tutorial 7 is concerned with Integration Testing.

Regression 11. Regression Testing

This lecture introduces regression testing.

[Slides]

Required Readings
  • Textbook (Pezzè and Young): Chapter 22, System, Acceptance, and Regression Testing SLIDES
GUI Testing 12. GUI Testing

This lecture introduces GUI testing.

[Slides]

Suggested Readings
System testing 13. System Testing

This lecture discusses different software features to be tested at the system level.

[Slides]

System testing 14. Higher-order Testing

This lecture discusses aspects of higher-order testing. This extends/relates to System Testing.

[Slides]

Review 15. Course Review

This lecture reviews the Software Testing course.

[Slides]

Required Readings
  • Antonia Bertolino (2007). Software Testing Research: Achievements, Challenges, Dreams. In 2007 Future of Software Engineering (FOSE '07). IEEE Computer Society, Washington, DC, USA, 85-103. [DOI link]

This page is maintained by Stuart Anderson (soa@staffmail.ed.ac.uk)


Home : Teaching : Courses : St : 2011-12 

Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk
Please contact our webadmin with any comments or corrections. Logging and Cookies
Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh