集成AI的移动自动化测试

news2024/11/23 21:01:42

集成AI的

移动自动化测试

前一阵子小编看到了爱奇艺Android架构师的一篇文章《爱奇艺基于AI的移动自动化框架的设计与实践》。介绍了了一种基于AI算法的自动化测试框架Aion,该框架融合了传统图像处理和深度学习方案。虽然目前该框架还未开源,但是给了小编很多启发。

《爱奇艺基于AI的移动自动化框架的设计与实践》中的介绍图

后来,小编调研过程中发现,Appium也已经在探索AI自动化测试的解决方案,目前已经提供了Appium分类器插件,将AI算法结合在元素定位上。

Q:

什么是分类器

概括来说:分类器是用于机器学习/数据挖掘中学习或训练出来的一个函数或者模型

举个例子,假如有一个小朋友,从来没见过猫和狗,我们给他一堆猫猫狗狗的图片,并且告诉他可以看耳朵、眼睛、尾巴、鼻子等等来判断的方法,每给他一张图片都告诉他这是猫或者这是狗,后来小朋友就学会了根据耳朵、眼睛、鼻子、尾巴等特征判别猫和狗的方法。这个方法,就是分类器。

Appium中的分类器就是利用AI的方法判别图标/图形的一个方法。目前这个分类器已经可以识别105个图标/图形。

举个例子,我们经常在各种APP中遇到搜索框,可能会看到这样的,那样的,什么样子的都有。

这些搜索框的定位如果用传统方法就要一个一个的去找id等方法,很麻烦。仔细观察,可以发现搜索框里面都有一个放大镜图标,这个就可以用分类器去找到,然后调用click方法就可以点击到搜索框区域了。

Q:

怎样使用Appium AI插件

第一步,安装Android SDK

小编比较推荐直接安装Android Studio,因为里面集成了Android SDK,Android Studio里也有模拟器等工具可以在以后的测试中使用。

第二步,安装Appium

最新的Appium已经是15.1版本了,直接官网下载安装应用安装即可,省去了老版本一些复杂的配置步骤。

第三步,安装Appium AI插件

可以在GitHub上找到,这个插件的安装也很简单,GitHub页面上给出了npm命令(这里需要先有node.js的环境),直接运行即可,如果遇到报错可以切换源重试。

第四步,使用

下面小编提供一个示例代码,用于打开今日头条并根据AI定位到搜索图标点击,从而实现点击到搜索框区域。从而减少了找元素id的时间。

from appium import webdriver
from time import sleep

