Dokumentacja Testowania API LLM-Orchestrator-Min
Spis treści
- Wprowadzenie
- Przygotowanie środowiska
- Dostępne narzędzia testowe
- Uruchamianie testów
- Testy obciążeniowe
- Automatyzacja testów
- Rozwiązywanie problemów
- Najlepsze praktyki
Wprowadzenie
Ten dokument opisuje procedury testowania API LLM-Orchestrator-Min, które pozwalają na weryfikację poprawności działania, wydajności oraz stabilności usługi. Testy są kluczowym elementem zapewnienia jakości i powinny być uruchamiane po każdej znaczącej zmianie w kodzie lub konfiguracji.
Przygotowanie środowiska
Przed uruchomieniem testów upewnij się, że:
- Kontener
llm-orchestrator-min
jest zbudowany i uruchomiony - API jest dostępne pod oczekiwanym adresem (domyślnie:
http://localhost:5000
) - Model TinyLlama został poprawnie pobrany i załadowany
Możesz użyć skryptu zarządzającego do przygotowania środowiska:
# Budowanie kontenera z optymalizacjami cache
./scripts/manage_container.sh build
# Uruchamianie kontenera
./scripts/manage_container.sh run
Dostępne narzędzia testowe
W projekcie dostępne są następujące narzędzia testowe:
- Podstawowy tester API (
scripts/test_api.sh
)- Prosty skrypt bash do testowania podstawowych endpointów API
- Sprawdza dostępność i podstawową funkcjonalność
- Kompleksowy tester API (
scripts/comprehensive_test.py
)- Zaawansowany tester napisany w Pythonie
- Umożliwia przeprowadzenie testów funkcjonalnych i obciążeniowych
- Generuje szczegółowe raporty
- Narzędzia do analizy jakości kodu (
scripts/code_quality.sh
)- Uruchamia narzędzia takie jak black, flake8, pylint, mypy i isort
- Pomaga utrzymać wysoką jakość kodu
- Tox (konfiguracja w
tox.ini
)- Umożliwia testowanie w izolowanych środowiskach
- Automatyzuje uruchamianie testów jednostkowych i linterów
Uruchamianie testów
Podstawowe testy API
# Uruchomienie podstawowych testów API
./scripts/test_api.sh
# Lub za pomocą skryptu zarządzającego
./scripts/manage_container.sh test
Kompleksowe testy API
# Uruchomienie kompleksowych testów API
python ./scripts/comprehensive_test.py --url http://localhost:5000 --verbose
# Zapisanie wyników do pliku JSON
python ./scripts/comprehensive_test.py --output results.json
Testy jakości kodu
# Analiza jakości kodu
./scripts/code_quality.sh
# Automatyczne naprawianie problemów z formatowaniem
./scripts/code_quality.sh --fix
Testy z użyciem tox
# Uruchomienie wszystkich testów zdefiniowanych w tox.ini
tox
# Uruchomienie tylko testów jednostkowych
tox -e py39
# Uruchomienie tylko linterów
tox -e lint
Testy obciążeniowe
Testy obciążeniowe pozwalają sprawdzić jak API radzi sobie z wieloma równoczesnymi żądaniami:
# Uruchomienie testów obciążeniowych (domyślnie: 2 równoczesne żądania, 5 łącznie)
python ./scripts/comprehensive_test.py --load-test
# Dostosowanie parametrów testów obciążeniowych
python ./scripts/comprehensive_test.py --load-test --concurrency 5 --requests 20
Parametry testów obciążeniowych:
--concurrency
- liczba równoczesnych żądań (domyślnie: 2)--requests
- łączna liczba żądań do wykonania (domyślnie: 5)
Automatyzacja testów
Testy mogą być automatycznie uruchamiane po uruchomieniu kontenera za pomocą skryptu run_tests_after_startup.sh
. Skrypt ten:
- Czeka na pełne uruchomienie API
- Uruchamia podstawowe testy API
- Uruchamia kompleksowe testy API (opcjonalnie)
- Generuje raport z testów
Aby uruchomić automatyczne testy po starcie kontenera:
./scripts/run_tests_after_startup.sh
Rozwiązywanie problemów
Jeśli testy nie przechodzą, wykonaj następujące kroki:
- Sprawdź logi kontenera:
docker logs llm-orchestrator-min
- Uruchom diagnostykę:
./scripts/manage_container.sh diagnose
- Spróbuj naprawić typowe problemy:
./scripts/manage_container.sh fix
- Sprawdź, czy model został poprawnie pobrany:
docker exec llm-orchestrator-min ls -la /app/models/tinyllama
Najlepsze praktyki
- Regularnie uruchamiaj testy - po każdej znaczącej zmianie w kodzie
- Automatyzuj testy - używaj CI/CD do automatycznego uruchamiania testów
- Monitoruj wydajność - śledź czasy odpowiedzi API w czasie
- Testuj na różnych konfiguracjach - sprawdzaj działanie z różnymi parametrami
- Aktualizuj testy - dodawaj nowe przypadki testowe wraz z rozwojem API