Skip to content

Configuration Generation

gameztaker edited this page Feb 17, 2017 · 53 revisions

This page explains how the configurations are generated to test the transformation depending on the framed features. This solution is a simplified method inspired by [1]. It uses requirements that can be seen in the table Requirements below. The requirements are tied to a configuration of its dependant feature. Features on which the require dont depend are not shown in the table. You can find other concepts to test a feature dependant execution that was considered to be used here in [2] and [3].
An algorithm goes through a list of the requirements and constructs complete configurations of requirements that dont contradict each other. This is done until every requirement is used once. The algorithm uses a set of a reduced number of features. This list can be seen in the table Reduced feature list. The value of the column Index indicates the position of the feature in the string representation which is used in the source code.

Take note: The corresponding test cases are generated with a title which begins with "Generated test" and ends with the string representation of the used configuration. This is used to delete a specific generated test case file after the corresponding test case was executed. The structure of this titles should not be changed without knowing its side effects. Also there shouldn't be any other test cases of which titles start with "Generated test" since the algorithm tries to delete them in such a case.

##Reduced feature list

Index Feature
0 Role_Properties/ Role_Behavior
1 Role_Inheritance
2 Compartments
3 Dates
4 Role_Implication
5 Role_Prohibtion
6 Role_Equivalence
7 Group_Constraints
8 Occurence_Constraints
9 Relationship
10 Relationship_Cardinality
11 Intra_Relationship_Constraints
12 Inter_Relationship_Constraints
13 Compartment_Types
14 Compartment_Properties/ Compartment_Behavior
15 Compartment_Inheritance
16 Playable_By_Defining_Compartment
17 Data_Types
18 Data_Type_Inheritance

##Requirements

Requirement Description Dependant Configuration
R1 Role properties and operation are transformed Role_Properties/ Role_Behavior
R2 Role properties and operation are not transformed !(Role_Properties/ Role_Behavior)
R3 Role inheritances are transformed Role_Inheritance
R4 Role inheritances are not transformed !(Role_Inheritance)
R5 Fulfillments with compartment types as player are transformed Compartments & Compartment_Types
R6_1 Fulfillments with compartment types as player are not transformed !(Compartments) &
!(Compartment_Types)
R6_2 !(Compartments) & Compartment_Types
R7 Fulfillments with data types as player are transformed Dates & Data_Types
R8_1 Fulfillments with data types as player are not transformed !(Dates) & !(Data_Types)
R8_2 !(Dates) & Data_Types
R9 Role implications are transformed Role_Implication & Role_Equivalence
R10_1 Role implications are not transformed !(Role_Implication) &
!(Role_Equivalence)
R10_2 !(Role_Implication) & Role_Equivalence
R11 Role prohibitions are transformed Role_Prohibtion
R12 Role prohibitions are not transformed !(Role_Prohibtion)
R13 Role equivalences are transformed same as R9
R14_1 Role equivalences are not transformed same as R10_2
R14_2 same as R10_1
R15 Group constraints are transformed Group_Constraints
R16 Group constraints are not transformed !(Group_Constraints)
R17 Occurrence constraints are transformed Occurence_Constraints
R18 Occurrence constraints are not transformed !(Occurence_Constraints)
R19_1 Relationships are transformed Relationship &
!(Relationship_Cardinality) &
!(Intra_Relationship_Constraints) &
!(Inter_Relationship_Constraints)
R19_2 Relationship &
!(Relationship_Cardinality) &
!(Intra_Relationship_Constraints) &
Inter_Relationship_Constraints
R19_3 Relationship &
!(Relationship_Cardinality) &
Intra_Relationship_Constraints &
!(Inter_Relationship_Constraints)
R19_4 Relationship &
!(Relationship_Cardinality) &
Intra_Relationship_Constraints &
Inter_Relationship_Constraints
R19_5 Relationship &
Relationship_Cardinality &
!(Intra_Relationship_Constraints) &
!(Inter_Relationship_Constraints)
R19_6 Relationship &
Relationship_Cardinality &
!(Intra_Relationship_Constraints) &
Inter_Relationship_Constraints
R19_7 Relationship &
Relationship_Cardinality &
Intra_Relationship_Constraints &
!(Inter_Relationship_Constraints)
R19_8 Relationship &
Relationship_Cardinality &
Intra_Relationship_Constraints &
Inter_Relationship_Constraints
R20 Relationships are not transformed !(Relationship) &
!(Relationship_Cardinality) &
!(Intra_Relationship_Constraints) &
!(Inter_Relationship_Constraints)
R21 Relationship cardinalities are transformed Relationship & Relationship_Cardinality
R22_1 Relationship cardinalities are not transformed !(Relationship) &
!(Relationship_Cardinality)
R22_2 Relationship &
!(Relationship_Cardinality)
R23 Intra relationship constraints are transformed Relationship & Intra_Relationship_Constraints
R24_1 Intra relationship constraints are not transformed !(Relationship) &
!(Intra_Relationship_Constraints)
R24_2 Relationship &
!(Intra_Relationship_Constraints)
R25 Inter relationship constraints are transformed Relationship & Inter_Relationship_Constraints
R26_1 Inter relationship constraints are not transformed !(Relationship) &
!(Inter_Relationship_Constraints)
R26_2 Relationship &
!(Inter_Relationship_Constraints)
R27 Compartment type attributes and operations are transformed Compartment_Types & Compartment_Properties/ Compartment_Behavior
R28_1 Compartment type attributes and operations are not transformed !(Compartment_Types) &
!(Compartment_Properties/ Compartment_Behavior)
R28_2 Compartment_Types &
!(Compartment_Properties/ Compartment_Behavior)
R29 Compartment inheritance are transformed Compartment_Types & Compartment_Inheritance
R30_1 Compartment inheritance are not transformed !(Compartment_Types) &
!(Compartment_Inheritance)
R30_2 Compartment_Types &
!(Compartment_Inheritance)
R31 Fulfillments of compartment to its self are transformed Compartments & Compartment_Types & Playable_By_Defining_Compartment
R32_1 Fulfillments of compartment to its self are not transformed !(Compartments) &
!(Compartment_Types) &
!(Playable_By_Defining_Compartment)
R32_2 !(Compartments) &
Compartment_Types &
!(Playable_By_Defining_Compartment)
R32_3 Compartments &
Compartment_Types &
!(Playable_By_Defining_Compartment)
R33_1 Data types are transformed Data_Types &
Data_Type_Inheritance
R33_2 Data_Types & !(Data_Type_Inheritance)
R34 Data types are not transformed !(Data_Types) & !(Data_Type_Inheritance)
R35 Data type inheritance are transformed same as R33_1
R36_1 Data type inheritance are not transformed same as R34
R36_2 same as R33_2
R37_1 corner case all features chosen
R37_2 no features chosen

[1] K.D. Scheidemann, Optimizing the selection of representative configurations in verification of evolving product lines of distributed embedded systems, in: Proceedings of the 10th International Software Product Line Conference (SPLC’06), 2006, pp. 75–84.
[2] A. Ensan, E. Bagheri, M. Asadi, D. Gasevic, and Y. Biletskiy.Goal-oriented test case selection and prioritization for productline feature models. In Conference Information Technology:NewGenerations, 2011.

Clone this wiki locally