CAPS = {
    "deviceName": " HONOR 9x",
    "automationName": "UiAutomator2",
    "platformName": "Android",
    "platformVersion": "9.0",
    "appPackage": "com.ss.android.article.news",
    "appActivity": "com.bytedance.news.schema.AdsAppActivity",
    "noReset": True,
    "unicodeKeyboard": True,
    "resetKeyboard": True,
    "customFindModules": {"ai": "test-ai-classifier"},
    "testaiConfidenceThreshold": 0.1,
    "shouldUseCompactResponses": False,
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', CAPS)
sleep(5)

# 用 Appium AI 插件定位到搜索框
driver.find_element_by_custom("ai:search").click()
sleep(5)

复制

在caps里面有和平时使用的区别是增加了四个参数。其中automationName必须指定为‘UiAutomator2’或者是‘Espresso’,customFindModules必须指定为‘{"ai": "test-ai-classifier"}’;testaiConfidenceThreshold是机器学习中最低置信度的参数,默认值是0.2;shouldUseCompactResponses可以加快获取插件的输入过程。

写在最后

最后的开头,小编想说当前AI元素定位的缺点,就是Windows系统还不支持,因为Appium AI 插件需要一些系统依赖项来处理图像,另外各种限制也约束也比较多,并没有真正的集成到Appium中。希望早日能够支持全平台下使用该AI插件,并且不断扩充功能,也不仅仅限于元素定位。

在爱奇艺的AI移动端自动化测试的文章中写到:结合AI的移动端自动化能够利用 AI 解决更多问题,如页面异常检测、用户行为预测,页面预加载等。小编也非常看好AI在移动端测试中发现更多有价值、普通测试手段发现不了的问题。


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

 

软件测试面试文档

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

 资料获取方式:

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

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

相关文章

行为式验证码(成语点选)(C#版和Java版)

一、先看效果图 二、背景介绍 图形验证码网上有挺多,比如:网易易盾、腾讯防水墙、阿里云验证码等等。参考了一下,自己实现了一个简单的成语点选的模式。 三、实现思路 1.选择若干张图片(这里使用的是320x160的尺寸)…

一篇搞懂steam/csgo搬砖原理

接触csgo游戏搬砖项目三年了,也有在别的论坛交流心得。让我无语的是有些已经游戏搬砖差不多半年,却还告诉我没有赚到钱,又或者说时常到可出售的时候利润少的可怕,总是说这个行业说水太深了!那么请你告诉我,…

透过完美世界,再看游戏企业的主线价值

这段时间,游戏圈颇不平静。 虽说行业整体几家欢喜几家愁,但这至少反映出,版号发放常态化后,游企活力更足了,卯足了劲寻找突破点。 其中,相对于成熟作品带来的业绩成果,在研项目和新游表现实际…

JS:数组里面有多个子数组,想要获取每个子数组的第一个元素

前言 数组里面有多个子数组,想要获取每个子数组的第一个元素,例如:需要获取每个数组里面的水果 var data[["苹果", "猪","西兰花"],["草莓", "牛","黄瓜"],["樱桃"…

低代码或将颠覆开发行业?

文章目录 前言一、什么是低代码开发平台二、强大的平台总结 前言 传统的软件开发过程往往需要耗费大量的时间和精力,因为开发人员需编写复杂的代码以完成各种功能。 低代码行业的发展,正好解决了这个问题,让复杂的代码编写一去不复返了。 …

通过Windows WSL在GPU上运行tensorflow 2.12

背景 从tensorflow 2.10开始,已经没有tensorflow-gpu相应的版本在Window GPU运行了,只能通过在window上安装WSL2,在wsl2里运行tensorflow的方式调用GPU.当然你也可以回退到老的tensorflow-gpu的版本,不过你如果要用新的tensorflo…

go初识iris框架(二) - get,post请求和数据格式

继初步了解iris后 文章目录 获取url路径获取数据get请求post请求获取JSON数据格式JSON返回值获取XML数据格式XML返回值 获取url路径 package mainimport "github.com/kataras/iris/v12"func main(){app : iris.New()app.Get("/hello",func(ctx iris.Conte…

旅行社优惠卡小程序软件开发

旅游业的不断发展,越来越多的旅行社开始提供各种优惠卡小程序软件,以吸引更多的游客。这些小程序软件可以为游客提供各种优惠,例如门票折扣、酒店预订折扣、旅游线路折扣等等。 开发旅行社优惠卡小程序软件需要考虑以下几个方面&#xff…

java项目之贝儿米幼儿教育管理系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的贝儿米幼儿教育管理系统。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java…

Ceph 分布式应用2

一、创建 CephFS 文件系统 MDS 接口 1、服务端操作 1)在管理节点创建 mds 服务 [rootadmin ceph]# cd /etc/ceph [rootadmin ceph]# ceph-deploy mds create node01 node02 node03 [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.c…

129、仿真-基于51单片机数字万用表测电压电流电阻仿真设计(Proteus仿真+程序+参考论文+配套资料等)

方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

二、DDL-5.小结

一、数据库操作 1、查询 查询所有数据库 show databases; 查询目前所处数据库 select database(); 2、进入 进入某个数据库 use itcast; USE 数据库名; 3、创建 创建数据库 create database itcast; create database [if not exists] itcast; create database [if not …

Spring Actuator 监控管理

Spring Actuator 监控管理 Spring Actuator 是 Spring Boot 提供的一个功能强大的监控和管理端点。它提供了一系列的 HTTP 端点&#xff0c;可以用来监控应用程序的运行状态、健康状况、性能指标等信息。这些端点可以通过 HTTP 或 JMX 访问。 <dependency><groupId&g…

Java:字符串String详解(用法+例子)

目录 String字符串拼接字符串截取与数字相接不可变字符串检测字符串是否相等字符串常量池空串和null串码点与代码单元String API字符串数组构建字符串buffer机制String、StringBuilder、StringBuffer 区别 比特流、网络流、文件流 String 字符串拼接 除了基本类型都叫引用类型…

python 笔记:you-get

下载视频/音乐/图片 使用pip安装you-get pip3 install you-get 之后在命令行执行下载操作 1 主要命令行参数 -n --no-merge 如果视频分p&#xff0c;不进行合并--no-caption不下载弹幕、歌词等 -f --force 覆盖已存在的文件 -F STREAM_ID --format STREAM_ID 指定视频下载…

TypeError: issubclass() arg 1 must be a class

在使用spacy加载模型时报错&#xff0c;错误&#xff1a;TypeError: issubclass() arg 1 must be a class 解决方法 降低spacy的版本&#xff0c;我之前是3.5.3&#xff0c;降到3.5.2即可。

Monocular 3D Object Detection with Depth from Motion 论文学习

论文链接&#xff1a;Monocular 3D Object Detection with Depth from Motion 1. 解决了什么问题&#xff1f; 从单目输入感知 3D 目标对于自动驾驶非常重要&#xff0c;因为单目 3D 的成本要比多传感器的方案低许多。但单目方法很难取得令人满意的效果&#xff0c;因为单张图…

[Volo.Abp升级笔记]使用旧版Api规则替换RESTful Api以兼容老程序

Volo.Abp 配置应用层自动生成Controller&#xff0c;增删查改服务&#xff08;CrudAppService&#xff09;将会以RESTful Api的方式生成对应的接口 (官方文档)&#xff0c;这与旧版本的Abp区别很大。RESTful固然好&#xff0c;虽然项目里新的Api会逐步使用RESTful Api代替旧的&…

JavaScript运算符

减法运算符 在JavaScript中&#xff0c;我们可以使用简单的减法来计算一下你的出生年龄&#xff0c;例如&#xff1a; const zhangSan 2023 - 2000; console.log(zhangSan);● 当然&#xff0c;我们也可以在控制台中&#xff0c;一次性传入多个值&#xff1b; const zhangS…

测试模型中理解压力测试和负载测试

压力测试 对应的性能测试模式就是固定线程&#xff0c;通过使用固定线程的模式对服务进行性能测试&#xff0c;或者使用阶梯型的线程递增模式进行性能测试。 通过控制线程数来进行不同场景的测试。 关注指标&#xff1a;处理能力&#xff08;QPS或者说TPS&#xff09;&#…