“All code is guilty until tested innocent” – an unknown tech geek.
You cannot have good software without letting it go through rigorous testing. In this article, you will learn more about software testing standards and processes that you should follow to be able to deliver better results.
What is Software Testing?
Simply put, software testing makes software better. It is a process that identifies the correctness, completeness and quality of the developed software. Testing is important since it uncovers defects/bugs before the delivery to the client, that guarantees the quality of the software. It makes the software more reliable to use.
Software Testing Stages
Let’s go through the above listed stages of software testing:
Requirements analysis defines the expectations of the end users for a software application that is to be built/modified. Therefore requirements analysis means to analyze, report, document, validate and manage software or system requirements.
The test engineer needs to perform the following tasks to complete the requirements analysis
- Read each requirement to check for completeness, clarity, ambiguity, if any.
- Verify all possible scenarios have been considered in a requirement analysis phase, and try to identify all uncovered cases or any gaps.
- Discussion on questions or doubts that arise out of the requirement analysis over daily calls for the team to be on the same page.
- Requirements traceability matrix needs to be used in order to ensure the complete requirement coverage of the software under test.
Below is the sample template of RTM(Requirements Traceability Matrix)
A test plan is a document that describes the test objectives, schedule, estimation, deliverables, and resources required to perform software testing on a software application. A test plan helps in understanding and determining the efforts required to validate the quality of an application under testing. Below is a sample agile test plan:
Test design is a phase where the use cases required for testing are designed. Test design is performed based on the test plan. Test cases designed are made sure to cover all the requirements of the software application. Mapping of test cases with the traceability matrix is also considered necessary in order to cover all the requirement gaps.
Test Scenarios/test cases designed based on the below test design techniques to ensure complete test coverage on happy path and negative scenario testing.
- Boundary Value Analysis (BVA)
- Equivalence Partitioning (EP)
- Use Case Testing
- Impact based testing
Below is the sample test design template
Test Environment Setup:
Test environment is a platform built for implementing and executing the test cases on the software application. The environment for testing is created by integration of the required hardware and software along with required network configuration and necessary settings. Before starting with any tests, it is always important to perform a smoke test on the test environment in order to check the feasibility of the test environment.
Test execution is the process of executing test cases designed, document and compare the expected and actual results. Following factors are considered for a test execution considering the risks. Select a subset of the test suite to be executed for this cycle and assign it to the respective tester/quality analyst.
- Test execution is performed based on the test cases / test scenarios designed as per the test plan
- Observations - Documented on the respective JIRA ticket as encountered during the test execution
- Test Proof Documentation on the respective JIRA ticket consists of the following
◦ Test Status: PASS/FAIL - Depicts the test status of the JIRA ticket
◦ Test URL: Comprises of the test data used for testing the particular requirement
◦ Test Scenarios and their Screenshots
- Sanity & Regression - Sanity and regression testing is performed on the higher environments(STG) on regular basis at every sprint end as part of the Pre UAT testing measures
The sprint test closure checklist makes sure the following activities are performed at the end of every sprint for smooth transition between multiple sprints.
- Functional tests completed as per the timelines with complete coverage
- All the observations logged and addressed by the team
- Valid observations logged as defects and assigned to the respective ticket owners
- Test proof documentation updated for each ticket with its respective manual testing and device testing results
- Regression test performed on the test environment before the code is merged to the higher environments ie. in this case from Dev to STG
Device Testing/Cross Browser Testing:
Device/Cross browser Testing is the process by which a Device/browser is tested for its Quality to see how well it meets the requirements for which it has been developed. Device/Cross browser testing is covered with the below list of devices/browsers as confirmed by the customer. Browser stack used as the platform for device testing.
Different Types of Software Testing
Unit Testing is checking small units of code to deliver information early to speed up your testing strategies and reducing unwanted tests cycles. Unit testing is usually performed by a developer before the code is handed over to the software testing team.
Smoke Testing is a software testing procedure that determines if the deployed software is stable or not. Smoke testing is a confirmation for the testing team to proceed with further software testing. It consists of a minimum set of tests to run on each build to test software functionalities.
Integration Tests is defined as a type of testing carried out in an integrated hardware and software environment in order to check the behavior of the system. Software/hardware components are integrated and tested progressively until the completed system has been tested.
System testing of a completely integrated software product. It is the final test to verify that the product delivered meets the requirement specifications mentioned in the requirement document. Both functional and nonfunctional requirements should be considered in scope.
Regression verifies that recent code changes do not alter or destroy the already existing functionality. Regression testing includes both subset/full regression, both can be covered with manual or automated test scenarios.
User Acceptance Testing (UAT):
User Acceptance Testing is one of the final stages of the software testing life cycle and it is performed by the client after the software has been thoroughly tested. UAT is conducted by the end users of the product for approvals and deployments of production release.