Project

General

Profile

Actions

coordination #15132

open

[saga][epic] Better structure of test plans in main.pm

Added by okurz about 8 years ago. Updated over 3 years ago.

Status:
Blocked
Priority:
Low
Assignee:
Category:
Enhancement to existing tests
Target version:
Start date:
2018-11-20
Due date:
% Done:

86%

Estimated time:
(Total: 13.00 h)
Difficulty:

Description

motivation

Currently the structure of the test plan in main.pm file is using simple if/else and variables which are mainly boolean to define the test plans for different scenarios with the help of some grouping functions. While there are problems advantages of this approach are that we are using simple tools and there is nearly no duplication of test module calls.

problems

  • P1: The test plan for individual scenarios is hard to follow and it is especially hard for new contributors of individual test modules to find a good place where a test module should be stored
  • P2: It is hard to find out under which scenarios a certain test module is called
  • P3: There is no easy way to add a module based on conditions but only based on existing scenarios which cover these conditions
  • P4: There is no explicit place where to define the variables. The variables are mainly defined by name and use only.
  • P5: Too much business logic is in the database settings which is not versioned in sync with the test code
    • P5.1: The templates files are old and therefore confusing to some. As they are flattened database dumps they are not useful for manual editing

suggestions

  • S1: Better use basetest::is_applicable from os-autoinst in test modules with multiple inheritance and based on mixin patterns for modules
  • S2: Use proper inheritance for variable definitions that influence the test plan, e.g. with perl hashes mapping to JSON objects. ('ENCRYPT_ACTIVATE_EXISTING' is a good example as it should basically be below the top level folder switch 'ENCRYPT' so that we can use it like $vars{ENCRYPT}{ACTIVATE_EXISTING})
  • S3: Define the flow of scenarios in a more concise way top-down with appropriate language
    • S3.1: Use dot language or similar tools to describe the test plan as graphs and then use some automagic to encode that into the more verbose real test plan
    • S3.2: Come up with a language proposal based on YAML

Subtasks 29 (4 open25 closed)

action #44030: [functional][y] Extend the use of scheduling test parametersRejectedriafarov2018-11-20

Actions
action #44252: [functional][u] Make more tests booting from HDD image "extratests" following the model of https://github.com/os-autoinst/os-autoinst-distri-opensuse/pull/6232Resolveddheidler2018-11-22

Actions
openQA Project (public) - coordination #44360: [epic] Parameterize test suites within job groupsBlockedokurz2019-01-25

Actions
openQA Project (public) - action #46667: Define version-able and human readable format for job scheduling-related tablesResolvedlivdywan2019-01-25

Actions
openQA Project (public) - action #46670: Create import for format defined in #46667Resolvedlivdywan2019-01-25

Actions
openQA Project (public) - action #46673: Extend tables for job scheduling by another table for parametersResolvedlivdywan2019-01-25

Actions
openQA Project (public) - action #50675: Commit changes to scheduling YAML to Git repositoryNew2019-04-24

Actions
openQA Project (public) - action #54143: Support parameters in {load,dump}_templatesResolvedlivdywan2019-07-11

Actions
openQA Project (public) - action #54146: Expose saving YAML and opt-in migration in the editorResolvedlivdywan2019-07-11

Actions
openQA Project (public) - action #54149: Diffs for better error handling in the YAML editorResolvedlivdywan2019-07-11

Actions
openQA Project (public) - action #54179: Re-use YAML betweens different groupsNew2019-07-12

Actions
openQA Project (public) - action #55454: The job group YAML schedule should support multiple scenarios with different variables, not just settingsResolvedlivdywan2019-08-13

Actions
openQA Project (public) - coordination #55730: [epic] Move parameters from test suites into job groupsResolvedokurz2019-09-06

Actions
openQA Project (public) - action #56540: convert staging job groups to YAMLResolvedlivdywan2019-09-06

Actions
openQA Project (public) - action #57845: Switch more job groups to YAML job templatesResolvedokurz2019-10-09

Actions
openQA Project (public) - action #58652: Write a training file about how to use YAML in job groupResolvedXiaojing_liu2019-10-24

Actions
openQA Project (public) - action #60329: Use more parameterized job templates for test suites only used onceResolvedtinita2019-11-27

Actions
openQA Project (public) - action #60782: descriptions for parameterized job templates independant of test suite descriptionsResolvedtinita2019-12-06

Actions
action #64967: job templates are duplicated as job template in job groups as well as test suitesResolvedtinita2020-03-29

Actions
openQA Project (public) - action #60014: Show YAML editor for unmigrated groupsResolvedokurz2019-11-19

Actions
openQA Project (public) - action #60020: Provide a script to migrate job groups to YAML automaticallyResolvedokurz2019-11-19

Actions
openQA Project (public) - action #60017: Document process and potential issues with migration to YAMLResolvedlivdywan2019-11-19

Actions
openQA Project (public) - coordination #66727: [epic] Define structure to define test suites not in openQA databaseResolvedokurz2020-05-13

Actions
openQA Project (public) - action #66781: hidden keys in yaml job templatesResolvedlivdywan2020-05-13

Actions
action #44420: [functional][y][timeboxed:6h] proof-of-concept of declarative test schedule definition, e.g. in YAML file(s)Resolvedriafarov2018-11-28

Actions
action #53159: [functional][y] Implement import of the test_data from another yaml fileResolvedJERiveraMoya2019-06-17

Actions
action #54839: [functional][y] Use new yaml structure for test suites to define different schedules for different envResolvedriafarov2019-07-30

Actions
action #57536: [functional][y] implement autodeployment of the job group settings to osdResolvedybonatakis2019-09-30

Actions
openQA Project (public) - action #66865: Support !inherit tag in YAML job templatesWorkable2020-05-14

Actions

Related issues 6 (2 open4 closed)

Related to openQA Tests (public) - coordination #13040: [functional][epic][u]more flexible console test selection by addons, testsuite variable, etc. (was: Run zypper lifecycle more selectively)Rejected2016-08-05

Actions
Related to openQA Tests (public) - coordination #31972: [qe-core][opensuse][functional][epic][userspace][medium]Harmonize openSUSE/SLE test module scheduleWorkableszarate2018-02-19

Actions
Related to openQA Project (public) - action #36994: Dynamic test flow definition + overrideResolvedokurz2018-06-08

Actions
Related to openQA Project (public) - coordination #37958: [epic] self-tests in os-autoinst-distri-opensuse for impact on staging test scheduleResolvedokurz2019-02-252020-05-19

Actions
Related to openQA Tests (public) - action #42440: [qam] default "kde" test incompletes sometimes because it takes too longResolvedokurz2018-10-13

Actions
Related to openQA Project (public) - coordination #58184: [saga][epic][use case] full version control awareness within openQABlockedokurz2019-08-01

Actions
Actions

Also available in: Atom PDF