Software testing is the technical process used to recognize the correctness, completeness, security, and quality of developed computer software. Software testing is executed to display quality-related information about a tested product. Software testing is a vital part of software quality assurance.
Some of the common quality attributes of a product a tester looks for capability, reliability, efficiency, portability, maintainability, compatibility and usability. A good test not only bring out errors, it also displays interesting informations new to a project community. Software testing play a critical strategic role for transporting the quality of the product higher in the hierarchy in the software development process. It also underlines the customer's requirements all the way through the product cycle.
Some of the vital software testing procedures involved in testing a product are functional testing, negative testing, customer scenario testing, stress testing, performance testing, scalability testing, international testing, and more. The sole purpose of software testing is to insure that customers receive maximum product quality.
Some of the common types of testing a test engineer consider while testing a product are Black box testing, white box testing, incremental integration testing, functional testing,
system testing, end-to-end testing, sanity testing or smoke testing, regression testing,
acceptance testing, acceptance testing, performance testing, usability test, uninstall testing, recovery testing, failover testing, security testing, exploratory testing, ad-hoc testing, mutation testing and more.
Although all projects are profited from testing, some projects generally do not need independent test staff. The requirement of test stuffs depend upon the size and context of the project, the risks, the development methodology, the developer's skill and experience and more. A short term, low risk project handled by experienced programmers employing unit testing or test-first development do not need test engineers. Considering the different goals in software testing, different roles are established for software testers. They are test lead / manager, tester, test designer, test automater / automation developer and test administrator.