ABOUT ME: I am a researcher and lecturer at Mälardalen University in Västerås, Sweden, primarily affiliated with the Software Testing Laboratory and the Formal Modelling and Analysis groups at the Department of Networked and Embedded Systems. A native of Bucharest, I earned an Engineer's degree from the Polytechnic University of Bucharest in 2009 and a PhD from Mälardalen University in 2016.
My research interests span requirements engineering, applied formal verification, software engineering, and empirical research, especially how to test, maintain, evolve and assure high-quality industrial software systems. I teach automated testing and model-based testing at the master and PhD levels as well as to industrial practitioners. Currently, I am doing research on a diverse array of topics in software development, including requirements modelling and analysis, product line engineering, the ethical and human aspects of software testing, the role of automatic test generation (where tests are intelligently and algorithmically created) in industrial practice; the use of model checking for engineering better systems; the nature of creating efficient and effective tests.
SUPERVISION: If you are interested in doing a bachelor, master or PhD thesis at Mälardalen University, and if you are a good and ambitious student interested in software engineering, embedded system development and software testing, then have a look at some general topics listed below (these topics are not taken by any student). If you are interested in any of these please email me.
I advise bachelor and master’s theses in all areas that I actively conduct research in:
Software Testing, with a particular focus on test design and benchmarking of tests.
Requirement Engineering, with a focus on requirement modeling, analysis and verification.
Embedded Systems, particularly the development of industrial control and safety-critical software.
Model Checking and Model-Based Testing, particularly the use of models (e.g., timed automata) for building better systems.
Human aspects of Software Engineering, particularly cognitive aspects of software development.
Engineering Digital Systems and Circuits, especially using Verilog and other HDL architectures, and particularly how they relate to testing.
PODCAST: Listen to my podcast on software engineering called Testing Habits. These are conversations about software testing and software engineering.
Requirements Engineering and Model-Based System Engineering
As systems continue to increase in complexity, some companies have turned to Model-Based Systems Engineering (MBSE) to address different challenges, such as requirement complexity, consistency, traceability, and quality assurance during system development. Our research is focusing on the adoption of MBSE and the empirical study of requirement engineering practices as well as requirement management and analysis.
Metrics for Quality Assurance
Software metrics have been used in the software engineering community for predicting quality metrics such as maintainability, bug proneness and robustness. In our studies, we focus on experimental evidence to support using these metrics to estimate different aspects during system development.
Human Aspects of Test Design
Software testing is a complex, intellectual activity-based (at least) on analysis, reasoning, decision making, abstraction and collaboration performed in a highly demanding environment. Naturally, it uses and allocates multiple cognitive resources in software testers. However, while a cognitive psychology perspective is increasingly used in the general software engineering literature, it has yet to find its place in software testing. To the best of our knowledge, no theory of software testers’ cognitive processes exists. We took the first steps towards such a theory by presenting a cognitive model of software testing based on how problem-solving is conceptualized in cognitive psychology. The results support a problem solving-based model of test design for capturing testers’ cognitive processes that could help in improving test design practices and tools supporting these activities.
Automatic Test Generation
Since the early days of software testing, automatic test generation has been suggested as a way of allowing tests to be created at a lower cost. However, industrially useful and applicable tools for automatic test generation are still scarce. As a consequence, the evidence regarding the applicability or feasibility of automatic test generation in industrial practice is limited. This is especially problematic if we consider the use of automatic test generation for industrial safety-critical control systems, such as are found in power plants, airplanes, or trains.
Our results show that there are still challenges associated with the use of automatic test generation. In particular, we found that while automatically generated tests, based on code coverage or mutation, can exercise the logic of the software as well as tests written manually, and can do so in a fraction of the time, they do not show better fault detection compared to manually created tests. Our results highlight the need for improving the goals used by automatic test generation tools.
Combination test generation techniques are test generation methods where tests are created by combining the input values of the software based on a certain combinatorial strategy. Our results show that these techniques can be improved and be successfully used in industrial practice. We proposed the use of timed base-choice criterion for testing industrial control software.
The idea of using combinatorial testing in software testing practice stands as significant progress in the development of automatic test generation approaches. Combinatorial testing is capable of aiding an engineer in testing of industrial software.
Model-Based Analysis and Verification
Design models that can be introduced earlier in the development process provide a holistic system description that captures the structure and functionality of a software system, as well as related extra-functional information, e.g., timing properties and resource annotations. I was the coauthor of several studies that proposed efficient verification techniques, like model-checking, that can be applied to high-level design artefacts to provide early information on the design and implementation of embedded software systems.
An Experiment in Requirements Engineering and Testing using EARS Notation for PLC Systems (May 2023) Mikael Ebrahimi Salari, Eduard Paul Enoiu, Wasif Afzal, Cristina Seceleanu 19th Workshop on Advances in Model Based Testing (A-MOST 2023)
An Empirical Evaluation of System-Level Test Effectiveness for Safety-Critical Software (Apr 2023) Muhammad Nouman Zafar, Wasif Afzal, Eduard Paul Enoiu 18th International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE 2023)
Model-Based Policy Synthesis and Test-Case Generation for Autonomous Systems (Apr 2023) Rong Gu, Eduard Paul Enoiu 19th Workshop on Advances in Model Based Testing (A-MOST 2023)
Requirement or Not, That is the Question: A Case from the Railway Industry (Apr 2023) Sarmad Bashir, Muhammad Abbas, Mehrdad Saadatmand , Eduard Paul Enoiu, Markus Bohlin, Pernilla Lindberg Requirements Engineering: Foundation for Software Quality (REFSQ 2023)
PyLC: A Framework for Transforming and Validating PLC Software using Python and Pynguin Test Generator (Apr 2023) Mikael Ebrahimi Salari, Eduard Paul Enoiu, Wasif Afzal, Cristina Seceleanu SAC2023, The 38th ACM/SIGAPP Symposium On Applied Computing (SAC 2023)
On the Current State of Academic Software Testing Education in Sweden (Mar 2023) Ayodele Barrett, Eduard Paul Enoiu, Wasif Afzal The 2nd Software Testing Education Workshop (ICST 2023)
|A Digital Twin Framework for Dynamic and Robust Distributed Systems||active|
|ACICS - Assured Cloud Platforms for Industrial Cyber-physical Systems||active|
|ADEPTNESS - Design-Operation Continuum Methods for Testing and Deployment under Unforeseen Conditions for Cyber-Physical Systems of Systems||active|
|ARRAY - Automation Region Research Academy||active|
|ATAC - Advanced Test Automation for Complex Software-Intensive System (ITEA2/Vinnova)||finished|
|CEST - Commissioned Education in Software Testing||active|
|ITS-EASY Post Graduate School for Embedded Software and Systems||finished|
|MegaMaRt2 - Megamodelling at Runtime (ECSEL/Vinnova)||finished|
|PROMPT - Professional Master’s in Software Engineering (step II)||finished|
|PROMPT - Professional Master’s in Software Engineering (step II, phase B&C)||active|
|SmartDelta: Automated Quality Assurance and Optimization in Incremental Industrial Software Systems Development||active|
|Software Center: Aspects of Automated Testing||active|
|VeriDevOps - Automated Protection and Prevention to Meet Security Requirements in DevOps Environments||active|
|XIVT - eXcellence in Variant Testing||finished|
Mikael Ebrahimi Salari
Daniel Flemström (former)
Muhammad Nouman Zafar
Rong Gu (former)
|Improved testing using real and simulated systems||available|
|Software Engineering, Embedded System Development and Software Testing||available|
|An Evaluation of Model-based Testing in Industrial Practice: From System Modelling to Test Generation||in progress|
|Combining Runtime Verification and Automated Test Generation for PLC Embedded Software||in progress|
|Measuring Combinatorial Coverage of Manual Testing||in progress|
|Test Generation For Digital Circuits A Mapping Study on VHDL, Verilog and SystemVerilog||in progress|
|A Model-based Test Generation Tool for Industrial Function Block Diagrams||finished|
|A Mutation Analysis Framework for Simulink Models||finished|
|A Study on Timed Base Choice Criteria for Testing Embedded Software||finished|
|An Empirical Exploration in the Study of Software-Related Fatal Failures||finished|
|AN EVALUATION OF MODEL-BASED TESTING FOR AN INDUSTRIAL TRAIN CONTROL SOFTWARE||finished|
|Automated Test Case Generation for Function Block Diagrams using Java Path Finder and Symbolic Execution||finished|
|Automated Test Generation for Structured Text Language using UPPAAL Model Checker||finished|
|Combinatorial Modelling and Testing of PLC Software using ACTS||finished|
|EFFICIENT FBD TEST GENERATION THROUGH PROGRAM SLICING||finished|
|Evaluation of Structural Testing Effectiveness in Industrial Model-driven Software Development||finished|
|Model Test Coverage Measurements in an Industrial Setting||finished|
|Model-based Testing on Generated C Code||finished|
|Modeling Product Line Variability in the Rail Vehicle Domain||finished|
|On the Complexity Measurement of Industrial Control Software||finished|
|On the Use of Base Choice Strategy for Testing Industrial Control Software||finished|
|Pairwise Testing for PLC Embedded Software||finished|
|Testing of Industrial Control Software: A Systematic Mapping Study||finished|