본문 바로가기

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

테스팅 자동화 기술

Exhaustive Testin

모든 입력에 대한 테스팅 수행은 불가능

 

소프트웨어 공학적인 측면의 비용에 맞는 테스팅 → 그 제품의 맥락에 맞는 적절한 수준의 테스팅

예를 들어, Mass Market 타깃의 소프트웨어는 오류가 하나도 없는지의 문제보다는 적절한 시간, 트렌드, 적당한 비용, 시장에 빨리 출시하는 것이 중요하다. 반면 의료기기에 탑재된 소프트웨어는 개발기간이 늘고 비용이 높아지더라도 소프트웨어에 오류가 없도록 하는 것이 중요하다.


소프트웨어 품질을 좋게 유지하기 위한 요소

 

정적 분석

코드 자체에 검증할 수 있는 부분을 최대한 검증

 

자동화된 테스팅 테크닉

복잡해지는 소프트웨어 시스템의 어려운 품질 검수

효율 높여

 

해당 도메인에 대한 지식

자동화된 기술은 모든 종류의 품질을 다 보장해줄 수 없다


자동화된 기술을 통해 테스트하면 무한루프에 빠지는 입력을 찾을 수 있음

예를 들어,

/*data correction for september 1752*/
if(special_days)
	result = "Day did not exist";
else
	if(leoflog && is_september && day>13)
    	result = dayName((oddMonths(month,year)+(--day)+fistJanuary(year)+10)%7);
        else

위의 날짜 계산 프로그램은 입력날짜가 달력에 존재하지 않는 가능성도 염두해야 한다.

 

찾아야 되는 오류에 따라 적합한 테스팅 기술이 매우 달라진다. 그러므로 테스트 한계, 문제에 적합한 테스팅 기술은 무엇인지, 존재하는 테스팅 기법의 종류가 무엇인지 이해하는 경우 적재적소에 필요한 테스팅 기법을 사용할 수 있다.

 

다양한 자동화된 테스팅 기법

Black-box

테스팅 업무를 수행하는 엔지니어가 코드를 볼 수 없는 경우

스펙에 기반한 테스팅만 가능

 

White-box

테스팅 업무를 수행하는 엔지니어가 코드르 내부까지 보는 경우


Black-box testing

input으로 가능한 값들의 공간이 스펙에 따라서 주어져 있기 때문에 해달 공간을 최대한 균일하게 그리고 효과적으로 탐색하는 방법에 초점을 맞춰서 테스팅 기법을 만들게 된다.

 

강점

소스코드 없어도 됨

 

단점

기능적으로 정확할 때만 테스팅 가능

 

 

Combinatorial Interaction Testing (CIT)

실제 오류를 발견하기 위해 속성들을 효율적으로 조합하는 기법

 

강점

Fault 발견 확률 높

 

단점

테스트 입력 수 많

 

Structural Testing (구조적 테스팅 기법)

구문, 분기문, 함수, 블럭 등 구조적 요소 확인

 

커버리지

몇 퍼센트 정도를 실제로 실행해 보았는지 테스팅

 

강점

숫자로 수치화하여 퍼센트를 지표로 사용하기 때문에 꼼꼼한 테스트 가능

 

단점

커버리지 달성하더라고 오류가 없다고 보장할 수 없다

 

화이트박스 테크닉, Mutation Testing

작성한 프로그램에 의도적으로 몇가지 무작위의 변경을 가해 오류 삽입

테스팅을 얼마나 잘하고 있는지 확인

강점

큰 가능성이 존재한다고 예상

 

단점

효과적, 효율적으로 처리하는 것의 비용 문제

 

Random Testing (무작위 테스팅)

테스트 입력을 무작위로 생성해서 수행하는 테스팅

블랙박스 테스팅

별다른 정보 없이 입력을 무작위 샘플링

 

화이트박스 테스팅

코드 내부에서 얻은 부분적 정보를 입력 샘플리에 bias를 주는데 사용함

 

강점

사람의 선입견에 영향 받지 않음

비용 낮

 

단점

성공까지의 시간이 오래 걸림

무의미할 수 있음

 

Regression Testing (회귀 테스팅)

의도하지 않은 결과로 잘 작동하던 기능이 망가짐(회귀 오류). 이 때 빨리 탐지해 내는 것

강점

테스트 최소 실행

 

단점

누적된 데이터 확보

비용 높

 

Fault Localization (결함 위치 탐지)

테스팅에서 디버깅으로 넘어가는 관점에 있는 기술

강점

오류존재 가능섬 범주 크게 줄임

 

단점

오류 원인 설명 어렵

오류 위치 예측 가능하나 설명은 어렵

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

등가 파티션  (0) 2021.03.08
블랙박스 테스팅  (0) 2021.03.08
테스트 불가능한 프로그램  (0) 2021.03.07
에러, 결함, 실패  (0) 2021.03.04
소프트웨어 품질  (0) 2021.03.03