从很多方面来看,2022 年都是软件的分水岭;随着疫情最严重肆虐破坏的过去,我们可以看到暂时的变化,以及哪些变化已经成为结构性的了。因此,那些利用软件建立可持续长期业务的公司得以蓬勃发展,打破了疫情前的现状。然而,与此同时,那些仅仅是技术潮流的产品将被扔进历史的垃圾桶。
随着工作实践以及软件和 IT 对世界生存的重要程度的变化,软件测试行业也发生了类似的转变,转向质量工程实践和自动化程度的提高。与此同时,我们看到机器学习、人工智能以及使之成为可能的大型神经网络取得了重大的进展。这些新技术将以前所未有的方式改变软件的开发和测试方式。在本文中,我将讨论未来几年我们可能会看到的趋势。
即使是在疫情之前,软件测试就已经通过提高测试过程中各个级别的自动化程度而发生了转变。然而,由于需要在疫情期期间快速重塑商业模式或添加新的功能来处理远程工作/生活,开发人员的需求旺盛,供不应求。这导致了对更多编程专业知识进行测试的矛盾需求,以及对这些编程技能的更多竞争。
结果之一是转向了用“低代码”或“无代码”工具、平台和框架来构建和测试应用程序。在测试方面,这意味着 Selenium 或 Cypress 等代码繁重的测试框架面临着来自业务用户可以使用的低代码替代方案的竞争。此外,对于某些 ERP 和 CRM 平台,例如 Salesforce、Dynamics、Oracle 和 SAP 等,这意味着测试工具本身需要对被测试的应用程序有更多的智能和理解。
我们看到机器学习(ML)用于测试的第一种方式是使当前的自动化测试更具弹性,更不那么脆弱。软件测试的一个致命弱点是维护,主要体现在测试整个应用程序和用户界面而不是独立模块(称为单元测试)时。软件应用程序会不断变化,因为用户希望不断更新其他功能或业务流程;然而,这些更改将会导致自动测试不再能正常工作。
例如,如果登录按钮更改了它的坐标、形状或位置,则可能会中断先前记录的测试。即使是像页面加载速度这样的简单更改也可能导致自动测试的失败。具有讽刺意味的是,人类比计算机更直观,也更擅长测试,因为我们可以查看应用程序,并立即看到哪个按钮放在了错误的位置、哪些内容没有被正确显示。当然,这是因为大多数应用程序都是为人类使用而构建的。那些为其他计算机使用而构建的软件系统(称为 API)使用自动化测试要容易得多!
为了克服这些限制,较新的低代码软件测试工具正在使用机器学习让这些工具以多种方式并多次迭代扫描正在测试的应用程序,以便它们能够了解哪些结果是“正确”的,哪些结果是“不正确”的。这意味着当系统的更改与最初记录的内容略有偏差时,它将能够自动确定该偏差是预期内的(测试通过)还是预期外的(测试失败)。当然,我们仍然处于这些工具的早期阶段,而且它们的炒作多于实质。尽管如此,随着我们步入 2023 年,我们将会看到机器学习在软件测试中的实际用例,特别是针对复杂的业务应用程序和快速变化的云原生应用程序的。
机器学习技术的另一个广泛应用将是在质量工程的分析和报告方面。例如,软件测试中的一个长期存在的挑战是要知道将测试资源和工作集中在哪里。“基于风险的测试”这一新兴学科旨在将软件测试活动集中在包含最大风险的系统区域上。如果你可以使用测试来减少总体风险敞口,那么你就有了一种分配资源的量化方式。衡量风险的方法之一是查看特定事件的概率和影响,然后使用先前的数据来了解这些值对于系统每个部分的重要性。然后,你可以针对这些区域进行测试。对于机器学习来说,这是一个近乎完美的用例。这些模型可以分析之前的开发、测试和发布活动,以了解发现缺陷、更改代码的位置以及历史上发生过的问题。
如果说机器学习正在改变软件测试行业,那么人工智能(AI)将以多种方式改变网络安全行业。例如,已经有传言称,许多防病毒和入侵的检测系统正在使用人工智能来寻找可能表明网络攻击的异常模式和行为。然而,我们现在才看到人工智能首次被用于定位和探测系统,以主动发现薄弱点和漏洞。
例如,流行的 OpenAI ChatGPT 聊天机器人被要求创建用于访问系统的软件代码,并生成假冒但真实的钓鱼文本,以发送给使用该系统的用户。鱼叉式网络钓鱼最常见的方法之一是使用某种社会工程和模拟,这是网络安全的新前沿。聊天机器人能够根据从受害者那里实时收到的响应,同时创建工作代码和逼真的自然语言,以使人工智能能够创建动态的实时攻击能力。
如果你不相信自己会上当受骗,这里有一个测试——本文中有一个段落是由 ChatGPT 编写的,并且我们将它原封不动地粘贴到了本文中。你能猜出是哪一段吗?
当我们部署基于人工智能(AI)和机器学习(ML)的系统和应用程序时,面临的另一个挑战是:我们如何测试它们?对于传统的软件系统,人类编写需求,开发系统,然后让其他人(在计算机的辅助下)对其进行测试,以确保结果匹配。对于 AI/ML 开发的系统,通常没有离散的需求,取而代之的是大数据集、模型和反馈机制。
在许多情况下,我们不知道系统是如何得出具体答案的,只知道答案是与所提供的数据集中的证据相符。这使得 AI/ML 系统能够创建人类以前不知道的新方法,并找到独特的关联和突破。然而,这些新的见解是未经证实的,可能只与它们所基于的有限数据集一样好。风险在于,你开始将这些模型用于生产系统时,它们会以意想不到且不可预测的方式运行。
因此,测试人员和系统所有者必须确保他们清楚地掌握了业务需求、用例和边界条件(或约束)。例如,定义所用数据集的限制和训练模型的特定用例将能确保模型仅用于支持其原始数据集所代表的活动。此外,让人类独自检查模型预测的结果也是至关重要的。
人工智能开发人员面临的物理挑战之一是当代硬件的局限性。一些正在使用的数据集的规模达到了 PB 级,这对于根本没有足够 RAM 容量来运行这些模型的数据中心来说是一个挑战。取而代之的是,它们必须使用 500 多个通用处理单元(GPU)来处理整个数据集,每个 GPU 都有数百 GB 的 RAM。在处理方面,问题也类似,当前的电子 CPU 和 GPU 会产生大量的热量,消耗大量的电力,并行处理的速度会受到电阻的限制。解决这些限制的一个可能方案是使用光计算(Optical Computing)。
光计算是一种利用激光和光电探测器等基于光的技术来执行计算并处理信息的计算类型。虽然已经有了将光计算用于人工智能(AI)应用的研究,但它尚未被广泛用于这一目的。将光计算用于人工智能存在一些挑战,其中包括许多人工智能算法需要高精度的数值计算,而使用光技术很难执行这些计算。
话虽如此,但将光计算用于人工智能仍有一些潜在的优势。例如,光计算系统可能会以非常高的速度运行,这对于某些需要实时处理大量数据的人工智能应用来说非常有用。一些研究人员也在探索使用光子学(光学的一个子领域)来实现人工神经网络,这是许多人工智能系统的关键组成部分。
随着人工智能变得越来越主流,可能会出现一些还没有被我们发明出来的全新职业领域。例如,如果你曾经尝试过使用 ChatGBT 这样的聊天机器人,你会发现它可以写出大量看似合理但却完全不准确的信息。除了简单地雇佣人类事实核查人员和人工软件测试人员团队之外,道德规范在软件测试中可能会扮演一个新的角色。
一些众所周知的技术已经从输入的数据中学习到了偏见或开发了歧视算法。例如,Compass 法庭判决系统将对有色人种或面部识别技术在某些种族上比其他种族更有效的人判处更长的刑期。软件测试人员的角色包括理解这些模型中的偏差,并能够在系统投入生产之前对其进行评估。
另一个吸引人的职业领域与此相反,即试图影响人工智能的学习。例如,在数字营销领域,聊天机器人可能会部分取代搜索引擎的使用。当聊天机器人可以在一段话中为你提供(潜在的)正确答案或将答案读给你听时,你为什么还要点击链接页面来查找答案呢?在这种情况下,搜索引擎优化(SEO)领域可能会被新的聊天机器人优化(CBO)领域所取代。网站和其他信息资源的所有者会希望让他们的内容更容易被聊天机器人消化,就像今天网站开发人员试图让网站更容易被搜索引擎索引一样。
ChatGBT 写的是哪一段?
你猜到了吗?那就是“人工智能如何改变计算机硬件?”这一节的最后一段。
总结
总之,2023 年和未来几年将会发生重大的变化,这些变化将在大大小小的方面影响软件测试行业。因此,你应该开始研究如何使用人工智能(AI)和机器学习(ML)来改进你的测试流程,利用基于人工智能的安全工具,并实施基于风险的测试,例如可以利用大数据洞察力的基于风险的测试。