How Quality Assurance Can Save Your Money and Your Product

Written by iryna-meshchankina | Published 2018/07/12
Tech Story Tags: software-development | quality-assurance | qa | debugging | stlc

TLDRvia the TL;DR App

Read the original version of this article about QA on Django Stars blog.

I remember how impatient and stressed out Steve Jobs was when Apple Macintosh’s voice demo failed because nobody checked it. Ok, I don’t actually remember it, I just saw Danny Boyle’s film, but it makes the point.

Checking or assuring quality is what has to be done before presenting a Macintosh, a software product or a meal at a dinner.

We’re not going to talk about meals and drinks today, though. Instead, let me share my thoughts on why software needs to be tested, functions of QA engineers in the team, and how software testing works at a typical software developing company.

Let’s start with some simple definitions.

Quality Assurance engineers help to create quality products. How do they help? — you ask. They prevent the defects before the development starts and therefore ensure the quality of the process of the end results.

Defect (aka bug aka this shit won’t work) is a wrong piece of code that makes the system fail to perform its required function. In other words, when something doesn’t work or work not as desired.

I will now try to summarize what QAs do in a few points. QA engineers:

  • Define project requirements
  • Prevent and identify defects in software products during all stages of the development process
  • Evaluate the quality of a product
  • Test the product’s usability

I want to emphasize that QA always think about the users and try to assess the work from the user’s perspective. QAs work closely together with developers and make up a team that actually creates a quality product.

Now I will tell you about five stages of software testing life cycle (STLC), QA’s role, and how testing can help your business.

You May Also Like

How to Successfully Set Tasks For a Development Team_There's a saying that goes "Go I know not whither and fetch I know not what" and usually, mostly ironically, this…_djangostars.com

STLC: When and why you need QA

Most software development companies that use Agile methodologies work in sprints — two-week periods with a list of task to be done. Each sprint includes five stages of STLC and by its end, the team should implement some part of the requirements.

Unless QAs are in the team, some defects may never be found only to be revealed by a real user after the official launch. QA engineers reduce the overall development time by planning the test cases before the development starts. The scope of QA’s job is what assures the quality of a product.

Now, let’s study all 5 stages of Software Testing Life Cycle

Stage 1 — Requirements Gathering

Before creating software, the team must know what exactly they are going to develop. The technical description of a software product is its requirements. They describe the functionality of the desired service, what features it should include, and sometimes — technologies required to build it.

During this stage, QA (1) analyse the requirements, (2) figure out if all desired components are compatible with each other, and (3) try to prevent (predict) problems that the team may face once the coding starts. Preventing defect before the requirement to the development team is what can save you lots of money.

Apart from analyzing the technical requirements, QA validates the product. Validation is the process of evaluating a product from the business perspective. Its aim is to check if the product will be useful for customers i.e. does it make sense to build it?

If not validated, the product may never get the attention and will just remain history. Validation also ensures profit that the product will bring. If no profit, why bother in the first place?

Stage 2 — Test Planning

Test Planning is the activity that defines the testing strategy, i.e = how much time and resources will QAs need to test the entire product. Planning includes the project scope, objective, responsible roles, and the testing environments.

This stage allows the team to avoid unpredictable contingencies. Having a plan with a list of action to be taken makes is easier for QAs not to forget anything when the testing time will come.

Stage 3 — Test Development

Now that the activities have been planned, it’s time to set up a test environment and create test cases. A test case is a series of actions QAs need to take to check that there are no bugs in the code and everything works just fine. After this QAs make up the Acceptance Criteria — a standard that the software should meet to be regarded as successful. When the test cases are ready and the acceptance criteria is agreed on, the actual testing begins.

Stage 4 — Test Execution

This is testing. Based on the results of the previous stages — Requirements Gathering, Test Planning and Development — QAs execute tests that fit the technical specifics of the system. If the test hasn’t found any defects, QA engineers mark it as Passed; if the test failed, it means there’s something wrong with the code and QAs send a report about the bug to developers. If this way, QAs make sure that the entire system will be tested.

Stage 5 — Test Reporting

After the testing, the team discusses what worked well and what didn’t. It helps us improve the testing in the future testing cycles. To avoid misunderstandings between QAs and developers, it’s good to document every detected bug and then check with the reports.

