Today software is already an indispensable part of our life. There are plenty of consumer products as well as business solutions. In fact, all our life is driven by software products of different kinds, and when a solution does not work properly, many problems may set in. Losses of means or business reputation are actually the slightest troubles which may be faced compared to people’s injuries or even deaths. That’s why software testing should be a must for every product at every development stage and for every device possible.
Generally, software testing comprises manifold activities, united by the same aim — to check and asses the product quality and to minimize the risk of its failure.
The process of testing presupposes:
- Analysis (clarifying requirements as to functionality, supported operating systems and devices, etc.)
It’s actually, the initial stage of development, where all the criteria should be set. QA specialists are involved to identify the possible pitfalls and to validate the requirements before the development starts. It results in a detailed specification and wireframes.
The planning of all software quality assurance and testing activities takes place during this stage, the project begins. Test environments (test devices, operating system versions, etc.), types and criteria for the start and end are defined.
- Environment setup
At this stage, the QA engineer prepares the environment for product testing and makes sure we have the product run on the due test devices, operating systems, and their versions, and all the necessary tools and apps are installed and ready for test performing.
We test the product crafted on the real devices most popular in the client’s target market and selected based on the manufacturer, type and operating system.
- Test designing and implementation
A checklist is created to make sure the product operates as it is supposed to in basic user flows and test cases are worked out if it’s necessary for more complicated operations.
Finally, manual testing is run to verify that the features work properly.
- Reporting test progress
As soon as any bug is found, it’s registered in the system for the developers to be aware of it.
- Analyzing results and improvements suggestion
As soon as the results are received they are analyzed to find the best ways of product improvements and bug fixing.
Generally, the following aspects are taken into consideration in the testing process at Stfalcon:
- The primary product arrangements.
- Product acceptance criteria definition.
- System requirements definition.
- Components or functional areas’ definition.
- Test activities planning.
Quality assurance at the level of user acceptance includes the following activities:
- Requirements testing.
- Functional testing.
- Non-functional tests, such as Cross-browser testing (for WEB-products) or reliability testing.
- API acceptance testing. Creating a script for each endpoint to verify that the endpoint performs the due basic operation.
- Research testing.
- Ad-hoc testing.
- Confirmation testing.
- Smoke and sanity testing;
- Regression tests.
It’s important to keep in mind that testing also involves validation that the product meets the client’s and the users’ needs and expectations.
Each testing stage has its own constituent activities comprised of multiple tasks and details, they are often consequential and implemented iteratively.
Since Stfalcon’s approach is mostly Agile, development goes in small iterations and tests are run on a similar iterative, continuous basis.
Taking it into consideration, the project should be planned with about 30% of the time dedicated to testing to make sure you get a software solution of high quality and efficiency.
At Stfalcon the testing is manual, and we apply it for all kinds of products developed, we perform the following types of software testing:
- Web services testing;
- Mobile apps testing;
- Backend testing.
The 7 most important criteria we check our software against are:
Functionality testing is performed to verify that every software feature works in accordance with the product functional requirements.
Reliability testing is a type of testing to check that the software is fault-free and can operate without failures for a specified period of time in a particular environment.
Stability testing is aimed to verify that the solution developed can uninterruptedly perform well within or above the due period.
Efficiency testing tests the amount of resources needed by the product to perform a particular function.
Usability Testing is focused on the user’s ease of the application usage, its flexibility in operation and managing and the system capability to meet the objectives set for the product.
Compatibility testing is non-functional testing performed to make sure the solution is proficient enough to run in various environments: hardware, browsers, database, operating system, devices, and networks.
Maintainability testing is held to check the system’s ability to update and modify the product if required.
In a software development process, testing should be an essential and indispensable part, since the quality of the product is in direct correlation with its usability, popularity and corporate revenue if it’s a software developed for business needs.
In our company we insist that not less than 30% of project time is devoted to the process of testing, it will allow us to guarantee the proper product quality to our clients.