다음 시스템으로 작업하고 있습니다.
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
우리는 최근에 내가 사용하고있는 라이브러리의 버전을 업데이트 한 문제가 있었는데, 그중에서도 타임 스탬프 (제 3 자 라이브러리가로 반환 long
)가 에포크 후 밀리 초에서 에포크 후 나노 초로 변경되었습니다.
문제 :
타사 라이브러리 개체를 모의하는 테스트를 작성하면 타사 라이브러리 개체에 대해 실수를 한 경우 테스트가 잘못 됩니다. 예를 들어 타임 스탬프의 정밀도가 변경되어 모의 데이터가 잘못 반환되어 단위 테스트를 변경해야한다는 사실을 알지 못했습니다. 이것은 라이브러리의 버그 가 아니며 문서에서 무언가를 놓 쳤기 때문에 발생했습니다.
문제는 실제 데이터 피드없이 실제 데이터를 생성 할 수 없기 때문에 이러한 데이터 구조에 포함 된 데이터를 확신 할 수 없다는 것입니다. 이 객체는 크고 복잡하며 많은 다른 데이터 조각이 있습니다. 타사 라이브러리에 대한 설명서가 잘못되었습니다.
질문:
이 동작을 테스트하기 위해 테스트를 어떻게 설정합니까? 테스트 자체가 쉽게 잘못 될 수 있기 때문에 단위 테스트 에서이 문제를 해결할 수 있는지 확실하지 않습니다. 또한 통합 시스템은 크고 복잡하며 쉽게 놓칠 수 있습니다. 예를 들어, 위 상황에서 타임 스탬프 처리를 여러 곳에서 올바르게 조정했지만 그 중 하나를 놓쳤습니다. 시스템은 통합 테스트에서 대부분 올바른 작업을 수행하는 것처럼 보였지만 더 많은 데이터가있는 프로덕션에 시스템을 배포 할 때 문제가 분명해졌습니다.
현재 통합 테스트를위한 프로세스가 없습니다. 테스트는 본질적으로 : 단위 테스트를 양호하게 유지하고, 문제가 발생할 때 더 많은 테스트를 추가 한 다음 테스트 서버에 배포하고, 제정신이 아닌지 확인한 다음 프로덕션에 배포하십시오. 이 타임 스탬프 문제는 모의가 잘못 작성되어 단위 테스트를 통과 한 다음 즉각적이고 명백한 문제를 일으키지 않았기 때문에 통합 테스트를 통과했습니다. 품질 관리 부서가 없습니다.
Timestamp
(라는 이름의 방법 (그들이 원하는 표현을 포함한) 클래스 및 제공 .seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) 물론라는 이름의 생성자를. 그러면 아무런 문제가 없었을 것입니다.