After passing this course, the student is able to:
- Explain, apply, compare, extend the main concepts and terminology on risk assessment and software testing.
- [Selection, interpretation, mitigation] Select appropriate risk assessment and testing techniques for a given situation, and motivate these choices. Can interpret the outcomes of a risk analysis and testing process. Based on the outcomes of a risk assessment or software test, advise suitable measures to lower risk / improve system quality.
- [Risk modeling & analysis] Devise a suitable risk model (fault tree / FMEA) for a given casus. Apply, compare, extend quantitative risk computations (based on stochastic methods) and use appropriate software tools to support the computations.
- [Test case derivation] Use common methods to derive effective test suites to test software systems, esp based on classical techniques (equivalence portioning; boundary value analysis; coverage metrics), finite state machines, labeled transition systems. Use appropriate tooling.
- [Formal reasoning] Mathematically reason about the models and algorithms underlying of the various risk and testing frameworks. This includes the correctness of the test derivation methods (soundness, completeness) and the risk analysis algorithms.
How do we ensure today’s software systems, such as robots, drones, MRI and CT scanners, data centers, and railroad systems operate in a safe and reliable way? That is the topic of risk management, which is the topic of this course. Risk assessment aims at identifying the main risks, prioritizing them according to their impact and likelihood of occurrence, and finding (cost)effective measures to mitigate the most important risk.|
Risk assessment is the first topic of this course, which will cover
For software systems, testing is one of the most important methods to identify and mitigate risks. This course will cover the most important testing techniques
- Quantitative and qualitative techniques for modeling risks, namely fault tree analysis and FMEAs/FMECAs;
- Risk quantification, as well as metrics that capture Key Performance Indicators (system reliability, availability, mean time to failure).
- to compute these risk metrics, including stochastic algorithms, and their relation to data science.
- Classical techniques, based on black box testing (equivalence partitioning, boundary value analysis) and white box testing (based on code coverage metrics: statement coverage, condition coverage, decision coverage, etc).
- Testing from Finite State Machines: modeling software as FSM models, and test derivation based on state tours, transition tours, transition coverage.
- Model-based testing is an innovative way of testing, where test cases are automatically generated, executed and evaluated from a requirement model. The course will treat models and algorithms for doing so based on theory.