How QA engineers could affect product quality? Part 1: Introduction.
Этой осенью я выступил на нескольких конференциях со своим новым докладом про настоящий QA процесс и роль QA инженера в обеспечении качества продукта. Последний раз выступление было на английском языке и я решил в рамках подготовки сделать детальный план доклада. Не пропадать же добру, поэтому я решил доработать и опубликовать этот план в формате серии статей. В первой части будет вступление. Полные слайды доклада:
In this serie of articles I will try cover very important topic of true QA process implemetation and how QA engineers could improve quality of your product. It seems to be basic knowledge for good Project Manager or Team Lead, but during many years of my practice I have seen good implementation of this role as a very rare case. Everything I’m going to cover here is based on my practical experience. If your experience is different or you have some good ideas, don’t hesitate to contact me in comments or other suitable way.
Let’s start from the key diagram in the QA world showing us differences between testing, QC and QA. From this diagram it is clear that testing is a part of QC, while QC is just a part of QA. Let’s review all these terms in details.
Testing is a set of techniques, approaches, tools and practices used to verify and confirm that product was designed and actually works according to all types of requirements (both functional and non-functional). You probably know some types of testing: unit testing, performance testing, usability testing, exploratory testing… Some of them are manual, some automated, some semi-automated. Tester is a role for people who are doing testing. I would like to focus your attention here that in many modern teams developers are responsible for many testing activities, so they share tester role also. One of most common artefacts produced by testing is defect. We all know them and used to see them in our products. 🙂
So, what is QC then? This is a process of quality evaluation comparing to customer’s expectations. Simply saying, we need to control that our product has enough quality, where definition of ‘enough’ is driven by customer and our agreed development process. How does it differ from testing? QC process defines what kinds of testing are needed, how they will be distributed in regular development cycle and who is responsible for what. In addition, reporting part is mandatory, including progress report, defects handling approach, metrics gathering and other activities. I hope you understand what I’m talking about. QC engineer role is responsible for QC processes. In most companies we name them QA engineers and, probably, even form QA team or QA department from these people causing lots of misunderstanding and confusion.
But as you see, QC assumes that quality is already there and focuses only on controlling activities. But what if quality is low? Do we need just to report it in format: “we have X defects, N of them are blockers and critical”? How quality could improve from this reporting? QA part of this diagram is responsible for defining and continuous improvement of quality related processes and procedures that are focused on embedding quality in our product. Instead of just finding defects we rather want to prevent these defects. We would like to inspect and adapt our development process over time to ensure we have enough quality at the end of development cycle. QA engineer role is responsible for these activities and we will discuss this role in all details during remaining part of this talk.
Quite many people are aware of this separation of concepts but doesn’t know how to apply it in practice. Let’s see!
To avoid confusion and misunderstanding I want to focus your attention that we are going to talk about ROLE of QA engineer, not particular dedicated person either inside or outside the team, not separate subteam or even external team. This role could be taken by the most experienced person in QA area or even shared between team members almost equaly (this is really rare case). I worked in different environments and this role was played by Project Manager, Technical Lead, QA Lead, Delivery Manager, Senior Developer. As we will see later, to be successful in this role you need to have wide view on the end-to-end development process and understand how product is developed from all perspectives.
In the second part we will introduce some context in form of concrete development process and start reviewing QA engineer role in details. Stay tuned!