eduard.paul.enoiu@mdh.se
Mälardalen University
Room:U1-138
Phone: 021-101624
Phone (alt):070-4484346
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 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:
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.
Human Aspects of Testing
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.
Combinatorial Testing
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.