背景
自动化测试技术从最初的模拟硬件方式,到基于数据驱动,基于关键字驱动,再到现在基于功能和指令驱动的自动化测试技术,在各类软件项目中的应用也越来越多,越来越成熟。自动化测试技术有良好的可重复性,高并发和高效率的特点,为各类测试项目中显著的提高了测试效率,将测试人员从繁琐的执行中解放了出来;但是在实施自动化测试过程中,往往测试准备,测试复测,结果分析和案例维护等方面需要耗费大量的时间和资源。
随着人工智能的普及,期望在自动化测试的过程中还需大量投入人力的环节进行优化和重构;终极的目的是使得自动化测试能够尽可能脱离人工,实现真正意义上的自动化。
项目目标:
形成一套智能的自动化测试解决方案,能实现各种移动app的全自动bug探索测试工作。
1、通过一套自动测试框架/脚本实现任意APP的全路径bug探索测试工作。
2、实现对APP功能模块的自动探索,形成功能导图。
3、实现失败案例自动分析和复测,测试结果的智能化分析。
4、实现执行过程的可视化,使得定位问题更加清晰准确。
可行性分析
一.智能识别被测对象
1.通过android工具的LazyUIAutoMatorViewer可以自动获取控件对象信息。
2.根据控件的特征,通过人工智能提取特征训练进行业务功能的识别。
二.根据被测对象特征,智能化的开展测试
1.对移动应用测试的操作方法进行归类和封装(参见 4、控件对象的操作封装)。
2.根据不同的业务功能,形成特定的测试脚本。
3.根据被测应用的对象和业务情况,智能化的开展测试执行。
三.智能分析测试结果,针对性补测
1.根据错误的特征,通过人工智能识别并分类。
2.通过分析形成的业务功能导图,针对失败的节点结合错误特征开展补测。
环境信息
测试APP:某手机银行APP、微信APP
测试平台:Android+Appium
人工智能工具:Sklearn,ANN
脚本语言:Python3.6
人工智能自动化探索流程:
流程概述:获取应用信息->生成操作代码->执行测试操作->完成探索测试->生成应用逻辑导图->被测对象分类->匹配测试脚本->执行测试->生成测试报告
整体的流程图如下:
项目详述:
1、应用逻辑导图
首先测试执行之前,我们需要探索形成被测应用的结构,功能和控件对象类型的集合,生成应用的应用逻辑导图。
通过大量给应用逻辑导图对应界面图加功能名标签,训练逻辑导图知晓相关界面的功能名,最后可通过人工智能识别,自动生成准确的逻辑导图。
通过逻辑导图一是可以给测试执行提供操作步骤和执行顺序;二是可以在出现问题时记录分析和自动补测。
下图展示某APP部分功能的逻辑导图示例:
应用界面探索:
由于逻辑导图需对被测应用进行探索,探索中会不断出现新的未测试过界面,但也会出现已经测试完的界面,为了不重复探索,需要识别界面是否为新界面,而界面中不乏有会自动变化的控件,比如轮播图,或定时刷新显示的数据
这块可以通过人工智能识别图像判断是否是新的界面,方法如下:
测试对象为进入界面的截图,对比对象为此前所有界面截图的数据集