In today’s software engineering, as never before, tests have become a critical ingredient. Now more than ever, the stability and functionality of the software is at the core of the software development process. Methodologies such as TDD (Test Driven Development) or BDD (Behaviour Driven Development) clearly indicate the trends in the future development of software engineering. We see tests in a much wider context – Behaviour-Driven Relation (BDR)
Such tests can be subdivided into many different types – depending on their intended use, application design, test duration and testing method. Consequently, a single test can be on the one hand a functional test, and on the other hand a part of the acceptance test, while some software developers will also regard it as an element of the regression test.
Although the names of the tests determine their design and logic, there is no need to engage in a lengthy academic discussion. We believe that a test should primarily be a tool to create, maintain and use a system whose quality is being continuously improved. This is precisely the way to approach the testing process.
Our services include tests of IT systems running in Windows, Linux, browser applications and applications running on payment card terminals, also in outsourcing.
In our approach, we propose the division of tests according to the time of creation of the tested parts of the application. Thus, the tests can be classified as follows:
- Manual tests of newly developed parts of the system, including both functional tests and non-functional tests, integration tests, etc. concerning the current sprint/evolution/prototype/iteration.
- Automatic regression tests of parts of the system developed during previous sprints/evolutions/prototypes/iterations, which were tested manually during the previous cycles.
Using such tests means that the entire system, including all of its areas, is covered. We focus on functional blackbox tests performed from the user interface (WWW) because in our opinion they best meet the current market demand. However, we also use our qualifications as developers to carry out structural whitebox tests, integration tests and, naturally, performance tests.
The cyclical testing procedure usually looks like this:
- The test scenarios are created
- During software development, we use appropriately containerised environments to deliver the Continuous Testing service – implemented using automatic tests.
- After the completion of a particular fragment of software development, we conduct the automatic testing process once more (as regression tests).
- We carry out manual tests based on the previously defined test scenarios – after successful completion of tests, the application is ready in terms of quality for production implementation because the tests can also serve as acceptance tests.
- It is at this stage that we determine the test scenarios that can be automated, and they are subsequently implemented so as to become an element of the regression tests during the next run.
The cycle is repeated for every subsequent sprint/evolution/prototype or iteration. The result is the formation of a constantly expanding database of automatic tests that can be used in the Continuous Testing process. Naturally, such tests are covered by the maintenance service which means, in particular, that their implementation has to be adapted to changes in the system.
OUTSOURCING OF APPLICATION TESTSMORE
Consequently, we offer cooperation with full outsourcing of the application testing process by:
- Defining test scenarios in such a way as to ensure adequate coverage of the application. More specifically, this does not only refer to the way the test is run but also to a specific data set (or, more broadly, database) required to complete the scenario.
- Managing test scenarios with consideration of the coverage of the application – making sure that the scenarios are up to date, suitable and consistent with the version of the system.
- Creating and managing the full containerisation infrastructure (Docker/Kubernetes) to dynamically create and remove any number of testing environments in order to:
- provide the infrastructure for automatic tests at the developer level in the Continuous Testing process,
- provide the infrastructure for automatic tests at the client level,
- provide the infrastructure for manual tests.
- Installing all elements required for the operation of the system in such an environment (additional applications, database servers, queuing systems, application servers, etc.).
- Creating all integration elements required to conduct the tests (e.g. simulators or mockups of applications with which the particular system is integrated).
- Creating, managing and supporting automatic tests run on the level of the user interface or system API in order to:
- enable Continuous Testing – including the full mechanism for reporting the test results to the developers,
- conduct automatic tests as a fragment of the sprint / evolution / prototype / iteration acceptance procedure.
- Coordinating all elements of the process.
As a result, we offer full outsourcing of application tests – including the most complex ones – in complicated system environments.
We cooperate with our clients using the Agile methodology – ensuring extensive flexibility in the way our collaboration is managed and full adaptation to the changing expectations and business environment.