不用编程超简单的自动化测试工具:Airtest入门篇教程

news2024/11/25 19:35:56

目录

一、背景

二、什么是Airtest

三、Airtest下载安装

四、Airtest入门使用教程

4.1 连接设备:

4.2 具体测试场景案例:

五、总结

一、背景

很多刚入行或从其他行业转行做测试的同学,日复一日每天做点工已经点得疲惫和麻木,觉得做测试和在厂子里打螺丝没太大区别。也想着做一做自动化测试,奈何自己看着代码就头痛,当初就是因为不喜欢编程才选择的做测试。亦或者由于从其他行业转行过来的,隔行如隔山,编程太痛苦。

那么今天就给大家介绍一款无需编程知识也可以轻松编写自动化测试脚本的工具:Airtest,带各位早日脱离苦海!喜欢的宝子们不要忘了随手关注、点赞!

二、什么是Airtest

Airtest是一个跨平台的、 基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Mac、Android和iOS。

官网地址:http://airtest.netease.com/
官方文档:https://airtest.doc.io.netease.com/

除了Airtest图像识别框架之外,还支持Poco框架,Poco 是一款 基于UI控件识别 的自动化测试框架,也就是常规的通过元素定位识别来完成自动化。目前支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台,也可以在其他引擎中自行接入poco-sdk来使用。

虽然提供了这样的能力,但元素定位方式存在的两个通用缺点:元素位置识别&维护成本高、代码编写效率不高。而如果确实需要使用UI控件识别方案来做自动化的话,web端有Selenium,移动端有Appium,PC桌面端有Pywinauto, 都足够强大且网上各类文档更加丰富,更适合针对性的学习和使用。

因此本文的主角还是Airtest,学习成本低,上手编写脚本快,入门使用无需编程代码知识,即可快速完成大量测试脚本编写。此外当常规UI自动化无法或者很难识别定位元素时,也可利用Airtest图像识别的特性,来解决自动化测试难题。

最后Airtest基于Python,写出来的所有脚本都是Python代码,除了入门级使用之外,也可以进一步使用python做扩展和二次开发,对测试开发同学非常友好。

三、Airtest下载安装

进入官网,Windows 64位系统直接点击下载按钮下载WINDOWS(64BIT)版本即可:


如果是Mac,可以点击“其他平台版本”,下载Mac版本:


下载后纯绿色版,无需安装,直接解压文件,在解压的文件夹中找到AirtestIDE.exe, 运行即可:

注册登录账号那一步可以点击“Skip”跳过,不登录同样可以正常使用。进入后页面如下:

四、Airtest入门使用教程

4.1 连接设备:

1、我们以自动化测试QQ音乐为例,先启动QQ音乐。然后回到Airtest IDE,新建点击“窗口”菜单,勾选上“Devices”, 点击“Windows窗口连接”的连接桌面图标,如下图:

2、连接成功后,会发现左侧“Airtest辅助窗”下方的按钮都变为了可点击状态。鼠标悬停在对应的按钮上,会显示按钮的参数使用说明,如下图:

3、然后点击菜单栏的“+”号,新建“.air Airtest项目”,输入项目名称,IDE会自动导包初始化脚本,如下图:

4、这个时候切换到QQ音乐窗口,然后缩小Airtest IDE窗口的大小,目的是让你可以使用“Airtest”辅助窗下面的各个功能按钮截取到QQ音乐上对应操作的图片:


5、接下来就非常简单了,使用“Airtest”辅助窗下面的各个功能即可快速实现你要测试的场景。Airtest常用按钮说明:

touch:点击操作
text: 输入文本操作
sleep:睡眠操作,单位是秒
exists: 是否存在,返回true or false,用于编写逻辑判断代码时使用
assert_exists: 断言是否存在,用于测试断言使用
snapshot:截屏并保存为文件

4.2 具体测试场景案例:

比如测试需求是:搜索指定歌曲:孤勇者,并选择陈奕迅版本,进行播放。我们先来看一下最终用airtest实现的效果:

airtest自动化测试示例

下面我们来看详细实现步骤:

1、第一步是:点击搜索框。在Airtest IDE中点击touch按钮,框选上QQ音乐搜索框图片,选完图片后可以看到IDE中脚本已经生成:

