Image Lg @1X (1)
know how 3 min. read

How do we ensure premium quality engineering?

Tuesday, 13th April, 2021
One of the pillars of MakoLab is quality assurance. This is where we make sure that the solutions we provide are characterised by stability, high performance and high quality. Our quality engineers are active participants in the entire life cycle of our apps, from compiling our offers, via design and implementation, right up to when they go live. We watch over not only the product itself, but also the delivery process. Last year we decided to create our own QA solution: the MakoLab Automation Framework.
One important part of our QA procedures is the automation of tests. This makes it possible to save time during cyclical activities like time-consuming regression test sessions, for instance, and allows us to cover work that cannot be carried out manually, such as performance and load testing, as well. We also supply automated solutions at numerous levels; API and back-end communication interfaces, UI and front-end visual layers, app and service performance, software security and web scrapping.

Every project the company undertakes is different, which means that the test harness requires a creative approach for all of them. QA has to develop its own solutions and that could well lead to a lack of cohesion between projects and difficulties in maintaining high-quality automation and code throughout the department. That, in fact, was what motivated us to develop our own tool, something which could help us solve the problem.
MakoLab Automation Framework
The MakoLab Automation Framework (MAF) is our own, original solution. Designed and written in Java, it is based on the most popular libraries dedicated to automated testing. They include Selenium WebDriver, with the use of our own infrastructure, which is rooted in containerisation, as well as REST Assured and HtmlUnit, among others.

The MAF was created as a response to MakoLab QA’s direct needs. Most of the problems we encountered obtained solutions which were included in the framework, eliminating the necessity of further analysis. The main idea was to create a framework which would make it possible to standardise the work of the entire department, speed up the process of providing tests as required for projects and increase the stability of the solutions. Less than six months after introducing the MAF, the pluses are visible to the naked eye:

  • TIME. Just beginning the automated process is unquestionably faster. All the necessities, the configurations with report libraries, the WebDriver service and other managers, are built in, meaning that the testing engineer simply has to pull up the MAF from the repository of artifacts and they are ready to create the testing scripts;
  • STABILITY. All the instructions provided in the MAF have been properly secured and pretested. Potential improvements will be available for every project using the framework;
  • STANDARISATION. The structural assumptions underlying the MAF impose standardisation of both the architecture and the terminology in the code of the automated tests;
  • SUPPORT. Thanks to the entire department working together, there is more technical support. Improvements introduced with the thought of one project in mind can have a positive effect on all the others;
  • TRANSPARENCY. The built-in reporting libraries and the integration with Jenkins mean that every test is presented in an attractive, graphic form available to the entire team.
If the points set out above are an inadequate description of the advantages of the MAF, then comparing the process of beginning automation with and without the framework should certainly suffice.

How the previous process worked:
  1. A new project was opened.
  2. The Selenium WebDriver, JUnit/TestNG, AssertJ and other libraries were pulled up.
  3. The manager and utility structures were created.
  4. All the necessary configuration classes were implemented.
  5. Implementation of the tests began; at the same time, every instruction had to be redesigned and reimplemented.
For an intermediate-level tester, creating a database like this for tests represents several days’ work at the very least.

How the process works now:
  1. A new project is opened.
  2. MAF is pulled up from Nexus.
  3. Implementation of the tests begins, employing ready-to-use, secured methods from the MAF. Goodbye to StaleElementReferenceException!
For an intermediate-level tester, this represents a maximum of thirty minutes’ work, provided they have access to a wide range of ready-to-use and pretested instructions.
MAF Easy
What about people who would like to start working on automation, but lack the relevant level of technical knowledge and programming skills to use the framework? The MAF Easy module was created for just that purpose. The Easy MakoLab Automation Framework is a more accessible form of automation tool intended for people who are less technologically advanced. The Easy uses the method provided in the MAF, reconstructing it in a way which is clearer to every tester, even one who has never had anything to do with automation before. We have compared creating testing scripts in Easy with constructing a building using building blocks. In this case, the building blocks are the ready-to-use components which have to be placed in the scripts.

The main features of the MAF Easy module are:
  • built-in components which are responsible for methods for testing the UO and API layers;
  • Cucumber and Allure reporting services are built in. There is not even any need for the quality engineer to call hooks. Every pre- and post-test action is called automatically;
  • the module is integrated with Jenkins and has a built-in, multi-thread service;
  • the built-in assertion service is packaged with easily understood methods;
  • automation is begun even more quickly, making the Easy an outstanding solution not only for junior staff, but also for smaller projects where ultra-fast results are needed. The Easy requires almost no more time than ‘clicking through’ tests in Selenium IDE or Katalon, for example, and, at the same time, it maintains a higher stability and greater integrality with our solutions.
The differences in using the MAF and the MAF Easy module
Seen from the standpoint of the quality engineer, using the MAF or the Easy is a matter of choice; everything depends on the context and individual needs.

The visible benefits of using the Easy are as follows:
  • there is no demand for extensive programming knowledge;
  • visible results can be obtained even more quickly;
  • it is a subset of the MAF. In fact, it uses around 60% of the MAF’s ready-to-use instructions, which are secured and packaged in methods to make using them as intuitive as possible.
There are a couple of limitations which should be taken into account, though:
  • the MAF Easy is not as flexible as the pure MAF. If you want to make radical modifications or reconstruct particular events, then we suggest using the MAF;
  • the MAF contains instructions which are not used in the Easy, but might be crucial to a project that is not currently automated.
An example of using MAF Easy instructions is presented below:
Maf Screen

MakoLab Automation Framework screen capture

Development Plan
The MAF is constantly being updated, with new functions and capabilities being added, while plans for its development have been drawn up on a grand scale. The most important of the plans for improvement are:

  • adding the services of more libraries, making it possible to test increasingly advanced projects and functions;
  • adding support for BrowserStack;
  • adding a module for mobile app testing: facilitating app testing on both leading operating systems, in other words, Android and iOS;
  • updating in terms of new technologies.
If you’re interested in testing, quality control processes and producing software and if you’d like to become part of our team, then head over to our Careers section, check out the vacancies we’re recruiting for and send us an application!

Jakub Konicki Lg 1X
Jakub Konicki
Senior QA Engineer
Karol Opitz Lg 1X
Karol Opitz
QA Engineer

Innovation, Quality Assurance, Quality Enineering, Test Automation