众所周知,在测试三大自动化测试体系中,接口自动化的执行效率最高,而UI级别的自动化测试是根本无法达到接口级的执行速度的。而WebUI自动化测试,可以通过多线程的方法来同时打开多个浏览器执行测试用例,AppUI自动化就比较麻烦了,因为同一个手机上不可能同时打开两个同一应用的,所以AppUI自动化测试执行效率非常慢。但是为了达到自动化测试在日常测试工作中真正使用起来,AppUI自动化提效率也势在必行。AppUI自动化测试提效可以通过以下两大方向进行。autojshttps://www.aznfz.com/冰狐智能辅助一站式app自动化解决方案,支持SaaS和微服务,不需编程通过搭积木和参数配置即可快速实现各种app自动化操作,比如:自动运营店铺,自动签到,自动薅羊毛,自动回复,自动化测试,抓取app数据,微信营销,网络推广,抢红包等功能!
一,搭建手机测试平台,分布式执行用例
多线程一直是自动化测试提高执行速度的首选,但是基于手机App的特性,我们不可能在一台手机上打开多个同一应用,那就必须借助于多台手机,在不同的手机上同时执行用例。现在可行的方案有:
1,选择开源的STF手机集群管理
STF是开源的手机集群管理框架,可以参考:https://openstf.io/,网站上有对这个框架的介绍,以及从github(
https://github.com/openstf/stf)上下载相应的代码。按网站上的方法进行部署,然后连接手机设备即可。但是STF有如下特征:
(1)对Android设备支持较好,即插即用,但是iOS设备还是需要改造一下。
(2)对外提供手机设备的管理SDK,但不提供任务调度和管理功能,需要根据自己的业务开发。
(3)二次开发成本较高,不那么容易入手。
2,商业或是公司内部的手机平台
如BAT公司都有自己的手机平台,可以对外提供付费服务,还有Testin的提供的手机集群。基于这样的平台可以省下我们购买设备,部署集群的人力和物力成本。但是使用商业平台或是公司内部其他部门的手机平台时,会遇到以下问题:
(1)使用时必须付费,而公司或是部门给不给予支持,这是一个非常重要的问题;
(2)普通的如安装卸载,Monkey测试是没有问题的,如果想做业务级别的测试,就必须使用平台支持的框架,通用性不强。
(3)如果想做个性化的测试方案,或是特殊的需要,则必须得到相关平台的支持,灵活度不高。
综上所述,最好能自己搭建手机测试平台,或是使用公司内部的,平台方愿意支持的方案来做AppUI分布式执行。当然,如果你们的应用存在单点登录问题,多个设备同时登录会互踢,就需要找业务方进行处理才可以分布执行。
二,从测试用例角度入手提高执行效率
分布式执行是提高执行效率比较重要的方法,但是每个用例的执行时间也是非常重要的。如果每个用例执行时间比较长,那么执行效率也不高。所以我们必须保证每条用例的执行时间是最优的,而且这也是我们可以直接进行提效的最佳方案,而测试用例提效可以从以下几个角度入手。
1,减少测试用例执行步骤
UI级的自动化测试通常是模拟用户操作,检测特定的操作步骤产生的效果的测试方法。但是从测试角度来说,不同的测试用例的检测点不同,比如说,用例A,通过测试步骤一,二,三,操作后,要检测一下相应步骤产生的效果。用例A,需要通过步骤一,二,三,四操作后,再去检测操作产生的效果。这个时候,就可以将这两个用例合并一下,以减少用例的操作。或是可以通过公司的造数工具或是平台,构造需要的测试数据而不是通过正常的操作来产生数据,这样也可能减少相应的操作步骤,而测试的效果是一样的。
2,优化检测点设置
自动化测试必须有一定的检测点,没有检测点的测试用例不能称作是自动化测试用例。当然任何语言对检测点的操作都是,通过指定的元素定位方法,来找到要检测的元素,然后获取元素的文案,或是检测元素是否存在等,对比预期结果。如果检测点设置的比较多,尤其是检测页面元素的时候,通过会在查找元素上花费大量的时间。此时可以引入图形图像检测的方法,或是图像对比的方法,减少元素的查找。或是合理设置检测点,只检测关键的元素。
3,合理设置等待时间
在UI自动化测试中,对元素的等待非常重要,如果当前页面没有加载出元素,后续的对元素的任何操作都会失败。为了提高用例的通过率,我们通常的做法是,在元素操作之前添加sleep操作,等待上一会儿。当然 ,这样的做法提高了通过率,但是时间上就会增加。这种等待方式叫显式等待,为了减少等待时间,可以把显示等待换成隐式等待,driver.implicitly_wait(),根据你的代码架构进行合理的设置,可以有效地提高等待的效率。
4,优化元素定位方法
显然任何一个自动化测试框架都有对元素的很多定位方式,如Appium可以通过name,xpath, class,id等方法进行定位。虽然有的时候各种定位方法都能对元素进行定位,但是其效率是不一样的,如name,id的定位方法就比Xpath的定位方法高效,所以编写测试用例的时候,可以根据App元素的特点,结合定位方法执行的效率,合理地选择定位方法,就能提高用例执行的速度。
给大家提供一些参考,希望能给有这方面需求的同学带来点灵感。 2022/6/21 |