Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
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.
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. he 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.
This article originally posted on Django Stars blog.
If you find this post useful, please tap đ button below :)
How Quality Assurance Can Save Your Money and Your Product was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.