我已经编写了一些可以随时收听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;
}
}
}
}
}
如何测试此代码?我应该使用分支覆盖或代码覆盖测试吗?
由于
答案 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
}