Manual Overview
Testspace presents a unique model for manual testing. Instead of a user interface for implementing test cases, plain text files maintained in a repository define the tests.
Why? The trend in DevOps is deploying as much test automation as possible. But manual testing is still required. So the approach taken has been to follow the developer workflow, enabling manual testing to supplement existing automated testing and facilitate developers participating in the manual verification process.
The first step was using the uniformity of repositories, such as GitHub. By definition, versioning, branching, and pull requests are all built-in.
The second step was to enable the power of coding to implement reusable and data-driven tests. The Liquid templating language from Shopify; is used to support "include" files, variables, parameters, and conditional logic.
And lastly, support a hybrid of automation and manual verification through unique fixturing based on GitHub Actions and AWS Lambdas, significantly reducing tedious and redundant setup/teardown execution time requirements.
A Testspace project can be used for managing test automation results, executing manual tests, and conducting exploratory testing.
Test files are executed as individual units and are automatically discovered by Testspace. The following is an example test file (aka spec
) being executed within Testspace.
Here is the markdown content of the above example file.
---
testspace:
title: Turn off power
matrix: # test different systems
- name: Idle
timeout: 27 seconds
reqs: "[reqs](https://github.com/testspace-com/demo/issues/5)"
- name: Shutdown
timeout: 14 seconds
reqs: "[reqs](https://github.com/testspace-com/demo/issues/6)"
cycle: 77
---
# {{ spec.title }}
This test verifies shutdown stages for each device. The device type will always be displayed during the power cycle shutdown sequence.
- The timeout specific to each device type required for verification
- Any Device specifics requirements can be found on [here](https://github.com/testspace-com/demo/issues?q=is%3Aissue+is%3Aopen+label%3Areqs) filtering on the `reqs` label.
## [setup]
The following is the requirement matrix:
State | Timeout | Info
-----| --------| -----
{%- for state in spec.matrix %}
{{ state.name }} | {{ state.timeout}} | {{state.reqs }}
{%- endfor %}
## [teardown]
Make sure to remove device from any external contact.
## Device 457.A check
This device requires the switch **cycle** to be set to `{{ spec.cycle }}`.
{% for state in spec.matrix %}
* Sequence timeout for `{{ state.name}}`: {{ state.timeout -}}
{% endfor %}
## Device 777.a check
This device requires the switch **cycle** to be set to `{{ spec.cycle | plus: 100 }}`.
{% for state in spec.matrix %}
* Sequence timeout for `{{ state.name}}`: {{ state.timeout -}}
{% endfor %}
## Beta Device 4.0.01 check
This device requires the switch **cycle** to be set to `{{ spec.cycle | plus: 200 }}`.
{% for state in spec.matrix %}
* Sequence timeout for this `{{ state.name}}`: {{ state.timeout -}}
{% endfor %}
## Turn off delay
The turn off delay verification is used for input configuration.
- Go back on line to check for switch-on
- Check UI mode display
Also Included
The framework also includes:
- GitHub issues integration
- Exploratory testing built-in
- Test planning that can leverage a branching workflow, including pull requests