Is QA important to you?  The quality of the software is crucial to the success of software development. One of the essential components of ensuring software quality is quality assurance (QA). Testing engineers ensure that products meet business and technical requirements and that processes improve quality control and testing. 

So we talked to our QA team and gave them questions to answer. Here’s your guide through QA – from A to Q . Learn all the different types of testing in QA and the key roles and responsibilities of QA, and BONUS tips for successful QA in software development, including testing in different environments and popular technologies and tools. Let’s get going! 

What is quality assurance (QA) in software development?

Software quality is one of the most important things when developing software. It is related to all areas of software development, from the initial idea to the actual implementation of the software by the end user. A QA engineer’s job is to guarantee or ensure that product quality meets or validates the business and technical requirements of clients or software users. It focuses on the quality of processes that can improve quality control and testing.      

Key roles and responsibilities of QA

Key roles and responsibilities of software quality assurance (QA)

There is usually an opinion that a QA engineer is only responsible for detecting bugs in some software, that is, testing the software. However, the position of QA is much more complex and includes all phases of software development, which distinguishes a QA engineer from a tester – from the initial idea to the actual implementation of the software by the end user. The following are all the steps of the software development process divided by 6 stages:

  1. Analysis of requirements – involves reviewing the product documentation and determining which types of testing are necessary and to what extent the software will be included in those tests. This phase also involves deciding which part of the tests will be automated (which will be discussed in more detail below).
  2. Test planning – during this phase, the test plan strategy, the time required to conduct the test, and the estimated cost are determined. It is also decided on the environment in which the tests will be performed, as well as the technology in which they will be used.
  3. Test case development – tests and scripts are verified through documentation after the planning is completed. Relevant data for testing is found and documentation is written. It is also during this phase that automatic tests are written for individual modules.
  4. Setup of the test environment – the phase in which the software and hardware conditions for testing a product are determined. This phase can be done simultaneously with developing test cases in some cases.
  5. Test execution phase – the tests written in the previous phases are executed according to the plan and cases created. Testing involves executing test scripts, adjusting them, reporting possible bugs, and re-testing after they are fixed.
  6. The phase of closing the process – the tests are completed, the results are analyzed, and plans for further testing are made.


Types of QA testing

Manual, automatic, functional, non-functional, black box, white box, etc., are the most basic divisions of testing. Here are the main types. 

Manual testing

Manual testing is most often used during “smoke” tests, that is, when it is necessary to test something short and quick. 

It is also used for tests that cannot be automated, such as comparing the front-end part of the software with the design. The purpose of manual testing is to cover as many scenarios as possible that cannot be automated and thereby ensure software quality. After development, when a new functionality comes for testing for the first time, manual QA checks its compliance with the specification and designs and writes test cases that can later be automated.

Automatic testing

Automatic testing is used due to the frequent repetition of the same tests. Because of the complexity of the product, when developing software and adding new parts, it is necessary to test the previous parts that were already made and were correct until then.

 The QA engineer’s role is to manually speed-test the new feature before writing the automatic part to cover the news permanently. This will shorten the retesting process. When the developer adds a new version of the software next time, automatic tests (CI/CD) are triggered to check whether the new software version does not compromise existing functionality.

Functional testing

Functional testing checks whether the functionalities provide the expected results. These include “Smoke”, “Regression”, “Retesting”, “Exploratory”, and “Negative”.

After the functional testing is completed, it is switched to non-functional testing. It focuses on application performance. Types of non-functional testing are: “Performance”, “Usability”, and “Security”.

One type of testing is rarely performed, instead, it is combination according to the requirements and the time allotted for testing.

Best tips for successful quality assurance in software development

One of the good practices that I would like to mention on this occasion is testing in different environments.

To better test the software before it reaches the end user, we use several environments. In our company, a team of experts decided that the optimal number of environments for the software we produce should be three.

In the first environment, developers upload software to the development environment, which is only used to test the software and is not visible to users. The second environment is staging, in which versions of the software are ready for showing to customers or users and for testing by potential users. Lastly, we have the production environment, where the finished product is placed and used by end users

Popular technologies and tools used in QA

Popular technologies and tools used in software quality assurance (QA)

We have witnessed that many different frameworks and tools for automatic testing can be found on the market.

Selection is made concerning which technologies and languages ​​are required for testing. Considering that there are many of them, we will refer only to those that our company carefully selected and implemented in the process of automatic testing.

  1. Rest Assured – is a framework used for testing API calls with the help of Java libraries. It is very useful for testing HTTP calls due to easy response validation both in the body and in the response header. In it, we usually validate the status of the request, the speed of the response, the validity of the data, and the structure of the response. It also allows developers to write tests in combination with other testing libraries, such as JUnit, TestNG, Cucumber, etc.
  2. Selenium – is a framework that we use for the automatic testing of web applications. It can be used to write test scripts for different browsers. This tool simulates user interaction with a web page. With the help of the catchers it uses, it binds to the web elements and performs the functions that we assigned to it (for example clicks on the link, presses the button, scrolls, and fills in the input fields). It also uses the catchers to validate whether the expected behavior of the application has occurred (whether it went to the intended page or the data from the input forwarded to the place where it’s needed).
  3. Appium – is a framework used for the automatic testing of applications for mobile devices on platforms such as Android, iOS, and Windows. Its biggest advantage is that we don’t have to do any test modifications when testing on different platforms. We can write tests in various programming languages: Java, JavaScript, C#, and Python.
  4. Jmeter – is an application that is used to test the performance of an application. It is used in such a way that the tool itself simulates a group of users, the size of which we determine, sending requests to our application, and from that, we get the statistical data we need to measure performance.
  5. Postman is a tool used for testing API calls, that is, for testing the backend. Both manual and automatic testing can be performed with it. Its main advantage is that it is done in a GUI environment and is quite user-friendly.
  6. Cucumber is a tool for writing tests so that non-programmers can understand them. It is combined with Selenium and Rest Assured in Lumen Spei, so we get tests that are easy to understand and adaptable even for non-programmers.
  7. GitHub Actions (CI/CD) is a tool used for the continuous integration of tests on the server. When a new version is pushed, it runs tests automatically. The new version cannot be uploaded until the tests finds errors and they are corrected. 

The main reason for using this tool is that when changes are made to the application by a developer, there is a possibility that they will conflict with previous parts of the application or with parts added by others.

Recommended ➜ Read about web 3.0 mindset changes..

Benefits of including QA in the software development process

Modern software companies utilize QA knowledge and skills for the many benefits they provide. The main benefits of QA engineers and why it’s smart to have them on your team – speak for themselves. 

  1. Detecting software defects early, allows the development team to have enough time to adapt the software before it reaches the end user!
  2. Software testing reduces software development costs!
  3. The time required for software release is reduced, and user security is increased!

Lumen Spei always includes a QA in its design and development process. If you need help with your next’s project quality assurance, we got you – contact us!


Emily Dobutović

Tags: