Этот проект содержит комплексный набор автотестов для приложения Shafin Multitool, покрывающий основные функциональные области приложения.
Тесты парсинга сценария (reformatScript) - Критичная логика
- ✅ Парсинг простого диалога
- ✅ Парсинг многострочного сценария
- ✅ Парсинг с несколькими репликами одного персонажа
- ✅ Обработка пустого сценария
- ✅ Обработка некорректного формата
- ✅ Извлечение имен персонажей
- ✅ Извлечение фраз с правильной пунктуацией
- ✅ Парсинг сценария с пробелами и переносами строк
- ✅ Парсинг длинного диалога
- ✅ Парсинг сценария с запятыми в именах
- ✅ Парсинг сценария только с именем без фразы
- ✅ Парсинг сценария с несколькими предложениями в одной реплике
Тесты сохранения/загрузки сцен - Целостность данных
- ✅ Сохранение AR World Map с корректными данными
- ✅ Загрузка существующей карты
- ✅ Загрузка несуществующей карты
- ✅ Сохранение SceneData вместе с картой
- ✅ Получение списка всех названий сцен
- ✅ Удаление существующей сцены
- ✅ Удаление несуществующей сцены
- ✅ Создание директории для сцен
- ✅ Сохранение сцены без актеров
- ✅ Сохранение сцены без сценария
- ✅ Сохранение актеров с якорями
- ✅ Целостность данных при множественных сохранениях
Тесты конвертации разрешений и настроек - Часто используемая логика
- ✅ Преобразование UIColor в CGFloat компоненты
- ✅ Обработка некорректных цветов
- ✅ Конвертация разрешения HD (1280x720)
- ✅ Конвертация разрешения Full HD (1920x1080)
- ✅ Конвертация разрешения 4K UHD (3840x2160)
- ✅ Конвертация всех разрешений
- ✅ Преобразование simd_float4x4 в массив Float
- ✅ Преобразование массива Float обратно в simd_float4x4
- ✅ Обработка некорректного размера массива
- ✅ Обратное преобразование (массив -> матрица -> массив)
- ✅ Конвертация различных цветов
- ✅ Конвертация разрешений в цикле
Тесты управления настройками камеры
- ✅ Переключение разрешения (HD → FHD → UHD → HD)
- ✅ Переключение FPS (24 → 25 → 30 → 24)
- ✅ Переключение скорости (0.5 → 0.7 → 1.0 → 1.5 → 0.5)
- ✅ Изменение ISO через picker view
- ✅ Изменение баланса белого через picker view
- ✅ Сохранение настроек в UserDefaults
- ✅ Получение значений настроек из UserDefaults
- ✅ Получение заголовков для строк picker view
- ✅ Получение выбранной строки для текущих настроек
- ✅ Установка дефолтных значений при первом запуске
- ✅ Множественные изменения настроек
- ✅ Сохранение настроек между сессиями
Тесты управления актерами
- ✅ Получение актера по его якорю
- ✅ Установка случайного цвета актеру
- ✅ Создание актера с дефолтным именем
- ✅ Сохранение актера с якорем
- ✅ Добавление нескольких якорей к актеру
- ✅ Изменение имени актера
- ✅ Удаление актера
- ✅ Конвертация цвета актера в компоненты
- ✅ Сериализация и десериализация актера
- ✅ Создание актера с уникальным ID
- ✅ Поиск актера по имени
- ✅ Обновление цвета актера
Тесты работы с UserDefaults
- ✅ Сохранение настроек камеры
- ✅ Загрузка настроек при следующем запуске
- ✅ Установка дефолтных значений при первом запуске
- ✅ Обновление существующих настроек
- ✅ Сохранение различных значений разрешения
- ✅ Сохранение различных значений FPS
- ✅ Сохранение различных значений ISO
- ✅ Сохранение различных значений баланса белого
- ✅ Сохранение различных значений скорости
- ✅ Сохранение всех настроек одновременно
- ✅ Проверка целостности данных после множественных изменений
- ✅ Очистка настроек
UI-тесты основного флоу
- ✅ Открытие приложения и отображение списка сцен
- ✅ Создание новой сцены
- ✅ Открытие существующей сцены
- ✅ Удаление сцены
- ✅ Отображение AR-вида
- ✅ Нажатие на кнопку добавления актера
- ✅ Отображение кнопок управления
- ✅ Нажатие на кнопку записи
- ✅ Остановка записи
- ✅ Открытие picker view для ISO
- ✅ Выбор значения ISO
- ✅ Переключение разрешения
- ✅ Переключение FPS
- ✅ Открытие экрана редактирования сценария
- ✅ Ввод текста в текстовое поле сценария
- ✅ Сохранение изменений сценария
- ✅ Возврат на экран списка сцен
Тесты производительности
- ✅ Парсинг больших сценариев
- ✅ Парсинг сценария на 1000+ строк (время выполнения < 1 секунды)
- ✅ Парсинг очень больших сценариев
- ✅ Сохранение больших AR-карт
- ✅ Сохранение карты с множеством якорей (время сохранения < 5 секунд)
- ✅ Загрузка больших AR-карт
- ✅ Конвертация множества цветов
- ✅ Конвертация множества разрешений
- ✅ Сериализация и десериализация больших данных
- ✅ Получение списка всех сцен (производительность)
- ✅ Множественные изменения настроек
- ✅ Поиск актера в большом списке
- ✅ Обработка кадров в реальном времени (симуляция)
- ✅ Конвертация матриц в цикле
- ✅ Отсутствие утечек памяти при длительной записи (симуляция)
- Откройте проект
shafinMultitool.xcworkspace - Выберите схему
shafinMultitoolTests - Нажмите
Cmd + Uдля запуска всех тестов - Или используйте меню
Product > Test
xcodebuild test -workspace shafinMultitool.xcworkspace -scheme shafinMultitool -destination 'platform=iOS Simulator,name=iPhone 15'Для полноценной работы UI-тестов необходимо добавить accessibility identifiers к элементам интерфейса:
// Примеры:
recordButton.accessibilityIdentifier = "recordButton"
stopButton.accessibilityIdentifier = "stopButton"
addActorButton.accessibilityIdentifier = "addActorButton"
changeISOButton.accessibilityIdentifier = "changeISOButton"
changeFPSButton.accessibilityIdentifier = "changeFPSButton"
changeResolutionButton.accessibilityIdentifier = "changeResolutionButton"
changeScriptButton.accessibilityIdentifier = "changeScriptButton"
backButton.accessibilityIdentifier = "backButton"
stopwatchLabel.accessibilityIdentifier = "stopwatchLabel"- Unit тесты: ~150+ тестовых случаев
- UI тесты: ~17 тестовых случаев
- Performance тесты: ~15 тестовых случаев
- Некоторые тесты требуют реального устройства или симулятора с поддержкой ARKit
- UI-тесты требуют добавления accessibility identifiers
- Тесты производительности могут занимать больше времени
- Некоторые тесты создают временные файлы, которые автоматически очищаются в
tearDown
Рекомендуется добавить:
- Интеграционные тесты для взаимодействия между модулями
- Тесты для обработки ошибок и edge cases
- Тесты для SpeechRecognitionService
- Тесты для CameraService с моками
- Расширенные UI-тесты с реальными сценариями использования