基于图形遍历算法的回归测试方法的研究以及应用_第1页
基于图形遍历算法的回归测试方法的研究以及应用_第2页
基于图形遍历算法的回归测试方法的研究以及应用_第3页
基于图形遍历算法的回归测试方法的研究以及应用_第4页
基于图形遍历算法的回归测试方法的研究以及应用_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕士学位论文摘要]:Bkc={b|∃x∈Skc,x∈Infl(b)}Rk+1c(x)=Rkc(x)∪Rk(b,Ref(b))(x)Sk+1c(x)=Bkc∪{x|Def(x)∩Rk+1c(y)≠∅,x->y}其中,Infl(b):受分支节点b影响的语句的集合,即所有控制依赖于语句b的集合。如果在一个结构化语句控制谓词的控制体中,至少有一个语句节点被加入到了切片节点集合中,则变量使用属于间接依赖。Bkc:因为在Skc存在节点而导致间接依赖关系的谓词节点集合;Rk+1c:间接依赖变量的集合,此集合含有Rkc(x)中的变量,以及与Bkc中的节点存在间接数据依赖关系的变量;Sk+1c:在第k+1次的迭代过程中,间接依赖语句节点的集合。由Bkc中的所有语句节点以及所有Rk+1c(y)中的语句节点构成。集合Rk+1c就是依赖于变量v的其他变量的集合,集合Sk+1c中包含的节点就是关于(s,v)的语句节点切片集合。UT3测试实例UT3测试过程中,测试用例针对被测对象接口函数来设计。在这里TD-LTE项目是以R3.0的版本UPBEARUT2模块测试为例。而UPBEAR则是位于其中的子模块的用户面GTPU配置的实际的管理者。它介于UECENTER模块和UP模块之间,完成用户配置服务来创建,修改和删除。模块实现GTPU与RCP模块配置的接口功能。配置参数根据UPBEAR模块的消息发送到目标函数板UP板。前面的模块我们已经介绍了,与模块相关的过程包括UPBEAR配置,重排UPBEAR,释放UPBEAR,UE状态指示和GTPU错误指示这几个流程,每道工序都分为正常和不正常的流程,而且他们分别用用例定义。对于每个用例中调用的UPBEAR模块将会调用代码中所用到的相应的函数,根据使用情况下设置的参数,采取正常或不正常的进程。此外通过比较每个消息参数的功能以及其他模块的功能,返回的成功或失败的消息,然后进行各种处理,以便确定流程是否是正常的。CONF的同级目录中包括public#200、public#201,public#300个文件夹,这三个文件夹用来存放不同版本的测试工程文件夹中。其中public#201除了包含项目的文件夹中的文件夹中还包含一个情况下,文件夹存储着一些测试文件,并编译所需的测试项目R2.01项目的头文件。必须添加到所有的测试案例,测试集文档,以及必要的头文件,以及自动测试平台的代码case_set.cpp文件,这项文件作为测试工程及自动化测试平台提供的接口来执行的项目中设置的测试,其中每个函数调用case_set.cpp文件功能所需的测试案例文件。本章以case_set.cpp中的单元函数equation为例进行算法测试。无效修改点判定测试for(inti=0;i<MAX_CHANNEL;i++)for(inti=0;i<MAX_CHANNEL;i++){pFrame[i]->Plot->PopupMenu=NULL;}MainForm->UpdateStatus(Rc_msgPushSample,false);if(CommDev->PushSample()==ceOk){start_sample=1;}else{SendErrorNum[3]++;DisplayErrorNum();if(ExitSoft==false)}for(inti=0;i<MAX_CHANNEL;i++){pFrame[i]->Plot->PopupMenu=NULL;}MainForm->UpdateStatus(Rc_msgPushSample,false);if(CommDev->PushSample()==ceOk){start_sample=0;}else{SendErrorNum[3]++;DisplayErrorNum();if(ExitSoft==false)}图4.9TD-LTE项目中equation函数的原代码(左)和修改后代码(右)以计算一元二次方程的单元函数equation为例(图4.9左)。假设开发人员通过单元测试结果分析出代码第8行的判断条件有误,判断一元二次方程只有一个根的条件应该是start_sample为0。这可能是由于粗心导致的错误,将0写成了1。于是将第8行代码start_sample==0修改为start_sample==1,其他不变。根据回归测试用例集优化策略中的应用流程,首先需要备份修改前的控制流图CFG1并生成新的控制流图CFG2。由于程序结构没有发生改变,函数f的控制流图的图形结构不变,如图4.10所示。变化的仅仅是节点中包含的代码信息。控制流图和源程序的对应关系如表4.2所示。表4.2TD-LTE项目中函数f的控制流图和源程序的对应关系控制流图中的节点名对应的源程序行号func_head_f_01decl_stmt_12if_head_23stmt_34if_head_45stmt_56stmt_68if_out_77if_out_85func_out_f_99图4.10被测单元f1的控制流图从CFG1和CFG2的入口节点func_head_f_0进入,开始进行控制流图的对比。当前节点对为decl_stmt_1节点对,分别对比CFG1和CFG2的decl_stmt_1中包含的常量、变量和运算符信息,对比结果完全一致。则取decl_stmt_1的后继结点if_head_2进行成对比较,结果仍然相同。继续比较后继结点对,直到func_out_f_8时,仍然没有发现被修改节点。func_out_f_8没有后继节点,于是回退,直到找到if_head_2有未被访问的后继结点if_head_4。对比CFG1和CFG2的if_head_4,变量与运算符信息都没有发现改变,但是常量由原来的“-3”变为了现在的“0”,发现被修改节点,分析其修改情况,可知是有效修改点,将其加入修改点集合。继续遍历并重复相同的过程。整个遍历过程其实是一次图形的深度优先遍历,被修改节点集合中只有一个元素,即if_head_4。确定测试切片测试继续以显示信号曲线函数为例。f在修改前后的代码如下图4.11所示:for(intn=0;n<int_time;n++){if(pInstrument.Background>tbgNone){SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n]-bg_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);SeriesChart->Series[s_index+1]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AAColor/10][pMeasureChart.AAColor%10]);SeriesChart->Series[s_index+2]->AddXY(count,bg_array[i][n],"",ColorList[pMeasureChart.BGColor/10][pMeasureChart.BGColor%10]);}else{SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);}if(pInstrument.MeasureMethod==tmmGrap){for(intn=0;n<int_time;n++){if(pInstrument.Background>tbgNone){SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n]-bg_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);SeriesChart->Series[s_index+1]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AAColor/10][pMeasureChart.AAColor%10]);SeriesChart->Series[s_index+2]->AddXY(count,bg_array[i][n],"",ColorList[pMeasureChart.BGColor/10][pMeasureChart.BGColor%10]);}else{SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);}if(pInstrument.MeasureMethod==tmmGrap){SeriesChart->Series[s_index+3]->AddXY(count,temp_array[i][n],"",ColorList[pMeasureChart.TempColor/10][pMeasureChart.TempColor%10]);}count++;}}for(inti=0;i<SeriesChart->SeriesList->Count;i++){if(SeriesChart->Series[i]->Tag==1||SeriesChart->Series[i]->Tag==2){SeriesChart->Series[i]->Active=pInstrument.Background!=tbgNone?true:false;}if(SeriesChart->Series[i]->Tag==3){SeriesChart->Series[i]->Active=false;//pInstrument.MeasureMethod==tmmGrap?true:false;}}for(intn=1;n<int_time;n++){if(pInstrument.Background>tbgNone){SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n]-bg_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);SeriesChart->Series[s_index+1]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AAColor/10][pMeasureChart.AAColor%10]);SeriesChart->Series[s_index+2]->AddXY(count,bg_array[i][n],"",ColorList[pMeasureChart.BGColor/10][pMeasureChart.BGColor%10]);}else{SeriesChart->Series[s_index]->AddXY(count,aa_array[i][n],"",ColorList[pMeasureChart.AABGColor/10][pMeasureChart.AABGColor%10]);}if(pInstrument.MeasureMethod==tmmGrap){SeriesChart->Series[s_index+3]->AddXY(count,temp_array[i][n],"",ColorList[pMeasureChart.TempColor/10][pMeasureChart.TempColor%10]);}count++;}}for(inti=0;i<SeriesChart->SeriesList->Count;i++){if(SeriesChart->Series[i]->Tag==1||SeriesChart->Series[i]->Tag==2){SeriesChart->Series[i]->Active=pInstrument.Background!=tbgNone?true:false;}if(SeriesChart->Series[i]->Tag==3){SeriesChart->Series[i]->Active=false;//pInstrument.MeasureMethod==tmmGrap?true:false;}}其控制流图如图4.12所示,红色虚线框标出的地方即为修改点:图4.12被测单元f的控制流图通过分析可知,单元函数f的切片准则是<decl_stmt_1,leapyear>。根据算法,分析节点decl_stmt_1有数据依赖和控制依赖关系的节点,可得关于节点decl_stmt_1的依赖图,如图4.13所示。对比图4.12和图4.13,可知依赖图是控制流图的子图,并且这个子图是保持了从函数入口节点到函数出口节点的一条或多条通路。因此单元函数f关于切片准则<decl_stmt_1,leapyear>的语句/谓词节点切片集为{if_head_20,stmt_21,stmt_22,break_24,return_29}。不计终结符节点和程序入口节点,原控制流图一共包含了27个语句/谓词节点,经过切片分析得到的集合只含有5个节点,测试范围缩小到了约为原程序的1/5。回归测试切片技术在本例中有效的发挥了作用。图4.13被测单元f关于节点decl_stmt_1的依赖图本章小结本文对基于修改点控制流图的回归测试用例选择算法进行详细说明。算法从无效修改点判定及确定测试切片两方面对回归测试用例选择算法进行优化。最后以实际程序展示算法在实际项目中的应用流程。浙江大学硕士学位论文 第5章优化算法对比分析优化算法对比分析及实际应用本文选择TD-LTE项目中代码对比基于修改点控制流图的回归测试用例选择算法及Extend-Dejavu算法,分析了两种回归测试用例选择算法优劣。在第四章中我们已经介绍并且完成了回归测试用例的算法,这一章我们重点讨论一下优化算法。在Extend-Dejavu算法是目前使用广泛的回归测试用例选择算法,但是该算法需要利用元数据来构造控制流图和收集覆盖信息,因此在实际使用中难度很大。本文借鉴Extend-Dejavu算法精华,开发了基于修改点控制流图的回归测试用例选择算法,能够对C语言单元函数进行逻辑结构上的比较。软件在开发过程中一定要有相关经验的软件人员,这样软件可以尽可能的减少代码的重写,从而降低由于代码重写所带来的回归测试的成本的增加。当然,软件开发的时候最好是有一定的人员对软件测试用例库进行相关的维护以及管理,这样就会有个合理的组织、统一的管理。当然,这方面是现今研究的重点与难点。当今移动通信系统中的最新进展就是LTE,它延续了移动通信家族的技术演进,而且LTE完成了对移动通信业务的扩展。世界上第一部电话发明出来的时候人们都被惊呆了,多年以后谁会想到移动通信系统会发展的这么迅速。软件测试策略在实际操作当中应用的比较广泛,其软件测试策略主要集中在动态测试方面。动态测试根据程序执行的结果进行判定与预期的相差有多远,云中在其中的测试策略需要运行待测程序,这点与静态测试区分还是很明显的。回归型测试策略的选取主要考虑效率与成本两个因素,在选择测试策略的过程中优先考虑这两个因素。“重测所有策略”我们比较容易理解,“选择性”回归测试根据我们选取所考虑的角度分为三种,包括;安全选择策略、最小化选择策略以及随机选择策略。对比分析定义2:如果回归测试用例选择算法计算回归测试用例集TS回归测试用例选择设置为Tslect,然后选择回归测试用例选择算法S的精度为,其中和表示选择集合中的元素数量。由于满足关系,所以选择回归测试选择算法精度为。选择较低的值的高精度表示回归测试案例选择算法更好。单测试用例算法精度对比与Extend-Dejavu算法相比,本论文主要有以下改进和创新:基于控制流图对比技术检测有效修改点,能够精确定位代码修改点;在修改点的基础上进行语句级别切片,缩小了回归测试的覆盖范围;补充新的测试用例以确保回归测试的充分性。因此,本文提出的回归测试方法具有用例选择精度高、回归测试更加充分的特点,显著提高了回归测试的效率和有效性。使用Extend-Dejavu算法及文中提出的基于修改点控制流图的回归测试用例选择算法对相同的输入进行计算,两种回归测试用例选择算法的计算出的回归测试用例选择集如表5.1所示。表5.1两种回归测试用例选择算法的回归测试用例选择集TTestcasecollsequencesTnewTExtend-Dejavut1cancelt2vend(3)t3insert,cancelt4insert,vend(3)√t5insert,insert,vend(3)√√t6insert,insert,insert,vend(3)√√t7insert,insert,cancel'vend(3t8insert,cancel,insert,vend(3)√t9insert,cancel,insert,insert,vend(3)√t10insert,insert,cancel,insert,vend(3)t11insert,insert,vend(3)'insert,insert,vend(3√t12insert,insert,insert,insert,vend(3),vend(3√t13insert,insert,vend(3),vend(3)√t14insert,vend(3),insert,vend(3)t15insert,vend(2)t16insert,insert,vend(2)t17insert,cancel,insert,vend(2)t18insert,insert,insert,vend(2)t19insert,cancel,insert,insert,vend(2)t20insert,vend(35)t21insert,insert,vend(35)t22insert,cancel,insert,vend(35)t23insert,insert,insert,vend(35)t24insert,cancel,insert,insert,vend(35)如表5.1所示,第一列T表示回归测试案列中程序的情况,每一行的表示回归测试例的第t1个,共24回归测试用例。第二列表示回归测试的方法调用序列。返回2列分别代表了两种类型的回归测试用例选择算法来计算回归测试Extend-Dejavu算法计算出的回归测试用例选择集TExtend-Dejavu={t5,t6,t9,t11,t12,t13},因此,在表2-6的最后一列TExtend-Dejavu中,只有t5,t6,t9,111,t12,t13这6个回归测试用例所在的行有√。如表5.1所示,基于修改点控制流图的回归测试用例选择算法的结果也同理可知。因此,本文算法的回归测试用例选择集Tnew={t4,t5,t6,t8}。因此,在这种情况下的计算,两种回归测试用例选择算法选择的准确性为数值算法的准确性,所以在这种情况下,本文提出的算法的选择精度优于扩展DEJAVU算法。因此,在这个案例的计算中,两种回归测试用例选择算法的选择精度Knew<kExtend-Dejavu。由于算法选择精度的数值越低说明算法的效果越好,所以在这个案例的计算中,本论文主要有以下改进和创新:基于控制流图对比技术检测有效修改点,能够精确定位代码修改点;在修改点的基础上进行语句级别切片,缩小了回归测试的覆盖范围;补充新的测试用例以确保回归测试的充分性。因此,本文提出的回归测试方法具有用例选择精度高、回归测试更加充分的特点,显著提高了回归测试的效率和有效性。回归型测试策略的选取主要考虑效率与成本两个因素,在选择测试策略的过程中优先考虑这两个因素。“重测所有策略”我们比较容易理解,“选择性”回归测试根据我们选取所考虑的角度分为三种,包括;安全选择策略、最小化选择策略以及随机选择策略[40]。多测试用例算法精度对比使用两种回归测试用例选择算法针对3个案例进行计算,其中比较结果如表5.2。表5.22种不同算法针对3个实例运算的运算结果对比ResultP1P2P3|T|242731Tnew457TExtend-Dejavu6812Knew16.67%18.51%22.58%KExtend-Dejavu25%29.62%38.71%由表5.2直观可知,Extend-Dejavu算法的精度均劣于本文提出的基于修改点控制流图的回归测试用例选择算法。如果以后选择的大量的数据进行验证,效果会更加的明显。TD-LTE项目中自动化测试平台应用TD-LTE项目是某企业目前对eNB公网及专网的研发项目,目前公司正在紧张的进行研发工作。因此本课题是基于以上需求来开启的,当前基站的多个项目,以及各种版本的专网项目逐渐进入系统集成测试阶段,这样软件开发与测试的任务艰巨,时间短,人员短缺。而自动化测试却能解决这个问题。自动化测试系统包括什么呢,它主要包括:自动测试系统软件的基站CP(控制面)、平面GRM(全球资源管理)、RCP(遥控飞机无线电控制飞机)模块设计的代码等等。在这里TD-LTE项目是以R3.0的版本UPBEARUT2模块测试为例。而UPBEAR则是位于其中的子模块的用户面GTPU配置的实际的管理者。它介于UECENTER模块和UP模块之间,完成用户配置服务来创建,修改和删除。值得一提的是TS模块最重要那部分就是统计报告,所以在TS模块创建一个统计模块将接收测试分类性能信息存储,而且对所有数据的分析和统计计算。此外,TS模块来创建一个格式化的输出也是一个独立的模块,专门用来统计内容输出,生成相应格式的报告。RM模块的功能就是最重要和最完整的记录管理跟踪捕获这些信息,包括那些来自Debugtool和模块之间的信息。RM模块根据创建模块(Debugtool和OMCR-CT模块),来记录收集跟踪和捕获信息的需求。TS模块和RM模块都是独立的,没有流程,RM在TR模块测试执行的情况下,由状态控制。用例库管理使用用例库是用来存放所有的测试用例和测试工程的自动化测试系统的一个关键部分。使用用例库管理是至关重要的,本节中的实际存储的配置文件存放在BM\CONF\目录下,如图5.1所示。图5.1配置文件存放形式BM用例管理器的操作界面如图5.2所示:图5.2用例库管理操作界面系统运行测试包含两部分,测试管理与测试执行,这两部分的测试结果分别如图5.3与图5.4所示。图5.3TR-PC启动图5.4TmView操作界面上面我们介绍了几个操作界面,大家可能不是很清楚具体的事怎么操作的,下面我们的软件测试以公共网络2.0UT3的测试为例来进行说明。此时点击TmView接口WORKFILE按钮,系统将进入你想要的界面,用例测试的测试集列表在文件夹的左边,在界面上的工作文件将列出信息。如图5.5所示。在对两个控制流图进行比较时,根据深度优先对比算法,使用“边遍历边比较”的方式,成对比较两幅控制流图的当前节点。即分别从两个控制流图的入口节点开始遍历,并比较其对应的抽象语法树信息是否相同(变量、常量、运算符)。若相同,则判断其后继结点的信息是否相同,若找到抽象语法树信息不同的节点,分析其修改情况是否符合有效修改,若是,则加入修改点集合中。Extend-Dejavu算法中根据新旧源代码构造对应的控制流图的思想,在一定程度上提高了算法的效率及通用性。但是算法中的控制流图是针对整个代码而言,因此本文考虑对Extend-Dejavu算法中控制流图的构造进行改进,仅针对代码修改部分构造,而不再针对整个代码。这样如果代码如果修改的规模不大,则无需进行全面的回归测试。只需要计算出受修改点影响的范围,以这部分代码为测试目标。软件在开发过程中一定要有相关经验的软件人员,这样软件可以尽可能的减少代码的重写,从而降低由于代码重写所带来的回归测试的成本的增加。当然,软件开发的时候最好是有一定的人员对软件测试用例库进行相关的维护以及管理,这样就会有个合理的组织、统一的管理。当然,这方面是现今研究的重点与难点。如图5.6所示,提示TR测试执行运行接口模块,和它有关连的CI_CSTR和RM模块初始化,等待下一个命令。TR从TM获得所要执行命令,在这个时候,当操作员在TM的人机交互界面按下相应的命令的话,TR模块将采取相应的行动。按下START键后,系统会首先执行LoadTR-PL指令,然后正式开始启动测试集执行。如图5.7所示图5.SEQ图\*ARABIC\s15TmView操作界面图5.SEQ图\*ARABIC\s16TR-PC执行操作界面图5.SEQ图\*ARABIC\s17TR-PC执行操作界面从上图中可以看出,在这一点上,你有几个操作选项,停止,突破,运行和自动运行,继续操作是与停止相对应的。在Break操作完成之后如果接着进行软件测试的时候需要按下继续操作按钮。STOP操作被迫停止执行这个动作正在执行的用例,并进入下一个的用例,但是当前正在使用的用例的执行结果将显示为错误。AUTORUN和RUN都是一种操作方式,前者是自动执行模式,后者是手动执行模式。运行后测试生成测试报告并且存放在rm_report的文件夹下,报告格式会根据测试集配置文件格式保存为EXCEL或TXT格式。OMCR-CT及DEBUGTOOL在代码中也可以设置这两个工具来启动。在软件测试用例当中,有一项是一个UINT8u8RMMode的[2];如果u8RMMode的[0]=1将启动OMCR-CT进行,u8RMMode[1]=6将开始执行DEBUGTOOL。RM模块模式被定义为枚举值,包括它的价值:enumemRM_MODE{ NO_RM_MODE, RM_OMCRT_MODE, RM_OMCRT_UE_RRC_MD, RM_OMCRT_ENB_RRC_MD, RM_OMCRT_UE_BBUP_MD, RM_OMCRT_ENB_BBUP_MD, RM_DEBUG_TOOL};图5.8是OMCR-CT工具操作显示界面:图5.SEQ图\*ARABIC\s18OMCR-CT工具操作显示界面该工具的作用是解析板件消息,如在UT3测试时,在执行第一个用例01_rrc_setup.cpp,其中第二个函数为。显示格式如图5.9所示图5.SEQ图\*ARABIC\s19板件消息显示图5.SEQ图\*ARABIC\s110OMCR-CT启动时在TR-PC界面上显示的信息:图5.10OMCR-CT启动图5.11OMCR-CT结束图5.11是OMCR-CT结束时在TR-PC界面显示的信息,同样停止抓包时RM模块也会向OMCR-CT工具发送命令,此时发送的SendBuf[0]值是0x30表示停止抓包。停止抓包后OMCR-CT工具进程并不会停止,而是等待下一用例执行时再一次启动和存储。图5.12DEBUGTOOL启动图5.12即DEBUGTOOL启动时在TR-PC界面显示的信息。图5.13是DEBUGTOOL结束时显示的信息。目前测试中仅做到正常开启和结束DEBUGTOOL。图5.13DEBUGTOOL结束测试结果及分析(一)测试报告TXT格式的报告如图5.16和图5.17所示。图5.14EXECL格式单个用例统计报告图5.15EXCEL格式测试集统计报告图5.16TXT格式测试集统计报告图5.17TXT格式单个用例统计报告(二)结果分析TD-LTE项目是某企业目前对eNB公网及专网的研发项目,目前公司正在紧张的进行研发工作。Extend-Dejavu算法是目前使用广泛的回归测试用例选择算法,但是该算法需要利用元数据来构造控制流图和收集覆盖信息,因此在实际使用中难度很大。本文借鉴Extend-Dejavu算法精华,开发了基于修改点控制流图的回归测试用例选择算法,能够对C语言单元函数进行逻辑结构上的比较。从而减少测试用例,提高测试效率。与Extend-Dejavu算法相比,本论文主要有以下改进和创新:基于控制流图对比技术检测有效修改点,能够精确定位代码修改点;在修改点的基础上进行语句级别切片,缩小了回归测试的覆盖范围;补充新的测试用例以确保回归测试的充分性。因此,本文提出的回归测试方法具有用例选择精度高、回归测试更加充分的特点,显著提高了回归测试的效率和有效性。本章小结本章选择TD-LTE项目中代码对比基于修改点控制流图的回归测试用例选择算法及Extend-Dejavu算法,以单测试用例算法精度及多测试用例算法精度两方面证明本文设计算法的优点。第四章已经完成修改后点的控制流图的回归测试,它是在用例选择算法的基础上完成。,本章将TD-LTE项目的控制平面软件代码放入已经发展成为一个很好的自动测试系统进行测试,并对测试得到的数据和结果进行了分析。浙江大学硕士学位论文 第6章总结与展望总结与展望在软件开发过程中,比较重要的一个环节就是软件测试环节。软件开发并没有人们想象当中的那么抽象与遥远,在日常生活中接触到的电脑软件、手机软件都涉及到了软件开发。在软件项目中软件测试是一个很重要的环节,目的是保证软件质量、提高软件产品可靠性。其实计算机在安全上的问题已经存在很久了,特别在软件层面上,软件产生的故障问题越发的频繁,随之造成的危机也经常导致严重的后果,给人们带来了很多的教训。优化回归测试的重点在于构造合适的测试用例集,在测试的时候既能保证测试的有效性,又能尽力减少成本,同时还要考虑到测试的充分程度。现有的回归测试选择技术存在着测试针对性弱、冗余性大和充分度低的缺点,作者围绕提高回归测试效率和覆盖率进行了研究,主要贡献有:提出了一种检测有效修改点的方法。本文采用基于控制流图的比较方法进行代码对比。这里所使用的控制流图在抽象语法树的基础上建立,不仅包含了程序控制结构的信息,同时也将每个节点对应的语句信息一一记录下来。因此可以精确地判断出代码的修改情况。另外,考虑到有些语句节点即使发生变化,但这种变更对同一个测试用例在修改前后的程序中运行时,其运行结构不会直接受到影响。这时,可以将这一类节点判定为无效修改点,对其进行过滤。这样能够在不影响系统有效性的情况下,减少修改点的数量,提高运行效率。提出了根据数据依赖和控制依赖构造基于修改点的软件切片。程序切片是一种程序分析和理解技术,利用静态和前向切片技术可以分离出与修改点存在数据依赖或控制依赖的所有节点。因此,应用于回归测试的切片技术的研究重点在于分析被测单元的程序依赖关系图。作者以<s,v>作为切片准则,其中s是修改点语句,v是因修改被重新定义的变量,然后通过迭代计算得出与修改点存在依赖关系的语句/谓词节点。案例数据显示,该算法能够有效提取相关节点,缩减测试范围。回归测试用例集合由回归用例选择子集T0和回归用例新增子集T1构成。首先,从基线测试用例库选取语句覆盖集包含修改点且与切片得到的目标覆盖集合交集不为空的测试用例,构造回归用例选择子集T0;根据运行T0中测试用例后得到的覆盖情况分析是否存在未得到覆盖的目标覆盖节点;若存在则构造回归用例新增子集T1。这种基于修改选择测试用例的方法,在保证回归测试用例的有效性的同时,尽量避免冗余测试用例的加入,因此降低了成本、提高了执行效率。同时,由于加入了对新增回归测试用例的研究,改善了回归测试的覆盖问题。许多学者提出了一种面向对象的算法,比如经常用到的“切片算法”,“切片算法”的主要思想就是先将程序进行分解,然后根据分解之后查看代码改变与未改变之间的关系,将这一结果进行分析之后选择相应的测试用例。浙江大学硕士学位论文 致谢参考文献[1]G.Rothemel,R.H.Untch,C.Chu,MJ.Harrold.PrioritizingTestCasesForRegressionTest[J].IEEETransactionsonSoftwareEngineering,2001,27(10):929-948.[2]史九林,古乐.软件测试技术概论[M].北京:清华大学出版社,2004:11.30.[3]LiYJ.Anoverviewofregressiontesting[R].IEEETransonSoftwareEngineering,2003,24(1):69-73.[4]P.ABrown,D.Hoffman.TheapplicationofmoduleregressiontestingatTRIUMF[J].NuclearInstrumentsandMethodsinphysicsResearch,1990,1(2):337-381.[5]H.ILN.LeungandL.White.InsightsIntoRegressionTesting[C].InProceedingsoftheConferenceonSoftwareMaintenance,1989:60-69.[6]R.Lewis,D.W.Beck,J.Hartman.Assay-atooltosupportregressiontesting[C].InSoftwareQualityConference.Springer-Verlag,1989,487-496.[7]G.Rothermel,M.J.HarroldJ.Dedhia.RegressiontestselectionforC++software[J].JournalofSoftwareTesting,Verication,andReliability,2000,10(6):77-109.[8]J.Bible,G.Rothermel,D.Rosenblum.Acomparativestudyofcoarse-fine-grainedsaferegressiontestselection[J].ACMTransactionsOnSoftwareEngineeringandMethodology,2001,10(2):149-183.[9]F.1.Vokolos,P.G.Frankl.Empircalevaluationofthetextualdifferencingregressiontestingtechnique[R].Maryland:InternationalConferenceonSoftwareMaintcnance,1998.[10]蒋曹清,张大方,缪力.一种同归测试后的错误定位方法[J].计算机工程与科学,2005,10(4):14.16.[11]G.Rothermel,M.Harrold.Analyzingregressiontestselectiontechniques[C].IEEETransactionsonSoftwareEngineering,1996,22(8):529·551.[12]LeungHKN,WhiteL.Astudyofintegrationtestingandsoftwareregressionattheintegrationlevel[C].IEEEComputerSociety。1990:290.301.[13]HarroldM.J.,GuptaR.,soffa.M.L.Amethodologyforcontrollingthesizeofatestsuite[J].ACMTransactionsonSoftwareEngineeringandMethodology,1993,2(3):270—285.[14]J.Offutt,J.Pan,andJ.M.Voas.ProceduresforReducingtheSizeofCoverage·BasedTestSets[C[.Proceedingsofthe12thInternationalConferenceonTestingComputerSoftware.WashingtonDC,1995:111-123.[15]H.Do,G.Rothermel,andKinneer.EmpiricalstudiesoftestcaseprioritizationinaJunittestingenvironment[J].IEEEComputerSociety,2004,11(1):111-124.[16]李东东.回归测试中的项目质量管理应用[EB/OL].http://www.restage.net/TestTech/Othersr200704/1855.htm.[17]唐凌遥.软件回归测试管理技术[D].长沙:国防科技大学计算机科学与技术,2005.[18]s.Elbaum,D.Gable,andG.Rothermel.Understandingandmeasuringthesourcesofvariationintheprioritizationofregressiontestsuites[C].InProceedingsofthe7thInternationalSoftwareMetricsSymposium,PP169-179.IEEEComputerSociety,April2001.[19]S.ElbauIn’八Malishevsky,andG.Rothermel.Test∞∞priofitizafion:Afamilyofempiricalstudies[J].IEEETransactionsonSoftwareEngineering,2002,28(2):159·182.[20]w.E.Wongd.R.Horgan,S.London,andH.Agrawal.Astudyofeffectiveregressiontestinginpractice[C].InProceedingsofthe8thInternationalSymposiumOnSoftwareReliabilit)rEngineering.PP230-238,November1997.[21]G.Rothermel,R.H.Untch,C.Chu,andMJ.Harrold.Testcasepriodtization:AnempiricalstudYlC].InProceedingsoftheInternationalConferenceonSoftwareMaintenance,PP179-188,August1999.[22]夏耘,林华.面向对象测试技术的研究与应用p1.计算机应用与软件,2002,32(2):232-236.[23]方菲,孙家骗,杨芙清等.面向对象软件回归测试技术研究[J].软件学报,2001,12(3):372.376.[24]王影.程序切片技术研究及其在软件回归测试中的应用[D].南京:南京航空航天大学,2005.[25]ICAbdullahandLWhite.AFirewallApproachfortheRegressionTestingofObject-OrientedSoftware[C].InternationalsoftwareQualityWeekConferences,1997,51-65.[26]蕞长海,徐宝文.一种最小测试用例集生成方法[J].计算机学报,2003,26(12):1690-1696.[27]朱海燕,范辉,谢青松等.测试用例排序的研究[J].计算机工程与科学,2008,30(1):79·81.[28]张克东等.软工程与软件测试自动化教程[M]北京:电子工业出版社,2002:17.39.[29]马雪英,盛斌奎,叶澄清.用遗传算法的测试用例最小化[J].计算机科学,2007,34(1):285.288.[30]张玉彬,谢康林.测试用例的设计和复用技术[J].计算机应用和软件,2008,1(1):100·101.[31]M.J.Harrold,RGuptaandMLSoffa.AMethodologyforControllingtheSizeofaTestSuite[J].ACMTransactionsOnSoftwareEngineeringandMethodology,1993,3(3):270·285.[32]T.Y.Chen,M.F.LauAnewheuristicfortestsuitereduction[J].InformationandSoftwareTechnology,1998,40(56)347-354.[33]T.Y.Chen,M.F.Lau,Asimulationstudyonsomeheuristicsfortestsuitereduction[J].InformationandSoftwareTechnology,1998,40(13)777.787.[34]J.G.Lee,C.G.Chung,Anoptimalrepresentativesetselectionmethod[J].InformationandSoftwareTechnology,2000,42(1):17-25.[35]陈伟,唐红光.基于测试需求集的测试用例集极小化算法[J].人工智能及识别技术,2007,21(1):811-815.[36]HarroldMJ,GuptaR,SoffaML.Amethodologyforcontrollingthesizeofatestsuite[J1p]ACMTransactionsonSoftwareEngineeringandMethodology,1993,20):270-285.[37]T.Y.ChenandM.ELau,Dividingstrategiesfortheoptimizationofatestsuitep].InformationProcessingLetters,1996,60(3):135.141.[38]胡岳峰,高建华,一种面向对象测试用例自动生成的混和算法[J].计算机应用研究,2008,25(3):787-802.[39]WongWE,HorganJR,LondonS,AgrawalH.Astudyofeffectiveregressiontestinginpractice[C]//Proceedingsofthe8thIEEEIntemationalSymposiumonSoftwareReliabilityEngineering,1997:264_274.[40]ElbaumS,MalishevskyAG,RothermelG.Prioritizingtestcasesforregressiontesting[R].Portland:ProceedingoftheIntemationalSymposiumonSoftwareTestingandAnalysis,2000[41]JinZhi.Ontology-basedrequirementselicitation[J].ChineseJournalofComputer,2000,23(5):486-492.[42]KimJM,PorterAAhistory·basedtestprioritizationtechniqueforregressiontestinginresourceconstrainedenvironments[C]Proceedingsofthe24thInternationalConferenceonSoftwareEngineering,2002:119-129.[43]柳纯录.软件评测师教程[M].北京:清华大学出版社,2005:19-45[44]杨文宏,李新辉,杨沽等译.面向对象的软件测试方法[M].北京:机械工业出版社,2003:227.2目录TOC\o"1-3"\h\z前言 11城市现状 21.1自然状况 21.2社会经济发展现状 51.3城市结构与人口 61.4城市能源供应及消费状况 71.5环境状况 71.6交通条件 82设计依据、设计原则及规范与标准 92.1设计依据 92.2编制原则 92.3编制应遵循的规范、标准 113我国城镇燃气概况与发展燃气政策 123.1我国能源 123.2城镇燃气概况 143.3我国发展城镇燃气政策 194气源确定与气源基本参数 194.1气源条件 194.2CNG与LNG气源选择 224.3CNG供气及供气基本参数 235工程项目范围、供气规模及主要工程量 245.1工程项目建设的必要性 245.2工程项目范围 255.3供气原则 255.4供气对象与供气范围 265.5气化人口与气化率的确定 265.6工程分期 275.7各类用户耗热定额 275.8居民与商业用户高峰系数的确定 285.9供气比例与供气规模 305.10各类用户耗气量平衡与高峰流量 315.11储气与调峰 346CNG气源站 386.1站址选择 386.2建站规模及占地面积 396.3总图布置 396.4CNG气源站竖向设计 406.5交通运输及道路 416.6绿化 416.7用地指标 416.8工艺设计与主要设备 426.9管材选择及防腐 476.10公用工程 487中压管网输配系统 537.1中压输配系统压力级制确定 537.2城区中压管网布置原则 557.3中压管网布置 567.4中压管网的敷设和特殊地段的处理 577.5管材选择与防腐 587.6管道水力计算 598、组织机构及劳动定员 619环境保护专篇 629.1设计采用规范及标准 639.2污染物及治理措施 639.3绿化设计 6410消防专篇 6510.1设计采用规范和标准 6510.2工程项目火灾危险性分析 6510.3消防措施 6610.4建立健全各种规章制度 6711劳动保护、职业安全与工业卫生 6811.1设计依据及遵循的标准和规范 6811.2安全措施 68HYPERLINK\l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论