当前位置: 首页 > 科技观察

被解雇的AI太高了!_0

时间:2023-03-21 13:48:14 科技观察

作者|穆什本田规划|赵云去年年底,人工智能仿佛一夜之间又活跃起来。首先,DALL-E2生成的图像栩栩如生,那对“马背上的宇航员”让人过目不忘。然后是StableDiffusion,一个公开版权的文本生成图像的绘图AI,还有最后一个“王者炸弹”:巅峰之作ChatGPT登场,给OpenAI赢得了足够的面子。甚至在春节期间,网上也有不少人感叹“岌岌可危”,生怕这波人工智能的高潮真的抢走了自己的饭碗。然而,真的是这样吗?人工智能是否会迎来计算机应用的复兴?本文以一个特定领域的应用为例,阐述了人工智能被工具化的三个阶段,并解释了人工智能不应该也不能发展到完全自主化的几个原因。此外,作者还分享了一个真正的AI角色应该是什么样的。我们需要保持警惕,但不要恐慌。“有了人工智能,交货时间将从几分钟缩短到几秒钟!”“供应商和客户将回到廉价和人性化体验的时代,计算机应用将迎来复兴!”不幸的是,廉价的存储、高处理速度、现成的AI训练设备和互联网已经把这个承诺变成了夸大其词的炒作。以软件测试为例,搜索“人工智能在软件测试中的应用”,系统会返回一系列承诺给潜在买家的“神奇”解决方案。许多解决方案提供了减少体力劳动、提高质量和降低成本的方法。有些厂商承诺他们的AI解决方案可以完美解决软件测试的问题,这有点奇怪,而且说的话更令人震惊——软件测试的“圣杯”——想法是说——是为了拯救人们从烦恼和烦恼。从软件开发周期中解放出来,使测试周期更短、更有效、更简单。AI真的能成为无所不能的“圣杯”吗?而且,我们是不是也应该让AI完全取代人类呢?这些近乎荒谬的炒作真的应该停止了。1.真相在现实世界中,将人类排除在软件开发过程之外要复杂得多,也更令人生畏。无论使用瀑布、快速应用程序开发、DevOps、敏捷和其他方法,人仍然是软件开发的中心,因为他们定义了他们创建的软件的边界和潜力。在软件测试中,“目标”总是在变化,因为业务需求通常是模棱两可且不断变化的。用户需求改变了可用性,甚至开发人员对软件变化的可能性的期望也发生了变化。软件测试(包括术语质量保证)的原始标准和方法来自制造产品测试领域。在这种情况下,产品定义明确,测试更加机械化,但软件的特性具有可塑性并且经常变化。软件测试不适合这种统一的机器质量保证方法。在现代软件开发中,有很多事情是开发人员无法预测和知道的。例如,用户体验(UX)期望可能在软件的第一次迭代后发生变化。具体示例:人们对更快的屏幕加载时间或更快的滚动需求有更高的期望,用户不再希望长时间向下滚动屏幕,因为它不再流行。由于各种原因,人工智能永远无法单独预测或测试,甚至其创造者也无法预测的事情。因此,在软件测试领域,不可能有真正自主的人工智能。创建一个软件测试“终结者”可能会激起食客和潜在买家的兴趣,但这样的部署注定是海市蜃楼。相反,软件测试自主性在人工智能和人类一起工作的背景下更有意义。2.人工智能需要经历三个成熟阶段。软件测试和人工智能开发基本上分为三个成熟阶段:操作阶段(Operatinal)、过程阶段(Process)和系统阶段(Systemic)。软件测试处于运行阶段。最基本的操作测试涉及创建模拟测试人员执行数百次的例程的脚本。这个例子中的“人工智能”远没有足够智能来帮助缩短脚本创建、重复执行和存储结果。程序AI是操作AI的更成熟版本,测试人员使用它来生成测试。其他用途可能包括测试覆盖率分析和建议、缺陷根本原因分析和工作量估算以及测试环境优化。ProcessAI还可以促进基于模式和用途的合成数据的创建。程序AI的好处是显而易见的,它提供了一双额外的“眼睛”来抵消和对冲测试人员在设置测试执行策略时承担的一些风险。在实践中,程序AI可以更容易地测试修改后的代码。手动测试通常会看到测试人员重新测试整个应用程序,以寻找代码更改时的意外后果。另一方面,程序AI可以建议对单个单元(或有限的影响区域)进行测试,而不是对整个应用程序进行大规模重新测试。在这个级别的AI中,我们在开发时间和成本方面看到了明显的优势。然而,当目光切换到第三阶段——系统化AI时,画风就会变得朦胧,因为未来可能会变成一个滑溜溜的、没有回报的承诺。3.不可靠的系统人工智能系统(或完全自主)人工智能测试不可能(至少目前不可能)的原因之一是人工智能需要大量培训。测试人员可以确信ProcessAI会建议进行单元测试以充分确保软件质量。然而,对于系统AI,测试人员无法高度自信地知道该软件将满足所有要求。如果这个级别的AI是真正自主的,它就必须测试每一个可以想象到的需求——甚至是人类没有想象到的需求。然后,他们需要审查自主人工智能的假设和结论。证明这些假设是正确的需要花费大量的时间和精力来提供具有高度置信度的证据。自主软件测试永远无法完全实现。因为人们不会信任它,而这相当于失去了实现完全自主的目标和前提。4.AI需要调整虽然完全自主的AI是一个神话,但支持和扩展人类在软件质量方面的努力的AI是一个值得追求的目标。在这种情况下,人类可以支持AI:测试人员仍然需要保持耐心来监督、纠正和教导AI以及它所依赖的不断发展的训练集。挑战在于如何训练人工智能,同时将风险分配给测试软件中的各种错误。这种培训必须是连续的,不限于测试领域。自动驾驶汽车制造商训练人工智能来区分一个人是在过马路还是在骑自行车。测试人员必须使用过去的数据训练和测试AI的软件,以建立他们对AI能力的信心。与此同时,一个真正自主的测试人工智能需要预测未来的条件——开发人员主导和用户主导——这是它无法根据历史数据做的事情。相反,培训师倾向于根据自己的偏见在数据集上训练人工智能。这些偏见限制了人工智能探索的可能性,就像盲人阻止马匹偏离既定路径一样。人工智能的行为越有偏见,它的可信度就越差。可以训练的最好的AI是处理风险概率并得出最终由人类评估的风险缓解策略。5.风险缓释措施软件测试说到底就是关乎测试人员的成就感和自信心。他们衡量和评估可能给开发人员和用户带来问题的初始实施和代码更改的可能结果。但不可否认的是,即使软件测试充分探索了应用程序崩溃的每一种可能性,可靠性也不可能是100%。所有软件测试都存在风险因素,无论是手动还是自动执行。测试人员必须根据代码导致问题的可能性来决定测试覆盖率。他们还必须使用风险分析来决定在覆盖范围之外应该关注哪些领域。即使AI确定并显示软件在用户活动链中任何一点发生故障的相对概率,测试人员仍然需要手动确认计算结果。AI为受历史偏见影响的软件连续性提供了可能性。然而,人们对AI风险评估和风险缓解方法仍缺乏高度信心。支持人工智能的软件测试工具应该实用高效,以帮助测试人员产生真实的结果,同时减轻测试人员的体力劳动。AI在软件测试中最令人兴奋(也可能具有破坏性)的部署是在AI开发成熟度的第二级:程序AI。正如Katalon的一名研究人员指出的那样,“人工智能在软件测试中的最大实际应用是在流程层面,即自主测试创建的第一阶段。届时我将能够创建由我创建的自动化测试,也可以为我服务。”自主和自我导向的人工智能,在软件测试过程中取代所有人类等等,都是炒作。期望AI增强和补充人类的努力并减少测试时间是更现实和可取的。参考链接:https://dzone.com/articles/ai-in-software-testing-the-hype-the-facts-the-pote