<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Test Case Co-Migration Method Patterns</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Ivan Jovanovikj, Enes Yigitbas, Stefan Sauer, Gregor Engels Software Innovation Lab Paderborn University</institution>
          ,
          <addr-line>Paderborn</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Co-migration of test cases has a twofold benefit: it reduces the cost of testing the migrated system and retains valuable information about the expected functionality of the original system and thus the desired functionality of the migrated system. The migration of test cases is shaped by the co-evolution of the test cases, as they can be affected by the changes in the system migration. Furthermore, the situational context has to be considered as it influences the quality and the effort regarding the test case migration. To address these challenges, we propose a solution that applies situational method engineering extended with co-evolution analysis. The proposed framework enables modular construction of test transformation methods which consists of a method base and a method engineering process. Method fragments are the atomic building blocks of a migration method, whereas method patterns encode specific migration strategies. Beside the basic test method patterns, we introduce co-migration patterns, which encode the dependency between the system migration and the test case migration. The method engineering process provides the guidance on development and enactment of migration methods. In this paper we give an overview of the method base, in particular on the co-migration method patterns, as well as a detailed discussion. Index Terms-test case migration, co-migration, co-evolution, method engineering, method-base, co-migration method pattern</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>
        Reusing existing test cases is a frequently used validation
strategy in software migration [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. It can reduce the cost of
testing the migrated system and can also help to retain valuable
information about the expected functionality of the original
system and thus the desired functionality of the migrated
system. Reusing test cases comes down to the problem of
comigration, i.e., the test cases have to be migrated along with
the system to the dependency on the system migration. The
comigration is practically defined by the co-evolution of the test
cases and the corresponding system. In general, co-evolution
refers to two or more objects evolving alongside each other,
such that there is a relationship between the two that must
be maintained [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In our case, this refers to the test cases
evolving alongside the migrating code, such that the test cases
remain correct for testing the migrated system. This implies
that the co-evolution analysis should be incorporated in the
test case migration.
      </p>
      <p>When performing a test migration, a transformation method
is required which serves as a technical guideline and describes
the activities necessary to perform, tools to be used, and
roles to be involved in order to migrate given test cases. The
development of the transformation method is a very important
task as it influences the overall success of the migration project
in terms of effectiveness (e.g., non-functional properties) and
efficiency (e.g., the time required or the budget). To achieve
this, the situational context of the migration project should
be taken into consideration. The situational context comprises
different influence factors like characteristics of the original
system or target environment, the goals of the stakeholders
etc. Concerning test case migration, the situational context
gets even more complex as beside the influence factors of
the system migration, test-specific influence factors like
characteristics of the original test cases or test target environment
have to be considered as well. To develop a situation-specific
transformation method is an important and challenging task,
as the previously discussed co-evolution aspect should be
incorporated when identifying the situational context from
both system and test perspective.</p>
    </sec>
    <sec id="sec-2">
      <title>In order to address the previously mentioned challenges,</title>
      <p>
        based on the Method Engineering Framework for
SituationSpecific Software Transformation Methods (MEFiSTo) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], we
provide a framework that combines techniques from
Situational Method Engineering (SME) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and Software
Evolution [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In general, a Method Base contains the building
blocks needed for assembling the migration method, namely
Method Fragments and Method Patterns. A Method Fragment
is an atomic building block of a migration method, whereas
a Method Pattern represents a strategy and indicates which
fragments are necessary and how to assemble them together.
As the test method patterns cannot express directly the
dependency between the system and the test case migration, we
propose a set of co-migration method patterns. Technically,
a co-migration method pattern is a combination of a system
method pattern and a test method pattern visually resembling
to a double horseshoe model. A co-migration pattern encode
the relation between the applied system migration pattern and
the selected test method pattern.
      </p>
    </sec>
    <sec id="sec-3">
      <title>The structure of the rest of the paper is as follows: In Sec</title>
      <p>tion II, we introduce the test method fragments. Then, in
Section III, we introduce the test method patterns. In Section IV,
we present the test co-migration method patterns. In Section V,
we briefly discuss the related work and at the end, Section VI
concludes the work and gives an outlook on future work.</p>
      <p>Copyright © 2020 for this paper by its authors.Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).</p>
    </sec>
    <sec id="sec-4">
      <title>II. METHOD FRAGMENTS</title>
    </sec>
    <sec id="sec-5">
      <title>A method fragment is an atomic building block of a</title>
      <p>
        migration method, i.e., an activity, artifact or tool. As we
follow the idea of model-driven software migration [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], our
method fragments belong to one of the following reengineering
processes: Reverse Engineering, Restructuring, and Forward
      </p>
    </sec>
    <sec id="sec-6">
      <title>Engineering [6]. The activities as well as the artifacts are represented in Figure 1 as an instance of the well-known horseshoe model [7].</title>
    </sec>
    <sec id="sec-7">
      <title>Artifacts are constituting parts of each migration method and</title>
      <p>are distinguished by the level of abstraction they are belonging
to. On the System Layer, textual artifacts representing test code
and models of the test code are placed. Regarding the textual
artifacts, this is either the Original Test Code or the Migrated</p>
    </sec>
    <sec id="sec-8">
      <title>Test Code. Similarly, regarding the models of the code it is</title>
      <p>either the Model of Original Test Code or the Model of the</p>
    </sec>
    <sec id="sec-9">
      <title>Migrated Test Code represented in a form of in a form of</title>
      <p>
        an Abstract Syntax Tree [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The Platform-Specific Layer is a
higher level of abstraction compared to the system layer. Here,
technology-specific concepts are used to represent the test
cases for both the source and the target environment in terms of
Model of Original/Target Executable Tests. On the
Platform
      </p>
    </sec>
    <sec id="sec-10">
      <title>Independent Layer the models representing the test cases are</title>
      <p>independent of any particular testing framework or testing
technology. Here, we distinguish between two types of models,
the Model of the Abstract Tests and the System Behavior</p>
    </sec>
    <sec id="sec-11">
      <title>Model. On the highest level of abstraction, we foresee the Sys</title>
      <p>tem Behavior Model that represents a compact representation
of the expected behavior of the system. Behavioral diagrams
like the UML activity or sequence diagram, or state machines
can be used to represent the expected behavior of the system.</p>
    </sec>
    <sec id="sec-12">
      <title>Activities in the test case reengineering horseshoe model produce or consume appropriate artifacts. As can be seen in Figure 1, these activities can be distinguished by the reengineering process they belong to, namely Reverse Engineering,</title>
      <p>Restructuring, or Forward Engineering.</p>
      <p>t
n
e
d
n
e
epd rey
In a
-m L
lftr
o
a
P
c
fi
i
c
-epS rey
rom aL
ltf
a
P
r
e
y
a
L
m
e
t
s
y
S
Activity Specification
Exogenous Model
Transformation
Endogenous Model
Transformation
Text-to-Model /
Model-to-Text
Transformation
Text-to-Text
Transformation
No Transformation X
Artifact Specification</p>
      <p>Model
Code</p>
      <p>
        Reverse Engineering, is the process of analyzing a test case
and creating another representation of them on a higher level
of abstraction, e.g., by using test models. In general, reverse
engineering can be seen as combination of Model Discovery
and Model Understanding [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The Model Discovery step
relies on syntactical analysis and by using a parser it allows
automatic text-to-model transformation to create a model of
the test case source code represented as an Abstract Syntax
      </p>
    </sec>
    <sec id="sec-13">
      <title>Tree (AST) [8]. Model Understanding, in general, is a model</title>
      <p>to-model transformation activity, or a chain of such
activities (Test Case Understanding, Test Abstraction, and System</p>
    </sec>
    <sec id="sec-14">
      <title>Behavior Recovery), which takes the initial models, applies semantic mappings and generates derived models on a higher level of abstraction.</title>
    </sec>
    <sec id="sec-15">
      <title>Restructuring, is defined as the transformation from one test representation to another at the same relative abstraction level, while preserving the functionality that is being checked by the tests. This activity has been foreseen on both the System</title>
      <p>Behavior Model and the Model of Abstract Test. The
Restructuring activity is of course influenced by the target testing
environment, testing tool, or by requirements on improving the
quality of the test cases (e.g., maintainability). Furthermore,
it could also be influenced by the changes that happen in the
system migration.</p>
    </sec>
    <sec id="sec-16">
      <title>Forward Engineering, is the process of moving of high</title>
      <p>level test abstractions and logical implementation-independent
design to the physical implementation of the test cases. The
test models are used as input for a chain of model-to-model
transformations (Abstract Test Derivation and Test
Concretization), ending with a model-to-text transformation (Test Code</p>
    </sec>
    <sec id="sec-17">
      <title>Generation), which provides the test code as output.</title>
    </sec>
    <sec id="sec-18">
      <title>The Reimplementation is a text-to-text transformation which</title>
      <p>
        is performed manually. The Language Transformation also
known as AST-based transformation [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], defines a direct
mapping between the Original Model of the Test Code and
the Migrated Model of the Test Code. The Test-Language
      </p>
    </sec>
    <sec id="sec-19">
      <title>Transformation, on the other hand, defines a mapping directly</title>
      <p>between two testing frameworks. The Enrichment activity is
applicable to various models, e.g., Original Model of
Executable Tests, Model of Abstract Tests, or System Behavior</p>
    </sec>
    <sec id="sec-20">
      <title>Model. The Removal activity is used to specify which part of the test case code should not be transformed.</title>
    </sec>
    <sec id="sec-21">
      <title>III. METHOD PATTERNS</title>
      <p>The method fragments like artifacts, activities or tools are
not sufficient as no guidance is provided how to assemble
them. A method pattern, represents construction guidelines for
migration methods that follows a certain strategy by defining
which method fragments should be customized and how to
put them together In the following, as shown in Figure 2,
we present an excerpt of the method patterns that preserve
functionality.</p>
      <p>The Language-based Test Transformation pattern defines the
migration of the functionality of the test cases by defining
a mapping between the language constructs in both original
and target environment. The mapping is applied by a direct
System
Enrichment Behavior</p>
      <p>Model
System Behavior</p>
      <p>Recovery
Enrichment</p>
      <p>Test
Enrichment Abstraction
transformation between Model of the Original Test Code and</p>
    </sec>
    <sec id="sec-22">
      <title>Model of the Migrated Test Code. Theoretically, this pattern</title>
      <p>could be applied actually in any migration scenario, but its
suitability mainly depends on the complexity of the model
transformations between both models. From test perspective,
the transformation of the test concepts have to be done
implicitly.</p>
      <p>By using the Test Language-based Test Transformation
pattern the functionality of the test cases is migrated by using
an intermediate test representation on platform-specific layer.
Model of Original Executable Tests represents explicitly the
testing constructs and the test data. Doing so, transformation
step is less complex compared to the Language-based Test</p>
    </sec>
    <sec id="sec-23">
      <title>Transformation and it enables a direct, i.e., an explicit representation and manipulation of test constructs.</title>
      <p>The Conceptual Test Transformation pattern defines to
migrate the test functionality by using an intermediate
representation in terms of Model of Abstract Tests on a
platformindependent layer. This improves the dependent framework
transformation on the platform-specific layer by explicitly
representing some test concepts on a higher level of abstraction
as part of the Model of Abstract Tests. This pattern could be
considered suitable when some test concepts are realized
completely different in both environments or when a restructuring
of the test architecture or test data is necessary. By using the
Reimplementation pattern the functionality of the test cases is
manually transformed by software developers and it is suitable
in cases when an automatic migration is too complex to be
implemented. Lastly, the Test Code Removal pattern defines
not to migrate certain part of the test code, e.g., when some
parts of the original system are now implicitly supported in
the new environment.</p>
    </sec>
    <sec id="sec-24">
      <title>IV. CO-MIGRATION METHOD PATTERNS</title>
      <p>As the test method patterns cannot express the relation
between the system and the test case migration, we propose
a set of co-migration method patterns. Technically, a
comigration method pattern is a combination of a system method
pattern and a test method pattern, visually resembling to a
double horseshoe model. We define a co-migration method
pattern as follows:</p>
      <p>A co-migration method pattern is a method pattern which
relates a test method pattern and a system method pattern by
explicitly establishing the relation between the corresponding
method fragments.</p>
      <p>By explicitly establishing the relation between test and
system method patterns, we aim to ease the process of the
selection and configuration of a test method pattern. An
already configured system method pattern, with selected and
concertized method fragments, i.e., artifacts and activities,
suggests in what way the test method fragments should be
selected and configured. Consequently, it suggests in what way
the tools supporting the different method fragments should be
developed.</p>
    </sec>
    <sec id="sec-25">
      <title>The co-migration patterns also facilitate reuse of existing</title>
      <p>artifacts and activities from the system migration method.
As an explicit relation between the system and test method
patterns exists, it facilitates the reuse of the already existing
artifacts and activities defined for the system transformation
method. Furthermore, the developed and used tooling for the
system migration, e.g., a language parser or a language
metamodel, which correspond to an activity or an artifact, could
be reused.</p>
    </sec>
    <sec id="sec-26">
      <title>In this work, as we already mentioned in Section III,</title>
      <p>
        we focus on the functionality preserving test method
patterns. Our test method patterns were mainly inspired by the
method patterns presented in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], where four different
functionality preserving method patterns were defined, namely:
Reimplementation, Language-based Transformation,
Conceptual Transformation, and Code-Removal. As we already said
at the beginning of this section, a co-migration comprises
a test method pattern and a system method pattern. We
created the co-migration patterns by combining each of the
test method patterns with each of the system method patterns,
excluding the Code-Removal pattern. The Code-Removal was
not taken into consideration as it has no influence on reuse
of method fragments. In the following, we analyze each
co-migration method pattern regarding two aspects reusable
method fragments and impacted method fragments. Reusable
method fragments are those method fragments from the system
transformation method which could be directly reused in the
test transformation method. Impacted method fragments are
those test method fragments which are impacted from the
system method fragments.
      </p>
      <p>Figure 3 depicts the co-migration patterns that combine
either a Test Reimplementation method pattern (CMP1 to
CPM3) or a Language-based Test Transformation method
pattern(CMP4 to CPM6) with the three possible system migration
patterns Reimplementation, Language-based Transformation,
and Conceptual Transformation.</p>
    </sec>
    <sec id="sec-27">
      <title>The pattern CMP1 is a combination of two reimplemen</title>
      <p>tation method patterns and it is a very simple pattern which
suggests a manual migration of the test cases. The ease of
reimplementation of the tests cases depends on the
documentation of the system transformation method, the more structured
the better. In the case of CMP2 and CMP3 patterns, where
Language-based Transformation and Conceptual
TransformaTMP: Test Reimplementation
SMP: Reimplementation</p>
      <p>TMP: Test Reimplementation
SMP: Language-based Transformation</p>
      <p>TMP: Test Reimplementation
SMP: Conceptual Transformation
CMP4</p>
      <p>CMP5</p>
      <p>CMP6
TMP: Language-based</p>
      <p>Test Transformation
SMP: Reimplementation
Test
Code</p>
      <p>Test
Model</p>
      <p>TMP: Language-based</p>
      <p>Test Transformation
SMP: Language-based Transformation</p>
      <p>TMP: Language-based</p>
      <p>Test Transformation
SMP: Conceptual Transformation
Code</p>
      <p>Model</p>
      <p>Manual
Activity</p>
      <p>Automated
Activity</p>
      <p>SMP System Method Pattern
TMP Test Method Pattern
CMP Co-Migration Method Pattern
tion are applied respectively, the reimplementation of the test
cases should be easier as the transformation of the system is
specified explicitly in terms of transformation rules. Basically,
no system method fragments could be directly reused.</p>
    </sec>
    <sec id="sec-28">
      <title>The pattern CMP4 is a combination of a Language-based</title>
      <p>Test Transformation and a Reimplementation. This pattern is
suitable if the system reimplementation was well documented
so that some transformation rules can be derived in order
to automate the transformation of the test cases. However, it
suggests implementation of a parser for the source language
as well as a code generator for the target language. Similarly
to the previous co-migration patterns, no system method
fragments could be directly reused.</p>
    </sec>
    <sec id="sec-29">
      <title>The pattern CMP5 is a combination of Language-based Test</title>
      <p>Transformation and Language-based Transformation. This
pattern has a symmetric constellation, as two transformations
on the same abstraction level are combined. In such a
constellation, both the reverse engineering and forward engineering
fragments, Model Discovery and Test Code Generation
respectively, can be completely reused. Reuse of existing method
fragments is also possible in the scope of the transformation
step. However, the complexity of the transformation could
be higher if the source and the target frameworks
differentiate a lot, meaning that the transformation of the test
relevant concepts should be done implicitly. Regarding the
impacted test method fragments, the Language Transformation
activity is impacted by the corresponding method fragment
from the system transformation method. The pattern CMP6
is a combination of Language-based Test Transformation and</p>
    </sec>
    <sec id="sec-30">
      <title>Conceptual Transformation. In such a constellation, both the reverse engineering and forward engineering fragments, Model</title>
      <p>Discovery and Test Code Generation respectively, can be
completely reused. Due to the difference in the abstraction
levels, reuse of existing method fragments in the scope of
the transformation step is only possible in an indirect way.
Namely, the transformation on the conceptual level, could be
used as an input when the language transformation of the test
cases is performed, i.e., the conceptual transformation
parameterizes the language-based test transformation. Similarly as
with CMP5, the complexity of the transformation could be
higher if the source and the target frameworks differentiate a
lot due to the implicit transformation of the test concepts.</p>
      <p>Figure 4, depicts the co-migration patterns that combine
either a Test Language-based Test Transformation method
pattern (CMP7 to CPM9) or a Conceptual Test Transformation
method pattern (CMP10 to CPM12) with the three possible
system migration patterns Reimplementation, Language-based
Transformation, and Conceptual Transformation.</p>
    </sec>
    <sec id="sec-31">
      <title>The pattern CMP7 is a combination of a Test Language</title>
      <p>based Test Transformation and Reimplementation. This pattern
is suitable if the system reimplementation was well
documented so that some transformation rules can be derived
in order to automate the transformation of the test cases.</p>
    </sec>
    <sec id="sec-32">
      <title>However, it suggests implementation of a parser for the source language as well as a code generator for the target language. Furthermore, a test case understanding fragment and</title>
      <p>TMP: Test Language-based</p>
      <p>Test Transformation
SMP: Reimplementation
CMP10</p>
      <p>TMP: Test Language based</p>
      <p>Test Transformation
SMP: Language-based Transformation</p>
      <p>TMP: Test Language-based</p>
      <p>Test Transformation</p>
      <p>SMP: Conceptual Transformation
CMP11</p>
      <p>CMP12
TMP: Conceptual Test Transformation
SMP: Reimplementation</p>
      <p>TMP: Conceptual Test Transformation
SMP: Reimplementation</p>
      <p>TMP: Conceptual Test Transformation
SMP: Reimplementation
Test
Code</p>
      <p>Test
Model</p>
      <p>Code</p>
      <p>Model</p>
      <p>Manual
Activity</p>
      <p>Automated
Activity</p>
      <p>SMP System Method Pattern
TMP Test Method Pattern
CMP Co-Migration Method Pattern
test case concretiztaion fragment should be configured and
implemented in terms of model-to-model transformations.</p>
    </sec>
    <sec id="sec-33">
      <title>The pattern CMP8 is a combination of Test Language-based</title>
      <p>Test Transformation and Language-based Transformation. In
such a constellation, both the reverse engineering and forward
engineering fragments, Model Discovery and Test Code
Generation respectively, can be reused. Reuse of existing method
fragments is also possible in the scope of the transformation
step. But, a test case understanding fragment and test case
concretiztaion fragment should be still selected and
implemented in terms of model-to-model transformations. However,
the complexity of the transformation is lower compared to</p>
    </sec>
    <sec id="sec-34">
      <title>CMP7, as the transformation activity from the system method</title>
      <p>pattern could be reused to higher extent as it is specified
explicitly through a model-to-model transformation. On the
other side, the complexity of the transformation is lowered as
an explicit mapping between the testing languages is defined.</p>
    </sec>
    <sec id="sec-35">
      <title>The pattern CMP9 is a combination of Test Language</title>
      <p>based Test Transformation and Conceptual Transformation.</p>
    </sec>
    <sec id="sec-36">
      <title>In such a constellation, both the reverse engineering and</title>
      <p>forward engineering fragments, Model Discovery and Test</p>
    </sec>
    <sec id="sec-37">
      <title>Code Generation respectively, can be completely reused. Due</title>
      <p>to the difference in the abstraction levels, reuse of existing
method fragments in the scope of the transformation step is
only possible in an indirect way. Namely, the transformation
on conceptual level could be used as an input when the Test
Language-based Test Transformation is configured performed,
i.e., the Conceputal Transformation parameterizes the Test
Language-based Test Transformation. Similarly to CMP8, the
complexity of the transformation is lowered as an implicit
mapping between the testing languages is defined.</p>
    </sec>
    <sec id="sec-38">
      <title>The pattern CMP10 is a combination of Conceptual Test</title>
      <p>Transformation and Reimplementation. The suitability of this
pattern depends on the system reimplementation, whether it
was well documented so that some transformation rules can
be derived in order to automate the transformation of the est
cases. However, it suggests implementation of a parser for
the source language as well as a code generator for the target
language. Furthermore, a test case understanding fragment and
test case concretiztaion fragment should be configured and
implemented in terms of model-to-model transformations.</p>
    </sec>
    <sec id="sec-39">
      <title>The pattern CMP11 is a combination of Conceptual Test</title>
      <p>Transformation and Language-based Transformation. In such
a constellation, both the reverse engineering and forward
engineering fragments, Model Discovery and Test Code
Generation respectively, can be reused. Reuse of existing method
fragments is also possible in the scope of the transformation
step. But, a test case understanding fragment and test case
concretiztaion fragment should be still selected and
implemented in terms of model-to-model transformations. However,
the complexity of the transformation is lower compared to</p>
    </sec>
    <sec id="sec-40">
      <title>CMP10, as the transformation activity from the system method</title>
      <p>pattern could be reused to higher extent as it is specified
explicitly through a model-to-model transformation. On the
other side, the complexity of the transformation is lowered as
an explicit mapping between the testing languages is defined.</p>
    </sec>
    <sec id="sec-41">
      <title>The pattern CMP12 is a combination of Conceptual Test</title>
      <p>Transformation and Conceptual Transformation. In such a
constellation, both the reverse engineering and forward
engineering fragments, Model Discovery and Test Code Generation
respectively, can be completely reused. Due to the difference
in the abstraction levels, reuse of existing method fragments
in the scope of the transformation step is only possible in an
indirect way. Namely, the transformation on conceptual level
could be used used as an input when a Test Language-based</p>
    </sec>
    <sec id="sec-42">
      <title>Test Transformation method pattern is configured, i.e., a Con</title>
      <p>ceputal Transformation pattern parameterizes the Conceptual</p>
    </sec>
    <sec id="sec-43">
      <title>Test Transformation. Similarly to CMP11, the complexity of the transformation is lowered as an implicit mapping between the testing languages is defined.</title>
    </sec>
    <sec id="sec-44">
      <title>V. RELATED WORK</title>
      <p>
        Two main research areas are relevant for this work, namely
method engineering and test case evolution. Regarding method
engineering, different categories of method engineering
approaches exist: fixed methods, a selection out of set of fixed
methods, configuration of a method, tailoring a method or
a modular construction of the method. The method tailoring
approaches enable tailoring of a provided method, which can
be changed arbitrarily ( [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ], [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]). However, they solely focus
on system transformation and thus no transformation of test
cases was considered. Consequently, they do not support
comigration of test cases. The approaches that support modular
construction of transformation methods provide a higher level
of flexibility as they rely on a set of predefined building
blocks for methods. The method engineering approach,
presented in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], enables modular construction, but is specialized
for migration to service-oriented environments. This issue is
addressed by the MEFiSTO Framework [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] by providing a
general solution for modular construction of situation-specific
migration methods. However, similarly to the method tailoring
approaches, these two approaches do not address the migration
of test cases (except ARTIST [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] to some extent) as well. The
existing approaches in the test case evolution are
predominantly focusing on the continuous co-evolution of test cases.
In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], a semi-automatic approach is presented that supports
test suite evolution through test case adaptations. Existing test
cases are repaired and new test cases are generated to react
to incremental changes in the software system. In [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], a
method is proposed which should improve the model-based
test efficiency by co-evolving test models. As part of this
work, software model evolution patterns as well as their effects
on test models are studied in order to apply updates directly
to the tests. All in all, the existing approaches deal only
with incremental changes and not coarse grained changes, i.e.,
conceptual changes that often happen in software migration.
      </p>
    </sec>
    <sec id="sec-45">
      <title>VI. CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, we presented a framework that enables a
