Photo by Med Badr Chemmaoui on Unsplash

This post is the continuation of the previous one: SQA Revolution – Introduction

General QA Definitions

After listing the general conclusions in my previous article, I would like to dive into the specifics.  I will start by presenting my concept model, which defines the terms and structure of different roles in QA process, using Agile methodology. Please, feel free to provide with the feedback accordingly. I will start with the definitions and then will move on to roles.

First and foremost, comes the utmost definition of Software QA terminology in general:

pic 1

Software Testing

Software testing is a thorough investigation, conducted in order to provide stakeholders with clarity on the quality of software, product, or service under test. Software testing may also be instigated to provide an objective, independent view of software, and to allow the business to acknowledge and evaluate the risks of software implementation. Test techniques include, but are not restricted to program or application execution with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use.

Software testing involves the execution of a software component or system component, aimed at evaluating specific properties of the system. In general, these properties indicate the extent to which the component or system under test:

  • meets the requirements that guided its design and development,
  • responds correctly to all kinds of inputs,
  • performs its functions within an acceptable time,
  • is sufficiently usable,
  • can be installed and run in its intended environments, and
  • achieves the general result its stakeholder’s desire.

Here, I would like to slightly amend the aforementioned definition by quoting James Bach and Мichael Bolton:

“Testing is the process of evaluating a product by learning about it through exploration and experimentation, which includes to some degree: questioning, study, modeling, observation, inference, etc.”

Software Quality Control

And now let’s dive deeper. As we see in the pic.1, testing is a part of Quality Control. If you take the traditional definition, which I have “borrowed” from Professor Amitav Mitra, it goes like this: “Quality control may generally be determined as a system that maintains a desired level of quality, through feedback on product / service characteristics and implementation of remedial actions, in case of a deviation of such characteristics from a specified standard into three main subareas: off-line quality control, statistical process control, and acceptance sampling plans.”

A simpler definition that I often quote is: “It is the process of reviewing the actual product.” Quality Control intends to identify defects if any, in the deployed product for the purpose of timely rectification. “

Software Quality Assurance

Now let’s move on to the most interesting part- QA, or rather SQA (Software Quality Assurance). And, here, again,  I would like to use a quote from the book by Professor Amitav Mitra, “FUNDAMENTALS OF QUALITY CONTROL AND IMPROVEMENT”: “Quality is not just the responsibility of one person in the organization-it is the message. Everyone involved directly or indirectly in the production of an item or the performance of a service is responsible. Unfortunately, QA is something that is currently viewed as an individual’s responsibility. Such behavior can create an ineffective system. Thus, what is needed is a system that ensures that all procedures that have been designed and planned are followed. This is precisely the role and purpose of the quality assurance function.

The objective of the quality assurance function is to have in place a formal system that continually surveys the effectiveness of the quality assurance of the company. The quality assurance team. “

Or a simpler definition:

Quality assurance refers to the activities that take place in the development of a software product. It is the process of verifying, which adheres to specified standards, techniques and processes.

Actually,  this is probably the shortest:

SOFTWARE QUALITY ASSURANCE (SQA) is a set of activities that ensure quality in software engineering processes (that ultimately result in the quality of software products).


The main thing you need to understand here is the difference between these three: testing is a process, QC is a method and QA is a set of activities. Quality Control is involved in product-oriented activities, while Quality Assurance is involved in process-oriented activities.

SQA in “Agile” development

Now we need to combine all these concepts with Agile development. The overall picture is described in pic 2. Testing can be used as a QC tool at all stages of development. The QC process begins and ends within the sprint, monitoring the process of the new development. QA activity occurs throughout the entire time, regardless of the sprint. We will discuss more thoroughly what is a QA activity.

pic 2

SQA Roles

Once we have defined terminology and combined it with the “Agile” methodology, we can move on to the job descriptions in the area of QA. For the general picture, let’s use pic 3 again.

pic 3

According to pic.3, we can see the vector of development of SQA professional, starting with a tester, then moving to the test engineer and then to the QA engineer accordingly. It is important to note that each of the new stages of development has a predecessor and a successor, which must be maintained and followed exactly in this order. What it means, is, that in order to become a good test engineer and QA engineer, one must first master the skills of a tester. Therefore, if we are talking about building a successful career of a QA engineer, owning the testing process from the beginning to the end is a crucial skill that must be constantly maintained and developed. But, I have to add to it: a tester or a test engineer does NOT automatically become a QA engineer. In order for it to happen, one must possess certain skills and knowledge. Now let’s describe each role separately.

