http://www.robotium.cn/archives/871
关于Robotium相信大家都不陌生,这里就不另做介绍了;用过Robotium的同学在使用过程中或多或少可能都会遇到下面的问题:
1、用例太多如何管理?
2、测试结果的输出与收集?
3、测试结果问题的定位?
4、测试程序Crash无法记录?
5、用例失败如何重跑?
带着这些问题,尝试着总结了一套解决的方案:
1、用例太多如何管理
很长一段时间都是依靠testsuite,但是用例一多不免显的有些乏力,so有了使用三方工具进行管理的想法
改进:PC端工具进行管理,以单个程序为单位把用例保存到xx.xml中这样我需要执行哪些case只需导入xx.xml就行了 以下为我做的Case模板:
[code]<?xml version="1.0" encoding="utf-8"?>
<targetpackage name="com.tima.adb">
<package name="tm.herbert.abdcablecomm.test">
<methods>
<include name="Add#testAdd"/>
<include name="Add#testDel"/>
</methods>
</package>
</targetpackage> [/code]
2、测试结果的收集
Robotium没有真正意义上的输出报告,这样不利于我们查看结果,之前重写过InstrumentationTestRunner把输出报告定向到一个Html文档中,但是当我们执行多个程序时,这样保存下来的结果是分开的,不利于我们的结果的统计(不能做到一目了然)
改进:重写instrumentationTestRunner重定向到xml中,每个case执行完毕后pull到pc端,PC端程序进行判断并记录结果至总的报告TEST-ALL.xml中,测试结束后对TEST-ALL.xml进行分析输出报告 以下结果为总和的测试报告TEST-ALL.xml转化为HTML效果图:
3、测试结果问题的定位
测试结果中只有有简单的错误信息很难定位问题
改进:单纯的依靠测试报告我们可能很难定位问题的所在,所以我们需要记录case的执行步骤以及加入截图(可引入log4j,如果想输出Html报告可重写htmllayout)
4、测试程序Crash无法记录
改进:PC端工具每次执行一个case,然后获取到流的返回值,如果返回值中包含”shortMsg=Process crashed”,就说明该用例运行失败程序crash此时进入Crash重试机制,如果多次运行都为crash则在TEST-ALL.xml中记录结果(这里设置为3次重跑,当然你也可以自定义)
[code] private Boolean doAndroidTestCase(String TestCase){
Boolean isTestOk = false;
for(int i=0;i<3; i++)
{
if(startcmd(TestCase).Contains(CRASH)){
continue; //如果程序Crash,则结束当前循环进入下次循环,直至3次结束
}else{
isTestOk = true;
break;
}
}
return isTestOk;
} [/code]
5、用例失败如何重跑
改进:同4不再累述
OK,采用以上方案,前面提到的问题差不多就算解决了,剩下的只需要执行用例了
以下为工具截图((PC端工具为C#所编写:界面略丑,见谅见谅)
欢迎各位拍砖