6

From Wikipedia:

Quality Assurance refers to administrative and procedural activities implemented in a quality system so that requirements and goals for a product, service or activity will be fulfilled.[1] It is the systematic measurement, comparison with a standard, monitoring of processes and an associated feedback loop that confers error prevention.[2] This can be contrasted with quality control, which is focused on process output.

You can read the following article to understand the difference between QA and testing (quality control): Link

What I'd like to understand is whether there is a place for QA engineer who is not a tester in Agile/Scrum. Agile is deliberately short on processes and documentation (its even in the manifesto), and that's what QA specialize in. So should there even be a QA engineer in Agile?

I myself am not a QA engineer (I am a test lead), but I have a friend who is, so that's why I am asking.

Glorfindel
  • 3,167
Eugene
  • 1,933

3 Answers3

10

I think that there is indeed a role for quality assurance in an agile organization, especially one that has to adhere to a quality management system such as ISO9001, ISO13485 for the medical device industry or AS9000 in the aerospace industry, for the purposes of meeting customer requirements, regulations, or corporate mandates.

There are two important things to keep in mind. First, quality assurance is not just interested in the quality of the final product, but all intermediate work products. You can view software development as a black box that takes in some form of customer requirements and outputs software (and perhaps support for that software). However, during that process, the development team does things - transformations of those requirements into something usable to design and build software, creation of designs, prototypes and simulations, production code, test code, supporting scripts, manual procedures (for testing, deployment...), user documentation, and more - any of which can have defects which would impact downstream activities that rely on that information. Quality assurance is concerned with not only how defects are found in these work products, but how those defects are prevented. Second, quality assurance is also interested in process quality - how well we are doing the work. Although the obvious thing here is the quality of the work products, it's also how long it takes to do the work (among other things).

Two of the tenets of Agile are to favor "individuals and interactions over processes and tools" and to favor "working software over comprehensive documentation". However, neither of these say that you shouldn't have a process or that you don't need any kind of documentation. If you're trying to implement a quality management system, it's likely that you are required to have some level of documentation that can be compared to the work that is actually done during auditing. I think that these Agile ideals are better expressed in a few of the concepts of lean software development - eliminate waste by removing delays in the process, reducing bureaucracy, and improving internal communication, amplify learning, and empowering the team to make decisions about how to best achieve the goals.

In addition to being responsible for internal auditing, a QA organization can also help support agility or lean software development by being responsible for helping to detect waste, find delays, and ensure that what is documented gives each development team sufficient leeway to implement process requirements (levied by customers, regulatory agencies, corporate mandates, etc.) in the best way for the individual project but still having some level of consistency across the organization to allow for people to transition between projects without having to relearn an entire new set of processes and methods on top of the technical learning curve.

However, based on some of your comments, it seems like the direction that this is going in is not Agile or lean. It's a fine line to walk on how detailed to make your process documentation. If it's too vague and gives each project team room to implement anything that they wanted to, leading to wide variations in process implementations (and therefore process quality and likely product quality) across the organization. If it's too specific and detailed, it's likely to add bureaucracy and comprehensive documentation would get in the way of interactions and working software. There needs to be balance between agility and the ability to obtain information about process quality (through measurements and some level of consistency).


See also:

Thomas Owens
  • 85,641
  • 18
  • 207
  • 307
5

I'm not sure that I understand the difference (or how it is relevant) between "testing" and "quality assurance". In the end to do QA you must do testing.

QA, as you define it, sounds a bit against the Agile manifesto's value of Working software over comprehensive documentation. Do you really need all that process documenting? Are you trying to squeeze an existing process into an Agile one. If you really need the documentation you should add it to your definition of done.

Agile methodologies prefer "generalizing specialists" who do vertical slices. This means any team member should be able to complete any story. Developers should test, QA should test and everyone should work to build quality in.

Agile teams use retrospectives as the point where they improve their process.

In teams that I've worked in everyone is responsible for quality. Typically there is a lag between something testable in an iteration/sprint being ready for a tester. With this time, you can get your QA activities done just in time for testing of stories. Be careful for this introducing scope creep within an iteration.

Many Agile processes are not prescriptive about that level of detail and it is left to the team to decide. Would a self organising team ask for a QA specialist?

Dave Hillier
  • 3,928
2

If you read the publications of the founders of the quality movement (Shewart, Demming, Juran) you will quickly come to the realization that quality is an economic issue. Lack of quality means there is a lot of waste. Quality improvement is the process of driving waste out of the process. Shewart, Demming and Juran were dealing with manufacturing but the same idea applies to software development. In software development the primary source of waste is rework (fixing errors, retesting, redeploying) always assuming that the customers functional requirements were met. The next most expensive problem is not producing something the customer wants to buy. Software quality also involves the user. Poor design or lack of reliability can increase the cost of using the software.

The role of Quality Assurance is not to test the product although test data is of use if it is recorded properly. The role of quality assurance is to investigate possible ways of reducing the number of problems introduced and reducing the cost of correcting them. This is not limited to code defects.

One of the worst processes for conduction any engineering development is to make designers/developers responsible for features. The problems arise when more than one developer or team has to modify the same component to provide the desired functionality. The result is defects that are not discovered until after integration (i.e. in system level testing). In the ideal situation, system testing should not find any defects at all. If a significant number are found, it means that there are a huge number of defects remaining in the product even after all the testing is done. This results in an unreliable product.

The answer to this problem is component or subsystem based development in which only one developer or team may modify any given component of subsystem. In a feature oriented shop, the role of the QA people would be to help the teams transition to a subsystem oriented process.

In any other undertaking, metrics are collected and used to predict the future. In many software shops the key metric is either defects found or defects open. But this is a useless metric for improvement. The key metric is the number of defects still in the work products. Requirements defects (assuming there are requirements) end up in the design along with the errors made producing the design. Design defects (assuming there is a design) end up in the code along with the coding errors. Quality Assurance should help to find ways of minimizing the number of defects carried over from previous work products by using the metrics collected when these items are produced and verified.

Quality Assurance is not responsible for the quality of the products. The people who produce them are responsible. Quality Assurance is responsible for discovering the messes made along the way and pointing them out to management so they can be addressed before they become serious and costly issues.