QA Case Study · V1.0.1

My Health Log

Flutter 기반 개인 건강 기록 앱을 직접 기획하고 구현한 뒤, 요구사항 기반 QA부터 Regression, Android Release까지 검증한 개인 QA 프로젝트입니다.

Projects로 돌아가기
My Health Log 홈 대시보드

Project Overview

Project TypePersonal QA Project
PlatformAndroid / Flutter
DataSQLite Local DB v3
Version1.0.1+2
ScopePlanning / Implementation / QA / Regression / Release

Problem

체중, 혈압, 수분, 운동, 수면, 컨디션, 복약, 검사 결과를 날짜 기준으로 기록하고 비교하기 어렵다는 문제를 V1 범위로 정의했습니다.

App Structure

Home오늘 건강 요약, 오늘 복약 상태
Health체중, 혈압, 수분, 운동, 수면, 컨디션 CRUD
Medication약 등록/수정, 복용 시간, Soft Delete, 복약 Toggle
Lab검사 결과 CRUD, 날짜별 Group / Detail
Statistics체중, 혈압, 검사 수치 변화와 실제 기록값

Main Features

  • HealthRecord는 날짜별 1개 Record 정책과 Local Persistence를 검증했습니다.
  • Medication 삭제 후 과거 MedicationLog 보존을 위해 Soft Delete로 처리했습니다.
  • MedicationLog는 날짜와 timeSlot 기준으로 복용 완료와 취소 상태를 분리했습니다.
  • LabResult는 날짜별 그룹과 상세 화면, 동일 date + testName 중복 방지를 검증했습니다.
  • Statistics는 별도 통계 테이블 없이 저장된 HealthRecord / LabResult를 조회해 표시했습니다.

Data Model

HealthRecord날짜별 건강 수치와 상태 기록
Medication복용약, 복용 시간, 활성 상태
MedicationLogMedication 1:N 관계의 날짜별 복용 여부
LabResult검사 날짜, 항목, 결과값, 단위

QA 관점에서는 어떤 데이터가 어떤 화면과 상태에 영향을 주는지 기준을 세우고 CRUD와 데이터 일관성을 검증하는 데 초점을 맞췄습니다.

QA Strategy

TC62
PASS62
Automated Test64 PASS
Regression62 PASS
V1.0.1Patch Release PASS
  • Requirement-based Testing
  • CRUD / Validation / Empty State
  • Persistence / DB Migration / Cross Feature
  • Regression / Release APK Smoke Test

Test Case Samples

TC IDAreaScenarioResult
TC-HLTH-007Health동일 날짜 HealthRecord 중복 방지PASS
TC-MED-006MedicationSoft Delete 후 현재 목록 미노출PASS
TC-MLOG-004MedicationLog동일 medicationId/date/timeSlot 중복 방지PASS
TC-LAB-004Lab동일 date + testName 중복 방지PASS
TC-STAT-003StatisticsHealth 수정/삭제 후 체중 통계 갱신PASS
TC-STAT-007StatisticsLab unit 없음/불일치 처리PASS
TC-DB-003Persistence앱 재실행 후 데이터 유지PASS
TC-NAV-002NavigationAdd/Edit 화면 Bottom Navigation 미표시PASS

DB Migration / Data Integrity

DB v1health_records
DB v2medications, medication_logs 추가
DB v3lab_results 추가

기존 DB를 삭제하거나 초기화하지 않고 onUpgrade Migration으로 확장했으며, HealthRecord 유지, Medication 추가 후 기존 데이터 보존, Lab 추가 후 Health/Medication 보존, 앱 재실행 후 Persistence를 검증했습니다.

Visual QA & BUG-001

V1.0.0 ReleaseRelease PASS
Portfolio Visual QABottom Navigation label 불일치 발견
BUG-001Severity Minor / Priority Medium
Fix & RetestV1.0.1에서 Retest PASS
Patch ReleaseRegression PASS / V1.0.1 Patch Release PASS
ActualHome / Health / Medication / Lab / Statistics
Expected홈 / 건강 / 복약 / 검사 / 통계

STEP 15 당시 테스트 범위에서는 발견 결함이 없었고, BUG-001은 Release 이후 Portfolio Visual QA에서 추가로 발견해 수정 완료한 결함입니다.

Regression / Release

  • V1.0.0 Release PASS
  • Portfolio Visual QA에서 BUG-001 발견
  • V1.0.1 BUG-001 Retest PASS
  • V1.0.1 Regression PASS
  • V1.0.1 Patch Release PASS

APK는 Internal Portfolio Release로 관리하며, 이 페이지에서는 다운로드 링크를 제공하지 않습니다.

Screenshots

Health 기록 목록
Health List
Health 수정 화면
Health Add/Edit
Medication 오늘의 복약 화면
Medication Today
Lab 검사 결과 목록
Lab Result List
혈압 통계 화면
Statistics Blood Pressure
검사 통계 화면
Statistics Lab

What I Learned

  • 요구사항과 실제 구현 결과의 일치 여부를 끝까지 확인하는 것이 QA에서 중요하다는 점을 확인했습니다.
  • 화면 표시뿐 아니라 DB 상태와 데이터 관계를 함께 검증해야 CRUD 안정성을 명확히 볼 수 있었습니다.
  • 기능 추가 시 기존 데이터 Migration과 Regression 범위를 함께 고려해야 함을 경험했습니다.
  • Release 이후에도 다른 관점의 Visual QA에서 결함이 발견될 수 있음을 확인했습니다.
  • 기획부터 Release까지 직접 진행하며 기능 간 영향 관계를 더 구체적으로 이해했습니다.