通知:【公众号更名为:程序员臻叔】
关注领福利:
回复「测试」:获取最常用的测试用例模版+常用的测试工具。 回复「面试」:臻叔原创《测试岗笔面试真题宝典》
回复「简历」:送你臻叔私人珍藏的测试简历模板。 回复「书单」:获取2021年软件测试工程师必看的书单。
回复「python」:免费获取「python入门」高分好书,业余时间偷偷变牛逼。
回复「java」:即可获得java经典学习资料,带你轻松入门java编程。
回复「java面试」:获得BAT校招社招185页JAVA面试题合集。
最近新买了一本书《AI自动化测试:技术原理、平台搭建与工程实践》,作者是腾讯TuringLab团队。
这个团队还是很厉害的,本来腾讯就是游戏领域的佼佼者,腾讯的AI自动化测试自然也是行业内领头羊一般的存在。
然而看了之后发现内容好难,涉及到很多AI算法原理,如果这块没有很扎实的基础,还是挺难看懂的。但是。。买都买了,也只能硬着头皮看下去,顺便做了一部分的读书笔记,分享出来希望能对大家有帮助吧。虽然里边有些内容和专项测试关联不大,但是看看行业顶尖技术团队是怎么做测试的,开阔下眼界,也许对未来的哪部分工作就有启发也说不定呢?
本书分为三部分。
第一部分是原理篇,重点介绍图像识别和增强学习相关的AI算法原理,为后续学习具体工具的落地应用打下基础。
第二部分是平台篇,详细介绍了腾讯游戏AI自动化开发工具的设计与实现,包括和Android设备的对接、数据标注流程及AI算法在游戏自动化中的具体实现等。
第三部分是实践篇,详细介绍了不同需求场景下的实践案例。读者可以在实际游戏产品的测试中使用本书所介绍的工具实现不同需求,并可尝试在此基础上实现定制化功能。
一、读书笔记
第一部分 原理篇
第2章 图像识别算法
2.4 图像识别方法在游戏测试中的应用
2.4.1 特征点匹配在场景覆盖性测试上的应用
场景覆盖性测试:
指测试游戏在实际运行过程中覆盖到多少场景。
【特征点匹配】在【场景覆盖测试上】的【工作流程】
第3章 强化学习(RL)
强化学习(Reinforcement Learning, 简称RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
这里我查阅了2份关于RL的资料,供大家参考:
1)我勒个矗:强化学习(Reinforcement Learning)知识整理:
https://zhuanlan.zhihu.com/p/25319023
2)为什么说强化学习在近年不会被广泛应用?
https://www.zhihu.com/question/404471029
3.4 强化学习在自动化测试中的应用
本节以赛车游戏为例介绍如何使用A3C进行自动化测试。
注:A3C(Asynchronous Advantage Actor-Critic)是强化学习中一种可以有效利用计算资源,,并且能提升训练效用的算法。
在进行自动化测试之前,我们需要训练强化学习模型,训练流程如下图所示:
【强化学习】的【训练流程】
【强化学习使用】的【各个区域示意图】
AlexNet从输入层到全连接层,包含5个卷积层和3个池化层。
什么是AlexNet? - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1575745
A3C网络结构示意
原文摘录:
在设计赛车游戏动作时:
1、可以使用离散的动作,包括:左转、右转和无动作。这样的动作设计方式比较简单,便于强化学习模型快速训练出效果。
2、也可以使用连续的动作,将漂移添加到动作中,让强化学习模型学习左转、右转、漂移和无动作的执行时刻和执行时长。
3、在训练时需要使用3.3.4节中介绍的A3C训练过程,利用分布式结构提高样本的采集速度,缩短强化学习模型的训练时间。
当训练完成后,就可以使用训练好的强化学习模型在游戏关卡中进行自动化测试了。
第4章 模仿学习
模仿学习是一种游戏AI算法,其本质是**从玩家录制的游戏样本中学习潜在的游戏策略经验,**也称为示范学习和学徒学习,主要思想是通过专家演示学会如何完成一个任务。
模仿学习(Imitation Learning)概述:
https://blog.csdn.net/caozixuan98724/article/details/103765605
目前研究主要分为行为克隆和逆强化学习两种。
4.1 什么是模仿学习
游戏Al是游戏自动化测试的重要组成部分,可以通过硬编码、强化学习和模仿学习的方式实现。
三种方式的优缺点对比:
1)模仿学习:需要玩家录制玩游戏的样本,记录不同状态对应的动作,随后从这些样本中学习特定的游戏策略。
与强化学习相比,模仿学习不需要人工设计奖励函数,其中的行为克隆算法不需要与游戏环境进行交互,能在短时间内完成游戏Al的训练。
2)强化学习:通过与环境进行交互,记录状态、执行的动作以及对应的奖励,将累积奖励期望最大化来优化模型参数。
- 优点:通过多次与环境交互后能得到较好的Al效果;
- 缺点:会耗费大量的时间,同时非常依赖人工设计的奖励函数。
3)硬编码:根据玩家玩游戏总结的规则编写的游戏Al策略。
- 优点:可以根据游戏目标定制游戏A策略,便于添加策略;
- 缺点:要求研究人员对游戏有较深入的认知,且不同游戏的AI策略变化较大,很难实现泛化。
4.2.1 行为克隆
原文摘录:
行为克隆:可以看作一种监督学习的算法。
其主要思路是:根据玩家提供的游戏录制的样本,由Al通过深度网络等模型从样本集中提取玩家玩游戏的策略,当Al与游戏环境交互时,能匹配当前的游戏状态,然后模仿玩家的动作进行应对。
该算法与监督的图像分类问题很相似,但行为克隆的难度更高。
行为克隆的优点:
在训练过程中,行为克隆不需要与真实环境进行交互,仅需要提供玩家录制的样本就可以训练,极大地降低了使用门槛,而无须使用游戏内部接口。
特斯拉“行为克隆”技术曝光:无需写代码,实现全自动驾驶?
https://baijiahao.baidu.com/s?id=1623972292257704647&wfr=spider&for=pc
4.2.2 逆强化学习(IRL)
强化学习训练出来的Al效果对奖励函数非常敏感,往往需要长时间的尝试才能设计出比较理想的奖励函数,且在复杂游戏中,很难设计高效的奖励函数。
为了解决这个问题,研究者提出了逆强化学习算法,其能根据专家录制的样本推导潜在的奖励函数,避免人工设计,降低了研究者的使用门槛。
什么是逆强化学习? - 知乎
https://www.zhihu.com/question/68237021
逆向强化学习(Inverse Reinforcement Learning)简介 - 郑思座的文章 - 知乎
https://zhuanlan.zhihu.com/p/317846683
4.3 模仿学习在自动化测试中的运用
这块比较专业,作者以飞车游戏为案例,较详细的讲解了模仿学习在自动化测试中的运用,建议去看原文。
第5章 Android设备调试
5.1 Android调试桥
5.1.1 adb常用命令介绍
关于Adb命令,臻叔之前也总结过一篇文章:
移动端测试工程师必备的Adb命令 ,让你的测试事半功倍!
https://zhuanlan.zhihu.com/p/364980782
5.1.2 ADB原理
感兴趣的可以去看原文,这里就不赘述了。
5.2 Android实时截屏
5.2.1 minicap介绍
minicap是开源项目STF(Smartphone Test Farm)中的一个工具,负责屏幕显示,是STF框架的依赖工具之一。minicap提供了以套接字(Socket)接口的方式获取Android设备的实时截屏数据,可以很方便地用于其他程序来实时获得手机截屏。
网易的airtest、云真机等平台中均使用了该开源库。
地址:https://github.com/openstf/minicap
5.2.2 minicap使用
书上有详细介绍,我这里也找了一篇参考资料:
Python实现minicap协议解析并通过PyQt渲染
https://www.jianshu.com/p/777af34b4f21
5.3 Android模拟器
5.3.1 Android Emulator介绍
Android 模拟器可以在PC上模拟 Android 设备,进行各个 Android API 级别测试。
Android 模拟器几乎可以提供真正的 Android 设备所具备的所有功能。 比如:模拟来电和短信、指定设备的位置、模拟不同的网速、模拟旋转及其他硬件传感器、访问 Google Play 商店,等等。
**从某些方面来看,在Android 模拟器上测试比在实体设备上测试要更快、更容易。**例如,将数据传输到模拟器的速度比传输到通过 USB 连接的设备更快。
Android 模拟器还随附了针对各种 Android 手机、平板电脑、Wear OS 和 Android TV 设备的预定义配置。
参考资料:
在 Android 模拟器上运行应用 | Android 开发者 | Android Developers
https://developer.android.google.cn/studio/run/emulator
Android模拟器系统架构
5.3.2 其他模拟器介绍
第二部分 平台篇
为了在游戏测试中引入自动化测试, 腾讯互娱 TuringLab 实验室研发了 Game AI SDK 自动化 AI 测试平台。(官网:https://aitest.qq.com/)
Git 开源地址:https://github.com/Tencent/GameAISDK
GAME AI 官网截图
目前已接入王者荣耀(MOBA)、穿越火线(射击类)、天天爱消除(消除)、和平精英(射击)、QQ飞车(赛车)、龙之谷(MMO)等游戏,应用范围十分广泛。
同时还可以应用在手机 APP 及 Windows 应用程序方面。不但适用于手机游戏专项测试,手机 APP 专项测试,而且适用于 PC 端游戏,软件等专项测试(专项测试是指如手机兼容性测试,客户端服务器端性能测试,版本回归冒烟测试,跑图覆盖率及代码覆盖率测试,软件健壮性及 crash 测试等这一类测试)。
整体系统模块
GAME AI SDK平台架构图
关于GAME AI SDK平台的各种介绍,还可以看下边这篇文章:
基于图像识别的AI自动化测试框架:GAME AI SDK平台解析
https://blog.csdn.net/QcloudCommunity/article/details/111189288
接下来的章节,非常详细的介绍了这个平台的使用。
这部分也建议直接看原文,自己挑感兴趣的内容看,跟着流程走一遍就可以了。
第三部分 最佳实践篇
第12章 手机游戏兼容性测试
目标检测算法是兼容性测试的基础,可以采用模板匹配或深度学习网络,检测多分辨率手机中的UI按钮,对尺度、光照、动画效果的变化较为稳定。
12.1 基于图像的兼容性测试
针对兼容性测试,目标检测框架需要在多分辨率手机上实现通用性。
本节介绍了一种基于轻量化网络的目标检测方法,在精度下降较小的情况下,提升目标检测的速度,在CPU下达到实时检测的效果。
游戏目标检测流程:
游戏目标检测流程
更详细的步骤见原文。
12.2 基于UI动作传递的兼容性测试
UI动作传递方法:可以根据人工录制的UI测试样本复现测试流程,操作简单,无须配置模板,可以提升UI测试的效率。更适合传统的UI样例测试,但是需要针对每个测试样例录制样本。
U|动作执行的具体流程
详细的步骤和原理见原文。
12.3 基于UI自动探索的兼容性测试
UI自动探索方法:省去了录制样本的步骤,按照策略自动探索UI场景,无须人工录制测试流程。
本节主要实现UI场景的探索和UI按钮的自动点击,其中核心内容为按钮的检测和场景的识别。
UI场景中需要点击的按钮示例:
UI场景中需要点击的按钮示例
基于纯图像的UI自动探索流程:
基于纯图像的UI自动探索流程
更详细的步骤见原文。
第13章 自动化Bug检测
本章介绍了3种游戏中常见的Bug类型(贴图丢失、角色穿墙、碰撞穿模),及其自动化检测方法。具体为通过分析每种Bug的特点,利用图像处理和深度学习相关知识,针对不同Bug设计不同的 Bug检测方法。
第14章 自动机器学习
14.1 自动机器学习概述
原文摘录:
自动机器学习(AutoMachine Learning,AutoML)的目标是使用自动化的数据驱动方式进行深度学习模型的训练。
用户只需要提供数据,自动机器学习系统就能自动地学习到合适的神经网络架构、训练超参数以及优化方法,无须人工干预。这样,用户不用再苦恼于学习深度学习算法中的各个知识要点和训练技巧。
很多大公司都有自己的自动机器学习平台,比如谷歌的Cloud AutoML、亚马逊的SageMaker、微软的Azure、阿里巴巴的PAI AutoML、百度的EasyDL等。
我查了下新闻,发现百度最近还推出了可灵活支持本地化或云端部署的自动机器学习平台“ORCA”,主要是为金融机构客户提供快速高效开发AI模型的能力。
百融云创ORCA自动机器学习平台
14.2 参数搜索策略
14.3 NNI安装和使用
NNI(Neural Network Itelligence)是由微软开发的自动机器学习工具包,通过多种调优算法来搜索深度学习模型架构和超参数,并且支持单机、多机和云等不同运行环境。
注意:NNI的所有文档都有中文版。
NNI完整中文文档链接 :https://aka.ms/nnizh
NNI 的 GitHub 社区 :https://aka.ms/nniis
具体的安装使用可以参考原文,原文里也以MNIST数据集为例,讲解了NNI的使用步骤和训练效果。
同样我也查了下NNI的资料,发现微软亚洲研究院也有比较详细的解释,笔记里只截取部分:
如何看待微软最新发布的AutoML平台NNI?
https://www.zhihu.com/question/297982959/answer/957877805
NNI 入门与超参优化
NNI 的安装基于 Python pip 命令,“pip install nni”即可一步完成。
NNI 的使用也非常简单:首先,定义好需要搜索的超参空间;然后,在需要调参的网络启动之前,通过 NNI 的接口读取参数并在训练中将精确度等指标传入 NNI;最后,配置好要使用的调参算法等,即可开始。
具体过程可参考入门教程:https://aka.ms/nnizq
你也可以在这里找到所有示例:https://aka.ms/nnize
二、本书的目录
前言
作者简介
第一部分 原理篇
第1章 AI与自动化测试
1.1 自动化测试的发展与现状
1.2 AI的发展与应用
1.3 AI与自动化测试相结合
1.4 本章小结
第2章 图像识别算法
2.1 图像识别
2.2 传统的图像识别算法
2.2.1 模板匹配算法
2.2.2 特征点匹配算法
2.2.3 梯度特征匹配算法
2.3 基于深度学习的图像识别算法
2.3.1 卷积神经网络
2.3.2 卷积神经网络模型
2.4 图像识别方法在游戏测试中的应用
2.4.1 特征点匹配在场景覆盖性测试上的应用
2.4.2 游戏场景图像的物体识别
2.5 本章小结
第3章 强化学习
3.1 基本理论
3.2 基于值函数的强化学习
3.2.1 值函数
3.2.2 DQN
3.3 基于策略梯度的强化学习
3.3.1 策略梯度
3.3.2 Actor-Critic
3.3.3 DDPG
3.3.4 A3C
3.4 强化学习在自动化测试中的应用
3.5 本章小结
第4章 模仿学习
4.1 什么是模仿学习
4.2 模仿学习研究现状
4.2.1 行为克隆
4.2.2 逆强化学习
4.3 模仿学习在自动化测试中的运用
4.4 本章小结
第5章 Android设备调试
5.1 Android调试桥
5.1.1 adb常用命令介绍
5.1.2 ADB原理
5.2 Android实时截屏
5.2.1 minicap介绍
5.2.2 minicap使用
5.3 Android模拟器
5.3.1 Android Emulator介绍
5.3.2 其他模拟器介绍
5.4 本章小结
第二部分 平台篇
第6章 AI SDK平台介绍
6.1 Game AI SDK平台功能
6.2 Game AI SDK平台架构设计
6.3 Game AI SDK平台流程
6.3.1 AI算法流程
6.3.2 图像识别任务流程
6.4 Game AI SDK平台模块结构
6.4.1 图像识别模块
6.4.2 AI算法模块
6.5 本章小结
第7章 AI SDK自动化测试平台搭建
7.1 Windows环境搭建
7.1.1 创建虚拟环境
7.1.2 安装AI SDK
7.1.3 安装SDK Tool
7.1.4 安装AI Client
7.2 Linux环境搭建
7.3 如何运行AI SDK
7.3.1 安装APK
7.3.2 游戏配置说明
7.3.3 启动服务
7.4 本章小结
第8章 AI SDK Tool详解
8.1 配置项目
8.1.1 安装
8.1.2 配置项目
8.2 标注GameReg任务
8.3 标注UIRecognize任务
8.4 调试
8.4.1 AI SDK Tool和GameReg之间的调试
8.4.2 AI SDK Tool和UIRecognize之间的调试
8.5 AI SDK Tool的其他功能
8.5.1 添加动作配置
8.5.2 添加地图路线
8.5.3 图结构路径配置
8.6 本章小结
第9章 图像类接入Game AI SDK平台
9.1 通过SDK Tool生成平台所需数据
9.1.1 生成UI配置文件
9.1.2 生成模仿学习样本
9.2 基于图像的AI方案
9.2.1 基于小地图的特征提取
9.2.2 样本扩充
9.2.3 模型和训练
9.3 使用Game AI SDK平台进行AI自动化测试——手机兼容性测试
9.4 使用Game AI SDK平台进行AI自动化测试——场景测试
9.5 使用Game AI SDK平台进行AI自动化测试——花屏类测试
9.6 本章小结
第10章 数据类手游接入Game AI SDK平台
10.1 Game AI SDK接入方案
10.1.1 集成GAutomator实现游戏接口
10.1.2 通过游戏接口获取AI输入数据
10.1.3 通过动作接口执行AI动作
10.2 基于数据的AI方案介绍
10.2.1 算法描述
10.2.2 实现功能
10.3 使用Game AI SDK平台进行AI自动化测试——跑图覆盖测试
10.4 使用Game AI SDK平台进行AI自动化测试——手机性能测试
10.5 使用Game AI SDK平台进行AI自动化测试——地图平衡性测试
10.5.1 游戏AI的课程学习方式
10.5.2 游戏AI的深度强化学习训练架构
10.5.3 深度强化学习的神经网络模型设计
10.6 本章小结
第11章 AI SDK平台二次开发
11.1 AI SDK平台二次开发介绍
11.1.1 AI SDK二次开发框架
11.1.2 AI SDK二次开发API
11.2 基于规则的AI设计和开发
11.2.1 基于规则的AI介绍
11.2.2 基于规则的AI实践
11.3 基于模仿学习的AI设计和开发
11.3.1 基于模仿学习的AI介绍
11.3.2 基于模仿学习的AI实践
11.4 基于强化学习的AI设计和开发
11.4.1 基于强化学习的AI介绍
11.4.2 基于强化学习的AI实践
11.5 本章小结
第三部分 最佳实践篇
第12章 手机游戏兼容性测试
12.1 基于图像的兼容性测试
12.2 基于UI动作传递的兼容性测试
12.3 基于UI自动探索的兼容性测试
12.4 本章小结
第13章 自动化Bug检测
13.1 贴图丢失
13.2 角色穿墙
13.3 碰撞穿模
13.4 本章小结
第14章 自动机器学习
14.1 自动机器学习概述
14.2 参数搜索策略
14.3 NNI安装和使用
14.4 本章小结
我是专注分享测试干货的臻叔,喜欢的可以关注哦~
其他精华文章——
UI自动化:
贝壳找房:移动端的UI自动化测试实战分享(真实案例)zhuanlan.zhihu.com
接口测试:
程序员臻叔:全网最详细的接口测试实战案例!小白必看!zhuanlan.zhihu.com
百度测试开发面试题答案:
8000字-百度测试开发面试题答案(臻叔)zhuanlan.zhihu.co