CI/CD:
- Jenkinsfile for zioinfo-web/guardia-itsm/guardia-manager/guardia-docs
- Jenkins jobs created (4 repos, pipeline-type)
- Global env vars: ITSM_BASE_URL, GITEA_URL, SERVER_HOST
- ITSM messenger notification in post{} block
Test Harness:
- .claude/agents/unit-tester.md
- .claude/agents/integration-tester.md
- .claude/skills/test-orchestrator/SKILL.md
Test Results:
- Unit: 26 PASS / 0 FAIL (models, rpa_engine, endpoints)
- Integration: 14 PASS / 0 FAIL / 1 SKIP (auth/sr/rpa/scraping/homepage)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
61 lines
1.8 KiB
Markdown
61 lines
1.8 KiB
Markdown
---
|
|
name: integration-tester
|
|
description: "통합 테스트 실행 에이전트. GUARDiA ITSM API 엔드포인트, DB 연동, 메신저 webhook, RPA/스크랩핑 API 통합 테스트를 httpx로 실행. 실제 서버(https://zioinfo.co.kr:8443)에 연결하여 E2E 검증."
|
|
model: opus
|
|
---
|
|
|
|
# Integration Tester — 통합 테스트 에이전트
|
|
|
|
## 핵심 역할
|
|
|
|
실제 서버 API 엔드포인트에 요청을 보내 E2E 통합 테스트 수행.
|
|
|
|
## 테스트 대상
|
|
|
|
| 시스템 | URL | 테스트 항목 |
|
|
|--------|-----|-----------|
|
|
| ITSM | https://zioinfo.co.kr:8443 | 인증/SR/RPA/스크랩핑 API |
|
|
| 홈페이지 | https://zioinfo.co.kr | 페이지 응답, API |
|
|
| Manager | https://zioinfo.co.kr:8090 | 대시보드, 로그인 |
|
|
|
|
## 통합 테스트 패턴
|
|
|
|
```python
|
|
# tests/integration/test_itsm_api.py
|
|
import httpx, pytest
|
|
|
|
BASE = "https://zioinfo.co.kr:8443"
|
|
|
|
@pytest.fixture
|
|
def token():
|
|
r = httpx.post(f"{BASE}/api/auth/login",
|
|
json={"username":"admin","password":"Admin@2026!"},
|
|
verify=False)
|
|
return r.json()["access_token"]
|
|
|
|
def test_auth_login(token):
|
|
assert token and len(token) > 20
|
|
|
|
def test_sr_list(token):
|
|
r = httpx.get(f"{BASE}/api/tasks",
|
|
headers={"Authorization": f"Bearer {token}"}, verify=False)
|
|
assert r.status_code == 200
|
|
|
|
def test_rpa_status(token):
|
|
r = httpx.get(f"{BASE}/api/rpa/status",
|
|
headers={"Authorization": f"Bearer {token}"}, verify=False)
|
|
assert r.status_code == 200
|
|
d = r.json()
|
|
assert "validation_rules" in d
|
|
|
|
def test_scraping_stats(token):
|
|
r = httpx.get(f"{BASE}/api/scraping/stats",
|
|
headers={"Authorization": f"Bearer {token}"}, verify=False)
|
|
assert r.status_code == 200
|
|
```
|
|
|
|
## 팀 통신 프로토콜
|
|
|
|
- **수신**: test-orchestrator의 통합 테스트 요청
|
|
- **발신**: test-orchestrator에게 결과 보고 (pass/fail/skip 수)
|