Files
PerfReviewSummarizer/TESTING_EXAMPLES.md
ZakirovT 057e1f526b init
2026-01-22 00:45:41 +03:00

341 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧪 Примеры тестирования OpenAI интеграции
## Тестирование через веб-интерфейс
### 1. Basic Test - Квартальное резюме
1. Откройте http://localhost:5000
2. Выберите вкладку "AI Summary (OpenAI)"
3. Оставьте Путь по умолчанию: `.`
4. Выберите Период: "Текущий квартал"
5. Нажмите "Получить AI Summary"
6. Ожидайте 5-10 секунд
7. Появится резюме от GPT
### 2. Custom Period Test
1. Выберите вкладку "AI Summary (OpenAI)"
2. Выберите Период: "Произвольный период"
3. Укажите:
- Начальная дата: `2024-01-01`
- Конечная дата: `2024-01-31`
4. Нажмите "Получить AI Summary"
### 3. Different Repository Test
1. Выберите вкладку "AI Summary (OpenAI)"
2. Укажите Путь: `C:\Path\To\Your\Repo` (или `/home/user/project`)
3. Выберите Период: "Текущий квартал"
4. Нажмите "Получить AI Summary"
---
## Тестирование через curl/PowerShell
### Setup для всех примеров
```bash
# Определите базовый URL
$API = "http://localhost:5000"
$ContentType = "application/json"
```
### Test 1: Базовый запрос - текущий квартал
```bash
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"period": "quarter"
}'
```
**PowerShell:**
```powershell
$body = @{ period = "quarter" } | ConvertTo-Json
Invoke-RestMethod -Uri "$API/api/summary/ai" `
-Method Post `
-Body $body `
-ContentType $ContentType
```
### Test 2: Полугодовое резюме
```bash
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"period": "halfyear"
}'
```
### Test 3: Пользовательский период
```bash
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"startDate": "2024-01-01",
"endDate": "2024-01-31"
}'
```
### Test 4: Конкретный репозиторий
```bash
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": "C:/Projects/MyProject",
"period": "quarter"
}'
```
**PowerShell:**
```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: Все параметры
```bash
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: Запросить оба типа саммари
```powershell
$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: Неверный путь репозитория
```bash
curl -X POST $API/api/summary/ai `
-H "Content-Type: $ContentType" `
-d '{
"repositoryPath": "C:/NonExistent/Path",
"period": "quarter"
}'
```
**Ожидается:** 400 Bad Request с сообщением об ошибке
### Test 2: Пустой репозиторий (без коммитов)
```bash
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 ключ
1. Измените ключ в `appsettings.json` на `sk-invalid-key`
2. Перезагрузите приложение
3. Отправьте запрос
**Ожидается:** 500 Internal Server Error с информацией об ошибке OpenAI
---
## Тестирование производительности
### Test: Большой репозиторий (множество коммитов)
```powershell
# Измерим время обработки
$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: Множественные параллельные запросы
```powershell
# Создать 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
```bash
curl http://localhost:5000/health
```
**Ожидаемый ответ:**
```json
{
"status": "healthy",
"timestamp": "2024-01-21T10:30:00.000Z"
}
```
---
## Проверка документации
### Swagger UI
1. Откройте http://localhost:5000/swagger
2. Найдите endpoint `POST /api/summary/ai`
3. Нажмите "Try it out"
4. Заполните параметры
5. Нажмите "Execute"
---
## Валидация результата
### Проверка структуры ответа
```powershell
$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`:
```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
```bash
curl http://localhost:5000/health -i
```
### Получить список всех коммитов
```bash
curl "http://localhost:5000/api/commits?period=quarter"
```
### Сравнить two summaries
```bash
# 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"
```
---
**Наслаждайтесь тестированием! 🚀**