How we handle QA at Zitec

As humans, we are prone to making mistakes, but there are times when even a slight error can prove to be very costly. There may be flaws in the software product caused by human error, but when they are left unfound during the development process, they can compromise software quality, resulting in expensive consequences.

At Zitec, we put the quality of the software products first – the application should behave in a fault-free and safe manner, exactly as expected. To achieve this standard of quality, our Quality Assurance team analyzes and stays up to date with the latest technologies in the industry, experimenting and focusing on the best practices. 


As a quick overview of our usual development process, the continuous integration and deployment takes place in GitLab’s pipelines. This is where, in a Docker environment, the “magic” happens – the application gets built, deployed, tested, and released into production. Stay in touch – more details about this pipeline process soon.

In terms of testing, with every change brought to the code, a new pipeline is created that automatically triggers security tests, unit tests, web end to end tests, API tests and visual tests. Let’s take a quick look at each of these processes.

Security tests – we scan the project’s source code, detecting potential vulnerabilities.

Unit tests – We test the code piece by piece using unit testing frameworks like phpUnit (backend), or Jest (frontend).

Web end to end tests – These tests are mainly focused on automating the regression testing process – the way we make sure that alongside new features, the existing functionalities continue to work as expected. With these tests, we simulate the user’s behavior by literally opening the application in a real browser and performing different kinds of actions (clicking buttons, filling up forms, placing products into shopping carts and so on).

Having multiple frameworks to choose from, like Test Cafe, Cypress, and Codeception, enables us to adapt to each project’s specific requirements.

API tests – As we occasionally deal with hundreds of API endpoints, performing manual regression tests (making sure that the existing endpoints still work as expected) would be inefficient and time consuming. Happily, the API testing frameworks like Codeception or Behat allow us to perform these tests in a resource efficient manner. As a best practice, we test the new API endpoints directly by creating automated tests for them – asserting status codes, the response payloads, and so on.

Visual testing – This is the automated process of detecting and reviewing visual UI changes. If there is a minor UI change (e.g., different font size, a changed text color, and so on) then the tests written using tools like BackstopJS will fail and the development team will be notified about all these kinds of changes.

The practices mentioned above not only lead to end user satisfaction by interacting with a quality product, but also to confidence within development teams. Our team currently maintains 10500 tests across 10 projects and this number is increasing rapidly, thus we are forced to constantly improve our frameworks to be easily maintainable and reduce the run time.

Leave a Reply

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments