diff --git a/MANUAL_TEST_CHECKLIST.md b/MANUAL_TEST_CHECKLIST.md new file mode 100644 index 0000000..1e79edd --- /dev/null +++ b/MANUAL_TEST_CHECKLIST.md @@ -0,0 +1,97 @@ +# Manual Test Checklist + +Этот чек-лист нужен для финальной ручной проверки перед приемкой на Linux и Windows. + +## 0) Подготовка окружения + +- [ ] Установлен Go 1.22+ (`go version`) +- [ ] Установлен PostgreSQL (локально) +- [ ] Созданы БД `nettopo` и пользователь `nettopo` +- [ ] Заполнен `.env` (или экспортированы env-переменные) + +Рекомендуемые env для теста: + +```bash +STORE_BACKEND=postgres +DB_DSN=postgres://nettopo:nettopo@localhost:5432/nettopo?sslmode=disable +RUN_MIGRATIONS=true +SNMP_ENABLED=true +SNMP_COMMUNITY=public +HTTP_ADDR=:8080 +``` + +## 1) Запуск приложения + +- [ ] Выполнить `go run ./cmd/server` +- [ ] Открыть `http://localhost:8080/` +- [ ] Проверить health: `GET /health` возвращает `status=ok` + +## 2) Создание и выполнение scan через UI + +- [ ] В UI ввести CIDR (например, `192.168.1.0/24`) +- [ ] Нажать `Создать scan` +- [ ] Убедиться, что `scan_id` появился в поле +- [ ] Нажать `Ждать завершения` +- [ ] Дождаться terminal state (`done/failed/canceled`) без ошибок UI + +## 3) Проверка API результатов scan + +- [ ] `GET /api/scans/{id}` возвращает статус/прогресс/stats +- [ ] `GET /api/scans/{id}/hosts` возвращает хосты +- [ ] `GET /api/scans/{id}/ports` возвращает портовые проверки +- [ ] `GET /api/scans/{id}/snmp` возвращает SNMP-данные (для доступных устройств) +- [ ] `GET /api/scans/{id}/lldp` возвращает LLDP-соседей (если есть) +- [ ] `GET /api/scans/{id}/links` возвращает базовые связи +- [ ] `GET /api/scans/{id}/topology` возвращает `nodes/edges` + +## 4) Проверка diff между двумя scan + +- [ ] Иметь минимум два scan +- [ ] Выполнить `GET /api/scans/diff?from=&to=` +- [ ] Проверить, что поля `new_hosts/missing_hosts/new_links/missing_links` заполнены корректно +- [ ] В UI выбрать `from/to` и нажать `Сравнить` +- [ ] Убедиться, что JSON diff показывается в блоке на странице + +## 5) Проверка визуализации topology в UI + +- [ ] Кнопка `Загрузить` рисует граф +- [ ] Кнопка `Последний scan` подставляет свежий scan +- [ ] Выпадающие списки scan работают и подставляют id в поля +- [ ] Легенда отображается корректно +- [ ] Фильтр узлов: + - [ ] `все` + - [ ] `только новые` + - [ ] `только пропавшие` + +## 6) Проверка экспорта + +- [ ] `Экспорт topology JSON` сохраняет файл `topology_.json` +- [ ] `Экспорт diff JSON` сохраняет файл `diff__to_.json` +- [ ] Экспорт без предварительной загрузки показывает понятное сообщение + +## 7) Негативные сценарии + +- [ ] Пустой CIDR при создании scan => понятная ошибка +- [ ] Некорректный `scan_id` в API => `404`/сообщение об ошибке +- [ ] Некорректные query-параметры (`limit`, `from/to`) => `400` + +## 8) Кроссплатформенная приемка (обязательно) + +### Linux +- [ ] Запуск `go run ./cmd/server` успешен +- [ ] Все пункты 1-7 пройдены + +### Windows +- [ ] Запуск `go run ./cmd/server` (или `nettopo-server.exe`) успешен +- [ ] Все пункты 1-7 пройдены + +## 9) Результат приемки + +- [ ] Linux: PASS +- [ ] Windows: PASS +- [ ] Общий статус: READY / NOT READY + +## Примечания + +- LLDP/SNMP результаты зависят от реальной сети, ACL и SNMP-доступа устройств. +- Если SNMP отключен или недоступен, topology будет частичной. diff --git a/README.md b/README.md index 7f287d2..2e47050 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ - Валидация CIDR и exclude IP. - Два backend-хранилища: in-memory и PostgreSQL. - После создания scan запускается фоновый discovery с обновлением статуса и прогресса. +- Отдельный чек-лист ручной приемки: `MANUAL_TEST_CHECKLIST.md`. ## Требования diff --git a/TECH_SPEC.md b/TECH_SPEC.md index e60007b..ee57c99 100644 --- a/TECH_SPEC.md +++ b/TECH_SPEC.md @@ -56,6 +56,7 @@ - [x] UI содержит легенду и фильтр отображения узлов по diff. - [x] UI поддерживает экспорт topology/diff в JSON. - [x] UI позволяет создать scan по CIDR и дождаться его завершения. +- [x] Подготовлен отдельный ручной чек-лист приемки (`MANUAL_TEST_CHECKLIST.md`). ## Минимальные API