2017-01-10 10 views
0

나는 항상 웹 서비스를 청취 할 수있는 코드를 작성했다. 결과에 따라 웹 서비스에 일부 요청을 보내고 응답에 따라 추가 요청을 보냅니다. 모든 것이 잘된다면 웹 서비스가 중단 될 때까지 기다리는 것입니다. (종류의) 의사 코드 다음 어떤 종류의 테스트를 사용해야합니까?

class listner 
{ 

string sendReq(Request) 
{ 
    curl_easy_perform();  
    return responseString; 
} 
connectWebServive() 
{ 
    curl = curl_easy_init();// curl member variable CURL *curl; 
    while(true) 
    { 
     String res = listener(Request1) 
     if(res == “some thing”) 
     { 
      String res = listener(Request2) 
     } 
     else 
     { 
      String res = listener(Request3)  
     } 
     while(true) 
     { 
      String res = listener(request4) 
      if(somethingWrong) 
      { 
      break; 
      }     
     } 
    } 
} 
} 

어떻게이 코드를 테스트 할 수 있습니다? 분기 커버리지 또는 코드 커버 리지 테스트를 사용해야합니까?

감사

답변

0

분기 및 라인/문 커버리지 테스트 여부를지고 있는지 알 수 있도록 다른 지표이다. 두 경우 모두 API에서 응답으로 오는 데이터 또는 이벤트에 따라 다르므로 적용 범위 메트릭의 해석은 정확한 분석을 수행하기를 원할 경우 모든 지점에 대한 테스트를 작성해야 함을 의미합니다.

가독성을 위해 중첩 된 while 루프를 사용하지 않는 것이 좋습니다. 응답을 기다리는 리스너 루프가 하나 있어야합니다. 그 루프의 내부 구조는 처리 로직과 if-then-else 트리를 포함합니다. 기본 시작 요청 (진입 점)이 있어야하며 논리는 다음 요청이 무엇인지 결정하기 위해 입력을 확인해야합니다.

current_request = construct_original_request() 

while(true) 
{ 
    response = do_request(current_request) // make a blocking call in thread 
    if(response like 'condition A') 
    { 
    // do A logic, if any 
    current_request = construct_B_request()... // then set up next request 
    } else if(response like 'condition B') 
    { 
    // do B logic if any 
    current_request = construct_C_request()... // then set up next request 
    } else 
    { 
    current_request = construct_original_request() // back to square one 
    } 
    wait(1) // let the thread/processor sleep for a non-zero amount of time 
} 
관련 문제