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

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

    自动化测试用例执行时,由于这样或那样的原因,总会出现运行不成功的情况,这会导致用例执行成功率很难达到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{

      。。。。。。

  }

}

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