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
또다른 분류로
Unit Test(단위 테스트) / Instumentation Test(계측 테스트) 로 나눌 수 있다.
그렇다면 Unit Test가 무엇일까?
해당 블로그를 통해 Unit Test가 무엇인지 알 수 있었다.
Unit Test는 함수, 클래스, 메서드등과 같이 작은 코드 조각을 테스트하여 코드의 동작을 확인하고 검증하는 프로세스이다.
그러던 중 의문을 갖게된 것이 단위별로 쪼개어 테스트를 하는 것이 좋다면
지금 있는 기능에서 어느 부분을 테스트를 해야 할지 막막하였다.
그러던 중 뱅크 샐러드의 아티클을 보게 되었다.
나의 의문에 대한 답은 수정, 변경되는 모든 기능
에 대해 테스트를 추가해야 하는 것이었다.
나의 경우 안드로이드 테스트에서 Unit Test와 UI Test에 대한 언급을 가장 많이 들었다.
직접적인 공부 시작 전인 지금은 Unit Test와 UI Test만을 우선적으로 CareVision 프로젝트에 적용해볼 예정이다.
UI 테스트 중 하나는 일련의 사용자 작업을 실행하도록 하고 올바르게 작동하는지 확인하는 테스트이다.
그러나 효율적인 접근 방식은 자동화된 방식으로 실행되는 UI 테스트이다.
UI 테스트는 앱 또는 일부 화면을 실행한 다음 사용자 상호작용을 시뮬레이션하고 마지막으로 앱이 적절히 반응했는지 확인하는 테스트이다.
소규모 component 동작 확인부터 전체 사용자 흐름까지의 대규모 탐색 테스트까지 있는 다양한 통합 테스트이다.
Android 테스트 폴더인 src/androidTest/java
에 테스트 코드를 구현한다.
Android Gradle 플러그인은 테스트 코드를 기반으로 테스트 앱을 빌드한 다음 타겟 앱과 동일한 기기에 테스트 앱을 로드한다.
출처 : 공식문서
앱의 아키텍처는 테스트를 위해 일부 모듈을 대체 가능한 구조로 설계해야 한다.
*테스트에 도움을 주는 라이브러리를 사용하는 것이 좋다
예를 들어 Repository 모듈을 테스트를 위해 메모리 기반 버전으로 교체하고, 가짜 데이터를 사용해 테스트를 진행한다.
상단 그림
: Production 환경
하단 그림
: Test 환경
Production 환경에서는 비동기적으로 데이터가 UI 방향으로 전달한다.
Test 환경에서는 가짜 데이터 저장소를 사용하여 실제 데이터 저장소를 대체하고 테스트 시에는 동기적인 방식으로 동작해 UI가 예상된 결과를 정확히 테스트 한다.
CareVision에서는 우선 UI Test를 도입할 예정이고 UI Test의 각 유형에 대한 설명은 다음 포스팅에서 UI Test 환경 세팅과 함께 정리해보겠습니다.