문제

웹 서비스를 쿼리하는 응용 프로그램을 작성하고 있습니다. 데이터베이스의 데이터는 시간이 지남에 따라 다양하고 변경됩니다. 이 유형의 응용 프로그램에 대한 단위 테스트를 어떻게 구축합니까?

웹 서비스는 XML 또는 검색 결과 없음 HTML 페이지를 다시 보냅니다. 실제로 웹 서비스를 변경할 수 없습니다. 내 응용 프로그램은 기본적으로 httpurlconnection을 사용하여 웹 서비스를 쿼리하고 문자열로 응답을 가져옵니다.

더 자세하게 도움이되기를 바랍니다.

도움이 되었습니까?

해결책

조롱 할 수있는 프록시를 사용하여 웹 서비스를 추상화하십시오. 모의 웹 서비스가 정상 데이터 및 코너 케이스를 나타내는 다양한 값을 반환하도록하십시오. 또한 웹 서비스에서 예외를 얻는 것을 시뮬레이션합니다. 이러한 조건에서 코드가 작동하는지 확인하고 웹 서비스 용품의 값으로 작동 할 것이라고 합리적으로 확신 할 수 있습니다.

보다 jmock 자바 조롱을 위해.

다른 팁

단위 테스트에 대해 엄격하게 말하면 결정 론적 행동.

외부 웹 서버에 연결되는 테스트는 다음과 같습니다. 통합 테스트.

해결책은 httpurlconnection을 조롱하는 것입니다. 즉, httpurlconnection 클래스에서 파생되고 하드 코딩 된 또는 매개 변수화 가능한 값을 반환하는 단위 테스트에서 클래스를 작성하는 것입니다. 편집하다: 이것은 조롱 프레임 워크없이 maunally를 수행 할 수 있습니다.

웹 서버를 쿼리하는 클래스는 httpurlconnection을 주입하지 않지만 매개 변수를 통해 수신해야합니다. 단위 테스트에서 httpurlConnectionMock을 생성하고 웹 서버를 통계하는 클래스에 전달하여 실제 httpurlConnection을 사용할 때 사용 할 웹 서버를 통계합니다. 프로덕션 코드에서 실제 httpurlconnection을 만들어 클래스로 전달합니다.

당신은 또한 당신의 httpurlconnectionmock을 ioexception을 던질 수있게 만들 수 있습니다. 테스트 오류 조건. 결과를 반환하지 말고 다음 요청에서 예외를 반환하도록 지시하는 방법이 있습니다.

귀하의 질문은 약간 개방형이지만 위의 정보 만 사용하는 몇 가지 테스트 가능한 옵션이 있습니다.

  1. 쿼리가 작동하는지 테스트 할 수 있습니다. 비어 있거나 널 비 널 결과 세트를 되 찾아야한다고 주장합니다.
  2. 쿼리 결과가 유효한 결과 세트. 결과가 유효성 검사 코드를 통과해야한다고 주장합니다 (이 시점에서 데이터가 널이 아니고 민감하지 않고 유용하지 않다는 것을 알고 있습니다).
  3. 데이터 스키마 / 데이터 설명에 대해 알고 있다면 필드가 서로 관련하여 합리적이라고 주장 할 수 있습니다. 예를 들어, 헬리콥터로 결과를 얻으면 100 미터의 음수 고도와 관련이 없어야합니다 ....
  4. 데이터의 확률 분포에 대해 알고 있다면 데이터 세트를 수집하고 결과 분포가 기대할 수있는 표준 편차 내에 있다고 주장 할 수 있어야합니다.

더 많은 정보로 유용한 제안을 할 수 있다고 확신합니다.

너무 높은 A 레벨에서 테스트하는 것처럼 들립니다. 웹 서비스 인터페이스를 조롱하고 데이터베이스에 액세스하는 데이터 계층에 다른 단위 테스트를 작성하십시오. 여기서 더 자세한 내용은이 질문에 더 쉽게 대답 할 수 있습니다.

나는 일반적으로 단위 테스트 결과가 변경되지 않거나 적어도 당신이 기대하는 범위 내에있을 것으로 기대합니다.

내가 겪는 문제는 복잡한 ( "Crappy"를 의미하는) 데이터 모드와 관련이 있으며, 여기서 코드 오류 또는 데이터 오류로 인한 문제가 있는지 확인할 수 없습니다.

이 증상은 애플리케이션이 잘 작동하고 모든 테스트 등을 통과 할 때입니다. 데이터 또는 신선한 데이터 세트를 사용하여 실제 데이터에서 응용 프로그램을 실행할 때 끔찍하게 깨집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top