6.5 KiB
6.5 KiB
{프로젝트명} — QA 테스트 전략
버전: v1 작성일: {날짜} 담당: 개발팀장 적용 범위: {프로젝트명} 전 테스트 계층
1. 테스트 레이어
1.1 Unit Test — EditMode
BT.Framework 자체 테스트와 동일 패턴 적용.
| 대상 | 예시 | 실행 모드 |
|---|---|---|
ServiceLocator |
Register/Resolve/Clear 동작 | EditMode |
Log |
카테고리 필터링, 로그 레벨 분기 | EditMode |
| DataTable 파싱 | JSON 역직렬화, null/범위 검증 | EditMode |
| 순수 C# 비즈니스 로직 | 대미지 계산 공식, 확률 계산 | EditMode |
// EditMode 테스트 예시
[TestFixture]
public class ServiceLocatorTests
{
[SetUp]
public void SetUp() => ServiceLocator.Clear();
[Test]
public void Register_And_Resolve_ReturnsCorrectService()
{
var mock = new MockSaveProvider();
ServiceLocator.Register<ISaveProvider>(mock);
var resolved = ServiceLocator.Resolve<ISaveProvider>();
Assert.AreEqual(mock, resolved);
}
}
1.2 Unit Test — PlayMode
| 대상 | 예시 | 실행 모드 |
|---|---|---|
MonoSingleton<T> |
Instance 생성, Persistent 동작 | PlayMode |
CoroutineRunner |
Start/Stop, 키 중복 방지 | PlayMode |
| UI View 전환 | UIManager Push/Pop 동작 | PlayMode |
| 씬 로딩 | Bootstrap → Title 씬 전환 | PlayMode |
1.3 Integration Test
| 대상 | 내용 |
|---|---|
| DataTable 전체 로딩 | Bootstrap 씬 진입 → TableChecker.AllLoaded 확인 |
| 서버 연동 E2E | 로그인 → 데이터 로딩 → 저장 → 재로그인 후 복원 |
| 핵심 게임 루프 | {장르} 핵심 액션 1회 플레이 성공 (크래시·콘솔 에러 없음) |
1.4 Data Validation
DataTable의 무결성을 Export 시 + 런타임(개발 빌드) 에서 이중 검증한다.
// 04_데이터_파이프라인 섹션 5 참조
#if DEVELOPMENT_BUILD || UNITY_EDITOR
DataValidator.ValidateAll(); // FK 정합성, null, 범위
#endif
1.5 Manual QA
수동 QA는 5축 체크리스트(섹션 3)에 따라 수행한다. 자동화 범위를 초과하는 UX 검증·디바이스 다양성·성능 체감은 수동 QA 영역이다.
2. 테스트 네이밍
BT.Framework 테스트와 동일한 패턴 적용.
{Method}_{Condition}_{Expected}
| 구성 | 설명 | 예시 |
|---|---|---|
{Method} |
테스트 대상 메서드/동작 | TakeDamage |
{Condition} |
입력 조건 | WithMaxShield |
{Expected} |
기대 결과 | ReducesShieldFirst |
전체 예시:
[Test] public void TakeDamage_WithMaxShield_ReducesShieldFirst() { }
[Test] public void TakeDamage_WhenHpIsZero_TriggersDeathEvent() { }
[Test] public void GetOrNull_WithUnknownId_ReturnsNull() { }
[Test] public void ServiceLocator_Resolve_WhenNotRegistered_ThrowsException() { }
3. QA 체크리스트 프레임 (5축)
각 기능 머지 전 해당 5축 중 적용 항목을 확인한다 (P14 QA 게이트).
3.1 기능(Functional)
- 핵심 게임 루프 정상 동작 ({장르} 핵심 액션)
- DataTable 로딩 완료 후 진행 (TableChecker.AllLoaded)
- UI 전환 정상 동작 (화면맵 경로별)
- 저장/로드 복원 일치
- 서버 인증 정상 처리
- 엣지 케이스: 재화 0, 최대치, 연속 탭 등
3.2 성능(Performance)
- 초기 로딩 체감 (Bootstrap → 첫 플레이 가능 시점)
- 인게임 FPS 안정성 (목표 프레임 유지)
- 메모리 증가 없음 (Profiler 확인)
- GC Alloc 핫패스 없음 (Profiler Deep Profile)
3.3 메모리(Memory)
- 씬 전환 시 메모리 해제 확인 (Addressables Release)
- 장시간 플레이 메모리 누수 없음
- TextAsset 언로드 확인 (DataTable Awake 패턴)
3.4 네트워크(Network)
- 오프라인 상태 진입 처리 (에러 메시지 + 복구 흐름)
- 느린 네트워크(3G 상당) 타임아웃 처리
- 재연결 후 상태 복원
- IAP 영수증 서버 검증 정상 처리 (해당 프로젝트)
3.5 보안(Security)
- 빌드에 하드코딩 키 없음 (
02_기술스택_결정 섹션 3.2) - IAP 클라이언트 단독 결제 처리 경로 없음
- SpeedHack/TimeCheck Detector 동작 확인 (해당 프로젝트)
- 개발용 씬/치트 코드 릴리스 빌드에서 제거 확인
4. 자동화 범위
4.1 Framework 테스트 (기구현)
BT.Framework 패키지에 포함된 테스트. 프로젝트 도입 시 자동으로 사용 가능.
| 영역 | 테스트 유형 | 위치 |
|---|---|---|
MonoSingleton<T> |
PlayMode | BT.Framework.Tests |
ServiceLocator |
EditMode | BT.Framework.Tests |
CoroutineRunner |
PlayMode | BT.Framework.Tests |
EventBus |
EditMode | BT.Framework.Tests |
Log |
EditMode | BT.Framework.Tests |
DataTable 파싱 |
EditMode | BT.Framework.Tests |
4.2 프로젝트 테스트 (프로젝트에서 추가)
| asmdef | 위치 | 내용 |
|---|---|---|
{ProjectNamespace}.Tests |
Assets/Tests/Runtime/ |
PlayMode 통합 테스트 |
{ProjectNamespace}.EditorTests |
Assets/Tests/Editor/ |
EditMode 단위 테스트 |
asmdef 설정 예시:
// {ProjectNamespace}.Tests.asmdef
{
"name": "{ProjectNamespace}.Tests",
"references": [
"BT.Framework.Tests",
"{ProjectNamespace}.Core",
"UnityEngine.TestRunner",
"UnityEditor.TestRunner"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"testPlatforms": ["PlayMode"]
}
4.3 CI 자동화 실행 (해당 시)
Git push → CI 트리거
└── Unity Test Runner (EditMode + PlayMode)
└── 결과 리포트 → 실패 시 머지 차단
5. 버그 관리
| 심각도 | 기준 | 처리 |
|---|---|---|
| P0 Critical | 크래시, 결제 실패, 데이터 손실 | 즉시 수정 (C2 근원 해결) |
| P1 High | 핵심 기능 불가, 보안 이슈 | 현 개발 단계 완료 전 수정 |
| P2 Medium | 기능 이상, 표시 오류 | 다음 개발 단계 전 수정 |
| P3 Low | 미관, 텍스트 오탈자 | 여유 시 수정 |
규칙: P14에 따라 Unity 빌드 에러·콘솔 에러 잔존 상태로 작업 종료 금지. 버그 수정 시 동일 경로의 회귀 검증 포함.
변경 이력
| 버전 | 일자 | 작성자 | 내용 |
|---|---|---|---|
| v1 | {날짜} | 개발팀장 | 템플릿 초안. Framework 테스트 패턴 + 5축 QA 체크리스트 정립 |