Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
data_design_ide [2021/02/10 02:10] – [GENERATE] admin | data_design_ide [2024/01/02 22:56] (current) – removed admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Data Design IDE ===== | ||
- | //Data Design IDE// is the development and execution (automation) of combinatorial test design models. This is typically used to generate a set of minimal permutations of variables to achieve the desired coverage using [[Combinatorial Algorithms| Combinatorial Testing]]. | ||
- | Most of the software fault are caused by the interactions of 2-3 variables ([[https:// | ||
- | |||
- | By using the appropriate combinatorial algorithm, you could cut down the number of test cases by 90% and still achieve sufficient test coverage. | ||
- | |||
- | There are 4 tabs in this IDE that matches the development steps: | ||
- | * [[#DEFINE ]] | ||
- | * [[#GENERATE ]] | ||
- | * [[#SCRIPT ]] | ||
- | * [[#EXECUTE ]] | ||
- | |||
- | ---- | ||
- | |||
- | |||
- | ==== DEFINE ==== | ||
- | |||
- | {{wiki: | ||
- | |||
- | === Variables === | ||
- | In //DEFINE//, you define the testing variables as well as the expected result variables. | ||
- | * //Variable Name// - variables must have unique names and preferably legal java variable names | ||
- | * //Data Type// - appropriate data type must be selected especially if the variables are referenced by //Derived// variables | ||
- | * //Domain Values// - a list of discrete values to be used to generate (populate) [[# | ||
- | * //Derived// - check this box if the value of the variable depends on values of other variables. | ||
- | * // | ||
- | |||
- | == Domain Expression == | ||
- | Domain values for non-// | ||
- | |||
- | For //Derived// variables, //Domain// must have exactly one value, which can be static value or //groovy// expression. Below is a simple example to calculate the insurance premium credit of $100 given to good student age < 20: | ||
- | |||
- | (Age < 20 && GoodStudentStatus = true)?100:0 | ||
- | |||
- | You may use plugin reference in //Domain// value/ | ||
- | |||
- | | ||
- | | ||
- | | ||
- | |||
- | For more complex scenario: | ||
- | | ||
- | |||
- | where order1Obj is a groovy/java object that is defined/ | ||
- | |||
- | Use [blank] to encode blank string and [null] for null string/ | ||
- | |||
- | === Constraints / Rules === | ||
- | When designing test data using combinatorial testing techniques, we often need to remove or avoid certain combinations as they are either unfeasible or unnecessary for whatever reason. | ||
- | |||
- | The solution is to create a set of constraints or rules to filter out certain permutations. | ||
- | |||
- | Constraints are expressed as a simple expression: | ||
- | IF condition THEN assertion | ||
- | |||
- | {{wiki: | ||
- | |||
- | |||
- | The // | ||
- | | ||
- | |||
- | For example: | ||
- | IF (OS = " | ||
- | |||
- | The // | ||
- | * **>** : greater than, numeric fields only | ||
- | * **<** : less than, numeric fields only | ||
- | * **=** : equals | ||
- | * **!=** : not equals | ||
- | * **>=** : greater than or equal, numeric fields only | ||
- | * **< | ||
- | |||
- | Arithmetic operations are also supported: | ||
- | IF DEPOSIT_AMOUNT - WITHDRAW_AMOUNT <= 0 THEN REJECT_TRANSATION = true | ||
- | |||
- | Only numeric variables can participate in the arithmetic operations. Following arithmetic operations are supported: | ||
- | * **+** : addition | ||
- | * **-** : substration | ||
- | * ***** : multiplication | ||
- | * **/** : division | ||
- | * **%** : mod operation | ||
- | |||
- | When comparing with text, the text must be enclosed with double quotes ("). | ||
- | |||
- | Numeric constants may be used in the comparison, for example: | ||
- | IF AGE >= 19 THEN ADULT = true | ||
- | |||
- | Parenthesis can be used to help organize complex expression, for example: | ||
- | IF (WINTER=true && TEMPERATURE > 30) || (SUMMER=true && TEMPERATURE < 90) THEN GOOD_WEATHER = true | ||
- | |||
- | Static values specified in comparison must be a valid value for the variable or it will result in errors during generation. | ||
- | |||
- | ---- | ||
- | ==== GENERATE ==== | ||
- | {{wiki: | ||
- | |||
- | To generate // | ||
- | * pairwise | ||
- | * 3-wise | ||
- | * 4-wise | ||
- | * 5-wise | ||
- | * 6-wise | ||
- | * Mixed | ||
- | |||
- | You may customize /edit // | ||
- | * remove rows - invalid permutations (rows) | ||
- | * add rows - additional required permutations | ||
- | * edit values - change value, usually done for derived variables | ||
- | |||
- | Be aware that any changes to // | ||
- | |||
- | === Mixed Strengths === | ||
- | By default, //Overall Strength// applies to all variables excluding //Derived// variables. In cases you wish to apply more rigorous testing than other variables. | ||
- | |||
- | {{wiki: | ||
- | |||
- | After selecting //Mixed// strength, section //Variable Interaction (Mixed Overall Strength only)// appears. | ||
- | |||
- | |||
- | ---- | ||
- | ==== SCRIPT ==== | ||
- | |||
- | {{wiki: | ||
- | |||
- | Script to be executed to process rows in // | ||
- | |||
- | // | ||
- | |||
- | Refer to [[ide_script | Script Editor ]] for more information about this script editor. | ||
- | |||
- | There are two types of scripts: //MAIN// and //DATA//. | ||
- | |||
- | //MAIN// script is the main program which executes the test cases. | ||
- | |||
- | //DATA// script is used to instantiate and create objects (groovy/ | ||
- | For example, you may create a purchase order object to be posted to REST api: | ||
- | | ||
- | |||
- | The order object " | ||
- | | ||
- | |||
- | ---- | ||
- | |||
- | ==== EXECUTE ==== | ||
- | |||
- | {{wiki: | ||
- | |||
- | As script executes, IDE receives and displays the execution result one row at a time in the tabular format. | ||
- | |||
- | The header shows the execution progress. | ||
- | |||
- | The executions currently are not counted in Dashboard stats. | ||
- | |||
- | Executions can be archived/ | ||
- | |||
- | Historical executions can be accessed by clicking on //Past// link. |