-
자동화: 테스팅 프레임워크 사용테스팅 관련/Q&A 2020. 5. 25. 22:21
Q. 테스팅 실행 프레임워크들(예. JUnit)은 중요하다. 왜냐하면:
더보기A. 테스트를 통과하는지 안 하는지 결정하기 위해 오라클(예. 프로그램의 출력값을 예상값과 일치시킨다)에 반대하여 자동화 체크를 허용한다.
모든 테스트들을 실행하고, 어떤 테스트들이 pass했고 fail했는지에 대해 피드백을 제공한다.
프로그래머들이 각각의 메소드들에 유닛 테스트를 할 수 있도록 한다.
테스팅 프레임워크는 테스터들이 테스트 케이스들을 생성하고 프로그램(실험대상시스템, System under Test - SUT)에 반하여 실행할 수 있게 한다. 테스트 실행 중, 프레임워크는 자동적으로 SUT에 의해 생성된 출력값과 예상된 출력값이 일치하는지 체크하고, 테스터에게 테스트 케이스가 pass/fail했는지 피드백을 제공한다.Q. 메인 메소드를 테스트하기 위해서는:
더보기A. 테스트 케이스에 의해 입력된 입력값을 redirect한다.
테스트 케이스에 의해 생성된 출력값을 redirect한다.
올바른 파라미터들과 함께 메인 메소드를 부른다(invoke).
메인 테스트 케이스가 메소드의 입력값과 출력값, 입력 파라미터까지의 모든 것을 다룬다.Q. 테스트 프레임워크에서, 테스트 케이스들을 작성한다:
더보기A. 분리된 클래스에 작성한다. 대부분, 테스트 대상 클래스에 하나 이상의 테스트 클래스들을 작성한다.
프로그램의 각각 클래스 하나당 개별적으로 테스트 클래스를 가지는 게 가장 좋다. 테스트 클래스는 테스트 대상 클래스의 메소드들이 올바른지 체크하는 테스트 매소드들을 가진다. 테스트 클래스가 전형적인 오류뿐만이 아닌 코너케이스 행동을 가진 메소드들을 점검하는 테스트를 포함하고 있는지 확실히 해야한다.
코너케이스란, 여러 가지 변수와 환경의 복합적인 상호작용으로 발생하는 문제다.
예를 들어 fixnum이라는 변수의 값으로 128이 입력되었을 때, A 기계에서 테스트했을 때는 정상작동하지만 B 기계에서는 오류가 발생한다면 코너 케이스라고 할 수 있다.
같은 장치에서라도 시간이나 다른 환경에 따라 오류가 발생하기도 하고 정상작동하기도 한다면 이것도 코너 케이스다. 특히 멀티코어 프로그래밍에서 만나기 쉬운 오류일 것이다.
코너 케이스는 오류가 발생하는 상황을 재현하기가 쉽지 않아 디버그와 테스트가 어렵다.'테스팅 관련 > Q&A' 카테고리의 다른 글
신뢰성(Dependability) (0) 2020.05.26 자동화: JUnit 테스트 작성 (0) 2020.05.25 테스트는 무엇일까? (0) 2020.05.24 테스트 주도 개발 (0) 2020.05.23 커버리지 테스팅 (0) 2020.05.23