Quality Management: Test cases, test suites, and test sessions
### Background - Customers are starting to get interested in doing quality management in GitLab, instead of another tool. - At GitLab, our own quality team is increasingly in need of such a feature. - This is an MVC to implement such a feature in GitLab. ### Intended flow and description - Test engineers create individual test suites containing test cases. These are essentially blue prints of tests. - A test engineer, at the group level, creates a test suite object from the test suites list view. From within the test suite object, the test engineer adds a description. - The test engineer then adds individual test cases to the test suite. They specify a title and a description. Both of these are Markdown text fields. - Later on, the test engineer decides to execute several tests. They create a test session object at the group level. They do so from the test sessions list view at the group level. - From within the test session object, the test engineer "instantiates" multiple test suites, and adds them to the test session object. That is, each time they do that, a copy of the test suite blueprint is instantiated, and associated with the test session object. The "copy" of the test suite blueprint depends on the test suite object at that point in time. - Once the test suite instantiations are added to the test session, the test engineer proceeds to execute the tests for each test case (instantiation). After each test, the test engineer toggles the result to `Passed` or `Failed`. It is `Pending` by default. The statuses bubble up as shown in the mockup. If everything below is `Pending`, then you are `Pending`. If everything below is `Passed`, then you are `Passed`. If at least one thing below is `Failed`, then you are `Failed`. - The test engineer closes the test session object when they are done. | Test suite | Test session | Test suites list | Test sessions list | | --- | --- | --- | --- | | ![test-suite](/uploads/e405d4f4e2583be3a8f657b12e458d34/test-suite.png) | ![test-session](/uploads/257276a3066bd8021ba2022e42c72e73/test-session.png) | ![test-suites-list](/uploads/90c38c1e75c10ebd04b97378bfa802de/test-suites-list.png) | ![test-sessions-list](/uploads/9939959482b4891811a9ad94cfd52719/test-sessions-list.png) | ### Limitations/constraints in MVC - Test suites and sessions do not have labels. - Test suites and sessions do not have assignees. - Test cases cannot be shared between test suites - they are only editable from with their parent test suite.
epic