refstack/specs/proposed/refstack-org-result-visualization.rst
Rob Hirschfeld 1376b8129e Report Visualization Spec and Mocks
For https://storyboard.openstack.org/#!/story/111

This spec should be considered complete for final review.

This is a pair of read only screens for helping
community compare tests results starting from the
DefCore capabilities and allowing them to inspect
specific items on drill down.

The focus is on comparison against core and
other clouds not on quantative analysis.

Change-Id: I85fa223a4fd67b16d9103593f727a6811c741452
2014-06-10 07:42:35 -05:00

167 lines
5.6 KiB
ReStructuredText

Intuitive visualization for test comparison
==========================================
Blueprint: https://blueprints.launchpad.net/refstack/+spec/results-visualization
Storyboard: https://storyboard.openstack.org/#!/story/111
Result comparison is the very essence of refstack. This spec lays out the
basic design objectives, comparison matrix and wire-frames for the initial
visualization between cloud test runs. The display of this information
must make it simple for users to map their cloud interoperability to other
clouds.
Note: Positive results only for refstack public site.
We will still handle negative/skip use cases.
Problem description
-------------------
Refstack collects substantial amounts of detailed raw data in the form
of passed test results. Individually, these tests provide little insight
about cloud interoperability; consequently, restack must provide a way to
group results (likely capabilities) and contract with other posted test
results.
Specific Items that Need Visualization
Comparison of results against:
* Core Test List ("am I core?")
* Universe of Tests ("close to 100%?")
* Other's runs ("do I interoperate?")
* Previous runs ("did I improve?")
To make it easier to determine, results should follow the capabilities
groups rather than individual tests. Users should be able to drill down
into a capability to look at the test detail.
Note about Capabilities versus Tests: In DefCore, capabilities are
tracked as the definition of "core." Each capability has a defined
set of tests. For a core capability to be considered as "passed,"
all of the tests in that capability must pass. Since we do not
track "failed" as a state, a non-passing test simply makes the whole
capability not passing.
General Visualization: Tristate
----------------------------
The general approach is to focus on _deltas_ from other sets rather
than showing the actual results. This means that visualizations
will be more about what's different or changed. The preferred tool
will be the "tristate" graph: http://omnipotent.net/jquery.sparkline/#s-about.
For consistency, users should expect that:
* +1 = good, match
* 0 = ok, no match (run is advantaged over reference/core)
* -1 = bad, missing functionality
.. image:: https://wiki.openstack.org/w/images/1/19/Refstack_mock_tristate.png
:width: 700px
:alt: Tristate Graph Sample
There are two consistent but slightly different ways that we will use tri-state:
1) comparing to core tests with a goal of showing compliance
* +1 = passed a core test or capability
* 0 = passed a non-core test or capability
* -1 = did not pass a core test or capability (this is the same as "not-reported")
2) compare to other tests with a goal of showing interoperability
* +1 = passed in both samples
* 0 = passed in subject but not in reference (subject is advantaged)
* -1 = not passed in subject but did in reference (subject is disadvantaged)
An example rendering would lock like this:
.. image:: https://wiki.openstack.org/w/images/5/5e/Refstack_mock_comparison.png
:width: 700px
:alt: Comparison Mock Up
Important Design Note: All tristate graphs must use the same ordered capability/test list
to ensure that results are easily to compare visually. The purpose of the tristate is
to help quickly find outliers not perform detailed comparison. Drill downs will be used
to resolve specific differences.
Detailed Visualization: Drill Down
----------------------------
We will expand the capabilities level tristate in the detailed visualization but
still retain the tristate meanings with specific tests. In the drill down, the
user will see the original tristate graph above a table with the capabilities
list (order preserved) by rows. In each row, the following columns:
* the name of the capability
* a tristate will visualize the individual test results using the same +1/0/-1 semantics
* a simple list of the -1 tests
Usability Note: The name of the test/capability should be included as a hover.
Alternatives
----------------------------
There are several other approaches to visualize this information including shaded table
cells and spider charts. This would be acceptable alternatives; however, the tristate
chart is compact, very simple to use and highly intuitive for comparing result sets.
It would be possible to use tristate shapes (circle, open circle, square) to reflect the same
data on tables.
Data model impact
Likely none; however, depending on the complexity of the queries,
it may be necessary to create intermediate tables to to summarize
capabilities from test results per run to improve performance.
If new models are needed, this spec should be updated with the design.
At this time, we assume that the collection does not require an
intermediate model.
Specification for the method
These are read-only reports and should use GETs.
The URL path should match the other UI paths with then following pattern:
Compare against previous results:
HTML response: GET /[refstack base]/compare/[release]/[cloud id]
Compare against other clouds:
HTML response: GET /[refstack base]/compare/[release]/[cloud id]?to=[other 1]|[other 2]
JSON response same as HTML but with .json
Security impact
None. These are open reports.
Notifications impact
None.
Other end user impact
None.
Developer impact
None.
Assignee(s)
TBD
Work Items
* Spec & Mock
* CSS & HTML Frame
* Data Collection
* Connect Data into UI Page
Dependencies
Sparklines JS libraries: http://omnipotent.net/jquery.sparkline/#s-about
Documentation Impact
Need to document screen and drill down expectation.
References
http://wiki.openstack.org/wiki/Governance/DefCoreCommittee