Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not necessarily limited to:
analyzing the product requirements for completeness and correctness in various contexts like industry perspective, business perspective, feasibility and viability of implementation, usability, performance, security, infrastructure considerations, etc.
reviewing the product architecture and the overall design of the product
Working with product developers on improvement in coding techniques, design patterns, and tests that can be written as part of code based on various techniques like boundary conditions, etc.
executing a program or application with the intent of examining behavior
reviewing the deployment infrastructure and associated scripts and automation
take part in production activities by using monitoring and observability techniques
Software testing can provide objective, independent information about the quality of software and the risk of its failure to users or sponsors.
Software testing can determine the correctness of software under the assumption of some specific hypotheses (see the hierarchy of testing difficulty below), but testing cannot identify all the failures within the software. Instead, it furnishes a criticism or comparison that compares the state and behavior of the product against test oracles — principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, contracts, comparable products, past versions of the same product, inferences about intended or expected purpose, user or customer expectations, relevant standards, applicable laws, or other criteria.
The primary purpose of testing is to detect software failures so that defects may be discovered and corrected.