Tester – is a specialist who takes part in testing a component or system. It is his responsibility to search for possible errors and failures in the functioning of the testing object (product, program, etc.). The tester simulates various situations that may arise during the use of the test subject, so that developers may quickly fix the detected errors.

Testers responsibility is to execute pre-written tests. In the Agile environment, almost every team member can perform this task, although, at a different professional level.

Test engineer – could be a test analyst, test designer and/or a planner. He/she accompanies each feature/product/development in the sprint, analyzes the plans and performs testing, and then follows-up with reports on the product’s condition. In other words, creates a QC process.

SQA engineer – performs the role of a test engineer, but for the continuous improvement of the quality of processes and product. He/she has to create additional activities that are not limited to sprints and occur throughout the entire development within the team. Everything begins with the introduction of standards and processes for the operation of PO with technical tasks, the use of test tools of the entire team, such as bug hunt sessions or acceptance tests.  Other responsibilities include coaching team in testing and quality, monitoring compliance with the “Agile” processes during active development, analysis and monitoring of the effectiveness of QA processes and testing – analyzing critical issues in production bugs, finding critical defects at a late stage of development, etc.

Pro-level of SQA Engineer

Therefore QA is an engineer-specialist who is responsible for all listed activities in the team. QA Engineer professional development in Agile can be divided into two levels – middle and senior. I will not delve into this moment, but in general terms- there is no place for a Junior level for a QA Engineer in Agile team. Junior QA Engineer starts from a Tester role and Test Engineer. Only after mastering these two, one can move to QA engineering. The middle level is a problem solver and Senior lever is a problem finder. By the way, I recommend an excellent video on this topic, made by Randall Koutnik: Rethinking the Developer Career Path (https://www.youtube.com/watch?time_continue=963&v=yIPbE7BssOs) Though he talks about developers, it’s completely welcome to us.

Summary + Action Items:

I really hope that I explained to you the basic concepts thoroughly. I realize that there is a lot of work to be done on defining multi-level functions and prioritizing the activities of the QA engineer. Still, a lot of questions to be answered. And I will be happy to do everything in my power to develop this concept/idea. In order to keep my promise, I will divide it into the following stages:

  • First and foremost, since I am a strong supporter of arguments and discussions, as a part of the learning process. We organized a meet-up for those, who would like to ask questions in person and learn more about QA engineers. I invite you to come to the meetup in TestIL group: February TestIL Meetup
  • Secondly, I will create a close working group with which I will meet once a month to help develop the future QA engineers. For those who are interested be part of this, please fill next form: SQA Engineers Club Form.
  • And lastly, I will continue to research this topic and will keep sharing my knowledge with you…

Good luck to all and may the spirit of quality come upon you!


  1. “Software testing involves the execution of a software ” – That’s a very narrow definition of testing, as it ignores the whole concept of Static Testing which is known for over 30 years and also described in ISTQB CTFL Syllabi.
    To properly test you need to start with Reviews long before a SW is actually available for execution.
    There is no such thing as a Test “Engineer” – you do not have even 1 university which gives you this degree title – that’s a self proclaimed definition.
    You have totally misunderstood the QA/SQA definition – All the SQA tasks you listed above are the tasks of a self respecting Tester, QA is the process of verifying that the SW development processes are properly defined and executed, they verify the process definitions made for others and how well these processes are actually followed – BUT DO NOT execute these tasks themselves.
    @halperinko – Kobi Halperin

    • Hi Kobi. First of all, thank you for feedback.
      Second, a couple points regarding your comment.
      1. Static Testing which you know many years, I didn’t ignore. I took it to one general category like Software Testing. Reason for it, using by this type of testing in Agile Methodology looks different and need different approaches in implementation. Lean specifications/requirements and dynamic changes are causes for it.
      2. “Proclaimed Definitions” – you are right. Every roles and definition that wrote before is a concept. And the problem of university studying, it is problem “eggs and chicken”. Without creating the concept and theoretical basis for the professional field you will never come to the university. Is “university” need create for us this basis? I don’t think so…We need to come to university with this basis from the practical side – “hands-on field”.
      3. “Misunderstanding of QA/SQA definition” – here I can’t agree with you. I didn’t find any sources that define these activities as part of “self-respect Tester” work. And I talk about coaching team members, implement and assist in using testing tools by team and etc.
      An additional point, QA is NOT just the process of verifying, it is a set of activities that ensure quality in software engineering processes. One of the activities is “verifying”.
      If QA Engineer is needed or can execute these task themselves – if he works in “agile” team, yes of course.
      I want to remind you that all this concept good for Agile methodology, where you have small teams. If you take it to other development approaches I don’t think it can be work.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.