CIM 事件统一自动化测试框架
2009-12-18 00:00:00 来源:WEB开发网对测试结果智能分析
该框架可以对测试结果进行智能分析,并根据需要提供特定的结果,无需测试人员手动检查返回的消息是否符合期望,从而在显著提高测试效率的同时降低了出错率。
具体实现机制为:线程 1 根据触发的事件得到一个期望的消息列表,线程 2 则将监听到的消息解析后存入一个实际的消息列表中。等到线程 1 取消消息订阅之后,线程 2 将实际的消息列表发送给线程 1。线程 1 将实际的消息列表与期望的消息列表进行对比,来判断是否期望监听的消息都被监听到,而不期望监听的消息都没有被监听,最终输出一个日志文件,记录监听到的所有消息及错误信息。
测试人员还可以通过改写配置文件中的 LogLevel 变量来选择日志文件中所包含内容的多少,LogLevel 变量的默认值为 0,即日志文件只包含错误信息。也可将其置为 1,则日志文件将包含所有监听到的消息和错误信息。
以下是智能分析并生成日志文件的代码段:
int result = compareResult(expect_list, actual_list); // 比较期望消息列表和实际消息列表
if (result == 0) { // 两个列表内容相同,在用户指定的日志文件中输出“Success”
log.println("Success", 0, LogFileName);
} else { // 两个列表内容不同,在用户指定的日志文件中输出“Fail”
log.println("Fail", 0, LogFileName);
}
以下是 compareResult 方法的代码:
public static int compareResult(ArrayList<InvokeResult> expect,
ArrayList<InvokeResult> actual)
{
int error = 0;
if (expect.size() != actual.size()) // 首先比较两个列表中的消息数量是否相同
{
log.println(actual.size()+" Indication backs, but expected " +
expect.size(), 0, LogFileName);
// 如果不同,在用户指定的日志文件中记录
error++;
}
//检查是否期望返回的消息都正确返回了
for (int i=0; i < expect.size(); i++)
{
int find = 0;
InvokeResult tmp = expect.get(i);
for (int j=0; j<actual.size(); j++)
{
InvokeResult tmp_actual = actual.get(j);
if (tmp.compare(tmp_actual)==0)
find = 1;
}
if(find==0) //如果有期望的列表没有正确返回,则在用户指定的日志文件中记录该错误
{
log.println(tmp.getOperation() +" " + tmp.getCop() +
" has no indication back." , 0, LogFileName);
error++;
}
}
// 检查是否实际返回的消息都是订阅的消息
for (int i=0; i < actual.size(); i++)
{
int find = 0;
InvokeResult tmp = actual.get(i);
for (int j=0; j<expect.size(); j++)
{
InvokeResult tmp_expect = expect.get(j);
if (tmp.compare(tmp_expect)==0)
find = 1;
}
if(find==0) // 如果返回了没有订阅的消息,则在用户指定的日志文件中记录该错误
{
log.println("Actually returned indication "+tmp.getOperation() +" " +
tmp.getCop() + " is not subscribed", 0, LogFileName);
error++;
}
}
if(error!=0)
return -1;
else
return 0;
}
更多精彩
赞助商链接