We’ll probably live to see the day when all coding is done by computers. But for now, human programmers do most of the work. And humans sometimes make mistakes.
The more complex a project gets, the more likely it is that errors will occur. This is why bigger software development teams need another pair of eyes to spot any possible bugs – and raise the alarm whenever things go awry. That is when Quality Assurance (QA) engineers come on the scene.
Being a QA Engineer: the basics
A QA engineer's job is to forestall mistakes at the early stages of a software development life cycle and highlight any trouble later on. The ultimate goal is to help the software development team deliver a piece of system, utility, or application that works smoothly, looks great, and is easy to use.
How is a QA engineer different from a quality control engineer or a test engineer? The same person could be all of the above, checking for bugs and asking the coders to get them right. But in QA, you normally oversee the entire process, from the project kickoff to the product launch.
These days, to speed up production, most software companies use continuous integration (CI) and continuous deployment (CD). Instead of waiting to release major changes to an application, CI/CD allows instant release of new features in the form of small code changes, creating an automated way to build and test applications. In CI/CD, you don’t wait for big iterations, but add small chunks as you go, keeping your software all but ready for release. Without ongoing QA, this will not function.
QA engineer key tasks
There are two general approaches to coding: writing failing tests before coding and writing tests after the code is done. But in both cases, developers are mostly focused on what their code can or can’t do. QA engineer adds scripts of users’ behavior with the end-product and detects potential shortcomings in the software. This way both sides are secured.
How do you detect shortcomings in software? You keep asking yourself (and others) questions and running lots of tests. As a QA engineer, one of your tasks is to alert the team by bringing up worst-case scenarios.
Predicting all sorts of “what ifs” is, therefore, a big part of the job that helps to avoid potential crashes. That stands for both user-faced interactions and for the code itself, as the application should be functional on all sides.
Types of tests run by QA engineers
There are various methods of testing to ensure your software meets the specs and performs at top levels. Your company will determine which ones are necessary, so you need to be familiar with most.
Unit testing. As the name suggests, this one is about testing separate segments to see how each one functions and get them right early on. You can compare it to collecting fresh ingredients for a soup!
Integration testing. Here, you check how software modules interact and work as a group, i.e., the back end architecture and the front end user-faced features. It’s similar to finding the right recipe where all the ingredients work well together.
System testing. It’s the first time you have tested the whole thing to determine if the software design and functions are up to the mark. It’s your preparation test: don’t serve the soup if it’s not salty enough.
Acceptance testing. It’s the last step before finally releasing your software. Here, the user interface and features are put to the test to see if they perform as they should, and to discover any possible failures. Acceptance testing is similar to a stage when the chef tastes the final dish to know if it’s ready to be served.
Regression testing and functional testing are needed to guarantee that recent additions are in sync with the main body. Say, if you need to add spices, as a custom wish of the client.
Performance testing helps to figure out how the system behaves under different workloads. Is your kitchen ready to serve 20 people? 30 people?
White-box testing and black-box testing. The former is about checking the insides of your software while in the latter you analyze the functions without access to code. The combination of the two is known as gray-box testing, where you know only some of the structure and try to detect potentially missing parts of the specs or design.
QA engineer hard skills
It’s understood QA engineers need the technical knowledge and skills to work in IT. Having a business-driven approach and knowing the latest methods in project management are the other two pieces of the big picture.
A QA engineer needs to know the ropes of these technical instruments (to name a few):
- Operating systems such as Mac OS, Windows or Linux;
- Automation tools such as Selenium, Pyppeteer, Cypress or Appium;
- SQL, the database language; and generally know how databases work;
- APIs, how calls are created and how applications function.
- Issue tracking tools such as Jira or YouTrack.
As far as teamwork is concerned, a QA engineer must know how Agile software development works. This method allows continuous delivery of software features by developing them in 2-week sprints. Being familiar with instant messaging programs and work management platforms (think Asana, Slack, or Discord) is also helpful.
Furthermore, a QA engineer should remember that it’s all about making a piece of awesome software that will sell. And QA is a factor in making the development process as cost-efficient as it gets.
QA programming: manual vs. automated
Though working in IT, a QA engineer doesn’t need to be a professional developer. But you cannot avoid knowing programming languages. Running manual tests is an option and even a must – there’s no getting away from clicking and tapping to see how everything works.
But that being said, if you want to up your game as a QA engineer, you will have to learn how to code automated test scripts. It will give you a deeper insight into the process and free up some of your time. Luckily enough, there are open-source tools for test automation out there for you to master and use.
So, at some point, a QA engineer needs to write and update automation scripts that will check the functions and features of the software. When and if issues come up, a QA engineer draws up a bug report. It should be clear and concise, making it easier for coders to reproduce and fix bugs.
QA engineer soft skills
Besides handling the testing and all the paperwork that comes with it, a QA engineer is also a person who helps make things run smoothly. This side of the job involves a lot of contacts with managers, testers and developers. Hence the need for strong soft skills such as:
Seeing the bigger picture and keen eye for detail. A QA engineer is supposed to keep an eye both on the entire architecture of the software their colleagues work on and all the changes they keep adding. So stay sharp and don’t let a single bug sneak past you.
Time management. Having tons of testing to do and dozens of people to get across to can feel a bit overwhelming. A QA engineer should keep up to date with everything. So planning is crucial.
Problem-solving skills. After all, this is what you were hired to do in the first place. To track down and resolve any issues that may arise during software development. And make no mistake, errors will occur.
Dealing with stress. As a QA engineer, most of the time you’ll be working under pressure to get a great product delivered on time. Knowing your development life cycle and sticking to deadlines will go a long way in both beating stress and doing the job.
Communication skills. You are the one who detects issues and it’s your job to keep others in the loop. Sometimes you must prioritize discovered bugs or raise potential issues, even if invisible at first glance.
Being a QA engineer is one of the ways to get a foot in the door of an IT company. You don’t have to write code but there are plenty of other things to keep you busy. There are many responsibilities and the key task is to keep the clients and the end users happy.
In fact, getting trained as a QA Engineer can put you on a fast track to starting a career in tech. In just five months of part-time online studying you will go from zero to hero of software troubleshooting – a position that could be a stepping stone on your way to new exciting roles.
Practicum’s QA Engineering Bootcamp is a program designed to help beginners learn a new profession and get their first job in tech. Check it out to see if it is the right program for you!