2、第二步:输入歌曲名字“孤勇者”并执行搜索操作。这一步直接点击Airtest IDE中“text”按钮,在弹窗中输入文字“孤勇者”,脚本就生成了:

输完文字后,点击搜索图标执行搜索操作:

3、第三步:点击陈奕迅版本的孤勇者,进行播放。touch框选上图片:

但是touch只是鼠标单击,如何实现双击效果呢?鼠标移动touch上,可以看到它有times函数,默认是点击1次,我们将times设置为2:

实际效果是并没有触发双击效果,因此一种解决方案是:单击一次后会出现播放按钮,我们再点击一次播放按钮。
另一种解决方案是:使用另外一个函数double_click,则会触发双击效果:

注意:由于搜索出来有很多版本的“孤勇者”歌曲,因此有很多其他版本的“孤勇者”歌曲图片和我们截取的图片相似。而airtest图片识别默认的阈值是0.7,即70%匹配就认为匹配上了。

因此如果出现偶尔会点击到其他版本的“孤勇者”歌曲的情况,可以在Airtest IDE中双击该图片,设置该图片的识别匹配阈值为0.9,提高为90%匹配才算匹配上,就可以解决这个问题:

五、总结

至此,脚本就编写完成了。总结一下测试步骤:
1、点击QQ音乐搜索框
2、输入歌曲名称:孤勇者
3、点击搜索按钮
4、双击陈奕迅版本的孤勇者播放音乐

对应Airtest脚本如下:


结论:所见即所得,只需要按照你的测试步骤,鼠标框选对应的图片去录制一遍,即可实现自动化测试效果。整个过程很好理解,也不需要有什么编程知识,妈妈再也不用担心我不会编程,就无法做自动化测试了。赶紧去试试吧!

当然,实际工作中的自动化测试场景,有的会比上面的这个场景复杂得多,那么作为一款优秀的自动化测试软件,自然也是要具备应对更复杂场景的能力。本文只是作为入门篇,让没有用过的同学先入门


如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

全套资料获取方式:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/650053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数仓架构“瘦身”,Hologres 5000CU时免费试用

Hologres基于创新的HSAP架构,可以将您原先数仓架构中的OLAP系统(Greenplum、Presto、Impala、ClickHouse)、KV数据库/Serving系统(HBase、Redis)统一在一个大数据计算引擎中,并提供快速的离线实时一体化分析…

企业如何搭建公司的宿舍管理系统?让数字化改变新的管理方式

什么是企业宿舍管理系统 企业宿舍管理系统是一种用于管理企业宿舍的软件。它可以帮助企业更好地管理公司的宿舍,包括员工选房、入住登记、租金管理、公共设施预订等。该系统通常使用计算机和互联网技术,以便更高效地处理和记录与宿舍相关的活动和任务。…

【Nginx】Ubuntu23.04 安装Nginx

Ubuntu23.04 安装Nginx 1.官方文档2.命令补充 1.官方文档 ❤️ 根据Nginx官方文档在Ubuntu23.04版本上安装Nginx,直接跟随步骤复制命令即可。 → Nginx官方Ubunt安装文档 如图: 这里复制了一份,并翻译了: 安装必备组件&#xff1…

【剑指offer专项突破版】哈希表篇——“C“

文章目录 前言一、插入、删除和随机访问都是 O(1) 的容器题目分析思路分析代码 二、最近最少使用缓存题目分析思路分析代码 三、有效的变位词题目分析代码 四、变位词组题目分析思路分析代码 五、外星语言是否排序题目分析思路分析代码 六、最小时间差题目分析思路分析代码①—…

与行业协会共同探索创新前景:B端企业如何拓展品牌与业务增长

B端营销中行业协会是一个非常重要的渠道和抓手,因为这基本上是由企业产品的目标客户组成,但如何利用好行业协会,并低成本的拓展业务需要结合自身业务特点进行规划设计。 Oliver Du 一、行业协会的运作机制与权利结构 行业协会是由行业内的企…

【二等奖方案】系统访问风险识别「LOL四缺一」团队解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路。本方案为【系统访问风险识别】赛题的二等奖获奖方案,赛题地址:…

从原理到实践,分析 Redis 分布式锁的多种实现方案(一)

