/media |
영상 게시글 생성 |
TC11-1 |
업로드된 영상을 성공적으로 게시글로 생성할 수 있는지 확인 |
요청 본문: { "title": "제목", "description": "설명", "tags": ["tag1", "tag2"], "stoppoints": [{"stop_time": 10, "description": "설명"}] } |
|
영상 게시글 생성 - 필드 누락 |
TC11-2 |
필수 필드가 누락된 경우 오류 발생 확인 |
요청 본문: { "description": "설명" } (제목 누락) |
/media/me |
내가 업로드한 영상 목록 조회 |
TC12-1 |
내가 업로드한 영상 목록을 성공적으로 조회할 수 있는지 확인 |
쿼리 파라미터: page = "0", size = "20" |
|
내가 업로드한 영상 목록 조회 - 페이지 번호 오류 |
TC12-2 |
잘못된 페이지 번호로 요청 시 오류 발생 확인 |
쿼리 파라미터: page = "-1", size = "20" |
/media/quality-stats |
미디어 퀄리티 데이터 저장 |
TC13-1 |
미디어 퀄리티 데이터를 성공적으로 저장할 수 있는지 확인 |
요청 본문: { "userId": 10, "mediaId": 1, "timestamp": "2024-12-09T12:00:00Z", "downloadBitrate": 5000.0, "selectedBitrate": 4500.0, "bufferingStart": 0.5, "bufferingEnd": 1.2 } |
|
미디어 퀄리티 데이터 저장 - 필드 누락 |
TC13-2 |
필수 필드가 누락된 경우 오류 발생 확인 |
요청 본문: { "userId": 10, "mediaId": 1 } (타임스탬프 및 비트레이트 누락) |
/media/quality-stats |
미디어 퀄리티 데이터 조회 |
TC14-1 |
미디어 퀄리티 데이터를 성공적으로 조회할 수 있는지 확인 |
쿼리 파라미터: mediaId = "1" |
/media/{id} |
미디어 상세 조회 |
TC15-1 |
특정 미디어의 상세 정보를 성공적으로 조회할 수 있는지 확인 |
경로 파라미터: id = "1" |
|
미디어 상세 조회 - 존재하지 않는 ID |
TC15-2 |
존재하지 않는 미디어 ID로 조회 시 오류 발생 확인 |
경로 파라미터: id = "999" |
/media/{mediaId}/comments |
해당 미디어 ID의 댓글 목록 조회 |
TC16-1 |
특정 미디어 ID에 대한 댓글 목록을 성공적으로 조회할 수 있는지 확인 |
경로 파라미터: mediaId = "1", 쿼리 파라미터: page = "0", size = "10" |
|
해당 미디어 ID의 댓글 목록 조회 - 댓글 없음 |
TC16-2 |
댓글이 없는 미디어 ID에 대한 조회 시 빈 배열 반환 확인 |
경로 파라미터: mediaId = "2", 쿼리 파라미터: page = "0", size = "10" |
/media/{mediaId}/comments |
해당 미디어에 댓글 추가 |
TC17-1 |
특정 미디어에 댓글을 성공적으로 추가할 수 있는지 확인 |
경로 파라미터: mediaId = "1", 요청 본문: { "content": "This is a comment" } |
|
해당 미디어에 댓글 추가 - 내용 누락 |
TC17-2 |
댓글 내용이 누락된 경우 오류 발생 확인 |
경로 파라미터: mediaId = "1", 요청 본문: {} (내용 누락) |
/media/{mediaId}/likes |
미디어 좋아요 개수 조회 |
TC18-1 |
특정 미디어의 좋아요 개수를 성공적으로 조회할 수 있는지 확인 |
경로 파라미터: mediaId = "1" |
/media/{mediaId}/likes |
미디어 좋아요 추가 |
TC18-1 |
특정 미디어에 좋아요를 성공적으로 추가할 수 있는지 확인 |
경로 파라미터: mediaId = "1" |
|
미디어 좋아요 추가 - 이미 좋아요 한 경우 |
TC18-2 |
이미 좋아요가 추가된 상태에서 다시 추가 시 오류 발생 확인 |
경로 파라미터: mediaId = "1" |
/media/{mediaId}/likes |
미디어 좋아요 삭제 |
TC19-1 |
특정 미디어의 좋아요를 성공적으로 삭제할 수 있는지 확인 |
경로 파라미터: mediaId = "1" |
|
미디어 좋아요 삭제 - 존재하지 않는 경우 |
TC19-2 |
존재하지 않는 좋아요를 삭제 시도 시 오류 발생 확인 |
경로 파라미터: mediaId = "999" |
/media/{mediaId}/stoppoints |
정지점 생성 |
TC19-1 |
특정 미디어에 정지점을 성공적으로 생성할 수 있는지 확인 |
경로 파라미터: mediaId = "1", 요청 본문: {"stop_time": 30, "description": "새로운 정지점"} |
|
정지점 생성 - 잘못된 시간 |
TC19-2 |
잘못된 시간으로 정지점 생성 시 오류 발생 확인 |
경로 파라미터: mediaId = "1", 요청 본문: {"stop_time": -5, "description": "잘못된 정지점"} |
/media/{mediaId}/stoppoints/{stoppointId} |
정지점 삭제 |
TC20-1 |
특정 미디어의 정지점을 성공적으로 삭제할 수 있는지 확인 |
경로 파라미터: mediaId = "1", stoppointId = "1" |
|
정지점 삭제 - 존재하지 않는 정지점 |
TC20-2 |
존재하지 않는 정지점 삭제 시도 시 오류 발생 확인 |
경로 파라미터: mediaId = "1", stoppointId = "999" |
/playback/all |
전체 재생 기록 조회 |
TC21-1 |
사용자의 전체 재생 기록을 성공적으로 조회할 수 있는지 확인 |
쿼리 파라미터: page = "0", size = "10" |
|
전체 재생 기록 조회 - 페이지 범위 초과 |
TC21-2 |
존재하지 않는 페이지 요청 시 빈 결과 반환 확인 |
쿼리 파라미터: page = "999", size = "10" |
/playback/all |
전체 재생 기록 삭제 |
TC22-1 |
사용자의 전체 재생 기록을 성공적으로 삭제할 수 있는지 확인 |
- |
/playback/media/{mediaId} |
재생 기록 저장 또는 갱신 |
TC23-1 |
특정 미디어의 재생 기록을 성공적으로 저장하거나 갱신할 수 있는지 확인 |
경로 파라미터: mediaId = "1", 요청 본문: {"lastPlayedTime": 120} |
|
재생 기록 저장 - 잘못된 시간 |
TC23-2 |
잘못된 재생 시간으로 저장 시도 시 오류 발생 확인 |
경로 파라미터: mediaId = "1", 요청 본문: {"lastPlayedTime": -10} |
/playback/media/{mediaId} |
재생 기록 삭제 |
TC24-1 |
특정 미디어의 재생 기록을 성공적으로 삭제할 수 있는지 확인 |
경로 파라미터: mediaId = "1" |
|
재생 기록 삭제 - 존재하지 않는 기록 |
TC24-2 |
존재하지 않는 재생 기록 삭제 시도 시 적절한 응답 확인 |
경로 파라미터: mediaId = "999" |
/playlists |
사용자의 재생목록 조회 |
TC25-1 |
사용자의 재생목록을 성공적으로 조회할 수 있는지 확인 |
- |
|
사용자의 재생목록 조회 - 페이지 번호 오류 |
TC25-2 |
잘못된 페이지 번호로 요청 시 빈 결과 반환 확인 |
쿼리 파라미터: page = "999", size = "10" |
/playlists |
재생목록 생성 |
TC26-1 |
새로운 재생목록을 성공적으로 생성할 수 있는지 확인 |
요청 본문: { "title": "My Playlist", "description": "Description of my playlist" } |
|
재생목록 생성 - 필수 필드 누락 |
TC26-2 |
필수 필드가 누락된 경우 오류 발생 확인 |
요청 본문: { "description": "Description of my playlist" } (제목 누락) |
/playlists/{playlistId} |
재생목록 삭제 |
TC27-1 |
특정 재생목록을 성공적으로 삭제할 수 있는지 확인 |
경로 파라미터: playlistId = "1" |
|
재생목록 삭제 - 존재하지 않는 ID |
TC27-2 |
존재하지 않는 재생목록 ID로 삭제 시도 시 오류 발생 확인 |
경로 파라미터: playlistId = "999" |
/playlists/{playlistId}/items |
재생목록의 동영상 조회 |
TC28-1 |
특정 재생목록의 동영상을 성공적으로 조회할 수 있는지 확인 |
경로 파라미터: playlistId = "1", 쿼리 파라미터: page = "0", size = "10" |
|
재생목록의 동영상 조회 - 동영상 없음 |
TC28-2 |
동영상이 없는 재생목록 조회 시 빈 배열 반환 확인 |
경로 파라미터: playlistId = "2", 쿼리 파라미터: page = "0", size = "10" |
/playlists/{playlistId}/items |
재생목록에 동영상 추가 |
TC29-1 |
특정 재생목록에 동영상을 성공적으로 추가할 수 있는지 확인 |
경로 파라미터: playlistId = "1", 요청 본문: { "mediaId": 1, "orderIndex": 1 } |
|
재생목록에 동영상 추가 - 필수 필드 누락 |
TC29-2 |
필수 필드가 누락된 경우 오류 발생 확인 |
경로 파라미터: playlistId = "1", 요청 본문: {} (mediaId 누락) |
/playlists/{playlistId}/items/order |
재생목록의 동영상 순서 업데이트 |
TC30-1 |
특정 재생목록의 동영상 순서를 성공적으로 업데이트할 수 있는지 확인 |
경로 파라미터: playlistId = "1", 요청 본문: [{"mediaId": 1, "orderIndex": 1}, {"mediaId": 2, "orderIndex": 2}] |
/ranking/top20 |
상위 20명의 랭킹 조회 |
TC31-1 |
상위 20명의 랭킹이 성공적으로 조회되는지 확인 |
- |
|
랭킹 데이터 형식 검증 |
TC31-2 |
반환된 랭킹 데이터가 올바른 형식인지 확인 |
예상 응답: [{"userId": 1, "username": "user1", "score": 100}, ...] |
/ranking/update |
랭킹 수동 갱신 |
TC32-1 |
랭킹이 성공적으로 수동 갱신되는지 확인 |
- |
|
갱신 후 랭킹 변경 확인 |
TC32-2 |
갱신 후 랭킹 순위가 변경되었는지 확인 |
- |
/tags/recommendation |
태그 추천 조회 |
TC33-1 |
태그 추천이 성공적으로 조회되는지 확인 |
- |
|
추천 태그 개수 확인 |
TC33-2 |
반환된 추천 태그의 개수가 적절한지 확인 |
예상 응답: {"recommended_tags": ["태그1", "태그2", ...]} |
/upload/image |
썸네일 이미지 업로드 |
TC34-1 |
썸네일 이미지가 성공적으로 업로드되는지 확인 |
멀티파트 폼 데이터: image 필드에 이미지 파일 |
|
업로드된 썸네일 URL 확인 |
TC34-2 |
반환된 썸네일 URL이 유효한지 확인 |
예상 응답: {"thumbnailUrl": "https://example.com/thumbnail.jpg"} |
/upload/video |
비디오 업로드 presigned URL 생성 |
TC35-1 |
presigned URL이 성공적으로 생성되는지 확인 |
요청 본문: {"fileSize": 10485760, "fileName": "video.mp4", "key": "generatedKey"} |
|
생성된 URL 유효성 검증 |
TC35-2 |
생성된 presigned URL이 유효한지 확인 |
- |
/upload/video/complete |
비디오 업로드 완료 처리 |
TC36-1 |
업로드 완료 처리가 성공적으로 이루어지는지 확인 |
요청 본문: {"key": "generatedKey", "uploadId": "uploadId", "results": [{"partNumber": 1, "eTag": "eTag1"}]} |
|
잘못된 업로드 ID로 요청 시 오류 확인 |
TC36-2 |
존재하지 않는 uploadId로 요청 시 오류 발생 확인 |
요청 본문: {"key": "generatedKey", "uploadId": "invalidUploadId", "results": []} |
/upload/video/generateKey |
업로드 고유키 생성 |
TC37-1 |
업로드 고유키가 성공적으로 생성되는지 확인 |
- |
|
생성된 키 유효성 검증 |
TC37-2 |
생성된 고유키가 유효한 형식인지 확인 |
예상 응답: {"key": "d0d0ce5a-60c9-4e87-8e3c-c53ad2f6ae84"} |
/upload/video/isProcessed |
영상 처리 상태 확인 |
TC38-1 |
영상 처리 상태가 정확히 반환되는지 확인 |
- |
|
처리 완료된 영상 정보 확인 |
TC38-2 |
처리 완료된 영상의 정보가 올바르게 반환되는지 확인 |
예상 응답: {"fileName": "video.mp4", "isAvailable": true, "fileProcessState": "FINISH", ...} |