So you want to become a software QA professional?
Are you considering a career path in software QA? Here’s what you need to know to get started.
Are you considering a career path in software testing? Here’s what you need to know to get started.
Considering software testing and Quality Assurance (QA) as a new job or career? Perhaps you're okay writing code, but being a developer or system admin isn't your thing. However, banging on things to see if and where they break makes (like a wild thing) your heart sing. Or maybe you love computing, and you see QA as a way to get your foot in the door to a position as a full-time developer.
Whatever the reasons for your interest, you should pay attention to this advice from the experts on how to become a tester in today's world.
As you'll see from their suggestions, software testers may need to be familiar with a long list of skills and QA testing tools. However, don’t let your skimpy résumé dissuade you. Entry-level positions may require little more than basic clicking and form-fill coding. If you can demonstrate patience, attentiveness, and tenacity, you may be able to break into the field. As a bonus, many companies provide on-the-job training and mentoring. So don't feel overwhelmed – yet.
What does the job entail?
First, let’s make sure that you know what it means to work in QA. You have plenty of options to explore.
Software QA includes a fair amount of potential full-time specialization. If you are reading this article, you're probably looking at entry-level jobs, but it's worth knowing where you can go. Among the possible types of expertise to develop:
- Front-end testing, which focuses on the application’s user interface
- Back-end testing, which exercises the business logic, database structure, and other parts of the application that don’t show directly to users
- Writing test plans to ensure that every application path is exercised
- Systems testing including the manner in which this application interacts with other systems.
- Security testing, to ensure that the bad guys can’t access the system or exploit vulnerabilties
- Accessibility testing to make sure that everyone can use the software
One distinction is whether you perform black-box testing or white box testing. With the former, as tester you have no idea how the system works; in contrast, white box testers have at least a structural understanding of the system they’re poking at. And, naturally, gray-box testing is a combination of the two. Each requires a different type of puzzle-solving.
Another distinction is between manual testers and automated testing – with the jobs going increasingly to the latter. "There aren't as many jobs for manual testers, and those are mostly in niche sectors," says Barbara Brescia, a 20+ year QA professional who also manages testers at OHO Interactive, a website and digital marketing agency.
You don’t have to specialize – certainly not immediately. In many positions, you do some-of-each, which is a good way to learn what you enjoy as well as to learn a range of job skills.
"For small companies, like I have worked with, the tasks in a typical work week vary greatly," says Jeremy C. Reed, QA/Release engineering team lead at Farsight Security, a provider of historical and real-time passive DNS data. "A typical week could include: manual testing of web REST APIs; writing test statements and scripting test cases; implementing Jenkins jobs to build code or run tests; and working directly with developers to better understand and document code. In my experience, I could be working on well over 20 different unrelated tasks in a week."
The most common type of QA testing perhaps is front-end testing, which uses graphic and command line user interfaces to manually interact with software. "Anybody can train to do black-box testing, if they can follow directions," according to William Flow, a 20+ year QA veteran specializing in SQA automation, and currently lead software engineer at Rigetti Computing.
But there are plenty of sub-specialties. "Systems testing includes basic operations testing, validating the new functionality works in the target environment, or probing the limits of a system, such as performance, boundary, threshold/failover, and usability testing," says Dr. Cheryl Lampshire, who has been a hiring manager and test/QA architect for decades.
Does that sound daunting? Don’t be intimidated. Sure, there are a lot of things to master – not counting whatever the software itself aims to do, whether it’s an e-commerce site or making sure the fluid dynamic forces work as-expected in the software controlling a space mission. However, you don’t need to learn them all at once.
What do you need to know to do the job well?
Let’s begin with computer languages and other technology tools you should know, at least at a beginner level. Don’t let the long list scare you off; your personal attributes often are more important when you are entering the field. However, it helps to know where the path leads.
First and foremost, you should be familiar with a few computer languages, and be prepared to pick up additional ones. My sources' suggestions include C, C#, Go, HTML (for web processing), Java, JavaScript, Python, Ruby, and Unix scripting. Not all of them, certainly, but not none, either.
"Testers are expected to often write code – for "white box" unit and integration tests – and also go into the application code being tested," says Marco Barrera, senior director of sales operations at Software Quality Associates, a services organization helping clients with software delivery, quality engineering, and compliance and IT validation.
In particular, says Barrera, "Learn how to code in an object-oriented language such as Java, C#, or Python. That's what most of today's applications, and the software tools used to test them, are written in."
Then, too, there are common applications that help testers do their work. Begin familiarizing yourself with testers’ common tech tools. Here's some testing-related software suggested by my sources:
- Frameworks that help you do automated testing; these may also provide code management, continuous integration (CI), and more. Among them: Appium (for testing mobile platforms), Bamboo, Bitbucket, GitLab, Jenkins, JUnit, Qmetry, Robot Framework, and Selenium. (There's probably a Tom Lehrer song parody opportunity.)
- Project management software that incorporates bug- and event-trackers, such as Atlassian Jira or Bugzilla
- Browser/cross-browser testing tools like BrowserStack
- Web load testing tools like Jmeter or Wapt
- Collaborative wiki software like Confluence
And, certainly, Functionize should merit some attention.
As a practical example, says David Day, a Senior QA automation engineer for a large security technology company, "I'm currently using Robot Framework to do automated API testing. It lets me use Python modules, so I have instant access to web requests like GET and POST."
And, of course, you may need to know additional tools based on what/how you are testing.
"Specific skills in static analyzers, debuggers, profilers, fuzzers, and code coverage analysis tools would be useful," says Reed. "Such as Clang scan-build, GDB, Valgrind, American Fuzzy Lop, and Lcov."
Need a head-start on the jargon? Read our glossary of testing terms.
Beyond programming and testing tools, you should learn the basics of other domain knowledge. That’s domain in the non-Internet sense (I don’t mean dot-com architecture) –specific, often specialized, areas of knowledge. For QA testers, the relevant domain areas include:
- Accessibility guidelines, such as the W3C Web Content Accessibility Guidelines
- The Systems Development Life Cycle (SDLC) for common policies and methods
- Basic statistics, in the context of understanding QA metrics
- Quality management, such as Certification in ISO 9001
The human function matters, too
Technology expertise often takes center stage in this industry, but what makes you a good tester often is your soft skills and personality traits. Those interpersonal, social help you to do testing. Also, they give you competence when it comes to conveying your findings, particularly when you need to report bad news to developers about their precious creations.
"You need to be very curious, and be good at being curious," says Brescia. "You have to have the ability to not ignore little things, to ask questions. You cannot be content with 'It's good enough.' You need to dig a little deeper, to ask why and how."
You also need to exercise diplomacy. "A good tester can tell people about problems with their software and be thanked for it," says Matt Heusser, managing director at Xcelon Development, a consultancy helping companies with software delivery problems. "You need tact and people skills.” It’s a good idea when you can manage company politics and build alliances.
What? I haven’t scared you off yet? You are attracted to the average starting salary of $US58,000? In that case, let’s consider how to get that first job in QA.
How do you get your first job in QA?
After looking at the list of technology skills employers ask for, you may want to start by getting at least rudimentary training. There's no shortage of textbooks, videos, courses, and bootcamps.
Schooling can help you up-level your tool set, obviously, but you don’t need a full-on computer science degree. Consider taking an online course or two. "While you are unlikely to learn certain types of testing at school, such as failover or threshold, you can learn the foundations of operational and usability testing through courses," says Dr. Lampshire.
If possible, get hands-on experience. Take the testing tools out for a spin. Some vendors offer free limited-time or trial accounts; quite a few are open source and thus available from GitHub and other repositories. In fact, getting involved as a tester on an open-source project is an excellent way to gain real world skills that are worth bragging about on your resume.
"Clone a Github repository or find some other free or open-source software you can run on your machine; compile it and start beating on it; and write up bugs to GitLab," suggests Flow.
One way to get into the field is through contract work, suggests Flow. "If you can spell 'black box,' and you can communicate your enthusiasm, you usually can get the job,” he explains. Even a three-month contract looks good on your resume.
For entry-level people, "Look for opportunities where companies are willing to train you," Barrera advises.
Job sites that my sources recommend for QA and testing include Dice.com, Indeed.com, and LinkedIn – along with staffing agencies and recruiters that specialize in software testing and QA. The latter presumably are a better fit for people with some experience in the field.
Get ready for the job interview
Come interview time, be ready to talk about testing and QA.
"As a manager, I always ask, 'What do you see as the role of QA?'" says Flow. "The answer I look for is, 'QA is the representative of the client, because if you have unhappy clients, it's because your stuff doesn't work the way you said it would.' I also look for the person who says, 'That's interesting, let me test around it rather than just pass it on.'”
Expect to answer questions about your testing skills, such as “Can you write a test case? What's in a good one.” Flow also asks job applicants to write a bug report – which shows how much training this person will require.
If possible, Flow urges, bring a portfolio showing what you can do. In one interview, he says, "The applicant gave me a test plan she had written, as an example, with a test case and a bug report she wrote up. That was all I needed to hire her."
Remember, too, that any job interview is a two-way conversation. It isn't just for the prospective employer to learn about you. It's also your chance to ask about the job.
Reed suggests you ask questions like these when evaluating a QA job.
- What automation or continuous integration software do you use?
- What are the target platforms and architectures?
- What test frameworks do you currently use?
- How much autonomy or self-direction do the QA staff or test writers have?
- What freedom does QA have in deciding on tools and technologies to use? Is it okay to use open-source technologies and cloud-based services as part of QA?
- How much involvement do QA staff and test writers have with the developers?
- How much authority does QA have in making decisions, such as halting or delaying releases?
- How is QA involved in a product's or feature's initial inception and design?
You can find more questions in this article: "Selective QA Interview Questions for Managers to Ask".
Flow strongly suggests that interviewees ask, "How serious are you the company about QA?” The interviewer’s response may save you a lot of grief. If the interviewer is honest, you might learn that this company doesn’t listen to its QA team unless the defect is something huge. You probably don’t want to work at that company – or, at least, you want to know the scene before going in."
Don’t sell yourself short, even if you’re new to the field. "If you do a little bit of testing at work, and have read a book about testing, you are probably more qualified than half the people currently doing testing," says Heusser.
Happy job hunting!