Testing plays a vital role in the software development life cycle, helps to decide whether to release a product or application to the market. The time when to perform software testing activity is subjective to the development model chosen.
Any application would need to undergo the following types of testing at different situations as a process and quality check before releasing it to market.
- Functional testing
- Unit testing
- API testing
- Load testing
- Database testing
- Security testing
The decision as which all types of testing to be performed is based on the organisation’s interest, budget, time and on the level of importance. For example, any banking related application would need to undergo thorough UI functional, Load & Security testing.
Functional testing also known as black box testing is done on every update or build or release of application which have new features or enhancements or bug fixes. The testing team holds a major responsibility to thoroughly check if all the functional areas of the application which used to work earlier is working fine now and is termed as regression testing, any bugs identified during this process are termed as regression bugs and are treated with high priority as they regulate the decision to release an application to market. These bugs might have been introduced due to the code changes done as part of new feature or enhancement or bug fixes.
Testers are also expected to perform vigorous testing on the newly developed features, enhancements and the bug fixes.
As regression testing is highly prioritised, application need to undergo testing that is to execute the same set of functional test cases repeatedly, now if we perform this activity every time manually we will not be able to spend qualitative and quantitative time to test the new features , bug fixes and enhancements. This is when the need to automate functional test cases has arisen and which can help to reduce or eliminate the manual efforts to test the functional areas in the application which are supposed to work fine from before. Automation brings an added advantage of giving accurate results and have parallel execution of scripts.
After the automation testing been introduced, organisations have seen a major improvement in the quality of the application that got released to market along with reduction of testing costs and efforts. Now the manual resources can spend more and more time in doing thorough testing in new features , enhancements, bug fixes etc, which led to increase in giving more qualitative features to market.
As the application grows with time, organisations build more and more automation scripts and assets to increase the testing coverage, helps in increase of regression testing scope. Testing performed using automation scripts would result in accurate results and also saves a lot of time, money and effort. Resources can spend more and more time on writing manual test cases for new features, enhancements and also perform testing on new features, enhancements, bug fixes. The resource can utilize the time and work more on analyzing the bug patterns to come up with new approaches or strategies to optimize the testing.
Unit testing also known as white box testing which is performed at regular intervals of software development and bug fixing process by the respective software developers.
API testing is performed to check if the exposed APIs are working fine and are intact.
Load testing is performed on applications to evaluate the load it can handle and what is the maximum extend of load it can bear to work properly. These are generally done on applications where huge traffic is expected. It will help to understand the behavior of application during peak hours and stress.
Database testing is performed to check if database related basic operations work fine in various conditions of applications and also to check if data is consistent across different screens of the application.
Security testing is performed to check the vulnerable areas where hackers could break the system and gain access or cause issues to application.