-
Notifications
You must be signed in to change notification settings - Fork 2
Configuration Generation
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.