본문 바로가기

테스트이론/소프트웨어 테스팅

테스트 불가능한 프로그램

"Exhaustive 테스팅은 불가능 하다. 테스팅을 하는 이유는, 안하는 것보다 낫기 때문이다. Oracle을 이용하여 샘플한 입력에 대해 프로그램이 맞게 작동하는지 확인한다."

 -Elaine Weyuker

 

Oracle Assumption (Oracle 가정)

테스트하고 있는 프로그램의 행동의 옳고 그름을 결정해줄 수 있는 메커니즘

 

아래와 같은 경우엔 오라클을 만들 수 있다는 자체가 무너짐

Assumption 1. Oracle을 애초에 쓸 수 없다 (예: 원주율의 정답을 정확히 모름)

Assumption 2. Oracle이 존재하더라도, 많은 비용이 듦

 

테스팅이 불가능한 프로그램의 종류

Type 1. 프로그램 자체가 답을 모르는 문제를 풀기 위해 작성된 경우 (예: 원주율 계산 프로그램)

→ 명백한 이론적인 한계 (자연적인 현상 시뮬레이션, 실험에서 얻은 데이터를 분석과 같이 정답을 모르는 문제에 대한 답을 찾는 과정에서는 정답과 비교 불가)

Type 2. 프로그램이 생성하는 결과물이 너무 많은 경우

논문을 기계적으로 분석, 결과를 취합하는 기술에 대한 연구, 기계학습 기법이 소프트웨어 개발의 일부로 점차 자리잡음 (높은 비용의 Oracle)

Type 3. 프로그램 자체가 오해에 기반해 작성된 경우

 

미래 소프트웨어 테스팅이 직면하는 문제

문 1. AI, 머신러닝 기법이 통상적인 소프트웨어와 결합됐을 때 어떻게 테스팅할 것인가?

문 2. 테스팅 불가능한 프로그램으로 생각했던 프로그램을 어떻게 효율적으로 테스트할 것인가?

문 3. 다른 형태의 테스팅인 경우, 어떤 행위를 통해 품질을 보장할 것인가?

'테스트이론 > 소프트웨어 테스팅' 카테고리의 다른 글

등가 파티션  (0) 2021.03.08
블랙박스 테스팅  (0) 2021.03.08
테스팅 자동화 기술  (0) 2021.03.04
에러, 결함, 실패  (0) 2021.03.04
소프트웨어 품질  (0) 2021.03.03