본문 바로가기
개발일지

클래스(Class), 그리고 테스트 케이스

by 앱또웹 2024. 12. 9.
728x90
반응형

코드의 샘플을 테스트하기 위해 UI를 만드는것이 아닌 '테스트 케이스'를 활용해 보겠습니다

안드로이드 스튜디오에 코드 테스트 방법이 꼭 UI 만들고 앱 실행 방법만 있는 것은 아니기 때문인데요

테스트 케이스를 작성하여 단위 테스트를 실행하는 것은 소프트웨어 제작에 유용할 때가 많아

정확한 사용 방법을 익히는것이 좋습니다!

좌측 내비게이터의 소스 코드 패키지를 보시면 같은 이름의 패키지가 3개인 이유는?

정답!

단위 테스트를 지원하기 위해서!

이 중 '~(test)' 패키지는 안드로이드 기능과 상관없는 자바와 코틀린 테스트

'~(androidTest)' 패키지는 안드로이드 환경과 연관된 코드 테스트 입니다

 

'~(androidTest) 패키지는 안드로이드 환경을 테스트하기 위해 '안드로이드 에뮬레이터', '안드로이드 기기'가 필요합니다

그렇다면 '~(test)' 해당하는 'com.akj.kotlinsample (test)' 패키지 선택!

이미 생성된 테스트 케이스가 보입니다

[ 'ExampleUnitTeset.kt' > 마우스 우클릭 > 'Run ExampleUnitTest' ]

선택을 하면 test가 실행되고 결과가 나타납니다!

class ExampleUnitTest {
    @Test
    fun addition_isCorrect() {
        assertEquals(4, 2 + 2)
    }
}

'assertEquals()' 함수는 '예측 결과'와 '실제 결과'가 동일하지 않다면 테스트 실패 시키는 함수 입니다!

class ExampleUnitTest {
    @Test
    fun addition_isCorrect() {
        assertEquals(4, 2 + 3)
    }
}

'2를 3'으로 코드 변경 후 실행해보겠습니다!

바로 테스트 실패가 출력 됩니다

예상 값이 1로 넘겼기 때문입니다

'단위(Unit) 테스트'는 보통 위와 같이 예측 실제 결과를 비교합니다

마치 과학 실험 같죠! .... 마법의 연구과정이랄까?

우선 '가설'을 세운 후 '각종 변인들을 통제' 합니다

이후 결과가 가설 예측 결과와 동일한지 확인합니다

소프트웨어에 단위 테스트도 이러한 실험 역할을 합니다

소프트웨어는 매우 복잡한데, 복잡해질수록 이상 동작 발생 시 원인을 찾기 너무 힘듭니다

소프트웨어가 복잡하면 다양한 버그와 에러가 겹치기 때문이죠

 

단위 테스트는 복잡한 소프트웨어를 작은 모듈로 분리하여 코드가 정상 동작 검증합니다

이 과정에 복잡한 비즈니스 로직을 무시하여 다양한 외부 요소를 통제하죠

떄문에 테스트 로직 실행 결과에 집중해 검증합니다

 

장점 중 하나는 테스트 속도가 빠르다는것 입니다

모든 테스트를 실제 환경에 테스트하면 수행 시 시간이 장시간 소요됩니다

예로, 덧셈 모듈 테스트의 안드로이드 앱 개발하면 기능 수정 시 앱 실행 UI로 확인하려면

로딩 시간이 개발 시간보다 더 길어집니다!

이런 경우 단위 테스트를 사용하면 빠른 모듈 로직 검증이 이루어 집니다

단위 테스트는 개발자에게 편리한 기능임은 맞습니다

하지만 너무 신경쓴다면 프로그램 구현을 위한 비즈니스 로직보다 테스트를 위해 존재하는 코드로

많은 시간을 투자해야 되는 경우가 발생하기 때문이죠

그렇기에 많은 테스트가 소프트웨어 품질에 반드시 비례하는 것이 아니라고 합니다

728x90
반응형