Software Testing Techniques (CIS640) Course
This is the content of Software Testing Techniques (CIS640) course offered at Kansas State University in Spring'16 and Spring'17. The course is intended for upper-level undergraduates (seniors) and beginning graduates. It requires students to have taken courses on programming, logic, software design, and discrete mathematics.
Aspects of the Course
- Class room instruction revolved around open questions posed to students. [Socratic Method]
- Students answers were collected on the whiteboard and discussed to arrive at "expert" answers.
- Students directed instructor in live coding sessions to arrive at "expert" solutions.
- Sketch slides were used in class to drive discussion. These slides were extended with highlights from classroom discussion (marked by *) and posted after class.
- Homework questions were seeded with ambiguity to simulate specification elicitation to resolve ambiguity and, consequently, identify testing boundaries.
- Textbooks were not required as there were none that described most of topics covered in the course.
- Few fringe/newer topics such as mutation testing and BDD were discussed.
- Content slide decks interspersed with answers collected in class and answers for homework.
- Quiz question bank.
- Homework assignments along with solutions and scripts to evaluate submissions.
- Extra credit assignments along with solutions and scripts to evaluate submissions.
- Mid-term and end-term exams with solutions.
- Basic Concepts and Taxonomy of Dependable and Secure Computing by Algirdas Avizienis, Jean-Claude Laprie, Brian Randell, and Carl Landwehr. IEEE Transactions of Dependable and Secure Computing, Vol 1, No 1, Jan-Mar 2004.
- Parameterized Unit Tests by Nikolai Tillmann and Wolfram Schulte. ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE) 2005.
- An Introduction to Property-based Testing (Part 1)
- An Introduction to Property-based Testing (Part 2)
- Race Conditions, Distribution, and Interactions -- Testing the Hard Stuff and Staying Sane
- QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs by Koen Claessen and John Hughes. ACM SIGPLAN International Conference on Functional Programming (ICFP) 2000.
- Python 3.5
- PyTest 3.0.6
- Pytest-Finer-Verdicts 1.0.4
- Pytest-Html 1.13.0
- Hypothesis 3.7.0
- Pytest-Cov 2.4.0
- Pytest-Timeout 1.2.0
- Behave 1.2.5
- Software Testing: A Craftsman's Approach, 4ed by Paul C. Jorgensen. This book provides a good description of various concepts about software testing.
- Software Testing: Concepts and Operations by Ali Mili and Fairouz Tchier. This book provides a more rigorous treatment of concepts of software testing.
- Testing Python: Applying Unit Testing, TDD, BDD, and Acceptance Testing by David Sale. This book provides a good overview of most of the Python-based tools that we will use to explore software testing.
- Dive into Python 3 by Mark Pilgrim. This (free) book serves as a good introduction to Python language.
- Learning Python (5ed), Fluent Python, and A Whirlwind Tour of Python are other books about Python.
I hope folks will find this useful.
Copyright (c) 2016, Venkatesh-Prasad Ranganath
This work is licensed under a Creative Commons Attribution 4.0 International License.
Author: Venkatesh-Prasad Ranganath