NiDD2024A+研发数学峰会Al+ Development Digita summitAI驱动研发变革促进企业降本增效北京站08/16-17大语言模型时代的变异分析王博北京交通大学
NDDA+研发数字峰会演讲嘉宾王博北京交通大学计算机与信息技术学院讲师、硕士生导师,CCF专业会员CCF系统软件专委执行委员、CCF开源发展委员会执行委员。分别于北京大学、中国科学技术大学和中南大学获得博士、硕士和学士学位。研究兴趣为软件测试与调试,已在ASE、ISSTA、TOSEM软件学报等发表多篇论文。担任ASE、 FSE、ICST、 Intemetware等软件工程重要会议PC,担任TSE,TOSEM,TDSC,EMSE,JSS.ASEJ.IETSoftware.JSME软件学报等多个期刊审稿人。获得ISSTA2017杰出论文奖,全国大学生系统能力大赛优秀指导教师和北京市高校优质教案。
DDA+研发数字峰会背景2.痛点目录3.解决思路CONTENTS4.具体实现5总结与展望
DDA+研发数字峰会PART01背景
软件正确性至关重要欧空局Ariane5波音737Max坠机海湾战争中爱国者飞弹7.23事故软件缺陷已经导致很多灾难性后果保障软件的正确性十分重要当我们说软件是正确的:程序的行为符合正确性规约(specification)2024AI+研发数字峰会|A驱动研发变革促进企业降本增效NDD
保障正确性的方法int foo(int a, int b){return a +b;1.形式化方法Formal Method:(a>=0&&b<=0)l输入域(a<=0&&b>=0)>correct(a>=0&&b>=0&&a+b(a<=0&&b<=0&&a+b<=0)形式化方法成本很高2.软件测试Testing:foo(0,1)>correctfoo(INTMAX,1)=ERRORfoo(INTMAX-1,1)=INTMAX;foo(INTMAX,INTMIN)=-1;输入域测试是不完备的!2024AI+研发数字峰会|A驱动研发变革促进企业降本增效NDD
测试质量直接影响到软件质量"核心问题是:我们如何度量测试的好坏?测试质量达标的系统才有一定的可信度测试集约减测试排序我们朴素的愿望:希望测试能发现真买缺陷但是在发现之前,直实的缺陷对干我们是未知的测试可以非常有效地显示buq存在,但却无法证明buq的不存在我们可以使用一些指标,间接地度量测试质量·测试复盖变异测试:用人造缺陷发现率估计真实缺陷发现率2024Al+研发数字峰会|A驱动研发变革促进企业降本增效NDD
变异测试概览public intintb){程序return((a>b)b;7Originalpublic int max(int a, int b){return((a >=b)? ab;Mutant1生成变异体(mutant):变异算子(mutation operator),public int max(int a,intb){return ((aI=by?ab:Mutant 2每个变异体是原始程序的小型文法改动变异体2024AI+研发数字峰会|A驱动研发变革促进企业降本增效NDD
变异测试概览程序测试集生成变异体(mutant):变异算子(mutation operator),被测试集杀死的变异的比例:变异体执行测试变异分数(Mutationscore)2024AI+研发数字峰会A驱动研发变革促进企业降本增效NDD
变异测试在软件测试中的发展变异测试自1971年被DeMillo和Hamlet提出以来,是软件测试中的重要方法.修改位置:从一阶变异(first order)到高阶(higher-order),支持修改多处。在单元测试中:,面向高级语言源码:C、Java.Python.J..面向中间表示:Java bytecode,LVM-IR从桌面应用到Android, MPI、智能合约程序等从单元测试扩展到其他测试阶段集成测试设计阶段(例如在基于模型的软件开发过程中针对设计FSM的变异)2024AI+研发数字峰会|A驱动研发变革促进企业降本增效NDD
从变异测试到变异分析基于变异的缺陷自动定位(mutation-based fault localization》是变异测试的衍生技术缺陷自动定位:给定测试集(至少有一个未通过测试》和程序,返回程序中的语句出错可疑度分数。·传统定位方法:基于测试复盖信息对语句排序(spectrum-based fault localization)、基于变异的方法:通过观察变异对测试结果的改变计算可疑度doublecompute(double]jnums)。若一个变异使失败测试通过了,那更可能是变异了出错语句int n = nums.length;double sum;for(inti=0;i<n;i++){sum +=numsifailed(mi)Smutant(mi)=VtotalJaied.-(failed(m,)+passed(m;)return sum;2024Al+研发数字峰会|AI驱动研发变革促进企业降本增效NDD
从变异测试到变异分析变异测试a-bb-a变异算子单元测试变异分数基于变异的缺陷定位翻转if条件修改代...