Getting Started with Software Testing and QA (CEO's Cheat Sheet)
Are you testing your software product yet? Or are you just considering your options and deciding whether your software product needs testing at all? Is the product’s quality important to you? What is quality to you anyway? Or maybe you are only distantly familiar with the development process and want to understand which role QA plays in it.
Then read on.
After reading this article, you will have answers to the following questions:
- Do I test or not?
- What’s the difference between QA, QC and testing?
- Who is who in the testing world? (Job titles and their corresponding duties).
- How do I hire my first QA team?
Ready? Let’s get started.
To test or not to test - that is the question
You have no time, money or desire to test your product. It's fine, you don’t have to. But keep in mind that the errors you miss may lead to unexpected results:
We hear you say “But my time-tracking app can’t kill people.” Then what about your reputation and the damage caused to it by user-detected bugs and negative reviews? Even if you offer a freebie like Angry Birds, it will never get traction if it’s riddled with usability glitches and provides a poor user experience.
Hence, we arrive at the conclusion that, unless your product’s reputation and popularity don’t matter to you, testing is an indispensable part of the development process. It’s a known fact that programmers make poor testers, so I wouldn’t rely on them to test their own code.
Since people usually get different ideas about software testing, it's essential to demystify the process and its goals.
QA vs QC vs Testing – Learn the Jargon
You may have heard terms like "quality assurance" (QA), "quality control" (QC) and "software testing." What do they mean? Sometimes HRs and even candidates use these terms interchangeably, which is not entirely accurate.
To give you a real-life analogy, here is where the difference lies.
Example 1: We want to congratulate a friend on his birthday. Identifying the need to remember his birthday (because he’ll otherwise feel offended) is quality assurance. Adding the date to the calendar and reminding everyone about it is quality control.
Example 2: We need to order water for the office water cooler. Making sure there is a spare bottle of water in case we forget to re-stock is quality assurance. Actually, re-ordering the water on time would be quality control.
As you see, QA often consists in averting a disaster, while QC usually deals with the aftermath.
And, as far as the term "testing" is concerned, it is used to describe the various activities one performs (composing and running the tests, creating bug reports, etc.) as part of Quality Control (QC).
The term "testing" usually causes the most confusion because it’s the oldest piece of QA vocabulary; it had different meanings at different times. Sometimes when people say "testing", they actually mean a separate style of doing Quality Control.
So, who do you need on your team?
In real life, you either need people for an in-house QA team or you want an independent contractor to assure software quality.
Regardless of which approach you choose, you can use the following list of key QA roles for reference (it starts with the most essential role: tester, and ends with a strategic role of a QA who assures software quality in the long run).
Tester/Software Test Engineer
- You must have a software product to test at this point.
- QA and QC must have already created the testing documentation.
- The tester checks and demonstrates to the concerned persons that the program meets the requirements.
- The tester also uncovers situations when the program displays unexpected behavior or fails to meet the requirements.
- The test engineer may also test your requirements (which you've communicated orally or in writing).
- Observing human users' reactions and behaviors during usability testing.
Quality Control Engineer
QC techniques include test management + test analysis + test design. The QC engineer's job is to analyze the current state of your software product for the following parameters: "ready for release", "meets specified requirements", "adheres to the declared quality standard.
It is the QC who decides whether a particular software version is ready for release (For example, he/she might say "No-no, you don't want to squeeze this tiny, untested fix in the current release version, and here is why...").
- You must have a product to test at this point.
- The testing quality metrics and (successful) release criteria must have been formed.
- The QC determines testing order (what should be tested first).
- The QC gathers test metrics and software quality metrics for each build.
- The QC analyzes the requirements.
- Using a version control system to minimize the risk of the wrong build being released (without it, it's hard to tell which fixes have been tested and which haven't)
- Preparing release notes.
Quality Assurance Manager
Hiring a QA (usually a separate role in the company) turns your QA and testing team into an autonomous unit that requires minimum supervision and takes proactive measures to ensure software quality.
- The QA can set up a process for assuring software quality from scratch, in your company.
- The QA analyzes the entire development process (planning, development, testing and maintenance) and works closely with the developers to ensure high software quality.
- The QA makes sure there is a testing environment available (For example, one has the required mobile devices for tests).
- Mentoring junior testers and performing trainings and bug report reviews.
- Communicating testing goals to the QA team.
- Agreeing on the time-frame of server maintenance works with the system administrator or performing backups (although this is usually the system admin's responsibility).
All in all, QA can be the person who reports directly to decision makers informing them about the level of a software's quality, the risks involved and the need to change the documentation if needed.
Hiring your first QA and testing team
This part of the post dwells on the job titles and respective responsibilities of people involved in software testing.
First, you need to become clear about your expectations - what these people are expected to do on your team (or as solo employees).
Who is who in the testing world
Suppose you wanted to create a position for one of those jobs - what's the correct way to call it?
In fact, people often name titles according to processes and look for QAs/QCs/testers of different levels: senior/mid/junior. How do you determine the level? Quite often it is arbitrary.
The tester's level would depend on (1) one's familiarity with testing approaches (also whether one can produce high-quality bug reports) and (2) the person's knowledge of the niche your product is in. Besides, whether you need more of (1) or (2) depends on the project.
The project manager can even act as your QA.
Is it better to hire separate people for QA, QC and Tester roles?
It depends. If you have just one project, it may be difficult to draw the line between these responsibilities and not very practical anyway. In that case, the entire team will be engaged in QA to some extent.
But in a large company, hiring separate people is perfectly justified because it is convenient when one person creates a process, chooses an approach and oversees its implementation (the QA).
An important thing to remember: One doesn't simply build a product, give it to the tester and expect high quality.
If you're NOT really interested in a high-quality product, no matter who you are hiring for testing, your effort will be almost entirely wasted (although any amount of testing is better than none), and the impact on quality will be insignificant.
Now, if you want to sound knowledgeable (and specific!) when posting your ad, you'd better use the following job titles: Manual / Auto Tester, Test Designer, Test Engineer, Test Analyst, etc. In any case, it's better to also specify one's duties in detail to avoid misunderstanding.
Now you should have a decent understanding of how to get started with QA, what duties people on your QA team may have and what their job titles are.
At the same time, remember that titles are not of primary importance. It's more important that your team achieves their goals and delivers great software.
with ObjectStyleSee our work