作者 | luke 百度 Geek 说
摘要:软件测试,在软件领域经常被从业者看来是不直接创造价值的工作环节,行业内也一直促进软件测试从业者追求高质高效低成本的测试。随着 AI&大数据技术的飞速发展,也给软件测试带来了福音。百度 MEG 质量效能平台自 2018 年开始探索 AI 技术在软件测试领域的应用场景,随着探索的不断突破,发现软件测试蕴含了极其丰富的 AI 场景。我们把智能测试定义为:利用数据和算法相结合赋能质量活动的测试方法;经过讨论和探索,我们将智能测试分为计算、感知和认知智能三个阶段。
该阶段利用软件过程产生的行为数据 + 算法 + 机器算力嵌入到质量活动中,辅助、干预测试行为,进而达到提质增效的目标;该阶段不追求高精尖的算法,目的是证明数据和算法可以在软件测试中发挥极大的作用。
在该阶段我们基于遗传算法与任务优先级算法实现测试任务排队时长缩短、基于 DTW 算法应用内存泄露检测、基于皮尔逊相关系数和分桶算法实现百亿级流量的精准回放、基于 JC 距离用例筛选技术实现用例执行的大幅降低等场景。
我们用了近两年时间在软件测试活动中挖掘 50+ 应用场景,均得到了非常正向的效果。但是在实践过程中,也认识到计算智能的局限,比如基于覆盖率的用例推荐,如出现底层代码的修改,就会将大部分用例都选出,但实际用例仍无揭错能力,造成极大浪费,为了解决此类问题感知智能应运而生。
该阶段的信心来源于两个软件测试领域的现实:1、不是所有的软件变更行为都会带来风险;2、不是所有软件测试活动都能揭露风险。因此在软件测试领域有极大的资源浪费和问题露出,促使我们极力探索感知智能。
该阶段利用软件过程产生的行为数据 + 更高阶的算法 + 机器算力,能够像人一样感知风险并做出决策,主要目的希望能够像人一样感知、识别风险并做出决策以更高效的指导质量活动,在该阶段的探索有:视觉技术在前端自动化用例撰写、去弹窗、UIDIFF 等领域的应用;基于风险预估贝叶斯 +catboost 的用例推荐技术实现用例推荐比从 50% 到 10% 的提升;基于 LR 模型预估项目风险的自主测试系统实现 70% 低风险无人干预上线;基于深度学习的白盒代码缺陷检测等。这些场景和技术应用的突破证明了 AI 在软件测试完全可以替代人去感知、识别风险,并决策质量活动,使得软件测试活动足够高效。百度智能测试目前主要在该阶段进行持续探索。
该阶段是感知智能的延续,感知智能阶段可以感知识别风险并决策要付诸何种质量活动,但该质量活动仍然可能是由人完成,如用例撰写、场景设计、人工点击等,认知智能寄希望在感知到风险后,能够由机器做出实际反应去揭露风险,在该阶段我们探索了基于 AST 的智能异常单元测试代码生成技术实现 C++ 的异常单测召回 core、死循环等问题、基于 UCB 优先级策略遍历技术实现单位时间内更高的页面覆盖、任务失败智能定位技术降低人工排查成本、交付持续集成流水线自愈技术等场景;该阶段目前还刚刚起步,但我们相信随着 AI 技术的不断成熟和创新,认知智能阶段也会迎来大爆发。