生成式人工智能有可能对软件开发和生产力产生积极影响,但随着生产力的提高,软件测试的压力也随之增加。
如果您能够生成的代码量是以前的 5 倍甚至 10 倍,那么需要测试的代码量也会增加 5 到 10 倍。
Gartner 高级总监分析师 Jim Scheibmeir 表示:“现在许多首席财务官希望为每个开发人员提供每月 30 美元的费用,以便为他们提供 GitHub Copilot 或类似产品。” “我觉得我们有点忘记了,软件开发的瓶颈通常不是代码的编写,而是代码的测试。我们将提高开发人员的工作效率,其中包括提高他们的编写效率缺陷”。
与开发人员希望编写更多代码的人工智能辅助开发工具不同,人工智能辅助测试工具的目标是减少测试。例如,根据 Scheibmeir 的说法,测试影响分析工具之类的东西可以创建一个测试策略,该策略的大小适合正在推送的实际代码更改,以便只运行需要运行的测试,而不是只运行每个测试对每一个变化进行测试。
“这些工具为测试人员提供了关注点,”他说。 “今天让测试人员集中精力是非常困难的。有一种感觉,我们必须去测试所有的东西,但我们总是很赶时间。”
Parasoft 的首席布道师 Arthur Hicken 同意,我们已经达到了测试套件需要数小时甚至数天才能完成的地步,而使用生成式 AI 来帮助优化测试覆盖率可以帮助解决这一问题。他说:“如今,你可以与人工智能结合起来,对验证更改需要做什么进行很好的估计。”
生成式 AI 帮助测试生成、管理等
除了帮助测试人员减少测试之外,人工智能还渗透到流程的其他方面,以提高端到端的效率。例如,SmartBear 高级副总裁 Madhup Mishra 表示,生成式人工智能现在可以用来创建测试本身。 “测试人员实际上可以用简单的英语表达他们的软件测试,人工智能实际上可以代表他们创建自动化测试,”他说。
“在幕后,GenAI 应该了解测试的背景,了解屏幕上发生的情况,他们实际上可以提出推荐的测试,真正解决用户的问题,而用户无需做更多的事情,”他说。
Scheibmeir 解释说,低代码和无代码工具已经通过直观的拖放界面探索了让测试生成变得更容易的想法,而生成式 AI 现在正在将其提升到一个新的水平。
Typemock 首席执行官 Eli Lopian 表示,人工智能非常擅长探索边缘情况,并且可能会提出开发人员可能错过的场景。他认为它可以理解代码库中测试人员可能看不到的复杂交互,这可以带来更好的覆盖率。
人工智能还可以帮助生成测试数据,例如用户名、地址、PIN 码、电话号码等。根据 Mishra 的说法,生成测试数据通常是一个漫长且耗时的过程,因为测试人员必须考虑所有可能的情况变体,例如名称中可以包含的字符或电话号码之前的国家/地区代码。
“生成式人工智能可以创建所有不同的测试数据组合,您最终可以使用这些组合来测试所有极端情况,”米什拉解释道。
另一个潜在的机会是在测试管理中使用人工智能。公司通常拥有他们创建的所有不同测试的存储库,人工智能可以对所有这些进行排序,并就使用哪些测试提出建议。 Mishra 解释说,这使得测试人员能够利用他们已经创建的内容,并腾出更多时间来创建他们需要的新测试。
Parasoft 的希肯补充说,人工智能可以对旧的测试进行分类,并验证它们是否仍然有效。例如,如果测试正在捕获今天的日期,那么该测试明天将不起作用。
人工智能可能会让测试变得更容易,但不会消除对它的需求
Scheibmeir 表示,所有这些人工智能增强功能共同帮助组织对软件质量承担更多责任,而在过去,他们可能会外包测试。
与公民开发者运动类似,现在可用的测试功能使任何人都可以更轻松地运行测试,因此不需要像以前那样的专业技能。
Scheibmeir 表示:“生成式 AI 所提供的炒作和功能让其中一些组织重新考虑我们是否应该自己进行更多的测试、更多的测试自动化。”
然而,仍然重要的是要记住人工智能确实有其缺点。根据 Lopian 的说法,最大的缺点之一是人工智能无法理解软件应该给予你的情感。
“当你测试某些东西并且想看看按钮是否位于正确的位置以使流程良好时,人工智能会发现很难理解?我不认为人工智能在某些方面会像人类一样好那种地区,”他说。
同样重要的是要记住,人工智能不会取代测试人员,测试人员目前仍需要密切关注,以确保进行所有正确的覆盖范围和正确的测试。 Lopian 将其比作“聪明的实习生”,你仍然需要密切关注以确保他们正确地做事。
人工智能对开发技能的影响将推动质量需求进一步左移
米什拉警告说,另一个重要的考虑因素是,如果开发人员过于依赖生成式人工智能,他们的开发技能可能会萎缩。
“有多少次,你打了一辆 Uber 车,却发现 Uber 司机对你要去哪里一无所知,他们只是盲目地跟随 GPS 的方向,对吧?所以开发中就会出现这种情况,QA 需要进行排序加快速度,确保从设计阶段就嵌入质量,一直到应用程序代码在生产中的表现并对其进行观察,”他说。
希肯对此表示同意,并将其比作没有人再记住电话号码,因为我们的手机可以存储所有信息。
“如果我是一个年轻人,想要拥有一份良好的长期职业生涯,我会小心不要过度依赖这个拐杖,”他说。
这并不是说开发人员会完全忘记如何做他们的工作,也不是说在 20、30 年内没有人会知道如何在没有人工智能帮助的情况下创建软件,而是说将会出现一类新的“休闲开发人员” ,”这将与公民开发商不同。
希肯认为,这将导致一个更加分层的开发人员社区,其中有知道计算机如何工作以及如何与计算机对话的“OG 编码员”,也有知道如何向计算机提出问题的临时开发人员 - 提示工程师。
“我认为我们必须更好地定义创建和管理我们软件的人员,其角色和头衔可以帮助我们了解他们的能力,”他说。 “因为如果你只说软件工程师,那么这个人需要真正了解计算机。而如果你说开发人员,他们可能不需要了解计算机。”
您可能还喜欢……
人工智能驱动测试的演变和未来:确保质量并解决偏见
RAG 是法学硕士的下一个令人兴奋的进步