== Наборы тестов и покрытие требований Наборы тестов сформированы по функциональным требованиям к Wallenc (ФР-1…ФР-6). Матрица сценариев T-1…T-12 связывает испытания с ожидаемым поведением; реестр unit-тестов фиксирует автоматизированные проверки по модулям Gradle. === Функциональные требования #include "tbl-functional-req.typ" === Матрица тестовых сценариев #import "../common.typ": pz-table #pz-table( [Матрица тестовых сценариев], 5, table.header([ID], [Сценарий], [Тип], [Авто], [Ожидаемый результат]), [T-1], [Проверка ключа шифрования], [Unit], [Да], [`Encryptor.checkKey` true/false], [T-2], [Шифрование/дешифрование строки и байтов], [Unit], [Да], [Симметрия данных], [T-3], [Потоковое шифрование файла], [Unit], [Да], [Данные после decrypt равны исходным], [T-4], [Синхронизация группы хранилищ], [Unit], [Да], [Копирование, удаление, trash, блокировки], [T-5], [2FA TOTP генерация], [Unit], [Да], [Совпадение с эталоном Java OTP], [T-6], [Маппинг ошибок сети/диска], [Unit], [Да], [Типизированные `WallencException`], [T-7], [CRUD storage в LocalVault], [Ручной], [Нет], [Список обновлён], [T-8], [Включение шифрования storage], [Ручной], [Нет], [Статус encrypted], [T-9], [Открытие/закрытие storage], [Ручной], [Нет], [Доступ только с ключом], [T-10], [OAuth Яндекс], [Ручной / IT], [Частично], [Токен в `DbYandexAccount`], [T-11], [Экран задач и уведомления], [Ручной], [Частично], [Прогресс и завершение], [T-12], [Compose: секреты и 2FA], [IT], [Да], [Отображение без падений], ) === Трассировка требований → тесты #pz-table( [Трассировка требований → тесты], 3, table.header([ФР], [Тесты], [Комментарий]), [ФР-1], [T-7, StorageDomainUseCasesTest], [Storage в LocalVault и CRUD секретов], [ФР-2], [EncryptorTest, T-8, T-9], [Покрытие AES], [ФР-3], [TextSecretsScreenContentTest], [UI + domain], [ФР-4], [YandexDiskRepositoryTest, T-10], [HTTP-мок и ручной OAuth], [ФР-5], [StorageSyncEngineTest], [Синхронизация групп], [ФР-6], [TaskOrchestratorTest, T-11], [Очередь и экран задач], ) === Реестр модульных unit-тестов #include "../ch05-tests-generated.typ" === Инструментальные тесты (androidTest) #pz-table( [Инструментальные тесты androidTest], 4, table.header([Модуль], [Класс], [Назначение], [Методов]), [:ui], [TwoFaTokensScreenContentTest], [Compose: экран 2FA токенов], [2], [:ui], [TextSecretsScreenContentTest], [Compose: текстовые секреты], [2], [:infra], [YandexAccountRepositoryTest], [Room in-memory: аккаунт Яндекс], [3], [:app], [YandexDiskLiveIntegrationTest], [Живой API (при наличии токена)], [3], )