Software testing is a method of evaluating the functionality of a software application with the goal of determining whether the generated software meets the specified criteria and identifying flaws to ensure that the product is defect-free in order to produce a high-quality product.
It is one of important step in a SDLC(Software Development Life Cycle).
Types of Testing
There are typically four types of testing:
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
Unit testing is a software development technique in which the smallest testable pieces of a programme, referred to as units, are examined separately and independently for proper operation.
Every programming language has some tool or framework to do effective unit testing. You have Junit in Java, for .net you have Nunit. In MuleSoft, we can use the Munit framework to perform efficient unit testing and make sure the code is working as per expectations.
Some common strategies :
- Always mock external API or Database calls
It is a good idea to mock external API or DB calls since our motto here is to test our code and not the underlying system. Dependency Injections can help mock effectively.
- Use good error messages
In case some unit tests fail our report should have proper details and error messages. Good error messages makes fixing effort easier.
- Should be isolated
The unit tests should be isolated such that it can be run in any order and still behave the same.
- Cover as much as possible
It's good to cover as much code as possible. Usually anything above 80% is considered good.
After each modules are thoroughly unit tested, we can then move to Integration testing. It is a testing strategy in which software modules are conceptually connected and tested as a unit.
A typical software project is made up of several software modules written by various programmers. The goal of this level of testing is to find flaws in the way various software modules interact when they're combined.
System Testing is a black box testing approach used to assess the overall system's compliance with defined requirements.
System testing is frequently done by a team that is separate from the development team in order to measure the system's quality objectively. Both functional and non-functional testing are included. A load test is a common system test, used to see if a system can take a certain amount of load, such as the number of concurrent users using an app and the program's capacity to handle interactions quickly.
Acceptance Testing is a type of software testing in which the acceptability of a system is assessed. The main goal of this test is to determine whether the system complies with the business requirements and whether it is suitable for delivery.
Often Business people are involved to get this tested before releasing it to production. User Acceptance Testing(UAT) is a common Acceptance Testing where specific requirements which are quite often used by the customers are primarily picked for the testing purpose
There's a popular saying,
"The more you sweat in peace, the less you bleed in war"
Testing is the personification of the above line. It makes sure that the software application is bullet proof before it's open to users.
Hope you liked it. Cheers 🍻