URL study guide
https://studiegids.vu.nl/en/courses/2024-2025/X_400439Course Objective
After completing this course, students will be able to: 1. Appropriately use terms specific to the testing process. (Knowledge and understanding) (Applying knowledge and understanding) 2. Analyze a software-related failure or accident and report on it. (Applying knowledge and understanding) (Making judgements) (Communication) 3. Given a software requirements specification (SRS) and an existing software product that can be standalone or embedded in a device, design and implement a comprehensive test strategy and produce testing documentation according to modern software engineering standards. (Applying knowledge and understanding) (Making judgements) (Communication) (Lifelong learning skills) 4. Practice software testing in a professional, responsible, and ethical manner. (Lifelong learning skills) (Making judgements) 5. Identify possible discrepancies between software testing as taught in an academic context and software testing as it happens in real IT companies. (Knowledge and understanding) (Lifelong learning skills)Course Content
Testing is a method to improve software quality. Realistically, software testing is a trade-off between budget, time, and quality. It is impossible to test everything, so choices have to be made. Students learn how to make and justify these choices and systematically test a software product (standalone or embedded in a smart system). This course teaches students how to test software in the broad context of systems engineering. It provides an introduction to software testing with an emphasis on technical activities like test generation, selection, execution, and assessment, and on non-functional requirements such as safety and security. The course tries to answer a few questions, such as:- How to learn from accidents?
- How to design adequate test cases in a limited time?
- When to stop testing?
- How to test a safety-critical software-intensive system?
- What are the challenges of embedded software testing? A few guest lectures showing examples of testing in the industry area also planned. Topics: boundary value analysis, equivalence partitioning, combinatorial testing, model-based testing, control-flow testing, data-flow testing, mutation testing, regression testing, inspections, automated testing, integration testing, system testing, hazard analysis, fuzz testing, diagnostic tools for embedded systems testing.
Teaching Methods
Lectures and mandatory practical.Method of Assessment
The final grade is calculated as 0.5 x Group work + 0.5 x Individual exam. Individual exam has two parts, a bug hunting game in DBugIT and an exam in Testvision. Both Group and Indiv components need to be more of equal to 5.5 in order to pass.Literature
A. Mathur, Foundations of software testing, Addison-Wesley Professional; 2nd edition (February 13, 2014), 2014, *ISBN:- 978-8131794760.
Target Audience
MSc Computer ScienceMSc Computer SecurityMSc Computational ScienceRecommended background knowledge
Basic knowledge of programming (Python, C++) and software engineering (requirements engineering) is required.Explanation Canvas
All course materials are available on Canvas.Language of Tuition
- English
Study type
- Master