Timer test Controller란?

Timer Test Controller란 시중으로 출시되기 전 Exam Timer의 기능을 조종한다. 다양한 테스트와 시간을 단축하는 목적을 가진다. 해당 프로젝트가 시간 측정을 중점적으로 하는 APP을 개발하기 때문에 테스트 시간이 많이 소요될 것이 분명하여 가장 먼저 개발한다.

Interface

ADB 명령어를 담은 batch file을 통해 Interface를 지원한다. Broadcast를 수신받아 하나의 sequence를 진행하거나, batch file에 sequence를 구현한다.

Main Feature

  1. Time Control

    1. Timer를 조작할 수 있는 기능이다. 시간 조작에 따라 UI가 즉각적으로 반응하는가를 검증하는 도구로 사용될 것이다.
    2. finish 시간을 로직 중 강제적으로 설정할 수 있기 때문에 끝난 시점의 로직(저장 등)을 확인할 수 있다.
  2. DB Contol

    1. User가 학습한 데이터를 저장하는 DB의 CRUD Interface 구현
    2. Room 자체에도 있긴 하지만, batch 파일로 100개 이상 테스트를 진행할 필요가 있음
  3. Layout Control

    1. Canvas DPI를 조절하여 시계를 조절할 수 있다
    2. 안드로이드 특성상 핸드폰이 다양하기 때문에 다양한 크기의 레이아웃을 실시간으로 테스트 가능

Tester Block Diagram

image.png

가능한 모든 외부 인터페이스에 Tester Interface를 달아 반응하게 구현한다. 이를 위해 DI Library를 통해 모두 자동으로 주입하는 시스템을 설계한다.

Class diagram

image.png

사진과 같이 Test는 Module로 설계하여 테스트가 필요한 모든 곳에 의존성을 주입할 예정이다. application 단에 생성해서 추후에 필요 시 곧 바로 주입할 수도 있다. App이 켜지는 동시에 테스트를 진행할 수 있어야 하며, App이 꺼지는 과정까지 모든 항목에 대해 간섭할 수 있어야 한다.

다음으로 Timer와 Repo는 ViewModel과 같이 생성된다. ViewModel에서 생성되는 이유는 이 둘의 로직이 App 단 까지 필요할 경우가 없고, 모두 View System과 밀접하게 관련되었기 때문이다. 각각 activity의 lifecycle과 context를 받아 구현될 것이다.

구현 계획

모든 기능 구현의 시작을 Tester에서 시작하며 진행하여 확정적으로 정해진 계획은 없다. 다만 Hilt 적용과 ADB Test Iterface, timer, repo는 모두 개발 시작하면서 구성하고 갈 예정이다.