CareVision - 테스트 도입을 위한 테스트란 무엇일까?

강유리 (Rein)·2025년 1월 19일
0

CareVision
환자 곁에서 늘 함께, 간호사의 눈이 되어주는 환자 모니터링 서비스
Github : https://github.com/SSU-Capstone-Aurora
2024 3-2 소프트웨어학부 캡스톤1 수업에서 진행했던 프로젝트를 계속해서 진행 중입니다.

⭐안드로이드 테스트 공부 시작 전, 내가 생각하는 테스트 코드


테스트 코드란 무엇일까? (내 생각)

규모가 큰 프로젝트에서는 전체 빌드를 하며 QA를 진행하기에는 무리가 있다.

그렇기에 작은 단위별로 테스트를 하며 서비스를 개발하기 위해 도입해야 하는 코드가 테스트 코드라고 생각한다.


왜 테스트 코드를 써야 할까? (내 생각)

실제 API를 붙이거나 디자인적 UI를 개발을 하고 소통하기 전에는 어디 문제인지 파악하는 게 중요하다고 생각했다.

따라서 프론트단에서 테스트를 하고 문제를 파악하여 문제의 원인을 파악하고 적어도 프론트(모바일) 개발의 문제가 아님을 확인한다면, 의사소통을 원활하게 해주는 장점이 있지 않을까 하는 생각이다.



⭐테스트 코드를 작성해야 하는 이유

아래 영상을 보며 Test코드의 전반적인 개념 공부를 간단하게 했다.

Overview of Android Automated Testing - Android Testing Part 1

  1. 이전에 작성된 코드가 손상되는 것을 방지하는 데 도움이 된다.
  2. 우리 코드의 주석 역할을 하기도 한다. 따라서 동작 의도를 나타낼 수 있기에 새로운 팀멤버에게 도움이 된다.
  3. 3개의 main type
    1. Unit Test
      1. isolated 격리될 수 있고 테스트 될 수 있는 코드 조각을 테스트한다.
      2. 계산기 앱에서, 더하기 기능만 테스트를 하는 것과 같다.
      3. 가능한 많은 unit들을 테스트하는 것을 추천한다.
      4. JUnit, MockK, Mockito 등을 사용한다.
    2. Integration Test
      1. 우리 프로그램의 어려운 구성 요소가 결합될 때 올바르게 작동하는지 확인한다.
      2. 날씨 앱에서는 현재 날씨 뿐만 아니라 미래 날씨도 예측을 해야 하는데, 유저가 체그하는 선호 장소에 대해 설명해야 할 때
        1. 유저의 선호 장소인 A와 그 장소에 대한 날씨인 B, 그리고 위치를 바꾸었을 때 제대로 날씨가 바뀌었는지 확인하는 C
      3. Espresso
    3. End to End Test
      1. 이런 종류의 test들은 전체 스크린 또는 시작부터 끝까지의 유저 흐름을 평가할 수 있다
      2. 쇼핑앱에서, 카드에 담고, 결제하고 이런 end to end 테스트가 필요하다
      3. Espresso, Appium



또다른 분류로

 Unit Test(단위 테스트) / Instumentation Test(계측 테스트) 로 나눌 수 있다.

[Android] 테스트 코드는 왜 작성해야 할까?

그렇다면 Unit Test가 무엇일까?




⭐Unit Test

해당 블로그를 통해 Unit Test가 무엇인지 알 수 있었다.

Unit Test는 함수, 클래스, 메서드등과 같이 작은 코드 조각을 테스트하여 코드의 동작을 확인하고 검증하는 프로세스이다.

  • 코드의 정확성 확인: 메서드의 입력과 예상되는 출력을 기반으로 테스트 케이스를 작성하고 실행함으로써 코드의 정확성 검증
  • 버그 탐지: 코드의 작은 부분을 테스트하면서 예기치 못한 동작이나 예외 상황 또는 버그를 찾아낼 수 있다.
  • 코드의 유연성 향상: 작은 단위로 테스트 코드를 작성하면 코드의 결합도가 낮아지고 모듈화된 구조를 가지게 된다.

그러던 중 의문을 갖게된 것이 단위별로 쪼개어 테스트를 하는 것이 좋다면

지금 있는 기능에서 어느 부분을 테스트를 해야 할지 막막하였다.

그러던 중 뱅크 샐러드의 아티클을 보게 되었다.



언제 Unit Test를 해야 할까?

나의 의문에 대한 답은 수정, 변경되는 모든 기능에 대해 테스트를 추가해야 하는 것이었다.





나의 경우 안드로이드 테스트에서 Unit Test와 UI Test에 대한 언급을 가장 많이 들었다.

직접적인 공부 시작 전인 지금은 Unit Test와 UI Test만을 우선적으로 CareVision 프로젝트에 적용해볼 예정이다.


⭐UI Test

UI 테스트 중 하나는 일련의 사용자 작업을 실행하도록 하고 올바르게 작동하는지 확인하는 테스트이다.

그러나 효율적인 접근 방식은 자동화된 방식으로 실행되는 UI 테스트이다.

UI 테스트는 앱 또는 일부 화면을 실행한 다음 사용자 상호작용을 시뮬레이션하고 마지막으로 앱이 적절히 반응했는지 확인하는 테스트이다.

소규모 component 동작 확인부터 전체 사용자 흐름까지의 대규모 탐색 테스트까지 있는 다양한 통합 테스트이다.


UI Test 코드 작성 위치

Android 테스트 폴더인 src/androidTest/java에 테스트 코드를 구현한다.

Android Gradle 플러그인은 테스트 코드를 기반으로 테스트 앱을 빌드한 다음 타겟 앱과 동일한 기기에 테스트 앱을 로드한다.


UI Test 유형

  • 동작 테스트 : UI 계층 구조를 분석하여 UI 요소의 속성에 관해 분석하는 테스트
  • 스크린 테스트 : UI 스크린샷을 찍은 후 이전에 승인된 이미지와 비교하는 테스트

출처 : 공식문서


Architecture와 Test 설정

앱의 아키텍처는 테스트를 위해 일부 모듈을 대체 가능한 구조로 설계해야 한다.

*테스트에 도움을 주는 라이브러리를 사용하는 것이 좋다

예를 들어 Repository 모듈을 테스트를 위해 메모리 기반 버전으로 교체하고, 가짜 데이터를 사용해 테스트를 진행한다.

상단 그림 : Production 환경

하단 그림 : Test 환경

Production 환경에서는 비동기적으로 데이터가 UI 방향으로 전달한다.

Test 환경에서는 가짜 데이터 저장소를 사용하여 실제 데이터 저장소를 대체하고 테스트 시에는 동기적인 방식으로 동작해 UI가 예상된 결과를 정확히 테스트 한다.



CareVision에서는 우선 UI Test를 도입할 예정이고 UI Test의 각 유형에 대한 설명은 다음 포스팅에서 UI Test 환경 세팅과 함께 정리해보겠습니다.

profile
(멋쨍이) Android Developer (하고싶다)

0개의 댓글

관련 채용 정보