Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本!,软件测试程序员必经的实践之路

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

ST.THRESHOLD=0.5 # 设置图片识别精准度,默认为0.7,表示70%匹配即认为匹配成功

  • 默认图片识别隐式等待时长是30秒,比较长,可通过:ST.FIND_TIMEOUT 改为10秒
  • 脚本中,每一个步骤的操作之间都会有一小段时间间隔,默认用OPDELAY进行设定,OPDELAY默认值为0.1,即每一步操作后等待0.1秒,将它适当设置得大一些,可以在每次操作后停顿一小段时间,避免过快进行下一个操作导致不能成功的问题。可通过:ST.OPDELAY整体设置每一步操作间隔时间,少写很多sleep
  • 默认图片识别精准度是0.7,如果需要整体更高或者更低的精准度,可通过:ST.THRESHOLD整体设置精准度。threshold设置得越高,图像识别的精度越高,但成功率也会有所降低,请根据自己的实际情况酌情设置。
2、截图方式:

图像识别使用的算法,更适合用来识别按钮类(带边框)、图标类的图像 ,仅仅单独截取几个文字的识别成功率很低,请尽量截取带边框的图片来达到较好的识别效果,避免只截取按钮上的文字。

比如同样的测试场景,以下两种截图方式,使用方式2截图能达到更好的识别效果:
方式1:

方式2:

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

3、图片自定义设置:

Airtest IDE中双击图片,会弹出图片自定义设置窗口。
Snapshot+Recognition: 可查看截图在当前页面的识别情况,包含识别出来的位置以及识别结果的可信度

右侧参数说明:

filename: 图片名称,系统会自带随机的名称。为了代码有更好的可读性,可以修改为自定义的名称;
threshold:图片识别精准度阈值,默认是0.70,表示70%匹配则认为识别通过;
target_pos: 图片点击的位置,默认5,表示点击图片正中心。图片具体九宫格位置可参看下图说明:

比如购物车加购了3行商品,我们要点击第2个商品的+号按钮,则可以通过截取像上面这样的图片,并设置target_pos为6来实现点击效果。

rgb: 图片识别是否开启背景色识别,默认是不带背景色,使用灰背景的模式对比图片。
这样即使页面换了不同的主题色,只要图片样式不换,均不影响脚本运行。
勾选上之后则按实际背景颜色比对图片;

scale_step: 用于控制搜索比例步长,它代表匹配时搜索的精细程度。
进行图像匹配时,会在原始截图的一定缩放范围内以截图最长边 * scale_step 的步长进行搜索。
默认值0.01,取值范围 [0.001, 0.1],推荐值 0.02, 0.005, 0.001。
通常该值不需要调整,当出现跨分辨率匹配(特别是匹配较小截图)无法匹配到时可以尝试减小它。
不过减小它会大幅增加匹配时间;

scale_max: 用于调节匹配的最大范围, 如果要查找的目标UI很小的话,可以适当增大这个数值。
默认值 800, 推荐值 740, 800, 1000 取值范围 [700 , 2000]。

4、当前case运行失败不影响后续case执行:

当前脚本跑失败了,不能影响下一个脚本的正常运行,可以用try except捕获异常。

try下面是正常的操作步骤代码,except下面是当try中的脚本执行失败后,需要执行的兜底步骤代码,用于回到初始页面以保障下一个脚本能正常运行:

5、当目标图片未出现时,重新执行上一步操作

有时候由于软件卡顿或者网络不稳定的原因,导致我们执行A操作后,期望的B图片并没有出现,case执行失败。

这个时候我们可以使用wait函数的intervalfunc参数,当没找到B图片时,重新执行一次A操作。示例代码如下:

查找目标失败时,指定回调自定义的"notfound"函数

def notfound():
print(“No target found”)
wait(Template(r"tpl1607510661400.png"), intervalfunc=notfound)

比如:QQ音乐的分享操作

三、批量运行脚本生成测试报告

1、命令行运行airtest脚本

Airtest IDE中编写脚本完成后,我们可以通过运行按钮完成单个脚本的运行验证。但是只能1次运行1个脚本,如果你想运行一批脚本,完成自动化测试的批量执行工作怎么办呢?

这个时候就需要通过命令行模式运行airtest脚本。具体命令示例如下:

运行脚本生成测试日志文件

airtest run airtest1.air --device Android:/// --log log/airtest1log/

依赖日志文件生成HTML测试报告

airtest report airtest1.air --log_root log/airtest1log/ --outfile log/airtest1log/airtest1log.html --lang zh

也可以使用python运行, 需要依赖airtest库,先安装库:pip install airtest

然后使用命令:

运行脚本生成测试日志文件

python -m airtest run airtest1.air --device Android:/// --log log/airtest1log/

依赖日志文件生成HTML测试报告

python -m airtest report airtest1.air --log_root log/airtest1log/ --outfile log/airtest1log/airtest1log.html --lang zh

其中:

–device Android:/// 表示使用连接的第一个Android设备运行脚本
–log 表示脚本运行日志文件存放的路径
–outfile 表示生成的html测试报告文件存放的路径
–lang zh 表示生成中文版的测试报告,如果要英文版的,使用–lang en

2、解决报告无法在别人电脑上正常查看的问题

这样生成的报告有一个问题:只能在你自己本地查看,发送给别人,在别人的电脑上无法正常查看:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-Hw7hPuYA-1713114592690)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值