A Quality Assurance (QA) engineer aims to detect failures and errors in the software, thus ensuring that it works as expected.
Before releasing any new product, its quality must be certified, and the satisfaction of the end customer must be guaranteed and that is exactly what makes the job of a QA professional so important for the whole development process.
QA is often confused with “Tester”; however, QA is more than testing, it is an engineering process that ensures the quality of the final product.
During the software development process, the development team may face some doubts such as “Can anything that hasn’t been changed behave strangely?”, the role of a QA professional is crucial at this stage allowing the development team to answer this or other similar questions more confidently.
So, what Kind of Tests should be used and when?
There are two types of tests: Functional and Non-Functional tests
- Functional tests: performed to ensure that the software meets the intended requirements. Resources are tested by feeding them input and examining the output. For example, ensuring that an Application login is working is a functional test.
- Non-functional tests: aimed to check non-functional aspects (performance, usability, reliability, etc.) of the software. For example, ensuring that an Application login does not take more than X seconds to log in is an example of a non-functional test.
And how do you put software Quality Assurance into practice?
There are two main practices of QA: Manual Testing and Automated Testing.
Manual testing is performed by humans and comprises the following:
- Compatibility Testing: Assure the software is compatible with different browsers or computers/devices.
- Smoke Testing: Is a set of tests that aim to assure the most important functions of a software works, in a non-exhaustive way.
- Regression Testing: Assure that a recent code change has not adversely affected existing features.
- Beta/Alpha Testing: Performed by the end-user or the client to verify and accept the software.
- Usability Testing: Used in user-centered interaction design to evaluate a product by testing it on users.
Automated testing is performed by robots and comprises the following:
- Unit Testing: individual units of a software are tested.
- System Testing: validates the complete and fully integrated software.
- Test-Driven Development (TDD): is a practice of software development, where the
- unit tests are written before the code.
- Continuous Integration (CI): allow teams to detect problems early running automated tests and builds.
- Continuous Delivery (CD): prepares the code to be released automatically.
- Selenium: it’s a web browser automation tool. Used to Automate UI testing.
- Newman: it’s a command-line that allows to and test Postman (enable Test calls to APIs) Collections. Used to Automate API testing.
A good QA professional must have certain characteristics that will allow him/her to perform efficiently and have a decisive role in the development process. He/she must have good communication skills, must be a good hunter (bug search), a good reporter, a good team player, and of course, a good tester, with attention to details.
The language of a tester:
Test Plan: Document that describes the test strategy, objectives, estimation, and resources required for testing. Test Plan helps us determine the effort needed to validate the quality of the software under test. Test Plan will have a set of test suites.
Test Suite: Part of the Test Plan. It’s a set of test cases.
Test Case: One execution of the software that can expose a bug.
Edge Case: It’s a test case that occurs in rare conditions.
Happy Path: It’s a well-defined test case, which the result is the expected one.
Test Instructions: Necessary instructions, step by step, to execute a test case.
Acceptance Criteria: Set of conditions that must be verified, so the feature can be accepted to go to release.
As the technological world evolves, it is increasingly important to certify the quality of the software and the satisfaction of the end customer. A QA does exactly that by detecting failures and bugs and ensuring all is working perfectly before being released to the end user.
After all, all we wish is to find a bug before the user, right?
What's Your Reaction?
Debora is QA Engineer at Affinity. Graduated in computer engineering, she entered the world of automation by finding herself automating and scripting everything she and her colleagues constantly did manually. Out of computers, her great passion is traveling. She loves reading, riding a scooter, doing yoga and spending time with her 5 pets!