软件形态越来越多,协议种类越来越复杂,迭代速度越来越快,架构和部署的复杂度越来越高,对整个软件测试体系的要求越来越高。随着AI进程的不断推进,自动化测试工具如何有效运用到软件测试领域一直都是行业内热议的话题。本文我们一起来看一下基于AI的自动化测试的难点、关键点以及落地。
自动化测试的难点
测试录制自动化程度低。传统的自动化测试技术主要的自动化脚本开发的录制技术都是基于UI的,在通用性上就会带来很多问题。对于UI元素变化的识别也不是很智能。大部分自动化测试工具脚本和用例没有产生关联的,没有产生相互转换的关系,也给自动化测试带来了很多问题。
测试录制兼容性差。旧版本的终端长期存在,对于IE旧版本,很多测试工具的录制都会出现问题,很多控件和元素的识别并不是非常理想。越来越多完全定制化开发的类CS架构智能终端,录制兼容性非常差,定制化开发的软件内容很难录制下来。现有的测试工具的脚本一般都是跟UI的开发技术是紧密相关的,多端协同性就比较差,但多端协同的场景非常多,很难通过一个工具去进行通用性的解决。因为工具是依赖于具体的客户端的技术,很难有一个通用方案能把各个端的脚本覆盖到。
测试脚本开发难度大。测试脚本的开发对开发能力的要求是非常高的,需要掌握很多开发语言,了解很多API、函数...然后才能进行开发。脚本是大量的代码,它的含义是非常难以理解的。脚本非常依赖于UI,每个脚本都要依赖于相应的UI的开发技术。脚本开发完以后,在UI发生变化之后,就不能使用了,成本就会提升很多。
测试脚本运行问题。运行任务的定制化和运行环境的定制化现在的测试工具都无法去提供。也存在旧版本终端不兼容的问题,而且运行的过程是很难去追溯。
自动化测试可以提质增效的5个关键点
测试覆盖率提升。包括:测试数据(数据组合覆盖率、异常数据覆盖率);测试场景(业务场景覆盖率、业务路径覆盖率);测试环境(前端环境组合覆盖率、后端环境组合覆盖率);测试参数(业务参数覆盖率、环境参数覆盖率)。
测试脚本效率提升。测试脚本录制自动化,需要更自动化的方式,而不是像现在录制完之后还要进行大量的调试、增强等等,不需要过多人为的干预。界面元素智能识别,能更智能地去识别出界面的相关元素。测试脚本低代码化,不需要太复杂的脚本开发语言,提供一些低代码的测试脚本的解决方案。
测试场景。能够更灵活的去进行路径和数据的组合,不再像传统的测试那样,只能从代码层级把代码相互之间去进行一个处理。代码相互之间的处理就需要懂代码的相关内容,还要懂业务的设计。
测试运行。测试任务持续集成,测试运行自动分发,这也需要测试工具去更好地集成这些功能。
测试结果。测试结果更精准,真实还原过程和测试结果的可视化。
黑盒与白盒结合。比如黑盒测试发现的问题,影响哪些代码,这些被影响的代码又被另外的哪些模块代码进行了调用,它的整个影响关系链是怎样的。包括在功能的修改、代码变更之后,这些变更究竟影响到了哪些模块,哪些微服务等等,这些都需要有更清晰的方式去解决。
测试路径精准。黑盒测试功能覆盖程序路径以及无效路径的剔除。把无效的路径进行剔除,把相应的程序路径的覆盖情况非常清晰地展示出来。
测试数据精准。覆盖的数据组合以及无效数据剔除,能够帮助我们测试的结果更精准。
如何通过AI实现软件测试的提质增效
基于AI的自动化测试技术架构
首先我们可以通过模型的构建去进行软件理解方面的处理,比如说像一些比较新的自动化测试的工具,他们现在在模型构建方面可以通过一些流程图的方式去构建整个测试的模型还有测试的用例。
通过业务流程图的方式可以很好地进行路径的分析,因为流程图是一个线性的、直观的结构,而且路程图中的节点相互之间有关联性。也可以用相应的逻辑,比如说if、for等基本的逻辑去进行流程图的一些处理。
第三块是可以通过路径的分析、录制,去形成测试的路径,包括像“输入”这样的处理,生成相应的测试代码测试数据。
最后我们可以通过测试代码的自动化运行,将测试代码分发到不同的容器、虚拟机等,进行测试代码的并行执行,最终生成测试报告。
AI的自动化测试应用
在这个过程中,我们有好多点都可以用到AI,首先在我们的数据处理过程中,我们在整个数据获取、数据分析、数据标注和数据展示这些方面,我们都可以借助AI去辅助我们。比如说像一些数据的标注或者说数据的一些基本的处理,将存在质量问题的一些数据进行过滤。
通过AI技术辅助我们形成了数据集之后,我们也可以用预处理的数据集来进一步训练我们的AI算法。AI算法中的模型学习、模型构建过程、模型的设计、模型的算法、模型基于整个数据集的训练,我们都可以通过AI的方式去实现。
在测试数据的输入方面,我们可以通过AI去判断,哪些数据是有效的数据,比如说我们对一个银行卡账户转账的这样一个操作,银行卡状态可能有正常状态、注销状态、未激活状态、黑名单状态等等,各类测试数据的输入,我们可以通过AI去训练,去帮助我们筛选哪些数据是正常账户的数据,哪些是注销账户的数据......
除了在数据输入方面可以对我们进行一个辅助之外,也可以帮助我们去自动构建出各种组合之后,每个组合所得到的断言、结果是怎样的,如果是人去做这个操作的话,你可能要覆盖几百种、几千种组合的结果和断言,这个工作量是非常大的,通过AI的基于规则的训练,可以帮我们构建数据的从输入到输出结果的过程。
第二部分是OCR的图像界面的识别,通过AI的辅助,能够提高界面文本的检测和识别。
再就是流程的自动运行,我们可以通过流程或者任务的自动分发,自动化地运行测试。
最后是测试代码和测试报告,这个可以通过OpenCV和AI技术去生成测试代码,另一方面在测试报告上,通过OpenCV技术去捕捉整个测试执行的过程,将整个过程通过视频的方式或者截图的方式进行捕捉,来帮助我们去回溯整个测试执行的过程。
自动化测试流程
在自动化测试整个流程的执行过程中,可以通过以下这些方式进行关键步骤的组织。首先在录制的时候,我们传统的自动化工具是依赖于具体的UI的开发技术,现在我们可以通过通用性的UI解决方案。
通过图像识别捕捉的不再是基于浏览器(比如说Chrome、Firefox)相应的插件捕捉的脚本,而是捕捉整个UI界面,在整个UI界面里面包含哪些输入框、哪些按钮等等。这样的录制方式可以将整个录制过程变成一个通用解决方案,脱离客户端的UI,不管是APP、还是CS的客户端、或是浏览器,都用UI的方式去捕捉界面上的相应的元素。
这样的基本元素也更容易被普通的业务人员理解,他不需要知道开发脚本,就可以知道捕捉下来的界面元素是个按钮还是个输入框的等。
另一方面,在录制完时候,我们可以将录制的内容转换成一个业务流程图。比如说你录制下来的是一个顺序的过程,比如说从登录开始,先输入用户名,在输入口令,在输入验证码,再点击登录按钮,我们录制下来是这样一个操作过程。
我们也可以通过业务流程图的方式将它设为一个分支,比如说对于对异常操作,只输用户名和密码,不输图片校验码,然后直接点击登录,我们把这个流程通过业务流程图和正常的流程做一个结合,就可以组合成有两个分支的测试用例。
同时在这个过程中,我们也可以通过AI的辅助对数据进行筛选去识别出有代表性的数据去作为我们的测试数据。
从录制的内容到转换成测试的步骤和测试用例之后,下一步我们就可以在测试的农场里进行一个执行。这个农场可以包含各种数据的组合、也可以是浏览器的组合、也可以是PC的组合,可能是win7、win10或者不同的操作系统。
在不同的组合里面,我们将这些组合划归到一个容器里面,或者虚拟机里面,各种各样的虚拟化的技术都可以支持我们去做测试的农场。手机的话更多时候可能还需要通过真机的方式去构建一个手机真机的农场,但对于PC端或者浏览器端我们是完全可以通过虚拟机去构建。比如说我们可以有第一个虚拟机构建的是win10+Chrome的环境,第二个是win10+Firefox,第三个比如说是win7+IE10,第四个是win7+IE9等不同的组合,我们将任务分发到不同的虚拟机环境上,进行自动化的运行。
最终就是形成测试结果和测试报告,我们可以通过OpenCV的技术把它在虚拟机里运行的整个过程,去完整地捕捉下来。有了视频之后,也可以形成视频的过程截图。
以上就是我们为大家整理的基于ai的自动化测试的全部内容,希望对你有所帮助。更多软件测试体系建设与提升相关内容可查看我的主页。
更多推荐: