Software systems are an essential part of life, from business applications (e.g., banking) to consumer products (e.g., cars).
Most people have had an experience with software that could have worked better. Software that does not work accurately can lead to many issues, including loss of money, time, business reputation, and even injury or death. Software testing is a way to evaluate the software's quality and reduce the risk of software failure in operation.
A common misperception of testing is that it only consists of running tests, i.e., executing the software and reviewing the outcomes. As described in section 1.4, software testing is a process which includes many activities; test execution (including preventing results) is only one of these activities. The test process also includes activities such as test planning, analyzing, designing, and implementing tests, reporting test progress and results, and evaluating the quality of a test object.
Some testing does involve the execution of the component or system being tested; such testing is called dynamic testing.
Other testing does not include the performance of the part or system being tested; such testing is called static testing.
So, testing also includes reviewing work products such as requirements, user stories, and source code.
Another common misperception of testing is that it focuses entirely on confirming requirements, user stories, or other specifications. While testing does involve checking whether the system meets specified requirements, it also requires validation, which is checking whether the system will meet user and other stakeholder needs in its operational environment(s).