본문 바로가기

개발/Android

[Android] 단위 테스트

반응형

 

테스트의 목적

 

∙필요한 조건을 만족하는지 확인한다. 

∙오류를 발견한다.

∙앱의 사용성을 확인한다.

 

자동 테스트와 수동 테스트

 

수동 테스트는 코디 작업이 끝난 상태에서 apk를 만들고, 체크리스트로 작성한 테스트 케이스를 차례대로 실행하는 형태로 이뤄지는 경우가 많습니다.

반면, 자동 테스트는 단위 테스트나 UI 테스트로 불리는 테스트 코드를 만들어 테스트 코드를 실행함으로써 앱이 바르게 동작하는지 확인합니다.

 

자동 테스트 특성 

∙ 반복 실행이 가능하다.

∙ 테스트 실행 상황을 시각화할 수 있다.

∙ 클래스와 메서드 등 사용자 조작으로 확인하기 어려운 단위의 동작을 확인할 수 있다.

 

수동 테스트 특성

∙ 최종 사용자와 완전히 똑같이 동작을 확인할 수 있다.

∙ 사용성이나 쾌적함 등 정성적인 면에서 평가할 수 있다.

 


 

단위 테스트

 

단위 테스트는 클래스나 메서드처럼  아주 작은 단위를 검증하기 위해 실행되는 테스트이며, 소스코드 자체의 타당성이나 품질을 확인하는 테스트입니다. 단위 테스트는 가장 작은 단위로 검증이나 실행이 이뤄지므로 실행 시간도 아주 짧습니다. 그러므로 일반적으로 통신이나 IO 처리와 같은 외부 리소스와의 통신을 무효로 하고, 단말이나 환경에 의존하지 않는 상태로 테스트할 필요가 있습니다. 그리고 구현 로직을 많이 고려해야 하므로 보통은 소스코드를 기술하는 프로그래머가 직접 단위 테스트를 작성하는 것이 바람직합니다. 단위 테스트로 로직의 사양을 언제나 자세히 검증할 수 있으므로 품질 특히 유지보수성 향상 등에 도움이 됩니다. 

 

 

단위 테스트의 사전준비

 

안드로이드의 단위 테스트에는 JUnit이라는 프레임워크가 사용됩니다.

JUnit은 자바에서 사실상의 표준이 되는 단위 테스트 프레임워크입니다. 안드로이드에서는 버전 4를 사용해 단위 테스트를 수행합니다. 

버전 3과 버전 4의 큰 차이 중 하나는 테스트 코드에 어노테이션이 이용되는 점을 들 수 있습니다.

/*테스트 대상이 될 클래스 */
public class calculator {
    public int evaluate(String expression){
        int sum = 0; 
        for (String summand: expression.split("\\+")
            sum += Integer.valueOf(summand);
            return sum;
    }
}

 

테스트 클래스는 '테스트대상의 클래스 이름 + Test' 같은 형태로 선언되는 것이 일반적입니다.

/*테스트 코드 */
public class calculatorTest {

    @Test
    public int evaluateExpression(){
        Calculator calculator = new Calculator();
        int sum  = calculator.evaluate("1+2+3");
        assertEquals(6, smm);
    }
}

 

 

반응형