== Наборы тестов и покрытие требований

Наборы тестов сформированы по функциональным требованиям к 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], [Да], [Отображение без падений],
) <tbl-testplan-export>

=== Трассировка требований → тесты

#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], [Очередь и экран задач],
) <tbl-trace-export>

=== Реестр модульных 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],
) <tbl-androidtest-export>
