As the name implies, Quality Assurance (QA) testers make sure software meets customer specifications and performs as intended. On a day-to-day basis, they often work through a detailed list of software features, putting each through the proverbial wringer. What skills do you need to succeed in this role?
QA testers’ tasks can vary from company to company. For example, an application might have a user signup feature asking the user to provide a username and password, along with a field for re-inputting (and thus verifying) that password. The QA tester will verify that the user creation step only happens if the two passwords match. On top of that, they’ll verify an error message appears when the passwords don’t match or if the username already exists.
Whenever they can, QA testers use automated tests, which allow them to rapidly evaluate features. Many QA testers work closely with developers, who write their code in snippets (known as functions), which they subsequently test (known as unit tests). Although the QA tester doesn’t typically create unit tests, they may be asked to help coach the programmers on how to create such tests.
Let’s look at what other skills you’ll need if you want to become a QA Tester.
First Skill: Creating Tests
Sometimes developers forget to ensure their code responds correctly to unusual situations or edge cases. Without proper coding, any number of things could go wrong. The QA tester will help come up with coding tests, and possibly help decide on how the software will respond. (In the case of the blank password, most likely the software should refuse to create the user, and instead provide a polite message stating that the password field can’t be left blank.)
QA testers also create bug reports. Automated testing software typically can create a bug report, but the QA tester needs to review the bug reports and make sure they accurately describe what went wrong, and that they provide a correct severity level (which basically prioritizes the bugs, with the lowest being called minor or trivial, and the highest being called critical). The bug report may or may not assign the problem to a particular developer.
Technical Skills
In addition to creating tests and assigning bug reports, QA testers need several other technical skills. Here is what you can plan on learning if you’re interested in becoming a QA Tester:
- How to use QA automation software: There are many different packages available, and they’re all pretty similar. Master at least one, and then expose yourself to as many others as you can.
- How to work with git and GitHub: Most software today uses git and GitHub for source code control. Additionally, GitHub has a robust bug database feature (called “issues”) that works closely with the source code control. This means learning as much about git and GitHub as possible.
- Coding skills: Although many QA tester positions don’t require any coding, you will occasionally find yourself looking at the code (possibly within GitHub) to see who wrote what. You don’t have to possess senior-level coding chops, but you need to at least know how to read code in various languages, typically JavaScript, Python, C#, and Java.
- Software architecture: This refers to how different parts of software fit together. For example, a banking app would have a “front end” that the users visiting the website see in their browser when they log in and check their balance. Separately, there’s “back end” software running on the servers at the bank. These two parts communicate with each other through what are called “APIs” (Application Programming Interfaces). To test APIs, you need to understand how they work, which is part of software architecture. Learn as much about software architecture as you can.
- Additional software testing tools: APIs have their own set of tools for testing. One example is Postman. Start with Postman and then explore other options. Another area is cross-browser testing; when apps run in the browser, it’s important to make sure the software runs correctly in as many popular browsers as possible, including desktop browsers such as Chrome, Safari, and Firefox, as well as mobile browsers such as Safari and Chrome on phones.
- Accessibility testing: Knowing how to use these tools is important, as well as having a sensitivity to disabled people who might use the software.
- Software performance concepts: This refers to how fast the software responds to certain things (such as how quickly it logs you in), as well as how the software behaves when a huge number of people are using it simultaneously. Not all software shops are overly concerned with performance, but some software requires attention to it. Medical software running in a hospital usually needs to react immediately if something bad happens to a patient, for example.
- CI/CD concepts and tools, including integration testing tools: This stands for Continuous Integration/Continuous Development. Modern software is typically deployed to cloud servers. As bugs are fixed, the software gets deployed. In the case of mobile apps that update regularly, this means the users could see the updates within hours of the fixes. Before software can be deployed, though, a full set of additional tests must be run to make sure all the parts of the software still work, as fixing a bug could potentially cause something else to break (these are called integration tests). In smaller software shops, the QA Tester may also have to work with developers to build these integration tests. Three of the biggest names in integration testing tools are Jenkins, Travis, and CircleCI.
- Some DevOps: DevOps is a huge field, and as a QA tester, you won’t become an expert across the DevOps board. Instead, you’ll need to know how DevOps automation software fits together with the testing tools you’ll be working with. DevOps has its own set of tools, including Chef, Ansible, and Puppet. Knowing how to use these tools even on a very basic level will most certainly score you bonus points in a job interview.
It’s important to mention one more skill: security. As a QA tester, you might be tasked with testing the security of the app. But tread carefully when learning this skill: cybersecurity testing is a specialty and requires a good number of years of practice to master. QA testers are rarely security experts; the general rule of thumb is that only people who work in security full-time are fully qualified to assess vulnerabilities to internal and external threats. You’ll want to also know your limitations and when to call on the cybersecurity experts for help.
Additional Skills
Beyond the technical skills described above, there are additional skills you’ll need:
- Some basic statistics: Management in larger companies that have enormous software projects typically want to know statistics about the bugs, the average or median severity, how quickly on average the bugs are getting fixed, and so on. They like to see such information presented in tables and charts. Test automation software can often provide such information, but you’ll need to understand how such information is acquired and what it means in case management asks for more detail.
- Problem-solving skills: Being able to develop tests is an extension of basic problem-solving skills. People who work in the QA testing field are typically top-notch problem solvers. This means knowing how to spot problems and coming up with ideas to fix them. This extends to recognizing that a software bug might present itself one way on the surface, but could be the result of a combination of other bugs that aren’t immediately obvious. Problem-solving skills help recognize such situations.
- People skills and communication skills: These might seem a bit trivial, but QA testers need to have a unique ability to convey problems to people–problems that are often the result of human mistakes. Developers make mistakes and bugs happen. Some developers might not like hearing that they made a mistake. A good QA Tester knows how to present these issues to the developers without putting the developers on the defense.
Do you need a degree?
A degree in computer science or similar field can never hurt, but you don’t likely need one for a satisfying career as a QA tester—provided you have the necessary skills for the role. There are bootcamps and online certification courses that will help you learn the trade. If you do want to earn a degree, you’ll likely want to get a bachelor’s degree in computer science, along with additional coursework specifically focused on software testing.
If you want to move past QA testing and into management, a business degree is potentially useful. From there, you could lead teams and even graduate to a position such as Chief Technical Officer (CTO). If that’s your goal, you might consider going back to school after you’ve been working for a few years as a QA tester, and even get a Master’s of Business Administration (MBA).
Conclusion
QA Testers play a vital role in the software development process; as such, this can be a rewarding career for people who want to be part of software development but don’t want to write code.