Software testing validates and verifies that an application is meeting the requirements and working as expected by client. It also verifies whether it is satisfying all the client needs.
Mostly, testing happens after the development, but in the agile methodology, testing effort is on-going.
Now the whole trend is moving towards the latest concept, test-driven development, where the increased portion of the testing will be done by the developer, before it reaches the team of testers.
Engineering products needs to be tested rigorously in prototyping stage as well as production stage. But now the prototype testing has become critical due to the cost and time for setting up production. Operation Prototype testing ensures that the product is meeting all kind of functional requirement and safety criteria etc., before the actual production starts. Ensuring quality of a product is vital.
It is a tough job for developers when the existing applications are migrating to cloud. They need to check architecture compatibility, clustering capabilities for load balancing, tenant provisioning alongside classical provisioning and metering. With so many cloud platforms entering into the market like Amazon EC2, Google AppEngine, and Rackspace, the need for testing the cloud has now become essential.
Following are the different types of testing:
Black box testing – Depends on requirements and functionality.
White box testing – This testing is based on knowledge about the logic of an application’s code. This is also called as Glass box Testing. Tests are based on coverage of code statements, branches, and conditions.
Unit testing – In this stage, individual software components or modules will be tested. Generally this will be done by the programmers. One should have the knowledge about the internal program code.
Integration testing – This stage integrated modules will be tested to verify combined functionality after integration. These modules are usually individual applications, code modules, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
Functional testing – This stage internal stuff will be ignored. This testing will be done to check whether the type of testing ignores the internal parts and focus on the output is as per requirement or not.
System testing – Entire system is tested as per the requirements.
Sanity testing – This is to Test if a new software version is performing well enough.
Regression testing – Testing the whole application in case if there is any modification in a module.
Acceptance testing – Users will perform this testing to ensure that the product meets the specific requirements.