The aim of the course is to provide a deeper understanding about validation (i.e., checking if the software product matches the client's expetctations) and verification (i.e., checking if the software product matches the specification written by the analyst): in particular, the focus is on static analysis, testing and formal analysis.
Expected learning outcomes
The student will be able to use in a proficient and critical way some widespread testing and analysis frameworks, while understanding their methodolgical and theoretical core aspects.
- Testing introduction using JUNIT 4 and JUNIT 5 - Parametric test - Testing Exceptions - JUNIT Extension models - Grouping and hierarchy test - CustomAssertion and other Verify Patterns - Dependency Injection - Acceptance Test with Cucumber - Static Analysis - Mutation Analysis - Property Based Testing - Model Checking with PathFinder - Concurrency Analysis with Java PathFinder - Symbolic Java PathFinder - Java Modelling Language
Prerequisites for admission
Understanding of the terminology of software engineering and the basic techniques of managing the software development process, software design.
It is therefore strongly recommended that you pass a software engineering exam.
The teaching is done through lectures. At the end of each lesson, students are given assignments that are collected and analysed at the beginning of the next lesson.
Slides presented in class and repositories are provided with the code presented and discussed in class. A collaborative written site with the notes about the lessons is also available online.
The exam consists of an oral test. During the oral exam, candidates are asked to prepare and discuss a seminar on a topic with both technological and theoretical aspects related to the topics covered during the lessons. In addition, during the exposition the candidate may be asked to answer questions on the topics of the program.
At the end, the overall evaluation is expressed, expressed in thirtieths, taking into account the following parameters: degree of knowledge of the topics and technologies, ability to apply knowledge to concrete problems, ability of critical reasoning, clarity of display and properties of language.