关于使用Robotium进行Android测试的一点小改进

来源:互联网 发布:淘宝店家信用怎么看 编辑:程序博客网 时间:2024/04/30 23:43

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效果图:

TestReport

 3、测试结果问题的定位

测试结果中只有有简单的错误信息很难定位问题

改进:单纯的依靠测试报告我们可能很难定位问题的所在,所以我们需要记录case的执行步骤以及加入截图(可引入log4j,如果想输出Html报告可重写htmllayout)

StepRecorder

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#所编写:界面略丑,见谅见谅)

TestTool

欢迎各位拍砖


0 0
原创粉丝点击