Until five months ago, I had never heard of software quality assurance (QA). I discovered QA while searching for a tech internship position that required little to no coding. A company that focuses on software development called to invite me to an interview for a QA role.
What is Software Quality Assurance?
Software quality assurance is a way to make sure that the software product meets a predetermined set of standards of quality. Software quality assurance (QA) runs concurrently with the software development life cycle and is not merely a stage in the development process. Prior to being made available to the public, QA testers are responsible for ensuring that software products satisfy the highest standards of quality. This includes testing software programs, identifying defects and bugs, and collaborating with developers to solve them.
Preparing for the QA Role
To prepare for my interview, I started by reading a few blogs about quality assurance. Once I understood the general idea of what QA is from experts in the field, I completed an online practice test to assess my knowledge and identify what I was lacking. Then, I watched YouTube videos about software quality assurance and took a different practice test after each video until I was prepared. The first part of my interview required me to take an IKM Software Quality Assurance competency assessment test. I performed well, and the company invited me back for another interview. I then searched for frequently asked questions in software QA interviews to help me prepare. This enabled me to understand things better and ace the interview, landing my first Software Quality Assurance job.
The First Thing I Learnt: The Software Testing Process
The first thing I learnt was the software testing process. Quality assurance starts with the presentation of a Business Requirements Document (BRD). A tester analyses functional and non-functional software requirements to get an understanding of the project’s scope and software specifics to outline a path for establishing the QA process. The tester then uses this document to break down requirements into test cases. These test cases are used to create a document known as a test script, which is shared with the development team to guide them.
After creating test scripts, the tester then comes up with a test plan which defines things such as the testing scope, testing schedule, suitable testing environment, optimal testing team structure, test coverage, and so much more. Testing will then start. My employer carries out manual testing, where test cases are executed manually without using any automated tool. It's essential to be in touch with developers when testing and let them know when bugs are found. Initially, I struggled with this, but the introduction of an issues log made things easier for me.
Using an Issues Log for Bug Fixes
An issues log is a document that takes note of all the defects found within the system. I used Microsoft Word and Microsoft Excel to create my issue logs. A defect is given an ID and is clearly described, then a developer is assigned to fix it. I shared a live issues log and communicated with each member on the issues assigned to them, making it easier to follow up on the progress of the fix. I learnt that communicating via the issues log makes it easier to keep track of the progress on bug fixes.
End-to-End Testing and Automation Testing
The next step is end-to-end testing, which is done after all the defects have been fixed. End-to-end testing is done to make sure that the software functions and performs well under product-like circumstances and data to replicate live settings. The goal is to simulate what a real user scenario looks like from start to finish. I find end-to-end testing tedious in a manual testing environment as it is a repetition of the testing phase. This motivated me to learn about automation testing.
With test automation, code is written to simulate user activities and note when the system fails. Manually repeating these tests is costly and time-consuming. Once created, automated tests can be run repeatedly at no additional cost, and they are much faster than manual tests.
The End Goal: Becoming a Test Automation Engineer
Tech careers are fascinating and seem to change by the day. In an industry that moves this fast, you could gain expertise in a rising trend one year that becomes irrelevant in the next. But even in this quick world of innovation and surprise, it stands to reason there’ll be a steady need for professionals who ensure software programs and systems work as intended.
Based on what I have learnt so far, I would like to continue to pursue a quality assurance role. I want to focus most of my attention on automation testing. This is mostly because manual testing can become repetitive and boring. I believe I will not struggle with making the switch from manual to automated testing because I do possess a coding background from some modules I studied in my first and second year of university.
I was also fortunate enough to be provided with Java training by my employer through their training program called Afrocodemy. I have also completed a course that focuses on Web and Mobile Testing using Selenium. My goal is to continue to research and study to become a test automation engineer.
In summary, my experience starting a new job as a Software Quality Assurance tester has been exciting and challenging. I have learnt a lot about the software testing process, bug fixes, and the importance of communication with developers. I have also gained an interest in automation testing and hope to become a test automation engineer in the future.