|
| 1 | +# План улучшения покрытия тестами до 71% |
| 2 | + |
| 3 | +**Текущее покрытие:** 65.9% |
| 4 | +**Целевое покрытие:** 71% |
| 5 | +**Необходимо добавить:** ~5.1% |
| 6 | + |
| 7 | +## Агент 1: HTTP API Handlers (Script Handlers & Router) |
| 8 | + |
| 9 | +### Цель: Улучшить покрытие HTTP API handlers с фокусом на script handlers и router |
| 10 | + |
| 11 | +### Файлы для работы: |
| 12 | +- `internal/infrastructure/httpapi/script_handlers.go` |
| 13 | + - `ExportScriptAsZip` (65.4%) - добавить тесты для ошибок создания ZIP файлов |
| 14 | + - `DownloadProject` (70.6%) - добавить тесты для edge cases |
| 15 | + - `DeleteScript` (75.0%) - добавить тесты для ошибок удаления |
| 16 | + |
| 17 | +- `internal/infrastructure/httpapi/router.go` |
| 18 | + - `buildBaseMux` (61.8%) - добавить тесты для различных маршрутов и middleware |
| 19 | + |
| 20 | +### Задачи: |
| 21 | +1. Добавить тесты для `ExportScriptAsZip`: |
| 22 | + - Тест с пустым скриптом (без sourceCode и dependencies) |
| 23 | + - Тест с большим количеством зависимостей |
| 24 | + - Тест с различными типами языков |
| 25 | + |
| 26 | +2. Добавить тесты для `DownloadProject`: |
| 27 | + - Тест со скриптом без sourceCode |
| 28 | + - Тест со скриптом без dependencies |
| 29 | + - Тест с большим количеством файлов |
| 30 | + |
| 31 | +3. Добавить тесты для `buildBaseMux`: |
| 32 | + - Тест регистрации всех маршрутов |
| 33 | + - Тест middleware цепочки |
| 34 | + - Тест обработки ошибок маршрутизации |
| 35 | + |
| 36 | +### Ожидаемый прирост покрытия: ~1.2-1.5% |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +## Агент 2: Scripting Infrastructure (Compilers & Downloaders) |
| 41 | + |
| 42 | +### Цель: Улучшить покрытие компиляторов и загрузчиков скриптов |
| 43 | + |
| 44 | +### Файлы для работы: |
| 45 | +- `internal/features/scripting/infrastructure/compilers/rust.go` |
| 46 | + - `Compile` (53.5%) - добавить тесты для различных сценариев компиляции |
| 47 | + - `OptimizeWASM` (28.6%) - добавить тесты для оптимизации WASM |
| 48 | + |
| 49 | +- `internal/features/scripting/infrastructure/compilers/swift.go` |
| 50 | + - `Compile` (52.3%) - добавить тесты для компиляции Swift |
| 51 | + - `ValidateSyntax` (14.3%) - добавить тесты для валидации синтаксиса |
| 52 | + |
| 53 | +- `internal/features/scripting/infrastructure/compilers/kotlin.go` |
| 54 | + - `Compile` (61.8%) - добавить тесты для компиляции Kotlin |
| 55 | + - `ValidateSyntax` (22.6%) - добавить тесты для валидации синтаксиса |
| 56 | + |
| 57 | +- `internal/features/scripting/infrastructure/compilers/zig.go` |
| 58 | + - `Compile` (58.6%) - добавить тесты для компиляции Zig |
| 59 | + - `ValidateSyntax` (16.7%) - добавить тесты для валидации синтаксиса |
| 60 | + |
| 61 | +- `internal/features/scripting/infrastructure/downloaders/base.go` |
| 62 | + - `attemptDownload` (71.2%) - добавить тесты для retry логики |
| 63 | + - `ExtractTarXz` (73.5%) - добавить тесты для извлечения архивов |
| 64 | + - `ExtractTarGz` (74.3%) - добавить тесты для извлечения архивов |
| 65 | + - `ExtractZip` (71.4%) - добавить тесты для извлечения ZIP |
| 66 | + |
| 67 | +### Задачи: |
| 68 | +1. Добавить тесты для компиляторов: |
| 69 | + - Тесты успешной компиляции с различными входными данными |
| 70 | + - Тесты обработки ошибок компиляции |
| 71 | + - Тесты валидации синтаксиса с невалидным кодом |
| 72 | + - Тесты для `OptimizeWASM` с различными входными WASM файлами |
| 73 | + |
| 74 | +2. Добавить тесты для downloaders: |
| 75 | + - Тесты retry логики при ошибках загрузки |
| 76 | + - Тесты извлечения различных типов архивов |
| 77 | + - Тесты обработки поврежденных архивов |
| 78 | + - Тесты обработки сетевых ошибок |
| 79 | + |
| 80 | +### Ожидаемый прирост покрытия: ~1.3-1.6% |
| 81 | + |
| 82 | +--- |
| 83 | + |
| 84 | +## Агент 3: HTTP Proxy & Forward Proxy Handlers |
| 85 | + |
| 86 | +### Цель: Улучшить покрытие proxy handlers и forward proxy функциональности |
| 87 | + |
| 88 | +### Файлы для работы: |
| 89 | +- `internal/infrastructure/httpapi/httpproxy.go` |
| 90 | + - `handleHTTPProxy` (58.2%) - добавить тесты для различных сценариев проксирования |
| 91 | + - `spoolBody` (75.0%) - добавить тесты для edge cases |
| 92 | + |
| 93 | +- `internal/infrastructure/httpapi/forwardproxy.go` |
| 94 | + - `handleForwardProxy` (62.5%) - добавить тесты для forward proxy |
| 95 | + - `handleHTTPForwardRequest` (45.4%) - добавить тесты для HTTP forward requests |
| 96 | + - `handleHTTPForwardWebSocket` (15.4%) - добавить тесты для WebSocket forwarding |
| 97 | + - `handleConnectTunnel` (43.3%) - добавить тесты для CONNECT туннелирования |
| 98 | + - `handleConnectMITM` (2.9%) - добавить тесты для MITM CONNECT |
| 99 | + |
| 100 | +- `internal/infrastructure/httpapi/intercept_codec.go` |
| 101 | + - `encodeForIntercept` (66.7%) - добавить тесты для кодирования данных |
| 102 | + |
| 103 | +### Задачи: |
| 104 | +1. Добавить тесты для `handleHTTPProxy`: |
| 105 | + - Тесты проксирования различных HTTP методов |
| 106 | + - Тесты обработки заголовков |
| 107 | + - Тесты обработки тела запроса/ответа |
| 108 | + - Тесты обработки ошибок upstream сервера |
| 109 | + |
| 110 | +2. Добавить тесты для forward proxy: |
| 111 | + - Тесты forward proxy для HTTP запросов |
| 112 | + - Тесты WebSocket forwarding |
| 113 | + - Тесты CONNECT туннелирования |
| 114 | + - Тесты MITM CONNECT (если возможно без реального сертификата) |
| 115 | + |
| 116 | +3. Добавить тесты для intercept codec: |
| 117 | + - Тесты кодирования различных типов данных |
| 118 | + - Тесты обработки больших тел запросов/ответов |
| 119 | + |
| 120 | +### Ожидаемый прирост покрытия: ~1.2-1.5% |
| 121 | + |
| 122 | +--- |
| 123 | + |
| 124 | +## Агент 4: Process Detection & Scripting Executors |
| 125 | + |
| 126 | +### Цель: Улучшить покрытие детекции процессов и executors для скриптов |
| 127 | + |
| 128 | +### Файлы для работы: |
| 129 | +- `internal/features/process/infrastructure/detector/detector_darwin.go` |
| 130 | + - `DetectByPort` (50.0%) - добавить тесты для детекции процессов (если возможно без реальных процессов) |
| 131 | + |
| 132 | +- `internal/features/scripting/infrastructure/dart/executor.go` |
| 133 | + - `NewDartExecutor` (62.5%) - добавить тесты для создания executor |
| 134 | + - `Execute` (13.8%) - добавить тесты для выполнения Dart скриптов |
| 135 | + - `Close` (60.0%) - добавить тесты для закрытия executor |
| 136 | + |
| 137 | +- `internal/features/scripting/infrastructure/extism/executor.go` |
| 138 | + - `Execute` (58.1%) - добавить тесты для выполнения Extism скриптов |
| 139 | + |
| 140 | +- `internal/features/scripting/infrastructure/cache/filesystem_cache.go` |
| 141 | + - `ClearAll` (69.2%) - добавить тесты для очистки кэша |
| 142 | + - `GetCacheSize` (68.8%) - добавить тесты для получения размера кэша |
| 143 | + |
| 144 | +- `internal/features/proxy/infrastructure/persistence/repo.go` |
| 145 | + - `Load` (73.3%) - добавить тесты для загрузки proxy конфигурации |
| 146 | + |
| 147 | +### Задачи: |
| 148 | +1. Добавить тесты для process detector (если возможно): |
| 149 | + - Тесты детекции процессов по порту (mock реализация) |
| 150 | + - Тесты обработки ошибок детекции |
| 151 | + |
| 152 | +2. Добавить тесты для executors: |
| 153 | + - Тесты создания Dart executor с различными конфигурациями |
| 154 | + - Тесты выполнения Dart скриптов с различными входными данными |
| 155 | + - Тесты закрытия executor и очистки ресурсов |
| 156 | + - Тесты выполнения Extism скриптов |
| 157 | + |
| 158 | +3. Добавить тесты для cache: |
| 159 | + - Тесты очистки кэша с различными состояниями |
| 160 | + - Тесты получения размера кэша с различными данными |
| 161 | + |
| 162 | +4. Добавить тесты для proxy persistence: |
| 163 | + - Тесты загрузки конфигурации proxy |
| 164 | + - Тесты обработки ошибок загрузки |
| 165 | + |
| 166 | +### Ожидаемый прирост покрытия: ~1.1-1.4% |
| 167 | + |
| 168 | +--- |
| 169 | + |
| 170 | +## Общие рекомендации для всех агентов: |
| 171 | + |
| 172 | +1. **Следовать принципам SOLID** - создавать качественные тесты, которые реально тестируют функциональность |
| 173 | +2. **Избегать платформо-зависимых тестов** - пропускать тесты, которые могут не работать на всех платформах |
| 174 | +3. **Использовать моки** - создавать mock реализации для зависимостей |
| 175 | +4. **Тестировать error paths** - покрывать не только happy path, но и обработку ошибок |
| 176 | +5. **Запускать тесты** - после добавления тестов запускать `go test` и проверять покрытие |
| 177 | +6. **Форматировать код** - всегда запускать `go fmt ./...` после изменений |
| 178 | + |
| 179 | +## Команды для проверки прогресса: |
| 180 | + |
| 181 | +```bash |
| 182 | +# Запустить тесты и получить покрытие |
| 183 | +go test -short -covermode=atomic -coverprofile=coverage.out $(go list ./... | grep -v /internal/integration | grep -v /internal/e2e) |
| 184 | + |
| 185 | +# Проверить общее покрытие |
| 186 | +go tool cover -func=coverage.out | grep "total:" | awk '{print $3}' |
| 187 | + |
| 188 | +# Проверить покрытие конкретного файла |
| 189 | +go tool cover -func=coverage.out | grep "script_handlers.go" |
| 190 | + |
| 191 | +# Форматировать код |
| 192 | +go fmt ./... |
| 193 | +``` |
| 194 | + |
| 195 | +## Приоритеты: |
| 196 | + |
| 197 | +1. **Высокий приоритет:** HTTP API handlers (Агент 1) - наибольший потенциал для улучшения |
| 198 | +2. **Высокий приоритет:** Scripting Infrastructure (Агент 2) - много файлов с низким покрытием |
| 199 | +3. **Средний приоритет:** Proxy Handlers (Агент 3) - сложные интеграционные тесты |
| 200 | +4. **Низкий приоритет:** Process Detection (Агент 4) - может быть сложно тестировать без реальных процессов |
| 201 | + |
| 202 | +## Критерии завершения: |
| 203 | + |
| 204 | +- Общее покрытие достигло 71% или выше |
| 205 | +- Все добавленные тесты проходят успешно |
| 206 | +- Код отформатирован (`go fmt`) |
| 207 | +- Нет новых linter ошибок |
0 commit comments