Monday, January 25, 2016

Why is testing necessary?

References: http://www.istqb.org/downloads.html

K1: Most people have had experience with software that did not work as expected. Software that does not work correctly can lead to many problems, including loss of money, time or business reputation, and could even cause injury or death.

Explanation:
K2: Failure can be caused by defects and environmental conditions.
K2: Defects are produced by human beings' errors or mistakes. human beings are fallible and there is time pressure, complex code, complexity of infrastructure, changing technologies, and/or many system interactions.
K2: Environmental conditions are such as radiation, magnetism, electronic fields, and pollution.

Role of testing:
K2: Rigorous Testing of systems and documentation can help to reduce the risk of problems occurring during operation and contribute to the quality of the software system.

Testing and quality:
K2: Testing helps to measure the quality of software in terms of  defects found, for both functional and non-functional software requirements and characteristics (e.g. reliability, usability, efficiency, maintainability and portability).
K2: Testing can give confidence in the quality of the software if it finds few or no defects. A properly designed test that passes reduces the overall level of risk in a system. When testing does defects, the quality of SW system increases  when those defects are fixed.
K2: Lessons should be learned from previous projects.By understanding the root causes of defects found in other projects, processes can be improved, which in turn  should prevent those defects from reoccurring and, as a consequence, improve the quality of future systems.
K2: Testing should be integrated as one of the quality assurance activities.

How much testing is enough?
K2: This should take account of the level of risk, including technical, safety, and business risks, and project constraints such as time and budget.
K2: Testing should provides sufficient  information  to stakeholders to make informed decisions about the release of the software or systems being tested., for the next development step or to handover to customers.