___________________________________________________________________

So now you what work QA engineers do during the development process. Let’s summarize why this work is so important. Why do software products need QAs:

  • Secure business. Especially apps that deal with buying stuff. Unless fully checked, it may appear that users pay to a random person, and not you. Double check to prevent money losses.

  • Save money. The later QAs find a bug, the more expensive it is to fix it. Fixing one bug may cause another, and another. Eventually, you will have to rewrite the entire system because of one flaw. Rule of thumb: prevention is better than cure.
  • Protect your reputation. If users launch your app and have a bad first experience with it because of some bug, they are very unlikely to try it ever again. That’s because first impressions and hard to change. Don’t make them think you didn’t care.
  • Ensure the product’s quality. Unless tested, the software product may just never go live. The quality comprises many aspects, many of them are QAs job.
  • Monitor the process. QA engineers constantly remind the team that they’re working to please the users and meet the specified requirements. It lets everybody be sure that the end product will be the same as the one planned.

In the next part, I will tell how STLC overlaps the development process, explain the difference between QA and QC and give a general description of some testing techniques QA engineers use.

The Quality Assurance

Development and testing must be synchronous. It’s a simple rule yet many tend to ignore it. QA engineers tend to account for what developers are doing at the moment before planning to test stuff. They act as a single team. A team that is responsible for producing a quality software product. Unless QAs and developers work together, there are likely to be many delays and inconsistencies which will lead to a low-quality result (= product).

Now I will tell what difference lies between assuring quality and software testing.

Quality control

Quality Control is a discipline that, unlike QA, focuses on testing already developed systems. QC engineers identify software bugs and report them. So basically, it’s QC is the part of QA that comes after the code has been written.

While QA starts working on a product before the development starts. In some projects, there’s no need for QAs, but only QCs. It happens when a team is asked to check the system prior to its release. We can roughly say that QA encompasses QC.

Some people try to combine QC role with other roles, like software development. However, it’s usually more difficult to find a defect in own code than in somebody’s. Plus, this job requires some theoretical basis combine with testing skills. An inexperienced person can’t assure quality, in some sense.

Now that you know what QAs do and why they do it, let’s see what test techniques there are.

Test Design Techniques

A test design technique is what helps us select a good set of tests for a particular project. Each technique includes tests that identify bugs of a certain type. The choice of the test design technique depends on (1) the project requirements; (2) product’s status, and (3) the type of a software product.

The picture below shows most common test design techniques.

Let’s take a closer look at each of techniques and cases where we need them.

  • Static. These tests check the source code, functional and requirement specifications before the code is executed. Static tests start at the earliest stages of the software development.
  • Structure-based. These tests analyze the internal logic and structure of the code. They identify wrong and missing logic and typos in the code. Those are most common reasons why something doesn’t work.
  • Specification-based aka Black-box testing, examine the functionality of software without getting into the code. Based on the project requirements, we select appropriate tests that help us derive test cases. Here, everything depends on the product requirements.
  • Experience-based. After some years of working experience, lots of QAs learn where developers fail most often. In general, it’s testing based on own quality assurance experience.

This was a very generic overview, so don’t assume it’s all about four groups of test design techniques. The number of the required hard skills make it close to impossible for a non-QA person to assure the quality of a software product.

Bottom Line

No matter how simple a product may seem, there’s a ton of work behind the quality software. As Don Norman pointed out: “Good design is actually a lot harder to notice than poor design”. In most cases, QA engineers make it possible for people to enjoy good products by checking if everything works well.

Quality Assurance includes lots of activities, from testing to reviewing the results. Most software products need QA engineers to (1) set a mature development process, (2) ensure the quality of the released software, (3) prevent errors in the system before users find out about them. QAs use various techniques to check if a system meets all specified requirements and as it ‘should’.

It’s not easy to test a system without special skills, even an experienced developer is unlike to succeed in it. That’s why the best teams have QAs and developers working together — to combine their skills in pursuit of quality software.

If you find this post useful, please tap 👏 button below :)


Written by iryna-meshchankina | QA Lead at djangostars.com
Published by HackerNoon on 2018/07/12