All checks were successful
hufs-notice-crawler-cicd / build_push_deploy (push) Successful in 8m35s
138 lines
3.8 KiB
Markdown
138 lines
3.8 KiB
Markdown
# 테스트 문서
|
|
|
|
이 문서는 `HUFS 컴퓨터공학부 공지 크롤러`의 테스트 방법과 검증 범위를 설명합니다.
|
|
|
|
관련 문서:
|
|
|
|
- 서비스 개요: [`README.md`](/C:/Users/USER/Desktop/notice_crawler/README.md)
|
|
- 운영/배포: [`README.operation.md`](/C:/Users/USER/Desktop/notice_crawler/README.operation.md)
|
|
- n8n 연동: [`README.n8n.md`](/C:/Users/USER/Desktop/notice_crawler/README.n8n.md)
|
|
|
|
## 자동 테스트 실행
|
|
|
|
가상환경 예시:
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
python -m pytest
|
|
```
|
|
|
|
## 현재 자동 테스트 범위
|
|
|
|
- `GET /health` 응답 확인
|
|
- `POST /api/v1/crawl` 응답 구조 확인
|
|
- 신규 글만 DB에 저장되는지 확인
|
|
- 신규 글이 0개일 때 응답이 올바른지 확인
|
|
- 최초 bootstrap 실행 시 저장만 하고 반환하지 않는지 확인
|
|
|
|
## 테스트 파일
|
|
|
|
- [`tests/test_api.py`](/C:/Users/USER/Desktop/notice_crawler/tests/test_api.py)
|
|
- FastAPI 응답 구조 검증
|
|
- [`tests/test_service.py`](/C:/Users/USER/Desktop/notice_crawler/tests/test_service.py)
|
|
- 신규 감지, bootstrap, latest_posts_by_board 동작 검증
|
|
- [`tests/conftest.py`](/C:/Users/USER/Desktop/notice_crawler/tests/conftest.py)
|
|
- SQLite 인메모리 DB fixture
|
|
|
|
## 최신 자동 테스트 결과
|
|
|
|
기준 실행:
|
|
|
|
```bash
|
|
python -m pytest
|
|
```
|
|
|
|
결과:
|
|
|
|
```text
|
|
5 passed
|
|
```
|
|
|
|
의미:
|
|
|
|
- API 테스트 통과
|
|
- 서비스 로직 테스트 통과
|
|
- bootstrap 관련 테스트 통과
|
|
|
|
## 실제 사이트 수동 검증 결과
|
|
|
|
`PostgreSQL` 연결 없이 실제 `HUFS 컴퓨터공학부` 사이트에 요청을 보내 크롤링 동작 여부를 확인했습니다.
|
|
|
|
검증 일시:
|
|
|
|
- `2026-03-17`
|
|
|
|
검증 범위:
|
|
|
|
- 공지사항 목록 페이지 접근
|
|
- 자료실 목록 페이지 접근
|
|
- 취업정보 목록 페이지 접근
|
|
- 목록에서 `article_id`와 링크 추출
|
|
- 상세 페이지에서 제목, 작성자, 게시일, 본문, 첨부파일 추출
|
|
- 사용자용 `subview.do?enc=...` 링크 생성 확인
|
|
|
|
확인 결과:
|
|
|
|
- 공지사항 `1926` 접근 성공
|
|
- 자료실 `1927` 접근 성공
|
|
- 취업정보 `1929` 접근 성공
|
|
- 크롤러가 목록 파싱 성공
|
|
- 상세 페이지 파싱 성공
|
|
- 자료실 샘플 게시글에서 첨부파일 링크 추출 성공
|
|
- 반환 링크가 `subview.do?enc=...` 형식으로 생성되는 것 확인
|
|
|
|
실제 확인 예시:
|
|
|
|
- 공지사항
|
|
- 수집 수: 20개
|
|
- 샘플 글: `249714`
|
|
- 자료실
|
|
- 수집 수: 8개
|
|
- 샘플 글: `239712`
|
|
- 첨부파일 1개 추출 확인
|
|
- 취업정보
|
|
- 수집 수: 10개
|
|
- 샘플 글: `247506`
|
|
|
|
## 문법 검증
|
|
|
|
```bash
|
|
python -m compileall app tests
|
|
```
|
|
|
|
## 경고 해석
|
|
|
|
테스트 결과에 `warnings summary`가 나올 수 있습니다.
|
|
|
|
- `passed`
|
|
- 테스트 자체는 성공
|
|
- `warning`
|
|
- 추후 라이브러리 버전 업이나 파이썬 버전 변화 시 수정이 필요할 수 있는 항목
|
|
|
|
현재 기준으로 보이는 경고는 대체로 다음입니다.
|
|
|
|
- `fastapi.routing` 내부 `DeprecationWarning`
|
|
- 현재 사용 중인 FastAPI/하위 의존성과 Python 3.14 조합에서 발생 가능
|
|
- `pytest cache` 관련 경고
|
|
- 캐시 디렉토리 상태 문제
|
|
- 테스트 실패와는 별개
|
|
|
|
## 수동 확인 권장 항목
|
|
|
|
운영 전에는 아래를 직접 확인하는 것이 좋습니다.
|
|
|
|
1. `GET /health` 호출 시 `{"status":"ok"}` 반환
|
|
2. `POST /api/v1/crawl` 호출 시 JSON 응답 정상
|
|
3. 첫 실행 시 bootstrap 동작 확인
|
|
4. 두 번째 실행부터 신규 글만 반환되는지 확인
|
|
5. `n8n`에서 HTTP Request 노드 연동 확인
|
|
6. PostgreSQL 연결 정보가 맞을 때 컨테이너가 정상 기동하는지 확인
|
|
|
|
## 아직 직접 하지 못한 검증
|
|
|
|
- 실제 PostgreSQL 연동 end-to-end 테스트
|
|
- 실제 Docker 컨테이너 빌드/기동 테스트
|
|
- 실제 n8n 워크플로우 전송 테스트
|