LFN-CNTI�
Testsuite improvement proposal
Martin Matyáš, Tietoevry
Konstantin Yarovoy, Tietoevry
Oliver Horecny, Tietoevry
LFN-CNTI – core assets
LFN-CNTI – non-core assets
LFN-CNTI testsuite – Improvement motivations
LFN-CNTI testsuite – proposed improvement areas
(1) Test case definition readability
(2) Unload some non-core assets
(3) Introduce best practice traceability
(4) Test execution logging/tracing/reporting
(1) Test case definition readability (current state)
LIST_OF_TESTS.md
RATIONALE.md
USAGE.md
TEST-CATEGORIES.md
points.yml
workload/configuration.cr
Test description
Best practice
Points
Categories
Test steps
(1) Test case definition readability
Use a “feature file” with Gherkin code.�For all test case definition information.
Use Cucumber test framework along with it.
(1) Test case definition readability
Test description
Best practice
Points
Categories
Test steps
configuration.feature
(1) Test case definition readability
Implication of Gherkin/Cucumber introduction:
Sorry, Crystal would need to go.
Would be replaced by Ruby (or alternatively Python)
(1) Test case definition readability
Example/demo of Cucumber test case�implementation
Mockup example
- Directory structure
- Feature files
- Step implementation in Ruby
Cucumber demo
- cucumber execution
- pretty formatter
- json formatter
(2) Non-core asset reduction
Functionality | Crystal | Ruby/cucumber | Python/behave |
Totem (config management) | lib | lib | lib |
Halite (HTTP REST API) | lib | lib | lib |
ICR (Interactive crystal console) | lib | lib | lib |
Commander (CLI command builder) | lib | lib | lib |
Retriable (Retry management) | lib | lib | lib |
Protobuf (enc/dec .proto files) | lib | lib | lib |
Tar | in-house | lib | lib |
Find | in-house | lib | lib |
Git | in-house | lib | lib |
Docker | in-house | lib | lib |
Kubectl | in-house | lib | lib |
Helm | in-house | reimpl | lib |
Cluster-tools | in-house | reimpl | reimpl |
Airgap (part of testcatalog) | in-house | remove | remove |
Kernel introspection | in-house | reimpl | reimpl |
K8S netstat | in-house | reimpl | reimpl |
Release manager | in-house | reimpl | lib |
(2) Non-core asset reduction
Cucumber/ruby�(Behave/python)
Test definitions:
.feature
Test step implementations:
.rb / .py / ….
cnti_pretty_formatter
cnti_yaml_formatter
formatterN
stdout - Execution_progress
results.yml
custom_output.<ext>
logger
Logs (error/warning/info/debug)
cnti_cert_formatter
certification_protocol
anuket_report
anuket_formatter
tools
SUT
(3) Introduce best practice traceability
(4) Test execution logging/tracing/reporting
(4) Test execution logging/tracing/reporting
Current spec to be converted to Gherkin/Cucubmer
(4) Test execution logging/tracing/reporting
Example/demo of Spec test implementation
Mockup example
- Feature files
- Step implementation in Ruby
LFN-CNTI testsuite – presented proposals wrap-up
All at one place, Use Gherkin
(2) Unload some non-core assets
Leverage Cucumber and libraries
(3) Introduce best practice traceability
Introduce reference to best practices
(4) Test execution logging/tracing/reporting
Clean-up, unify and modularize
Next steps
LFN-CNTI improvement proposals - questions
Thanks for attention!