前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习正在改变软件测试的未来(Computing)

机器学习正在改变软件测试的未来(Computing)

作者头像
谭雪儿
修改2020-12-18 12:51:16
8400
修改2020-12-18 12:51:16
举报

大多数软件开发团队认为他们的软件测试能力不足。他们明白质量缺陷所带来的影响是巨大的,在质量保证方面投入了大量资金,但仍然没有得到想要的结果。这并不是因为缺乏人才或努力,而是因为软件测试的技术效率极低。软件测试这一行业一直没有得到很好地发展。

在软件经过适当和彻底的测试之前,不可能被成功发布。考虑到完成工作所需的时间和人力,测试有时可能需要大量的资源。这一巨大的需求才刚刚开始得到满足。

机器学习(ML)已经颠覆和改进了许多行业,但它才刚刚开始进入软件测试领域。人们对此的态度正在发生转变,并且有着充分理由。这个行业再也不会是原来的样子了,虽然机器学习仍在增长和发展,但已经在软件产业得到越来越广泛的应用。随着技术的进步,它将对软件测试方式产生显著的影响。

让我们深入探讨软件测试的当前状况,回顾机器学习的发展情况,然后探讨 机器学习 技术是如何从根本上改变软件测试行业的。

软件测试的背景

软件测试是检查软件是否按设计方式执行的过程。功能质量保证(Functional Quality Assure,QA)测试,一种确保软件没有从根本上被破坏的测试形式,通常以三种方式执行:单元测试、API测试和端到端测试。

单元测试是确保代码块为每个输入提供正确输出的过程。API 测试代码模块之间的接口,以确保它们可以通信。这些测试是小型的、离散的,旨在确保代码段功能的正确性。

端到端 (E2E) 测试确保整个应用程序在其他系统上运行时正常工作。E2E 测试检查了所有代码如何协同工作,以及应用程序作为一个产品的性能。测试人员将像消费者一样通过核心测试(测试反复执行任务)和边缘测试(测试意外事件)与程序进行交互。这些测试可发现应用程序何时没有以用户希望的方式响应,从而使开发人员据此进行修复。

传统的 E2E 测试可以是手动的,也可以是自动的。手动测试要求人类每次测试应用程序时都点击使用该应用程序,它既耗时又容易出错。测试自动化涉及编写脚本来替换人类,但这些脚本往往功能不一致,并且随着应用程序的发展,需要大量的维护时间。这两种方法都非常昂贵,并且在很大程度上依赖人类的直觉才能成功。整个E2E测试空间已经严重失调,是时候让AI/ML技术颠覆这一领域。

什么是机器学习?

虽然机器学习经常与 AI 同义,但它们与 AI 并不是完全是一回事。机器学习使用算法进行决策,并使用来自人工输入的反馈来更新这些算法。

机器视觉技术就是一个很好的例子。机器视觉应用程序可能会将某物识别为猫,而实际上它是一只狗。人类对它进行纠正(通过告诉它,“不,这是一只狗”)和一组算法,根据此反馈更新判定。机器学习基于来自测试人员和用户的持续反馈,使其能够随着时间推移做出更好的决策。

由于缺乏数据和反馈,机器学习很难进入 E2E 测试的世界。E2E 测试通常是通过人类直觉构建的,这些直觉可以了解哪些要素对测试很重要,以及哪些功能看起来重要或有风险。新的应用程序使用产品分析数据来了解和改进自动化测试,为机器学习做铺垫,从而大大加快测试维护和构建的时间。

软件测试的未来是什么?

软件测试未来的目标是是更快的测试,更快的获取结果,更重要的是,了解对用户真正重要的测试。最终,所有测试都旨在确保更出色的用户体验。如果我们能教会一台机器用户真正关心于什么,我们就能比以往更好地进行测试。

通常,测试环节在速度和实用性方面都滞后于开发环节。自动化测试通常是工程团队的薄弱环节,而机器学习技术可以帮助它更好地实现。

机器学习技术对于软件测试的未来意味着自主性。智能计算机将能够利用当前应用程序使用情况和过去测试经验中的数据,在没有人工输入的情况下对测试环节进行构建、维护、执行和解释。

软件开发不可能在所有方面都实现自动化。由于 E2E 测试主要受人类直觉和人力驱动,整个行业在最初可能拒绝将测试过程完全移交给机器。实际上,在每一个行业,业内人士都认为机器永远替代不了人的工作。那些抵制机器学习技术的兴起而在人力劳动上付出更多努力的人,常常发现自己被抛在时代后面。

一个熟悉的故事正在测试领域展开:机器学习驱动的自动化测试目前还处于起步阶段,但可能只需要几年的时间就能够接管行业。

自主的端到端测试

机器学习在 E2E 测试中的核心优势是能够利用高度复杂的产品分析数据来识别和预测用户需求。机器学习驱动的测试能够监视 Web 应用程序上的每个用户交互情况,了解用户经历的常见(和边缘)测试场景,并确保这些用例始终如预期的那样工作。

如果该计算机正在同时测试多个应用程序,则它可以从所有这些应用程序中学习,以预测对应用程序的更改将如何影响用户体验。由于这些数据,机器学习驱动的测试已经可以构建比人工测试更好、更有意义的测试程序。

由机器学习驱动的自动化开发的测试程序,其构建和维护速度比人类构建的自动化测试程序更快,同时制作成本更低。此类测试可加快部署速度(和质量),对于任何工程VP的预算来说都是一件好事。

关于测试人员

机器学习对于目前正在做这些工作的人意味着什么?

品质工程师在软件开发中仍然扮演重要角色。确保软件质量最有效的方法就是将质量控制过程嵌入到代码本身的设计和开发中。测试之所以存在,只是因为该过程并不完美。

随着机器学习从测试工程师那里承担 E2E 测试的任务,这些工程师可以与软件工程师合作,利用他们的专业知识,从零开始构建高质量的代码。从我们自己对这个问题的采访中来看,似乎大多数品质工程师更喜欢这样子的工作模式,而不是整天在测试维护方面消磨时间。

光明的未来

机器学习提供了更精简、更有效的软件测试程序。它建立了一个流程,能够更有效地处理大量开发环节并为其创建专门的测试。智能软件测试意味着基于数据的测试、准确的结果和创新的行业发展。

我们希望这篇文章能够帮助你了解软件测试的未来,同时感受到机器学习为我们的世界所带来的惊人的变化。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 软件测试的背景
  • 自主的端到端测试
  • 关于测试人员
  • 光明的未来
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档