2017-11-07 1 views
0

나는 어떤 작업을 수행하고 파일에 데이터를 압축하고 그 파일 (Content-Type: application/force-download)을 제공하는 웹 응용 프로그램을 개발 중입니다. 지금은 통합 테스트를 구현하고 있는데, 여기서 데이터 및 웹 앱을 통해 파일을 다시 제공합니다. 테스트가 예상 된 데이터를 다운로드 할 때 웹 응용 프로그램이 올바르게 작동합니다. this을 읽었으며 매우 고무적 이었지만 다운로드 할 파일을 만들 때 응답이 유효합니까?파일을 다운로드하는 통합 테스트

답변

1

몇 가지 방법을 사용할 수 있습니다. 최고에서 최악의 순서 (YMMV) :

결과를 의미 적으로 확인하십시오. 예를 들어 JSON의 경우 구문 분석이 가능한지, 예상되는 키와 값이 있는지 확인하십시오. 이미지의 경우 구문 분석이 가능하고 올바른 형식인지 확인하십시오.

프로 : 실제로 관심있는 것을 테스트하고있는 중입니다. 테스트 실패는 특정 문제를 지적 할 수 있습니다.

단점 : 더 많은 작업을 수행합니다.

바이트 단위로 파일을 직접 비교하십시오. "골든 마스터"방식. 파일이 몇 줄보다 크거나 이진 파일이라면 디스크에 넣고 통합 테스트를로드합니다. 이렇게하면 외부 프로그램에서 더 쉽게 보거나 편집 할 수 있습니다.

프로 : 예상되는 파일이 무엇인지 쉽게 볼 수 있습니다.

단점 : 관련이없는 변경 사항이있는 경우 취성이있을 수 있습니다. 예를 들어 JSON 객체의 키 순서는 중요하지 않습니다. 더욱이 PNG 이미지를 생성하는 경우 생성 시간이 파일에 포함되어 매번 테스트가 실패 할 수 있습니다.

파일 해시를 비교하십시오. 나는 이것이 최후의 수단이라고 생각합니다.

프로 : 전체 파일을 통합 테스트에 저장할 필요가 없습니다. 실제로 큰 파일 인 경우에만 유용합니다.

단점 : 테스트 실패로 아무 것도 알 수 없습니다. 통합 테스트에 포함 된 해시조차도 아무 것도 알려주지 않습니다. 이것은 단지 "변화 탐지기"테스트 일뿐입니다.

+0

Hello Thomas. 플랫폼 charset 인코딩이 변경 될 때 파일을 바이트 단위로 비교하는 것에 대한 제안 사항이 있습니까? 테스트는 리눅스에서 작동하지만 윈도우에서는 작동하지 않습니다. 예상 된 결과가 리눅스 머신에서 얻어 졌기 때문입니다. – Francesco

+0

플랫폼에 관계없이 모든 것에 UTF-8을 사용합니다. 오류가 발생한 두 플랫폼 중 어느 것을 선택해야합니까? – Thomas