CSDN|机器学习将会如何影响软件开发和测试?看完这文就懂了


【CSDN|机器学习将会如何影响软件开发和测试?看完这文就懂了】
CSDN|机器学习将会如何影响软件开发和测试?看完这文就懂了
本文插图
原文作者 | Nate Nead责编 | 晋兆雨 , 编译| 风车云马 机器学习(ML)和人工智能(AI)经常被认为是通向未来世界的大门 , 在这个世界里机器人像人一样互动 , 它们可以在各个方面都比人类聪明 。 如今 , 机器学习已经被应用在世界各地数以万计的应用程序中 , 而且它以一种看不见的方式 , 开始重塑我们的生活和工作方式 。 尽管这些技术堪称具有破坏性 , 被认为是引起人类恐慌的罪魁祸首 , 但它们在人类社会的各个领域都发挥着巨大作用 。
更吸引人的是机器学习在自动驾驶汽车等新兴技术上的应用 。 多亏了ML , 自动驾驶软件不仅可以通过数百万次的迭代进行自我改进 , 还可以在驾驶过程中面对新环境时快速自适应 。 不仅如此 , ML在软件测试等领域可能更为重要 , 因为无论什么技术 , 几乎都离不开软件测试 。
那么 , 机器学习究竟是如何影响软件开发和测试的呢?未来会是什么样子呢?
机器学习和人工智能
首先 , 让我们解释一下ML和AI之间的区别 , 因为这些技术是相关的 , 但经常相互混淆 。 机器学习指的是一种算法系统 , 它被用来帮助计算机不断地自我改进 。 换句话说 , 通过机器学习 , 可以将一个功能(比如面部识别、自动驾驶或语音转换文本)测试和改进得越来越好;而对于外部观察者来说 , 这个系统看起来像是在学习 。
人工智能被认为是一种由机器展示的智能 , 它通常以ML为基础 。 没有演示AI的ML系统是可能的 , 但是没有ML的AI是很难的 。
软件测试的重要性
现在 , 让我们来看看软件测试——软件开发过程中的一个关键环节 , 也可以说是最重要的阶段 。 软件测试的目的是确保产品按照预期运行 , 在大多数情况下 , 在产品实际完成之前 , 会经历反复迭代的过程 。
通过软件测试 , 您可以预先识别错误和其他缺陷 , 在变成真正的问题之前纠正它们 。 您还可以评估产品的质量 , 通过测试来评估其在各种不同情况下的速度和性能 。 最终实现更好、更可靠的产品——以及在产品的生命周期中更低的维护成本 。
试图在没有完成测试的情况下交付软件产品 , 类似于构建一个缺乏良好基础的高楼大厦 。 据估计 , 如果没有完全执行适当的测试 , 软件交付后的成本可能是项目本身的总成本的4-5倍 。 当谈到软件开发时 , 测试失败就是项目失败 。
机器学习是如何重塑软件测试的
这里 , 我们可以把两者结合起来 。 机器学习如何使软件开发和测试变得更好?
ML已经被软件测试人员用于自动化和改进测试过程 。 它通常与敏捷方法结合使用 , 后者强调持续交付和增量迭代开发 , 而不是一次构建整个产品 。 作者认为敏捷和scrum方法的未来会涉及大量的机器学习和人工智能 , 这就是原因之一 。
机器学习可以在很多方面改进软件测试:
更快、更轻松的测试 。 老式的测试方法几乎完全依赖于人工干预和人工努力;软件工程师和QA测试人员将手动运行软件并检查错误 。 如果使用ML技术 , 您可以自动化并更快地执行测试 , 不需要花费几个小时的人工时间 。
连续测试 。 此外 , QA测试人员只在部分时间内介入 , 如果您在持续开发软件 , 这是不可能的 。 基于ML的测试系统可以部署连续测试 , 不断检查产品在不同条件下的性能 。
一致性测试 。 如果您需要对同一产品进行两次测试 , 您是否有信心以完全相同的方式进行测试?很可能没有——人类很难做到这一点 。 但ML算法的建立和执行尤其擅长重复相同的过程 , 一遍又一遍、不耐烦地、可靠地——您永远不必担心测试脚本的一致性问题 。
更高的灵敏度 。 基于ML的现代验证工具能够识别人眼无法识别的UI差异 。 这个UI元素的颜色正确吗?它在正确的位置吗?视觉缺陷有时很明显就容易被发现 , 但是基于ML的“眼睛”具有更高的灵敏度和准确性 。


推荐阅读