一、为什么要用分布式锁 在分布式系统中,为了保证多个进程或线程之间的数据一致性和正确性,需要使用锁来实现互斥访问共享资源。然而,使用本地锁在分布式系统中存在问题。 本地锁的问题 无法保证全局唯一性:本地锁只在本地生效&…

2023年打印机电商市场数据分析

近年来,伴随自动化办公及在线教育等场景的常态化,文件或学习资料等的打印需求不断增长,这也使得打印机需求暴增,打印机市场的市场规模也越来越大。 根据鲸参谋电商平台的相关数据显示,今年1月份至4月份,打印…

进程等待

文章目录 一、进程的结果二、进程等待 一、进程的结果 在现实生活中找别人帮忙办事,别人同意帮忙之后,会反馈给自己的结果无非就是三种: 别人把事办完了,结果是自己想要的别人把事办完了,由于办事的方法错误&#xf…

利用代理ip实现自动化爬虫任务管理

我们在进行爬虫任务管理时,需要对爬取目标、爬取频率、数据存储等多个方面进行规划和管理。使用HTTP代理可以帮助我们提高爬虫效率,同时也可以实现自动化的爬虫任务管理。下面我们来分析一下怎么利用代理ip实现自动化爬虫任务管理。 一、选择代…

Server - 配置 Kubeflow Notebooks 的 JupiterLab 环境

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131231501 Kubeflow 的 Notebook 功能是一种方便的方式,让用户可以在 Kubernete s集群上创建和管理交互式的 Jupyter Notebo…

招生 | 北京大学—知识图谱能力提升培训

北京大学继续教育项目 《北京大学—知识图谱能力提升培训班》 招生简章 培训安排 (一)培训时间 上课时间:2023年7月15日—7月17日 上课方式:在北京大学燕园校区(校本部)线下集中授课 (二&a…

科技云报道:大模型时代,AI基础软件机会何在?

科技云报道原创。 大模型时代,离不开算力,算法、数据的喂养。如果将视角放至整个产业链上,算法背后,还有一个关键要素值得被关注,那就是AI基础软件。 算法是实现AI功能的关键,而基础软件则为算法提供运行…

【Unity】代码控制视频的播放(视频播放器-更新)

结果如上图,之前写过一个使用代码控制视频播放器的Demo,但是好多小伙伴说我附带的链接没法下载,这次我直接做一个完整版的,不用下载,照着一步一步做就能做出来。 之前写了如何设置RawImage进行自动播放,大…

movetoThread应用的注意点

分析 官网的说明: void QObject::moveToThread(QThread *targetThread) Changes the thread affinity for this object and its children. The object cannot be moved if it has a parent. Event processing will continue in the targetThread. To move an objec…

流动微管反应器的精密压力控制解决方案

摘要:针对目前连续流反应器或微反应器压力控制中存在手动背压阀控制不准确、电动或气动背压阀响应速度太慢、无法适应不同压力控制范围和控制精度要求、以及耐腐蚀和耐摩擦性能较差等诸多问题,本文提出了相应的解决方案。解决方案的核心是分别采用了低压…

装配式从上世纪就开始了?到现在与BIM还干了这件大事!

​大家好,这里是建模助手。 说起装配式,相信各位都不会陌生。在我国传统建筑业资源浪费率高、污染重而饱受诟病的背景下,施工污染少、建造速度快、资源利用率高的装配式越来越受社会关注。 除了一些常规化的特点,如:…

4.2.2 基础指令的操作

显示日期与时间的指令: date 显示日历的指令: cal 简单好用的计算机: bc 1. 显示日期的指令: date 如果在命令行中想要知道目前Linux系统的时间,那么就直接在命令行界面输入date即可显示: [dmtsaistud…

小程序开发的优点和挑战:全面解析

小程序开发的优点是什么? 对于许多人来说,小程序的出现并没有给他们带来太多惊喜。然而,在过去的几年里,微信一直在努力成为更具影响力的社交平台,并且对于小程序开发的需求也在不断增加。随着小程序应用程序在其生态…

Spring Boot 属性加载原理解析

基于Spring Boot 3.1.0 系列文章 Spring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解Spring Boot 属性配置解析Spring Boot 属性加载原理解析 在《Spring Boot 框架整体启动流程详…