9.3 KiB
9.3 KiB
🧪 Примеры тестирования OpenAI интеграции
Тестирование через веб-интерфейс
1. Basic Test - Квартальное резюме
- Откройте http://localhost:5000
- Выберите вкладку "AI Summary (OpenAI)"
- Оставьте Путь по умолчанию:
. - Выберите Период: "Текущий квартал"
- Нажмите "Получить AI Summary"
- Ожидайте 5-10 секунд
- Появится резюме от GPT
2. Custom Period Test
- Выберите вкладку "AI Summary (OpenAI)"
- Выберите Период: "Произвольный период"
- Укажите:
- Начальная дата:
2024-01-01 - Конечная дата:
2024-01-31
- Начальная дата:
- Нажмите "Получить AI Summary"
3. Different Repository Test
- Выберите вкладку "AI Summary (OpenAI)"
- Укажите Путь:
C:\Path\To\Your\Repo(или/home/user/project) - Выберите Период: "Текущий квартал"
- Нажмите "Получить AI Summary"
Тестирование через curl/PowerShell
Setup для всех примеров
# Определите базовый URL
$API = "http://localhost:5000"
$ContentType = "application/json"
Test 1: Базовый запрос - текущий квартал
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"period": "quarter"
}'
PowerShell:
$body = @{ period = "quarter" } | ConvertTo-Json
Invoke-RestMethod -Uri "$API/api/summary/ai" `
-Method Post `
-Body $body `
-ContentType $ContentType
Test 2: Полугодовое резюме
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"period": "halfyear"
}'
Test 3: Пользовательский период
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"startDate": "2024-01-01",
"endDate": "2024-01-31"
}'
Test 4: Конкретный репозиторий
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": "C:/Projects/MyProject",
"period": "quarter"
}'
PowerShell:
$body = @{
repositoryPath = "C:/Projects/MyProject"
period = "quarter"
} | ConvertTo-Json
Invoke-RestMethod -Uri "$API/api/summary/ai" `
-Method Post `
-Body $body `
-ContentType $ContentType
Test 5: Все параметры
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": ".",
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}'
Сравнение Traditional vs AI Summary
Test: Запросить оба типа саммари
$traditional = Invoke-RestMethod -Uri "$API/api/summary" `
-Method Post `
-Body (@{ period = "quarter" } | ConvertTo-Json) `
-ContentType "application/json"
$ai = Invoke-RestMethod -Uri "$API/api/summary/ai" `
-Method Post `
-Body (@{ period = "quarter" } | ConvertTo-Json) `
-ContentType "application/json"
# Вывести results
Write-Host "=== TRADITIONAL SUMMARY ===" -ForegroundColor Yellow
Write-Host $traditional.stats | Format-Table
Write-Host "`n=== AI SUMMARY ===" -ForegroundColor Green
Write-Host $ai.summary
Write-Host "`nОба запроса успешно выполнены!"
Тестирование обработки ошибок
Test 1: Неверный путь репозитория
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": "C:/NonExistent/Path",
"period": "quarter"
}'
Ожидается: 400 Bad Request с сообщением об ошибке
Test 2: Пустой репозиторий (без коммитов)
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": ".",
"startDate": "2024-12-31",
"endDate": "2024-12-31"
}'
Ожидается: 200 OK с сообщением "Нет коммитов для анализа"
Test 3: Невалидный API ключ
- Измените ключ в
appsettings.jsonнаsk-invalid-key - Перезагрузите приложение
- Отправьте запрос
Ожидается: 500 Internal Server Error с информацией об ошибке OpenAI
Тестирование производительности
Test: Большой репозиторий (множество коммитов)
# Измерим время обработки
$sw = [System.Diagnostics.Stopwatch]::StartNew()
$result = Invoke-RestMethod -Uri "$API/api/summary/ai" `
-Method Post `
-Body (@{
period = "halfyear"
} | ConvertTo-Json) `
-ContentType "application/json"
$sw.Stop()
Write-Host "Время обработки: $($sw.ElapsedMilliseconds) мс"
Write-Host "Количество коммитов: $($result.commitsCount)"
Write-Host "Длина резюме: $($result.summary.Length) символов"
Test: Множественные параллельные запросы
# Создать 5 параллельных запросов
1..5 | ForEach-Object -Parallel {
Invoke-RestMethod -Uri "http://localhost:5000/api/summary/ai" `
-Method Post `
-Body (@{ period = "quarter" } | ConvertTo-Json) `
-ContentType "application/json" | Out-Null
Write-Host "Запрос $_ завершён"
} -ThrottleLimit 5
Проверка здоровья API
Health Check
curl http://localhost:5000/health
Ожидаемый ответ:
{
"status": "healthy",
"timestamp": "2024-01-21T10:30:00.000Z"
}
Проверка документации
Swagger UI
- Откройте http://localhost:5000/swagger
- Найдите endpoint
POST /api/summary/ai - Нажмите "Try it out"
- Заполните параметры
- Нажмите "Execute"
Валидация результата
Проверка структуры ответа
$response = Invoke-RestMethod -Uri "http://localhost:5000/api/summary/ai" `
-Method Post `
-Body (@{ period = "quarter" } | ConvertTo-Json) `
-ContentType "application/json"
# Проверить наличие обязательных полей
$hasRequiredFields = @(
$response.PSObject.Properties.Name -contains "summary",
$response.PSObject.Properties.Name -contains "periodInfo",
$response.PSObject.Properties.Name -contains "commitsCount",
$response.PSObject.Properties.Name -contains "commitMessages"
) | Where-Object { $_ -eq $true }
if ($hasRequiredFields.Count -eq 4) {
Write-Host "✅ Структура ответа корректна"
} else {
Write-Host "❌ Недостающие поля в ответе"
}
# Проверить что саммари не пуст
if ($response.summary.Length -gt 0) {
Write-Host "✅ Саммари содержит текст"
} else {
Write-Host "❌ Саммари пуст"
}
Loggging и отладка
Включить детальное логирование
Отредактируйте appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft.AspNetCore": "Debug",
"PerfReviewSummarizer.Api.Services": "Debug"
}
}
}
Просмотр логов в реальном времени
При запуске приложения будут видны все детали обработки запросов.
Чек-лист для полного тестирования
- Веб-интерфейс загружается корректно
- Вкладки переключаются правильно
- Traditional Summary работает
- AI Summary работает с текущим квартелом
- AI Summary работает с полугодием
- AI Summary работает с пользовательским периодом
- Обработка ошибок работает правильно
- Health check endpoint отвечает
- Swagger UI доступен и работает
- API ключ корректно используется
- Результаты содержат правильную структуру
- Резюме на русском языке
- Резюме содержит полезную информацию
- Производительность приемлемая (<15 секунд)
💡 Полезные команды
Проверить доступность API
curl http://localhost:5000/health -i
Получить список всех коммитов
curl "http://localhost:5000/api/commits?period=quarter"
Сравнить two summaries
# Traditional
curl -X POST http://localhost:5000/api/summary `
-d '{"period":"quarter"}' -H "Content-Type: application/json"
# AI
curl -X POST http://localhost:5000/api/summary/ai `
-d '{"period":"quarter"}' -H "Content-Type: application/json"
Наслаждайтесь тестированием! 🚀