人工智能不辜负炒作?这是一个通信问题
毫无疑问,人工智能(AI)是数字经济的下一个前沿领域。虽然它可能还没有完全渗透到公众意识中,但人工智能已经在幕后工作,以增强各种各样的系统和服务,推动从聊天机器人到全栈IT自动化的一切。
然而,这种进步的大部分是由计算能力的快速扩张推动的,而不是人工智能所固有的技术。在功能上,人工智能包括使用1990年代和2000年代初期开发的相同基本数学模型的统计数据分析。即使是像人工神经网络这样听起来很未来的发展,它暗示了一个模仿大脑中神经元的过程,也只不过是顺序矩阵乘法——换句话说,是相当基本的数学,但可以高度缩放。
这也是最近人工智能的潜力被夸大的部分原因。在经济崩溃之前,计算能力只能让人工智能走这么远,而这个水平将远远低于许多承诺,比如完全自主的软件测试和直观学习。只有在人工智能模型和算法本身取得一些突破,这些事情才有可能实现。而且因为这需要更长的时间才能完成,所以可以公平地说,人工智能在短期内没有达到他们的期望,不会给世界留下深刻的印象,但随着技术的进步,他们会彻底惊讶。
目前,人工智能的关键限制因素是人类和人工智能难以沟通。理想情况下,我们应该能够告诉AI模型我们希望它做什么,而无需深入研究技术细节。我们应该能够定义一个问题,让AI不仅能提出正确的解决方案,而且还能收集必要的资源并编写适当的代码来自行实现目标。
声明式与命令式
软件开发领域,尤其是质量保证(QA)领域,提供了一个清晰的例子,说明这在企业中是如何发挥作用的。尽管自动化在开发过程的大部分时间里都变得普遍存在,但测试在手动时代仍然根深蒂固。
最近GitLab对4,000多名开发人员的调查证实了这一点,其中大多数被质疑的人认为测试是发布计划中最重要的延迟因素。一位受访者甚至说:“测试会延迟一切。”尽管已经对使用AI自动化整个QA流程进行了充分的讨论——理论上这应该可以让测试团队从许多死记硬背的重复性任务中解脱出来,以使代码准备好运行——但没有理由期望这会在不久的将来发生。
在绝大多数情况下,测试人员无法有效地将其需求传达给AI模型,而无需在代码中指定精确的元素或描述高技术配置。只有在低代码环境中,才能使用可视化流程图方法远程设计测试。在几乎所有其他情况下,在不打破人类和算法之间存在的语言障碍的情况下,理解给定软件产品的需求完全超出了当前AI模型的手段。
这一障碍的核心在于双方对各自所处世界形成理解的方式不同。AI以严格的命令方式运行,例如,“我希望你执行这个非常具体的操作”,然后它就会这样做。人类思维使用更具陈述性的方法,将“如何”和“为什么”需要执行某个动作结合起来,这需要技术专业知识和对指导该动作执行的更广泛背景的深刻理解。因此,人类必须首先确定该行动的最终目标及其与其他行动的关系,而不是仅仅按照指示做一件事,找到合适的工具并以精确的方式应用它们以达到预期的结果。
在现实世界的应用程序中,例如自动驾驶汽车,我们可以看到命令式风格与声明式风格的对比。为了到达目的地,人类驾驶员必须启动汽车、启动汽车、转动车轮、踩刹车并执行一系列精确动作以实现目标。我们可以称之为“势在必行”的驾驶。使用声明式方法的自动驾驶汽车只需要被告知要去哪里,算法会填写到达那里所需步骤的所有细节。
为什么不应该期望测试人员编写代码
我对这个特殊问题的兴趣可以追溯到我在一家投资银行的时候,在那里我专门研究公司社交交易平台的系统架构、持续交付、实时故障排除和性能优化。正如可以预料的那样,测试是这种环境中的一个重要组成部分,它是围绕高速、高质量的交易工具构建的,如果软件包含缺陷,可能会导致严重的财务中断,甚至破产。
我最初的想法是创建一种简单的编程语言,可以用来创建测试,而不必将过程循环回程序员。但是,尽管我们的测试人员是训练有素的专家,他们对我们软件的复杂性有深刻的理解,但他们并不是编码员,因此要求他们进行即使是基本的编程也不是正确的答案。
显然,需要一种更直观的构建测试的方法。一天,在白板演示流程图时,灯泡熄灭了。它立即让我们所有人震惊,因为它是一种清晰、简洁的方式来传达具有多个复杂依赖项的流程。
尽管如此,与普通计算平台相比,用人工智能弥合这一差距要困难得多。尽管如此,通过利用基于模型的测试和其他新兴技术,我相信这将成为可能。通过将给定系统的需求呈现为被测软件的数字孪生体,基于模型的测试显示出极大的希望,可以实现人工智能的命令式理解。在这一点上,关键的绊脚石是所有模型都必须建立在一组明确定义的要求上,这些要求很难用AI平台描述,尤其是当工作涉及抽象概念时。
当然,这将涉及大量研究和创新的人工智能建模新方法,但这显然是软件测试的发展方向。最后,它将使人工智能能够兑现推动其迅速采用的承诺。