Skip to content
Aziz edited this page Feb 5, 2019 · 1 revision

Quack is a test management system. It allows to store testcases, testsuites, build and execute test runs.

Objectives

Testcases

As soon as the project gets bigger the more testing should be performed prior to deployment.

In most cases it is important to execute all tests needed. Keeping all testcases in a single service becomes essential.

Testsuites

All testcases are usually logically grouped in a tree - testsuites. In all known test management services initial testsuite tree is immutable. This lack of flexibility may cause team performance issues, analysis and planning hardship.

QuAck allows to build and save trees of any types out of existing testcases. It changes the whole idea of testsuites.

In terms of QuAck testsuite is just a pre-set of Filters and Groupings. This means that by loading a testsuite you are loading existing testcases, filtering them and building a testsuite tree in runtime. This gives the flexibility to re-build testsuite trees as many times as you wish.

Execution

Any list or a tree of testcases could be converted to a test Launch. It represents selected testcases and allow users to mark testcases in current launch as Passed - Failed - Broken or Skipped.

Users can execute testcases in Launch in parallel without being afraid to interfere with each other. Thanks to the API test Launches could be marked as passed or failed from outside - from external running systems.

Launches could be analysed later on to determine bottlenecks, new testing strategies and measure effectiveness.

Projects

Nearly any business has at least several separated projects with their own teams and life cycles. QuAck offers this kind of division. All testcases, testlaunches, testsuites, e.t.c. - they all belong to a single project.

All entities within a project live separately form others without intersections. Each project can have it's own configuration - including permissions restrictions.

Plugins

All external integrations are implemented in a plugguble manner. Which means that you can use a variety of plugins suitable of even customized for your business.

Tracker Integration

Pluggable tracker integration implementation allows to choose the Issue Tracking system you'd like to integrate with.

It could be Jira, Bugzilla or Github. It could be your own internal tracker - you just need to implement corresponding interfaces and configure the service to use your implementation.

Authentication

Authentication system is abstract. You can use existing authentication providers or implement your own.

E.g. there could be a property or database-based authentication providers, login-though-jira providers, ldap-provider, login-from-your-own-system-providers. You just need to configure the service to use appropriate provider or implement a new one if needed.

External Test Executions

Executors abstraction allows to integrate with external executing systems. Selected testcases could be requested to be executed outside. Testlaunch object will (or will not) be created so that external systems will be able to update it after execution.

E.g. it could be a jenkins plugin. It will send request to Jenkins to execute selected list of testcases. Jenkins will be able to update testlaunch status later after execution.

Security Model

Access to the project is granted to groups of users. Authentication provider returns the list of all groups and groups of specific users. It is up to an Authentication provider developer what will be used as groups.

Administrator's credentials are set up in a config file. Administrator can create projects and grant permissions to them.

API

All service is based on REST-api. Everything you can do in UI - you can do in API. And sometimes even more.

Clone this wiki locally