安卓自动化测试总结(四)--用例执行失败后重复执行、每次运行失败后的超时时间调整

用例执行不成功时,重复执行的最多次数

    自动化测试用例执行时,由于这样或那样的原因,总会出现运行不成功的情况,这会导致用例执行成功率很难达到100%。

    为了提高用例执行成功率,我们使用WaitFor方法、最大最小超时时间来提高每个用例单次执行的成功率。不过,超时时间设的太大,也会导致每次运行多个用例时,使用的时间明显比超时时间设为默认时间时长很多。而设的较小,失败率又会明显增大。

    因此,我们想到junit提供的运行失败时,多次执行失败用例的方法,来提高安卓自动化用例的执行成功率。这样,设置为默认超时时间或者其他感觉合适的超时时间后,在大部分用例测试结果正常后,还会多次执行某些界面异常导致的用例失败,这能保证提高成功率的情况下,不明显增加整体运行时间。

@Override

protected void runTest( )throws Throwable {

int retryTimes=TestConst.retryTimes; //重试次数

while (retryTimes> 0)  {

  try {

    super.runTest();

    ActivityInstrumentationTestCase5.timeSet(false); //调整超时时间的值,                                //ActivityInstrumentationTestCase5为继承ActivityInstrumentationTestCase2的类

     break;

  } catch (Throwablet) {

      ActivityInstrumentationTestCase5.timeSet(true);

      if (retryTimes> 1) {

           retryTimes--;

           tearDown();

           setUp();

           continue;

         } else {

              ActivityInstrumentationTestCase5.timeSet(false);

              throw t;

          }

      }

   }

}

每次重复执行时,设置怎样的超时时间

    目前的超时设置策略是,第一次执行失败后,第二次执行则超时时间加倍,第三次则再次加倍。这样设置的原因是,刚开始开发界面自动化时,失败率比较高,而增加超时时间,确实提高了成功率。

    目前,每次运行20个用例,成功率都是100%,10次运行,最多有一次某个用例失败。所以现在可以改变策略,以提高测出问题的几率,而不是成功率了,因为如果是显示某些界面较慢,也可能是故障的,而不是测试程序的问题。这时,可以保持超时时间和以前相同,或者稍微大些;甚至根据网络情况,来用某个系统乘以默认超时时间。

protected static void timeSet(boolean b) {

   if(b) {

       。。。。。。

    }else{

      。。。。。。

  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,844评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,016评论 6 342
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 11,681评论 5 100
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 22,089评论 7 278