modular construction of context-specific, model-driven
migration methods for test cases. The framework consists of a
method base and a method engineering process. The method
base contains method fragments, as atomic building blocks
of a migration method, and method patterns which encode
specific migration strategies. In order to adequately address
the co-evolution in test case co-migration, we propose a set of
co-migration methods that encode the information about the
dependency between the system and test case migration. In
future work, we intend to conduct a quality analysis of the
constructed test migration methods regarding quality criteria
like completeness or correctness.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Bisbal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lawless</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bing Wu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Grimson</surname>
          </string-name>
          , “
          <article-title>Legacy information systems: issues and directions</article-title>
          ,” IEEE Software,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>T.</given-names>
            <surname>Mens</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Demeyer</surname>
          </string-name>
          , Software Evolution, 1st ed. Springer Publishing Company, Incorporated,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Grieger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fazal-Baqaie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Engels</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Klenke</surname>
          </string-name>
          , “
          <article-title>Concept-based engineering of situation-specific migration methods,”</article-title>
          <source>in Proceedings of the 15th International Conference on Software Reuse: Bridging with Social-Awareness</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Henderson-Sellers</surname>
          </string-name>
          , J. Ralyte´,
          <string-name>
            <surname>P. J.</surname>
          </string-name>
          <article-title>A˚gerfalk</article-title>
          , and M. Rossi, “Situational method engineering,” in Springer Berlin Heidelberg,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Fuhr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Winter</surname>
          </string-name>
          , U. Erdmenger,
          <string-name>
            <given-names>T.</given-names>
            <surname>Horn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Kaiser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Riediger</surname>
          </string-name>
          , and W. Teppe, “
          <string-name>
            <surname>Model-Driven Software Migration - Process Model</surname>
          </string-name>
          , Tool Support and Application,” in Migrating Legacy Applications:
          <article-title>Challenges in Service Oriented Architecture and Cloud Computing Environments</article-title>
          .
          <source>IGI Global</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>E. J.</given-names>
            <surname>Chikofsky</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Cross</surname>
          </string-name>
          , “Reverse Engineering and Design Recovery: A Taxonomy,” IEEE Software,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>R.</given-names>
            <surname>Kazman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Woods</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Carriere</surname>
          </string-name>
          , “
          <article-title>Requirements for integrating software architecture and reengineering models: CORUM II,”</article-title>
          <source>in Proceedings Fifth Working Conference on Reverse Engineering. IEEE Comput. Soc</source>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <article-title>[8] OMG, Architecture-driven Modernization: Abstract Syntax Tree Metamodel (ASTM)- Version 1.0</article-title>
          . Object Management Group,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>H.</given-names>
            <surname>Bruneliere</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Jouault</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Madiot</surname>
          </string-name>
          , “MoDisco,”
          <source>in Proceedings of the IEEE/ACM international conference on Automated software engineering - ASE '10</source>
          . ACM Press,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>C.</given-names>
            <surname>Zillmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Winter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Herget</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Teppe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Theurer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Fuhr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Horn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Riediger</surname>
          </string-name>
          , U. Erdmenger,
          <string-name>
            <given-names>U.</given-names>
            <surname>Kaiser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Uhlig</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zimmermann</surname>
          </string-name>
          , “
          <article-title>The SOAMIG Process Model in Industrial Applications</article-title>
          ,” in
          <source>2011 15th European Conference on Software Maintenance and Reengineering. IEEE</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Menychtas</surname>
          </string-name>
          and E. Al., “
          <article-title>Software modernization and cloudification using the ARTIST migration methodology</article-title>
          and framework,
          <source>” Scalable Computing: Practice and Experience</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>R.</given-names>
            <surname>Khadka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Reijnders</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Saeidi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jansen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Hage</surname>
          </string-name>
          , “
          <article-title>A method engineering based legacy to soa migration method</article-title>
          ,
          <source>” in 27th IEEE International Conference on Software Maintenance (ICSM)</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Mirzaaghaei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pastore</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Pezze</surname>
          </string-name>
          , “
          <article-title>Supporting test suite evolution through test case adaptation</article-title>
          ,” in
          <source>2012 IEEE Fifth International Conference on Software Testing, Verification and Validation</source>
          ,
          <year>2012</year>
          , pp.
          <fpage>231</fpage>
          -
          <lpage>240</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>E. J.</given-names>
            <surname>Rapos</surname>
          </string-name>
          , “
          <article-title>Co-evolution of model-based tests for industrial automotive software</article-title>
          ,” in
          <source>2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST)</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>2</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>