从自动化软件测试到自主测试,还差几步?

科技   2024-11-22 22:19   上海  

(未来自主测试场景,由SD3.5模型生成)

自主测试(Autonomous Testing)是许多测试人的梦想,也是许多企业管理想达到这样的目标。
那什么是自主测试?它是指利用人工智能(AI)技术,能够在最少或无需人工干预的情况下自动执行、管理和优化测试过程这种测试方式旨在实现端到端的测试自动化,从测试用例的生成到执行,再到结果分析和问题修复,全过程智能化运作
自主测试结合了多种AI技术,包括机器学习(ML)、自然语言处理(NLP)等,使系统能够理解应用的行为、学习测试模式,并根据实际情况动态调整测试策略。其目标是模仿甚至超越人类测试人员的能力,提高测试效率和覆盖率

是不是觉得离我们还很远?

其实已经近在眼前了。2023年12月,腾讯团队发表了一篇论文,他们开发出来的AppAgent, 其智能代理能力可以用于操作任何 App,它在 50 个复杂手机任务上展示了强大的能力。测试结果证明,AppAgent 在处理各种高级任务方面表现出色,显示出其适应性、用户友好性以及高效的学习和操作能力。详见文章:震撼:AppAgent让移动App应用测试更轻松。
也是2023年,华为公司的两位专家在QECon深圳站分别做了分享,一个是web页面的自主探索测试,另一个一款上下感知(Context-aware)的API场景级自主测试工具ATGen。
Web页面自主探索测试主要能力有:
  • 以路径模型方式承载页面遍历逻辑,实现百十行测试脚本遍历被测系统所有页面/控件。
  • 通过监听浏览器日志+图像处理,自动监测通用异常如:接口异常(4XX、5XX)、js异常及界面异常
  • 通过图像分割+AI图像识别,自动识别查询场景。
  • 通过控件建模+分词匹配,自动完成查询场景交互与异常识别。
全场景自主接口测试工具ATGen能够实现应用API场景级测试全自动设计、生成、执行和判定,全过程不需要写一行代码,四步完成:创建任务;自主生成API测试上下文操作依赖图(ODG);自动生成API测试序列、测试数据、测试判定点,并自动下发到测试服务执行;基于实时反馈自动判定测试结果,动态更新引导下一轮测试生成,如下图所示。

(还可参考:https://bbs.huaweicloud.com/blogs/401149)

今天在大模型时代,是不是更容易实现自主测试?

今天基于大模型的理解、推理和生成能力,基于大模型构建的测试平台,可以理解需求,生成验收标准、生成测试用例、生成测试脚本、生成测试报告。但是,目前大模型还存在幻觉,输出的结果需要人工检查或验证,也难以完成E2E全过程的自主测试。
有没有可能自我验证呢?也是有可能的,前提条件是需求准确,如有明确的验收标准,这样需求的基础是牢固的,这样测试生成的结果就很有可能得到自我验证。从这个角度看,在大模型时代,达到自主测试还差一步:就是先实施好ATDD/BDD,可以参考之前的文章:大模型时代的软件研发:正确的打开方式
如果模型能力上不去,自主测试还不行。我们希望大模型有较强的逻辑推理能力,类似于OpenAI o1模型或DeepSeek刚推出的R1模型,而且还不够,要真正做到自动验证或相互博弈,需训练出不同的大模型,如代码大模型、测试大模型和业务大模型,三个模型借助智能体协同工作,才能实现自主测试。所以要实现自主测试,除了实施好ATDD/BDD之外,企业需要训练出面向业务领域的业务大模型、代码大模型和测试大模型,并在基础上开发出能够完成多智能体协同工作的平台。
这里又增加了两步。还有什么挑战需要克服的?
  1. 增强自我学习能力。自主测试需要系统具备持续学习和适应能力。通过引入更先进的强化学习、迁移学习等算法,自主测试系统能够从过去的测试运行中不断学习,识别缺陷模式,并优化测试策略。

  2. 实现高级自愈能力虽然现有的自愈测试自动化已经能够处理界面的小变化,但要实现完全自主测试,系统需要具备处理更大范围变更的能力,而且能够修正测试用例的错误、修复测试脚本的缺陷等。这包括理解应用逻辑变化,并自动调整测试脚本以适应新的功能和架构。

  3. 实现综合的数据管理和预测分析能力自主测试系统不仅能自动采集、整理和管理测试运行的数据,而且需要基于这些数据实现综合的预测分析功能。通过分析历史缺陷数据和实时指标,系统可以预测软件中高风险的区域,并自动调整测试重点,确保覆盖各种风险的区域。
  4. ......

所以还有一段比较长的路要走,目前有些团队连自动化测试还没有做好。anyway,从自动化测试到自主测试,至少还差四步。

这四步,也可以换一个角度来分析,即人们常用的成熟度模型。要达到自主测试,我们可以将智能化测试分为四个水平(层次)。

L1:未达到自主,但AI起到辅助作用测试人主导测试的各个环节AI仅作为辅助工具(助手),赋能一些测试环节,如部分的测试用例生成或少量的测试脚本生成。

L2:多个测试任务自主测试(即某几个测试任务自主完成),例如单元测试代码或某个接口测试脚本自动生成,而且自动执行脚本,有错误自动修复或重新生成,直到没有问题,不需要人干预。一些任务由AI主导,整个测试过程还是由测试人员主导,AI工具成为不可缺少的测试伙伴,AI和测试人员结对完成工作。

L3: 有条件的自主测试,在业务不复杂、系统规模不大或全新的项目等条件下,AI能自主完成全过程的测试。或者某一类测试,如功能测试、或性能测试、或安全性测试,AI能完成全过程自主测试。这时测试人员要做出判断,什么样的条件下,交给AI完成全过程的自主测试。当然,如同定义,测试人员也可以有少量干预,如对最终结果进行检查、分析。这时,AI在某些条件下起着主导作用。

L4: 真正的自主测试,不论业务多复杂,不论哪种测试类型,AI都能完成全过程的自主测试,虽然可以有少量的人工干预,如对最后结果进行检查和分析,或中间偶尔出错后AI不能自动修复,重启测试过程等。这时AI起着主导作用、测试人员起着辅助作用。

国内有些团队在去年或今年已经达到L2自主测试水平,国外也有些测试工具可以完成L2水平的自主测试。在未来2-3年内,有些优秀团队(或AI测试平台)可以达到L3水平。L4是摆在我们面前的巨大挑战,需要等到AGI到来之时。

软件工程3.0时代
由于大模型(LLM)正在改变着千行百业,软件工程(SE)更是首当其冲,迎来软件工程3.0新时代:模型驱动研发、模型驱动运维。本公众号将致力于研究SE3.0时代的软件研发新范式、理论与方法,介绍SE3.0时代的工具与实践。
 最新文章