How often in life have you faced last-minute problems arising from someone’s mistakes, staff incompetence, unaccounted risks? Delays in project launch?
The same goes for software development. If some feature wasn’t fully tested, some bug was missed, the product wasn’t checked on all devices – trouble is brewing.
Tasks of a QA engineer
Testers play no less important role than programmers. Even if developers wrote quality code, run the app on the device, and saw that everything was working, the fully functioning system is still far away.
Why do some applications (that even seem to be good and quality) get flows of negative reviews after launch? Often one of the reasons is that the app looks or works differently on different devices.
The situation is getting worse due to the fact that the market is full of various devices. Let’s say someone launched the product on an old Huawei and saw an ugly layout on it.
Or it was installed by a user from Saudi Arabia, who didn’t understand anything, as the text in this country is read from right to left, and the interface wasn’t customized to this cultural peculiarity.
You’ve probably heard of the failure of the Coca-Cola advertising campaign because of it, but know – it isn’t true. A few years ago, this case spread throughout the Internet, many authors included it in the lists of the most famous advertising campaign failures, but it’s not confirmed by any trusted source.
So, who will check the system functioning in all conditions? Find bugs and vulnerabilities? Consider a variety of untypical cases? And, what’s more, ensure that the product complies with the customer requirements? The tester is the very person who is responsible for these tasks.
The goals of a QA engineer are to achieve the correct system functioning, prevent defects, improve software quality, and throughout the project provide the end customer with the information about its quality.
The tester must also ensure that a software solution works as intended. For this purpose, he/she compares the actual system behavior with the expected one using various types of testing.
The tasks of a tester
Identify bugs and errors, describe and send for revision
Check the implemented improvements
Test the product until the desired result is achieved
Test the software solution on all necessary devices and screen resolutions
Check the product performance in various conditions, including the use of the key system functionality and testing it for different untypical use cases
Test the product compliance with the requirements
Work through all uncharacteristic cases and ensure the product functions as intended
The feature testing life cycle looks as follows:
The programmer delivers the developed feature for testing
QA tests the implemented feature
QA creates a bug report for each detected bug
Priorities of bugs and features are set
Product debugging – programmers fix bugs and prepare the build
Feature testing. If bugs are found, the testing and debugging processes are repeated. When everything works well, the feature is marked as implemented.
Some useful tools for software testing
Postman + Newman + Jenkins – this combination is used to automate API testing.
Cucumber + Appium – applied for automating mobile app testing.
Charles – allows testers to monitor HTTP/HTTPS traffic.
PICT – a very convenient tool for testing values (and their combinations) of the checked parameters.
Apache JMeter, YandexTank – enable to test the application performance.
JUnit, NUnit – serve for writing unit tests.
Fiddler – used to test requests and services.
Pixel Perfect – a browser extension that helps test layout.
Burp Suite – a great tool for testing system security.
Checklist – QAs can either compile checklists specifically for the project needs or use already prepared checklists, customizing them for the tasks.
Fabric Crashlytics – a popular tool for sharing builds within the team and collecting user statistics.
Postman – a set of tools for testing API. It helps test the functionality before integrating API into the client app. It also enables to create API documentation, write and run tests, and replace real data from the server with test values.
Also, get insight into the software development and testing processes in our company.
Most people want to make things perfect. Sometimes we evaluate the complexity of an upcoming goal or a problem. So, the fear to not complete it perfectly or "wrong" (Yeah, who are judges? 🤔) stops us even from trying.