개발자이자 소프트웨어 테스팅의 대가인
Brian Marick이 운영하던 testing.com이 없어져 버렸다. 테스팅에 대해서 의욕을 가지고 사이트를 운영하던 것으로 보였는데, 도메인 팝니다가 뜨나니...
이제는 이 분이 만드신 툴을 찾을 수 없을 듯 하여, 여기에 공개한다.
설치법)
1. *.7z 파일을 c:\program files\ 밑에 압축 해제한다. (주의할 점은 압축 파일 내부에 multi라는 폴더 정보를 가지고 있으므로, c:\program files\multi 밑에 풀어 버리면 실제로는 c:\program files\multi\multi 로 풀린다는 것!)
사용법)
1. 커맨트 프롬프트 창으로 진입
2. c:\program files\multi\multi를 입력해서 실행
3. 다음과 같은 화면이 출력되면 실행 성공
Type in an expression.
'q' to quit.
>
자 이제 부터 이 툴이 뭔지를 살펴보자.
소프트웨어 테스팅에서 그나마 정형화되어 있는 테스트 케이스 도출 방법은 논리식을 어떻게 하면 적절하게 테스트 (평가)할 수 있을 것인가 하는 문제이다.
소프트웨어는 거의 논리가 사용되며, 그 논리를 구현하는 중심에는 논리식이 존재한다. 쉽게 인지할 수는 없지만, 루프와 분기등 프로그래밍의 조건문들 또한 논리식이 없다면 구현될 수가 없다.
즉, 프로그램의 제어 흐름과 여러 가지 상황을 확인하기 위해서는 논리식이 어떻게 평가되어야 하는지에 대해서 소프트웨어 테스팅에서 신경을 써야한다는 의미이다.
논리식은 주로 AND, OR 논리연산자를 통해 구현되는데, 논리연산자 이외의 나머지 원소 각각이 평가되는 결과에 따라서, 전체 논리식이 평가되는 결과 또한 달라진다 하겠다.
따라서, 소프트웨어 테스팅에서는 각 원소와 전체 논리식을 평가한 결과를 따지는데, 가장 적은 대입수를 넣어보고 논리식에서 유발될 수 있고, 또한 논리식의 구조 자체에서 유발될 수 없는 값들을 선정하여 테스트 하는 것이 가장 효율적이라 하겠다.
< 이해를 돕기 위한 실행 화면 >
Multi% multi
Type in an expression.
'q' to quit.
> a && b < c
Test ideas for (a && (b<c)):
a (b<c)
----- ------------
true b barely < c
FALSE true
true b==c
> q
이에 대해서는
MC/DC의 방법이 존재하지만, 계산하기가 좀 까다롭다. ^^
이제 본론으로 돌아와서, Multi에서는 이러한 논리식이 주어지면 가장 필수적으로 평가해야 하는 조건들을 제시해 준다. 이 툴 자체는 아무것도 아니지만, 주요 로직을 위한 테스트 케이스를 작성하고자 할 때 이 툴을 통해 원저자의 말처럼 "테스트 아이디어"를 얻을 수 있다. 함께 포함된 readme에서는 언급하고 있지 않아 알 수 없지만, 이 툴에서 제공하는 아이디어는 MC/DC 커버리지를 가지지 않으며, 다른 형태의 커버리지 들을 커버한다. (물론 정확하진 않다.)
이 툴로 좀 더 좋은 테스팅을 하시길!
PS) 이하 지금은 사라져서 찾을 수 없는 원 페이지를 첨부해 본다.
댓글 영역