1、当软件测试遇上AI算法刘烨庞|南方科技大学演讲嘉宾刘烨庞南方科技大学计算机科学与工程系长聘副教授(博导、研究员)南科大软件质量实验室负责人,斯发基斯可信自主系统研究院可信软件中心负责人。2010年本科毕业于南京大学(校优秀毕业生),2015年博士毕业于香港科技大学,师从软件测试与分析专家IEEE Fellow张成志讲席教授。研究方向包括软件测试与分析,智能化软件工程,可信人工智能等,近五年主持国家、省部级以及企业项目14项。在国际期刊与会议上发表论文95篇,获ACM SIGSOFT杰出论文奖三次、杰出软件制品奖一次,被国际同行评为“全球前10最活跃软件工程青年学者”。开发的工具在开源项目(如T
2、ensorFlow,PyTorch)中检测到2000余个未知缺陷,多项成果在国内龙头企业部署应用。常年参与国际会议及期刊组织与审稿工作,多次担任领域顶会程序委员会委员,获ACM SIGSOFT杰出审稿人奖和服务奖。更多信息请见个人主页https:/yepangliu.github.io/。3目 录CONTENTS1.背景2.智能化软件测试技术介绍3.AI4Testing方向的探索与实践4.总结与展望4背景PART 0156软件是人工智能时代的基础设施深圳2022年上线汽车尾气监管平台,实时监控黑烟车,助推智慧城市建设智能汽车中的动力系统、娱乐系统、驾驶辅助系统等都由软件控制人们日常使用各种Ap
3、p来完成通讯、社交、工作、学习、支付、理财、出行等任务天智一号卫星采用开放系统架构,支持应用软件按需加载,系统功能按需重构软件无处不在软件定义一切7软件质量正变得前所未有的重要 软件事故可能导致严重后果,包括经济损失、数据泄露、人身伤害甚至死亡。2024年7月,CrowdStrike安全软件更新中的漏洞导致全球近850万台Windows设备蓝屏,冲击航空、酒店、医院等众多行业,造成数十亿美元损失。2014年,Heartbleed漏洞被曝光,一个存在于OpenSSL软件中的内存管理错误,导致攻击者窃取云服务器中保存的海量敏感信息。2024年8月,一辆特斯拉Model S在西雅图附近撞死摩托骑手,
4、汽车在事故发生时正处于“完全自动驾驶”模式,FSD软件未能正确识别道路状况并及时做出反应。8测试是保障软件质量的重要手段 软件测试可以被看作是一个搜索和优化问题 搜索:如何从极大的程序状态空间中找到错误的状态?优化:如何在QA资源有限的情况下尽可能多地发现bugs?人工测试效率低下,近五十年来研究人员设计了大量自动化测试生成技术 传统算法:随机算法(unguided&guided)、符号执行(包括DSE)、基于模型的测试等 AI算法:启发式算法、多目标优化算法、深度学习算法,强化学习算法等智能化软件测试技术介绍PART 02910AI算法在软件测试中一直扮演重要角色早在上世纪70年代就有学者提
5、出基于启发式算法的测试技术(Miller and Spooner,TSE 1976),开创了后来被叫做Search-Based Software Testing的研究领域11基于启发式算法的软件自动化测试基于遗传算法生成高覆盖率JUnit测试用例集(论文1300+引用)AFL(American Fuzzy Lop)Google前员工Micha Zalewski开发的具有广泛影响力的开源模糊测试工具(使用遗传算法提升CFG的边覆盖率)Fraser et al.ESEC/FSE1112基于多目标优化算法的软件自动化测试Mao et al.ISSTA16移动应用自动测试工具,优化目标:代码覆盖率、动
6、作序列长度、触发的应用crash数量(论文650+引用,技术在Facebook公司成功转化)13基于深度学习算法的软件自动化测试DL算法广泛用于测试,相关论文占所有DL4SE论文的23%(Yang et al,CSUR22)爱丁堡大学研究人员训练深度学习模型(language model)自动生成程序,用于编译器测试DeepSmith ISSTA 201814基于强化学习算法的软件自动化测试字节跳动质量实验室推出的app稳定性测试工具(利用Q-learning算法提升GUI测试效果)天津大学Yan Zheng等学者与网易伏羲实验室合作将A2C算法应用于在线格斗游戏测试Fastbot2 ASE2