Зафиксировать итог Stage 2 проверки
This commit is contained in:
+50
-25
@@ -1,36 +1,61 @@
|
||||
# QA report
|
||||
# QA report — Stage 2 playability build
|
||||
|
||||
Date: 2026-08-18
|
||||
|
||||
## Result
|
||||
|
||||
The version-4 debug APK passed the final clean build and one integrated Android 16
|
||||
device run. All ten intended level routes completed three consecutive times through
|
||||
the production movement/jump input boundary. No retry masking, teleport, direct
|
||||
physics mutation, auto-complete, or restart shortcut is used.
|
||||
|
||||
## Automated checks
|
||||
|
||||
- Clean Gradle build: `clean testDebugUnitTest lintDebug assembleDebug` — passed.
|
||||
- Unit tests: 8 passed, 0 failed, 0 skipped.
|
||||
- Device acceptance tests: 1 passed, 0 failed, 0 skipped.
|
||||
- Level 5 bot: completed the production level in about 8.2 seconds with exactly one death, one retained corpse, pressure-plate activation, door passage, two jumps, and goal contact.
|
||||
- Android Lint: no issues found.
|
||||
- APK archive integrity: all entries passed `unzip -t`.
|
||||
- Package metadata: `com.projectsacrifice.game.debug`, version code 3, min SDK 23, target SDK 34.
|
||||
- APK signature: v1 and v2 schemes verified; one standard Android Debug signer.
|
||||
- Clean Gradle gate: `clean testDebugUnitTest lintDebug assembleDebug assembleDebugAndroidTest` — passed, 66 tasks.
|
||||
- JVM tests: 15 passed, 0 failed, 0 skipped.
|
||||
- Integrated device gate: `connectedDebugAndroidTest` — 14 passed, 0 failed, 0 skipped.
|
||||
- Device test time: 349.702 seconds; Gradle wall time: 5 minutes 59 seconds.
|
||||
- Gameplay executions: 30 intended routes (levels 1–10 × 3), three level-8 recovery routes, and two delayed-decision stress routes; lifecycle coverage is a separate method.
|
||||
- Android Lint: passed without errors.
|
||||
|
||||
## Device smoke test
|
||||
The five-minute matrix target is not met: the green run exceeds it by 59 seconds.
|
||||
Correctness coverage remains intact; test-duration optimization stays open.
|
||||
|
||||
Environment: official ARM64 Android Emulator, Android 16 / API 36, 2400×1080 landscape.
|
||||
## Playability evidence
|
||||
|
||||
Verified:
|
||||
- Level 1: movement/jump route, 3/3, zero deaths.
|
||||
- Level 2: intended three-corpse bridge, 3/3, exactly three deaths and bodies.
|
||||
- Level 3: saw corpse holds the pressure door, 3/3, exactly one death/body.
|
||||
- Level 4: toggle, moving lift, and upper gallery, 3/3, zero deaths.
|
||||
- Level 5: saw delivery to remote pressure plate, 3/3, exactly one death/body.
|
||||
- Level 6: frozen corpse stepping stone, 3/3, exactly one death/body.
|
||||
- Level 7: conductive corpse relay, 3/3, exactly one death/body.
|
||||
- Level 8: intended timed-platform route 3/3, expired-timer recovery 3/3, and one 96 ms delayed-decision run; all deathless.
|
||||
- Level 9: weight AND power door, 3/3, exactly two deaths/bodies.
|
||||
- Level 10: saw/freeze/electric/lift procession, 3/3, exactly three deaths/bodies, plus one 96 ms delayed final-traversal run.
|
||||
- Activity background/resume: visible pause, held-input clearing, state preservation, and explicit resume passed.
|
||||
|
||||
1. streamed APK installation returns `Success`;
|
||||
2. cold launch returns `Status: ok`;
|
||||
3. `MainActivity` remains visible and `RESUMED`;
|
||||
4. immersive landscape mode is applied;
|
||||
5. level-selection screen renders correctly;
|
||||
6. entering level 1 renders the HUD, character, goal, and mobile controls;
|
||||
7. holding the right control completes level 1;
|
||||
8. completion records best time/deaths and unlocks level 2 (`unlocked=2`);
|
||||
9. reaching spikes in level 2 increments the volunteer counter, keeps the corpse in the level, and respawns a live volunteer without resetting the scene;
|
||||
10. Android crash buffer remains empty after the corrected build and gameplay smoke tests.
|
||||
11. the level 5 acceptance bot reproduces the complete saw/body/plate/door solution on the same Android 16 emulator; its initial red runs exposed an unstable saw impulse, and the final run passed after the body delivery was corrected.
|
||||
## Defects found and fixed by the integrated gate
|
||||
|
||||
## Distribution note
|
||||
1. Level 6 freezer overlapped the player standing on its frozen body by 26 px. The hazard height was narrowed while retaining floor lethality.
|
||||
2. Level 8 trapped the player beyond the pit after the timer expired. A high far-side recovery relay was added; the original timer received a 0.5-second balance margin.
|
||||
3. Level 8 platform boarding failed under delayed decisions. The left launch floor was extended by 70 px while the pit's far edge, platform, timers, and recovery relay stayed unchanged.
|
||||
4. Level 10 relay clearing and lift boarding were phase-sensitive. The bot now proves actual moving-platform support; floor/lift overlap increased from 40 to 100 px while retaining a 200 px pit and mandatory 410 px lift.
|
||||
|
||||
The delivered APK is a debug-signed tester build. It is directly installable, but it is not intended for Play Store publication. A production release should use the publisher's private release keystore and a non-debug application ID.
|
||||
## APK verification
|
||||
|
||||
- File format: valid ZIP/APK; `unzip -t` reports no errors.
|
||||
- Package: `com.projectsacrifice.game.debug`.
|
||||
- Version: code `4`, name `0.3.0-stage2-playability-debug`.
|
||||
- SDK: min 23, target 34, compile 34.
|
||||
- Signature: v1 and v2 verified; one standard Android Debug signer.
|
||||
- SHA-256: `94652cfe7e7eacbb41d7890944f9adf85b989fde89764809e3b8bfab8e64a12d`.
|
||||
- Installation/runtime: the exact APK was installed and exercised by the final Android 16 connected test task.
|
||||
|
||||
## Remaining scope
|
||||
|
||||
- Stage 2 manual comprehension/balance sessions have not yet been completed.
|
||||
- Possible alternative solutions on levels 2 and 10 still need dedicated negative tests.
|
||||
- Screen-lock and process-death/low-memory lifecycle recovery remain open.
|
||||
- The character is still Canvas-drawn prototype art; there is no skeleton/rig or skin pipeline yet.
|
||||
- This is a debug-signed tester APK, not a Play Store release build.
|
||||
|
||||
@@ -16,10 +16,13 @@
|
||||
- intended route всех уровней 1–10 защищён Android acceptance-ботами: каждый маршрут выполняется по три раза через production-ввод без прямого перемещения персонажа;
|
||||
- blocker-softlock уровня 8 после истечения таймера устранён recovery relay и покрыт отдельным трёхкратным сценарием;
|
||||
- исправлено перекрытие `FREEZER` уровня 6, которое повторно убивало игрока на frozen stepping stone;
|
||||
- final integrated Android 16 matrix: 14/14 методов, 35 игровых выполнений и lifecycle-проверка; wall time `5:59`;
|
||||
- финальный debug APK проверен на Android 16: установка, холодный запуск, ZIP-структура и v1/v2-подписи корректны.
|
||||
|
||||
Главный текущий риск: автоматическая проходимость доказана, но ручная понятность и баланс этапа 2 ещё не подтверждены. Отдельно остаются гипотезы об альтернативных решениях уровня 2 и обходе frozen corpse на уровне 10.
|
||||
|
||||
Performance-оговорка: критерий этапа 1 «полный прогон до 5 минут» пока не выполнен — финальный зелёный matrix занимает `5:59`. Сокращать количество трёхкратных прохождений или скрывать нестабильность retries запрещено; требуется отдельная оптимизация тестового runner.
|
||||
|
||||
## 2. Принципы разработки
|
||||
|
||||
1. Сначала acceptance-тест, затем исправление уровня.
|
||||
|
||||
Reference in New Issue
Block a user