boostcampaitech3 / final-project-level3-cv-02

부스트캠프 AI Tech: 내일의집 - 간단한 스케치로, 당신의 가구를 현실로!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

test: 파일 입력에 대한 테스트 코드 작성하기

nestiank opened this issue · comments

이미지를 업로드 받는 단계를 위해 주로 다음에 대한 테스트를 수행하는 코드 작성이 필요합니다.

경우에 따라, 프론트엔드(업로드 시도 시점)나 백엔드(업로드 완료 시점)에서 적용해야 합니다.

  1. 누군가 잘못된 입력을 넣더라도, 다른 사람의 사용에 문제가 없는 경우, 큰 문제가 되지는 않는 것들
  • 파일 용량 확인(사진 한 장이 1KB이거나 1GB인 경우 오류 발생)
  • 파일 크기 확인(픽셀 기준으로 4 x 4인 이미지는 rescale을 해도 의미가 없을 것임)
  • 파일 유사도 확인(완전히 다른 두 장의 사진을 업로드하는 것은 의미가 없을 것임)
  • 파일 인코딩 정상 여부 확인(pdf 파일을 png로 확장자 바꿔서 업로드하는 경우 오류 발생)
  1. 항상 문제가 될 수 있는 것들
  • 이메일 형식 확인
  • 파일 확장자 확인
  • 파일 덮어쓰기 여부 확인(알려진 이름(제목 없음.png 등) 혹은 같은 파일명으로 이미지를 여러 번 업로드할 경우, 같은 이메일로 여러 번 업로드할 경우에도 덮어쓰기 되면 안 됨)

파일 덮어쓰기의 경우, 백엔드에서 매번 경로에 timestamp를 포함한 새로운 디렉토리에 파일이 저장되도록 하고 있으므로 문제가 발생하지 않음을 확인했습니다.

For reference: search "unique한 user dir 만들기" at /backend/app/main.py

현재 프로젝트 파이프라인에서, 이미 업로드가 완료된 상황에서 파일의 용량이나 이미지의 크기, 인코딩 정상 여부를 확인하는 것은 큰 의미가 없다고 판단하였습니다. 따라서 메모를 남기고 이슈에서 제거합니다. 이유는 다음과 같습니다.

  1. 현재 사용자에게 이메일로 백엔드 처리 결과물을 사후에 보내 주고 있으므로, 사용자에게 즉각적인 오류 메시지를 보여 줄 수 없습니다.
  2. 이로 인해서, 비정상적인 파일이 업로드되더라도 이메일로 재업로드 요청을 할 수밖에 없습니다.
  3. 그러나, 이 경우에 대한 이메일 양식을 따로 작성해 두는 것은 프로젝트 규모가 설계된 것에서 벗어나게 합니다.

현재 프로젝트 파이프라인에서, 파일 유사도 확인은 할 수 없다고 판단하였습니다. 이유는 RGB 픽셀 값 관점에서 원본 사진과의 유사도가 지나치게 낮은 스케치 사진의 가구 합성을 거절할 경우, 사용자가 사진 전체를 덮는 가구를 그렸을 때 이것을 거절하게 되기 때문입니다. 따라서 메모를 남기고 이슈에서 제거합니다.

모든 이슈의 작업이 해결되었으므로, 메모를 남기고 이슈를 닫습니다.