Add standalone manual acceptance checklist.
Create dedicated cross-platform manual test checklist and link it from docs and technical specification. Made-with: Cursor
This commit is contained in:
@@ -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=<id1>&to=<id2>`
|
||||||
|
- [ ] Проверить, что поля `new_hosts/missing_hosts/new_links/missing_links` заполнены корректно
|
||||||
|
- [ ] В UI выбрать `from/to` и нажать `Сравнить`
|
||||||
|
- [ ] Убедиться, что JSON diff показывается в блоке на странице
|
||||||
|
|
||||||
|
## 5) Проверка визуализации topology в UI
|
||||||
|
|
||||||
|
- [ ] Кнопка `Загрузить` рисует граф
|
||||||
|
- [ ] Кнопка `Последний scan` подставляет свежий scan
|
||||||
|
- [ ] Выпадающие списки scan работают и подставляют id в поля
|
||||||
|
- [ ] Легенда отображается корректно
|
||||||
|
- [ ] Фильтр узлов:
|
||||||
|
- [ ] `все`
|
||||||
|
- [ ] `только новые`
|
||||||
|
- [ ] `только пропавшие`
|
||||||
|
|
||||||
|
## 6) Проверка экспорта
|
||||||
|
|
||||||
|
- [ ] `Экспорт topology JSON` сохраняет файл `topology_<scan_id>.json`
|
||||||
|
- [ ] `Экспорт diff JSON` сохраняет файл `diff_<from>_to_<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 будет частичной.
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
- Валидация CIDR и exclude IP.
|
- Валидация CIDR и exclude IP.
|
||||||
- Два backend-хранилища: in-memory и PostgreSQL.
|
- Два backend-хранилища: in-memory и PostgreSQL.
|
||||||
- После создания scan запускается фоновый discovery с обновлением статуса и прогресса.
|
- После создания scan запускается фоновый discovery с обновлением статуса и прогресса.
|
||||||
|
- Отдельный чек-лист ручной приемки: `MANUAL_TEST_CHECKLIST.md`.
|
||||||
|
|
||||||
## Требования
|
## Требования
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@
|
|||||||
- [x] UI содержит легенду и фильтр отображения узлов по diff.
|
- [x] UI содержит легенду и фильтр отображения узлов по diff.
|
||||||
- [x] UI поддерживает экспорт topology/diff в JSON.
|
- [x] UI поддерживает экспорт topology/diff в JSON.
|
||||||
- [x] UI позволяет создать scan по CIDR и дождаться его завершения.
|
- [x] UI позволяет создать scan по CIDR и дождаться его завершения.
|
||||||
|
- [x] Подготовлен отдельный ручной чек-лист приемки (`MANUAL_TEST_CHECKLIST.md`).
|
||||||
|
|
||||||
## Минимальные API
|
## Минимальные API
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user