The science of software testing
Software testing has been considered an afterthought in the commercial software industry. Primary product managers and even developers believe that software testing is a work that anyone can do. Some books on software testing even name "art", "crafts" and the like. This has led some readers in the software industry to mistakenly believe that quality testing is not a subject of software engineering. On the contrary, the effective test is not only a subject of engineering but also a key part of improving software quality and reliability through the measurement report of defect identification, error prevention and reasonable risk analysis.
The creativity of the test
Although some people think that testing software is an art, it is only because software testing and crafts are equally creative. However, no handicraft needs the mathematical basis and logical ability needed in the software testing process.
For a large-scale computer program, testing requires more creativity than the design process. This view has been controversial. Glenford J. Myers supported this theory in the art of software testing. He points out that "testing is a challenging job with extreme imagination and high intelligence". In fact, many people who design and develop software admit that they find more aesthetic satisfaction through the software tests of creativity. But, like creativity, software testing is by no means an art or a craft.
Philosophical view of the test
Historically, humans have long been involved in various forms of testing through the design of suspected tools and processes. This persistent revaluation has led to a significant improvement in quality and efficiency. However, tests based on repeated tests are very hard and time-consuming.
In the 1962, Sir Karl Popper, the philosopher, proposed that knowledge growth comes from more scientific methods and processes. In his book, "guessing Wrong and refuting," Popper hypothesized that reducing false things contributed to scientific progress. In essence, progress is the achievement of translating scientific theories (guesses) into testable hypotheses (retorts).
Testing is a science
Computer software is similar to the scientific hypothesis; both are inherently error-prone. The basic framework of the software debugging process is analogous to the trial and error practice of scientific hypotheses. Therefore, computer software is a simple technique to speculate.
The test engineer rejects the assumption of the defect-free software through rigorous testing (mainly for proving defects). This "fake" process is in stark contrast to data-driven methods such as induction and inference. Data driven by the repetition of facts to prove correctness.
These methods support the assertion by confirming it. Verify the uncertainty without errors by using the Special data validation function normally. This method can only prove that the software function in some cases function normally, it does not prove that the software error-free.
Build confidence in the software
The best way to build reliable confidence in software is to find flaws in design or functionality, rather than just proving that a software can work within the context of a product's requirements.
However, any assumption can withstand countless hours of thorough testing, but there are still errors. Refute software that does not guarantee defect-free, because there are too many hypotheses to test in a certain amount of time. William Hetzel explains the ineffectiveness of thorough testing in the full guide to software testing. "A 70-branch program contains test cases that exceed your tea spoon to measure water in the Pacific," he wrote. ”
When a tester succeeds in refuting a software (finding a bug), he reports a flaw. The developer then solves the problem and assumes that the software works correctly, and the rebuttal process repeats itself. Although testing will never prove that software is not defective, discovering errors can highlight problems, ultimately resulting in higher software reliability and quality, or providing a basic consideration for risk analysis and reduction.
What the testers really do
When we let test engineers describe their work, most of the response was "sabotage software (breaking software)." Perhaps that is why some people mistakenly believe that the work of testers is a process of sabotage. In fact, testers do not really "break" the software. Testers expose pre-existing errors by observing the results of tests, logical speculations and experiments, refuting or falsifying hypotheses.
Discovering bugs is just one aspect of software testing. The test engineers make it valuable in the development process by validating software, discovering software bugs, providing information to developers to avoid bugs, providing information to managers to assess risk, and, most importantly, playing the role of a customer advocate.
However, finding hidden mistakes in software may be the greatest challenge to intelligence in this job, and it requires highly creative people to be competent. Perhaps that is why the tester, after a creative attack test, discovers a deep, hidden error, and he succeeds in "destroying the software."
This article is reproduced from the 51Testing Software test network, see more: http://www.51testing.com/html/news.html