Why QA Engineers Are Underrated
What people think about QA, what they actually do, and why they have an important job
By Seher Sarin
“Software testing may seem like a redundant and straightforward process. All you have to do is push a few buttons, and wait for a response to see if it matches with the expected response. If the actual result matches the expected result the test passes else, it fails.” — Elisabeth Hendrickson, Explore It!: Reduce Risk and Increase Confidence with Exploratory
It’s 2019 and this is still the most common misconception (held by anyone and everyone who isn’t a test engineer) of the profession. Not going to lie, prior to starting my co-op term as an Agile Software Test Engineer, I used to think along the same lines. Having not previously met anyone who was a software tester, everyone I talked to thought Quality Assurance (QA) to be a job that “real engineers” didn’t want to do — an overlooked and sometimes underappreciated aspect of the software development life cycle.
If you’re like me and had never met a QA engineer before, or simply want to learn more about some of the common testing practices used by Agile companies when building software products, then this question and answer style blog post is just for you. So, let’s get started!
Q: What does the QA team even do?
A: Three months into my internship, I think I’ve finally begun to understand and appreciate all that is involved in the job of someone working on a QA team…From planning sprints, to attending story acceptance meetings, to coordinating daily builds with developers and product managers, to planning test cases, to writing charters, to developing automated test suites, and then of course, performing regression, smoke and exploratory tests, then logging bugs and participating in sprint retros, all while constantly thinking from the perspective of an end user…the tasks never seem to end.
Q: What are the different ways to test software products?
A: Testing is an integral part of the software development life cycle, and there is a plethora of different types of tests designed to validate functionality. At the end of the day, testing can be simplified to one simple equation, which is comprised of the three important building blocks of the testing process:
Testing = Verifying + Exploring + Automating
Manual Testing:
- Manual testing is the process in which the software being developed is tested on the target devices.
- The purpose is to verify that all features function correctly, to discover bugs, and to provide user experience feedback to the team.
- An important aspect of manual testing is creating a test plan that details the systematic approach to testing the software product, and with the goal of covering as close to 100% of the scope of the application as possible.
- Manual testing is often extremely time consuming and you can still never be sure that you’ve covered everything. However, a best practice is to break down all requirements into different test cases that encompass pre-conditions, actions, expected results, and actual results.
Exploratory Testing:
- Exploratory testing is one form of testing that is often overlooked as there are no formal rules. However, one can argue that this is one of the most important components of testing because no matter how many test cases you make, there will always be use cases that were not considered.
- One of the best techniques for exploratory testing is testing around edge cases, such as changes in network connectivity that may not be properly handled by the software. These are conditions that may occur through day-to-day use of the product.
Automation Testing:
- Automation testing is arguably the most efficient testing method.
- Using automation software, such as Selenium & Appium, end-to-end tests are developed and deployed to check the core capabilities of the software.
- Initially, automation development can seem challenging to set-up and build. However, in the long run, once your test cases are fully built and functional, with the click of just one button, you will be able to execute the full suite of tests with the ultimate goal of keeping the build green.
Q: Whitebox vs Blackbox Testing?
A: Two of the most important testing methods are whitebox and blackbox testing. Whitebox testing looks at the internal mechanism of the system and ensures it satisfies development requirements. On the contrary, blackbox testing solely focuses on making sure the product behaves the way the customer wants. Whilst blackbox testing is usually performed by QA teams, whitebox testing is more often performed by the developers themselves.
Q: What is functional testing?
A: Functional testing is a type of blackbox testing where test cases are executed to observe actual and expected outputs. Functional testing takes a user story or a product feature, and tests all of the functionality contained within that feature. There are numerous types of functional tests, two of which are highlighted below.
Smoke Testing:
- Smoke testing (often referred to as a “sanity check”) is one of the earliest testing techniques performed on new software builds.
- Smoke tests are used to evaluate the software’s stability against basic functionalities and features.
- Smoke tests are quick and speedy as they don’t go into too much detail. However, they are usually followed by a regression test and the smoke test can either accept or reject builds for further testing.
Regression Testing:
- Regression testing is thought to be a type of maintenance work carried out during software testing to ensure that a change doesn’t affect the existing functionality of the software application.
- Since regression tests go into a thorough investigation, they often require a considerable amount of time and effort to execute.
Q: Why is Quality Assurance as important as development?
A: QA engineers act as middlemen between the customers that will be using the product and the developers who build the product. It is the QA engineering team’s responsibility to identify and help resolve issues in pursuit of shipping a product that is bug-free. If our goal, alongside developers, is to build and release a best-in-class product, then we must consider that a piece of software is only as good as deemed and experienced by the end-user.
Yes, testing adds an extra cost to the development process, every new bug discovered may delay a product release and as the last step of product development, it is often overlooked. However, the QA team is the one that knows more about various devices and platforms than anyone else. While the designers focus on making the product visually appealing, the developers solve engineering problems, and the PM’s manage the team, the testers are the ones that devote countless hours focused on quality. So, as you can see, QA engineers shouldn’t be thought of as underrated after all!
Seher is a Management Engineering Student at The University of Waterloo. She has been working as an Agile Software Test Engineer (Co-op) at TribalScale where she has anchored client projects and worked with a plethora of different software platforms.
TribalScale is a global innovation firm that helps enterprises adapt and thrive in the digital era. We transform teams and processes, build best-in-class digital products, and create disruptive startups. Learn more about us on our website. Connect with us on Twitter, LinkedIn & Facebook!