QA/ISTQB

1.3 - General testing principles (테스팅 일반 원칙)

c29130811 2019. 2. 16. 15:55

Terms

Exhaustive testing


Principles

A number of testing principles have been suggested over the past 40 years and offer general guidelines common for all testing. 


Principle 1 - Testing shows presence of defects

Testing can show that defects are present, but cannot prove that there are no defects. Testing reduces the probability of undiscovered defects remaining in the software but, even if no defects are found, it is not a proof of correctness. 


Principle 2 - Exhaustive testing is impossible

Testing everything (all combinations of inputs and preconditions) is not feasible except for trivial cases. Instead of exhaustive testing, risk analysis and priorities should be used to focus testing efforts. 


Principle 3 - Early testing

Testing activities should start as early as possible in the software or system development life cycle, and should be focused on defined objectives.


Principle 4 - Defect clustering

A small number of modules contain most of the defects discovered during pre-release testing, or are responsible for the most operational failures. 


Principle 5 - Pesticide paradox

If the same tests are repeated over again, eventually the same set of test cases will no longer find any new defects. To overcome this "pesticide paradox", the test cases need to be regularly reviewed and revised, and new different tests need to be written to exercise different parts of the software of system to potentially find more defects. 


Principle 6 - testing is context dependent

Testing is done differently in different contexts. For example, safety-critical software is tested differently from an e-commerce site.


Principle 7 - Absence-of-error fallacy 

Finding and fixing defects does not help if the system built is unusable and does not fulfill the users needs and expectations




용어

완벽한 테스팅


원칙

다수의 테스팅 원칙이 40년동안 제시되어 왔으며, 모든 테스팅에 대한 일반적인 가이드라인이 되고 있다.


원리 1 - 테스팅은 결함이 있음을 증명하는 것이다.

테스팅은 결함이 있음을 증명하지만,  결함이 없다는 것은 증명할 수 없다.  테스팅은 발견되지 않은 결함이 소프트웨어에 남아 있을 확률을 줄일 수 있지만, 만일 결함이 전혀 발견되지 않은 경우라도 그것이 정확한 증명은 아니다.


원리 2 - 완벽한 테스팅은 불가능하다.

모든 것을 테스팅(모든 입력값과 조건에 대한 조합) 하는 것은 아주 간단한 경우를 제외하고는 가능하지 않다. 완벽한 테스팅 대신에, 위험 분석과 우선 순위로 테스트 효과에 집중해야 한다.


원리 3 - 조기(早期) 테스트

테스팅 활동은 소프트웨어 또는 시스템의 개발 생명 주기에서 가능한한 빠르게 진행되어야 한다. 그리고 정의된 목표에 집중되어야 한다. 


원리 4 - 결함 집중

출시 전 테스팅 중에 적은 수의 어떤 모듈에서 다수의 결함이 발견되거나, 대부분의 운영상의 장애에 대한 책임을 갖고 있다.


원리 5 - 살충제 페러독스

동일한 테스트를 반복해서 하는 것은 결국 동일한 테스트 케이스에서는 더이상 새로운 결함을 찾아낼 수 없다. 이 "살충제 페더록스"를 극복하기 위해서는 테스트 케이스를 정기적으로 리뷰와 수정할 필요가 있으며, 그리고 새로운 테스트는 소프트웨어와 시스템의 잠재적인 결함을 발견하기 위해서는 새로운 테스트 케이스를 작성할 필요가 있다.


원리 6 - 테스팅은 정황에 의존적

테스팅은 정황에 따라 다르게 진행된다. 예를 들어, 안전-최우선 소프트웨어는 인터넷 상거래 사이트를 테스트할때와 다르게 해야 한다.


원리 7 - 오류 부재의 궤변

사용자의 요구와 기대를 충족하지 않는 결함시스템은 결함이 발견 및 수정되어도 아무 소용이 없다. 

728x90