QA & Product Testing

Software development is more than creating solutions that run needed functions. For business, a new software product is a way to change the operational status quo or make a leap in processes optimization in order to ensure better business results. It requires writing high-quality code and delivering a reliable solution that operates seamlessly and doesn’t have flaws.

Therefore, Quality Assurance and software testing is more than simply finding bugs and fixing them . The QA team’s mission is to help web developers deliver the product of their work within the estimated timeline, detecting any issues that might block successful operation of the software or even affect the user experience.

There are two main types of QA Testing, on which we will touch upon below:

MANUAL TESTING is a type of Software Testing where Testers manually execute test cases without using any automation tools. Manual Testing is the most primitive of all testing types and helps find bugs in the software system.

Any new application must be manually tested before its testing can be automated. Manual Testing requires more effort but is necessary to check automation feasibility. Manual Testing does not require knowledge of any testing tool. A main principle of Software Testing is that 100% automation is not possible, so manual input and feedback is always necessary.

AUTOMATED TESTING is, to put it simply, automated. This differs from manual testing where a human being is responsible for single-handedly testing the functionality of the software in the way a user would. Because automated testing is done through an automation tool, less time is needed in exploratory tests and more time is needed in maintaining test scripts while increasing overall test coverage.

The main benefit of manual testing over automated testing is that it allows a human mind to draw insights from a test that might otherwise be missed by an automated testing program. Automated testing is well-suited for large projects; projects that require testing the same areas over and over; and projects that have already been through an initial manual testing process.

QA Process and Development Steps

Initially, QA helps design and control the development process in a way that prevents serious issues during the project. To make this happen, QA engineers work on the project together with other team members (product owner, project manager, business analyst, and dev lead) throughout the complete software development cycle. The number and the order of QA activities may vary from project to project, depending heavily on the scope of the work and the project aims. It is essential that QA is present throughout the development process, in order to cut down on costs and ensure the launched product is as polished as possible.

Development process:

1. Analysis of requirements
2. Design
3. Implementation
4. Verification or testing
5. Maintenance

QA process:

1. Review of requirements
2. Test planning / writing test cases
3. Unit testing
4. Integration testing
5. System testing
6. Performance testing
7. Security testing
8. Cross-browser testing / cross-platform testing
9. Updating test cases
10. Regression testing

1. Review requirements and documentation.

QA engineers start their work on the project in parallel with documentation generation. They review the requirements and documentation for:

– completeness
– redundancies
– clarity
– consistency
– executability
– verifiability

The aim is to analyze system architecture and technologies for discrepancies. The key benefits for the development process are that errors are less costly when detected in an early stage and a better documentation equals higher quality for less work hours and much more accurate estimates.

2. Planning and preparing test cases

Now is the time to start planning test cases, i.e. – describe the actions QA engineers perform to make sure the piece of software functions as planned. In case the volume of such cases turns to be really significant.

3. Design test cases

When the development stage is finished, the QA team starts running the test cases. The main goal of this stage is to check whether the solution is developed properly from the technical perspective and meets the initial product owner’s requirements.

Below are the main QA activities and their aims:

Smoke testing. QA engineers lightly check that the software, or its module, functions as planned. When passed, further investigation begins.
Integration testing – verify that different components work as a single system.
Performance testing that includes: Load testing – check system behavior for normal and expected peak load
Stress testing – determine critical load after which the system breaks down

Security testing – ensure the solution has a sufficient protection level.
Cross-browser testing/cross-platform testing – check that the software works smoothly on different browsers (Chrome, Mozilla, Safari) or platforms (Android, iOS, Windows Phone). This is especially important for web and hybrid apps.
Regression testing – detect bugs in the code that was tested previously. Usually needed when adding new features or making any updates to an existing system.

4. Report and measure

When a QA engineer discovers a bug, it is recorded in a bug tracking system which is also a project management system. This simplifies communication inside the team and helps keep a clear overview of the improvement process. Each issue gets a priority level from urgent to low, which the development team then resolves based on time and manpower available.

5. Verifying fixes

When an issue is fixed, the responsible QA engineers are informed, who in turn verify it. The ticket in the bug tracking system is closed when no issue is detected. This rule applies: no bug can be marked as fixed until it is verified.

6. Release

Finally, the time comes to deliver the product to its intended users. Software test engineers are primarily responsible for the release of any software. This activity requires a process-oriented workflow. It is important to plan the release activity before the actual release date so that the final version of the software is in its final and best state.