发布于 2026-01-06 5 阅读
0

机器学习在自动化测试中的应用

机器学习在自动化测试中的应用

我们在这里尝试使用机器学习进行自动化测试的目标是,通过数据挖掘用户日志和他们在要编写测试的应用程序/服务上的行为,根据用户交互动态编写新的测试用例,并进行实时验证,以便在对象被修改、删除或进行其他更改(例如“拼写修改”)时,能够及时发现问题,就像大多数 IDE(如 Visual Studio 或 Eclipse)以 Intelli-sense 的形式所做的那样。

机器学习在“测试自动化”中的应用可以帮助预防以下部分但不限于以下情况:

  1. 节省编写测试用例的人工成本
  2. 测试用例很脆弱,因此当出现问题时,框架很可能会在该点放弃测试,或者跳过一些步骤,这可能会导致错误/失败的结果。
  3. 只有运行测试用例,测试结果才能得到验证。因此,如果编写了一个脚本来检查是否存在“确定”按钮,那么在运行测试之前,我们无法知道该按钮是否存在。

该机器应通过应用模糊匹配技术,在测试过程中实时恢复。这意味着,如果某个对象被修改或删除,程序或脚本必须能够找到与其目标对象最接近的对象,然后继续执行测试。例如,如果一个 Web 服务最初提供“小、中、大”三种选项,并且脚本是根据这些选项编写的,而之后又添加了“超大”选项,那么脚本必须能够适应并预测这种变化,从而确保测试能够持续运行。

了解更多关于跨浏览器测试的信息

HP Unified Function Testing 是市场上知名的自动化测试工具之一。它拥有图形用户界面 (GUI)。此外,还有其他工具可供选择,例如 Selenium 库(支持多种语言,如 Java、C++、C#、Python 等)和 Cucumber。这些工具允许用户编写脚本,并让脚本自动运行多个测试用例来完成测试工作。

在开始测试之前,系统需要学习各种案例。我们需要给它一些初始数据。在启动训练环节之前,我们必须先设置系统,在预设的时间段内向普通用户展示一些广告,并在此期间收集和记录日志,以便我们生成浏览特定广告的用户的性别比例和年龄段分布。我们的目标是找出哪些年龄段和性别的用户在浏览特定广告后更容易在网站上购买商品。我们将结果保存为训练数据,以便进行后续测试。

这台机器经过训练,能够根据收集到的信息编写测试用例。训练数据会定期更新,以便基于不同的人口统计数据运行最新数据进行测试,并向潜在客户投放相关广告。如果手动完成这些工作,则每次趋势或网站发生变化时,都需要修改脚本或手动添加测试用例。

用于自动化测试的机器学习算法

支持向量机 (SVM):它属于机器学习算法中的“线性分类器”家族,旨在找到一个(线性)超平面,将不同类别的样本分隔开来。在学习阶段,SVM 将训练数据视为一个 k-1 维向量。其目标是找到最大间隔(距离)。SVM 技术主要用于二元分类。此外,在学习阶段,我们还有 MartiRank,一种排序算法。它需要进行多轮迭代,在每一轮迭代中,数据都会被分成 N 个子列表,每个子列表包含设备/应用程序故障总数的 1/n。

在进行回归测试时,需要开发一套测试用例。MartiRank 的开发是一个持续的过程,它已被用于检测新的缺陷。例如:开发人员可能重构了应用程序中的一些代码并将其放入一个新函数中。回归测试表明,生成的模型与之前的模型有所不同。

编写测试用例时,我们测试的是软件理论上的运行情况,但我们没有实际数据可用。有些测试用例可能永远不会在实际应用中使用,而一些被遗漏的测试用例可能恰恰是最重要的。因此,通过数据挖掘日志并让机器根据这些日志自动编写测试用例,可以节省大量工时,并有助于实际测试。像 HockeyApp 和 TestFlight 这样的服务就提供了自动化移动应用测试服务。

关于图形用户界面(GUI)测试,已有研究论文探讨了利用深度学习和强化学习实现测试自动化。首先,研究人员对被测系统进行数据挖掘,获取GUI界面上有意义的点击、文本和按钮操作,从而生成大量训练数据。随后,这些数据被用于对软件进行数小时的测试。最棒的是,无需编写模型或测试用例,随着时间的推移,缺陷会逐渐被发现。但部分测试用例由于缺乏训练数据而未能被测试。强化学习方法通​​过多次迭代改进了测试效果。

英特尔和英伟达一直在大力投资硬件解决方案,以辅助深度学习及相关算法更快地取得成果。世界正从移动优先转向人工智能优先。我们知道,对于任何产品(哪怕是小型计算器)的测试而言,合适的测试用例永远都不嫌多。因此,开发人员和测试人员被鼓励编写越来越多的测试用例,以提高产品的稳定性。保罗·格雷厄姆曾建议使用贝叶斯过滤器来过滤垃圾邮件。他们将成千上万封电子邮件输入系统进行学习,然后对这些训练数据进行测试,以确保过滤器万无一失。网络爬虫不断地在不同的网站上搜索 404 或其他错误,实时更新其索引和测试用例。

原文发表于www.lambdatest.com,日期为 2017 年 8 月 5 日。

相关文章:

  1. 2019年值得关注的测试趋势
  2. 机器学习:只要可测试,就能教。
  3. 只需 20 分钟即可编写您的第一个自动化脚本!
文章来源:https://dev.to/lambdatest/machine-learning-for-automation-testing-17og