资源描述:
《juta_一个java自动化单元测试工具_严俊》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、word完美格式JUTA:一个Java自动化单元测试工具严 俊1 郭 涛2 阮 辉1 玄跻峰3(中国科学院软件研究所 北京 100190)(中国信息安全测评中心 北京 100085)(大连理工大学数学科学学院 辽宁大连 116024)(junyan@acm.org)JUTA:AnAutomatedUnitTestingFrameworkforJavaYanJun1,GuoTao2,RuanHui1,andXuanJifeng31(InstituteofSoftware,ChineseAcademyofScie
2、nces,Beijing100190)2(ChinaInformationTechnologySecurityEvaluationCenter,Beijing100085)3(SchoolofMathematicalSciences,DalianUniversityofTechnology,Dalian,Liaoning116024)Abstract Testingisveryimportantandtimeconsuminginthedevelopmentofhigh-qualitysoftwaresyst
3、ems.ThispaperproposesanautomatictestingtoolJUTAforunittestingofJavaprograms.Theapproachisbasedonsharpanalysisoftheprograms.JUTAfirstlyemploystheJavaoptimizationframeworkSoottoparseasingleJavamethodintobytecodeandtranslatesitintoacontrolflowgraph(CFG).Itthen
4、performsdepth-firstorbreadth-firstsearchontheCFGtoextractpathsfromit.Sometechniquessuchaspathlengthrestrictionareusedtopreventpathnumberexplosion.FinallyJUTAanalyzesthepathsbasedonthecombinationofsymbolicexecutionandconstraintsolving.Thegoalofpathanalysisli
5、esintwofolds.Itcangenerateasetoftestcasessatisfyingthetestcriterionsuchas精心整理学习帮手word完美格式statementcoverage.Thetestsettypicallyhassmallnumberoftestcasesthatareallexecutable.Inadditiontotestgenerationfordynamictesting,itcanalsobeusedinstatictesting.JUTAcanrev
6、ealcertainkindsoferrorsfromthesourcecodeautomaticallyiftheuserprovidesproperassertionstodescribetheerrors.Theexperimentalresultsshowthatthistoolisefficientforbothdynamicandstatictesting.Keywords Javaunittesting;dynamictesting;statictesting;programanalysis;s
7、ymbolicexecution摘 要 描述了一个Java自动化的单元测试工具JUTA.JUTA首先调用工具Soot解析单个Java方法的源码,并将源码解析成一个控制流图.在此基础上,采用符号执行的方法分析控制流图上的路径.工具能够自动地产生满足覆盖率标准的程序的测试用例.这种方法产生的所有测试用例都是可执行的,并且一般来说具有较小的测试用例数.如果用户能够合理地给出描述程序错误的断言,框架JUTA能够自动地检查源码中部分特定类型的错误.实验结果表明工具对Java单元代码的动态测试和静态测试均能在可接受的时间
8、内给出有效的结果.关键词 Java单元测试;动态测试;静态测试;程序分析;符号执行中图法分类号 TP311的控制转移都得到了覆盖).由于在控制流图模型中,语句与节点相对应,语句覆盖意味着测试路径覆盖所有的节点.同样地,分支覆盖就是所有的测试路径覆盖了控制流图中所有的边.1.2 基于路径的程序测试程序中的一次完整的执行过程对应控制流图中的一条完整路径.但是,并不是所有的完整路径都代表程序中的一次运行过