五招促进AI和ML实现自动化测试

来源: 51CTO 作者:佚名 2021-4-25 02:03:30

分享至:

扫一扫分享

近年来,人工智能(AI)和机器学习(ML)技术正在蓬勃发展,诸如:自动驾驶汽车、机器人、以及Amazon的Alexa等应用,都深刻地影响和改变着我们

近年来,人工智能(AI)和机器学习(ML)技术正在蓬勃发展,诸如:自动驾驶汽车、机器人、以及Amazon的Alexa等应用,都深刻地影响和改变着我们的日常生活。当然,随着此类智能应用和设备使得我们的生活越来越轻松,大家对于软件产品的质量需求日益增长,并且对于产品缺陷的容忍度越来越低。一旦出现了功能或性能上的问题,用户会很快切换到市场上的同类替代产品中。因此,面对此类苛刻的要求,应用开发公司一方面不得不根据复杂的服务流程,不断迭代软件结构,一方面又要以更快的交付速度,推出高质量的软件。

对此,人工智能和机器学习正好能够发挥作用。它们能够以更快的速度、更好的质量、以及更高的效率,通过高度自动化的测试方式,为企业提供合适的端到端解决方案。据此,开发团队能够在有限的时间范围内,创建出专有的测试用例,以避免从头开始编写测试脚本,并能够涵盖尽可能多的关键性、高风险性的测试场景。可以说,使用AI和ML进行自动化测试的方式,正在逐渐成为整个开发和测试过程中,不可或缺的一部分。

下面,我将和您讨论通过使用由AI和ML带来的自动化智能测试技术,是如何解决传统测试中的痛点,并协助项目团队减少测试工作量,以及提高测试覆盖率的。

1.针对自动化测试的自愈(Self-Healing)技术

自动化测试自愈的流程图

自动化测试中的自愈技术,能够有效地解决测试脚本的维护问题。通过基于动态定位的策略,此类自动化脚本会在对象属性(包括名称、ID、CSS等)出现变化的每个阶段产生中断,以便程序能够自动检测到各种更改,并在无需人工干预的前提下,动态地修复它们。据此,项目团队能够在他们的敏捷测试中,利用左移的方法(shift-left approach),加快产品的交付速度,并提高生产率。

例如:开发人员在对HTML页面中的各种对象标识符进行更改时,AI将自动纠正测试用例中相应的UI标识符。也就是说,AI引擎会在属性发生变化时,及时找到此类元素,然后根据源代码中的更改情况,做出相应的修改。可以说,这种自愈技术,节省了开发人员花费在识别更改,并对UI做出相应变动的大量时间。

在具体应用中,基于AI的测试平台会按照端到端的处理流程,利用AI引擎发现那些由对象属性的变更所导致的测试项中断,进而凭借着自愈技术提取整个DOM,以深入研究各个属性。由于各项测试用例都是被自动化运行的,因此该过程无需任何人干预,便可使用动态定位策略,做出相应的更改。

2.自动生成测试脚本

自动生成测试脚本

过去,当我们需要开发自动化测试脚本时,往往需要开发人员具备Java、Python、Ruby等高级编程语言的相关技能。显然,这是一个既耗时又耗力的过程。如今,AI和ML技术,则能够大幅简化测试脚本的设计与开发全过程。

目前,市场上有许多此方面的测试工具,其中selenium是最常见的一款。用户既能够手动构建各种自动化的测试脚本,又可以通过平台去读取、并自动生成各种自动化的脚本。在实际应用中,它能够通过自带的各种AI算法,使用自然语言处理(NLP)技术,在完成了全面、良好的训练后,可以理解用户的意图,进而模仿Web应用的各种动作。值得一提的是,在整个操作过程中,用户无需亲自编写任何代码。有数据表明,该工具能够让常规测试脚本的设计时间和人员的工作量减少80%左右。套用当前流行的概念,此类自动化测试可被称为“非接触式测试(Touchless testing)”。

3.有效地利用大量测试数据

许多使用敏捷(Agile)和DevOps方法实施持续测试的组织,每天都会在其软件开发的生命周期中,多次采用端到端的严格测试方法,对其软件应用的单元、API、功能、可访问性、集成效果等其他方面予以测试。

而相对于上述测试内容的增加,待测数据在体量上的增多,则更让项目团队无法通过软件应用做出更好、更准确的决策。对此,机器学习却能够通过可视化那些极不稳定的测试用例,协助开发人员轻松地关注大数据对于软件关键功能与服务的影响。

在实际应用中,AI和ML系统能够轻松地对海量数据进行切片、切块和分析,为目标项目提供模型的解读、业务风险的量化、以及决策过程的提速。同时,开发人员还可以用AI和ML系统,来确定有待优先处理的持续集成作业,或是发现待测环境中目标平台的潜在错误,以及获得如下方面的“测试红利”:

测试影响分析安全漏洞平台的特有缺陷测试环境的不稳定性测试失败中的重复模式应用组件的漏洞位置4.使用自动化视觉验证工具,执行基于图像的测试

软件开发过程中的可视化测试(也称为用户界面测试),可以确保即将构建出的Web、或移动应用的UI,能够给用户带来流畅的体验。过去此类测试往往难以实现自动化,而需要人员进行繁琐的手动测试。如今,使用基于ML的视觉验证工具,使得测试人员可以识别出那些,过去在手动测试过程中容易遗漏的元素。实际上,在不少自动化网络社区中,大家正在流行着利用最新的机器学习技术,以及自动化视觉验证工具,执行基于图像的测试。

这种基于图像的测试,可以动态地改变软件公司在任何系统中,提供自动化测试服务的方式。据此,测试专家不必再将各项输入,隐式地插入目标系统中,而只需通过创建ML类测试,以自动化的方式,验证待测软件在显示效果(或称视觉)上的正确性,及时发现各种错误与不足。

5.利用AI进行爬取

如今,不少开发人员也会使用基于AI的自动化技术,采用爬取的方法,自动为应用程序编写测试用例。也就是说,一些新颖的AI/ML工具能够针对Web应用开启爬网功能。

在实际爬取过程中,此类工具首先会通过类似屏幕截图,为每个页面下载HTML代码,以及测量流量负载等方式,来收集数据,并且持续重复前面的步骤。接着,它们会基于收集到的数据构建出全量数据集,并根据待测应用的预期模式和行为,去训练出可供机器学习的模型。然后,此类工具将当前阶段观察到的模式与先前输入的模式进行比较。如果结果出现偏差,它们会将其作为测试中的错误予以标记。最后,由具有该领域知识的人员,对这些标记出的问题进行验证。可见,尽管ML工具主要负责错误的检测过程,但是人工核查仍然必不可少。

小结

目前,大多数公司都已将AL和ML之类的新技术,应用到了软件测试的自动化流程中。当然,您和您的测试团队,应当通过学习该领域的专业知识,了解如何将复杂的数据结构进行分解与分析,以增强针对测试的判断与决策能力,并提高项目的总体效率与服务水平。希望上述五点经验,能够更好地为您实现该目标。

免责声明: 该文观点仅代表作者本人,Soft6软件网系信息发布平台,Soft6软件网仅提供信息存储空间服务。 未经允许不得转载,授权事宜请联系liujun@soft6.com 如对本稿件有异议或投诉,请查看《中国软件网版权保护投诉指引》

您可能还喜欢这些资讯