我必须使用什么样的测试?

时间:2017-01-10 17:18:22

标签: c++ testing boost

我已经编写了一些可以随时收听Web服务的代码。根据结果​​,我将向Web服务发送一些请求,并根据响应我将发送进一步的请求。如果一切顺利,我将只是开始收听Web服务,直到发生一些中断。

遵循伪代码(种类)

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;
          }                  
       }
    }
}
}

如何测试此代码?我应该使用分支覆盖或代码覆盖测试吗?

由于

1 个答案:

答案 0 :(得分: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
}