引言
软件测试是保障软件产品质量的一种有效方式。随着科学技术的飞速发展,软件产品的复杂性越来越高,规模也越来越大,这也导致软件缺陷越来越隐蔽,采用传统的检测方法很难检测出软件的顽固缺陷。实施自动化软件测试技术时,需要测试数据执行程序,同时测试数据是检验程序缺陷的重要手段,因此测试数据的质量尤为重要。
1软件测试方式
1.1结构化的路径覆盖测试
结构化的路径覆盖测试所生成的用例是为了覆盖目标路径,即使路径覆盖率高,也不能代表检测缺陷率高。此外,传统的方法生成测试数据效率比较低,考虑到进化算法已经广泛
应用,本文采用遗传生成测试数据覆盖融合缺陷的路径。首先基于变异测试技术生成变异体,并转化为变异分支,用于模拟程序的缺陷,再将这些变异分支(缺陷)融入程序;同时,在原程序路径集中选择多条目标路径。然后,将变异分支融入原程序生成新被测程序;通过分析变异分支与原语句之前的相关性,将变异分支融入目标路径。最后,基于遗传算法生成覆盖路径的测试数据。变异分支插入原程序后,生成新的程序。考虑到原程序中可以通过路径覆盖生成测试数据,对于新程序,为了生成覆盖变异分支的测试数据,可以将这些变异分支融入已有原程序路径,这样,生成的测试数据不仅满足路径覆盖准则,也满足变异测试准则。为了将变异分支融入原程序路径,首先,在原程序路径集中选出若干目标路径;然后,在新程序中判断原语句与变异分支的相关性,生成相关子路径;最后,基于原语句所在目标路径将变异分支插入目标路径,形成新的目标路径。
1.2自动测试
自动测试系统软件实际上用于程控计算机和各类可程控的仪表之间进行数据交换,由于仪表的多样性,程控过程中产生的回读数据也具备了多样性。自动测试系统软件对于仪表回读数据的处理是为了方便用户对测试结果进行显示、比较、形成报表等二次处理。因此,自动测试系统软件在处理仪表的各类可回读数据的过程中,不可避免地会需要多种处理模块,为了在软件中对这类处理过程统一管理,响应用户的数据处理需求。自动测试系统软件与仪表是以可程控仪表标准命令(SCPI)为接口进行数据交换的,仪表的可回读的数据格式一般分为两种形式:单个字符串值和以“,”隔开的多个字符串值。根据仪表的测试能力,单个字符串值通常是表示当前测试的结果数据;以“,”隔开的多个字符串值通常是按照仪表缓存格式获取的值,有其特定意义,软件可以通过接口的定义获取相应的值,因此,可以根据获取到的仪表的数据格式来进行分类处理。
本文以用户登录和交互功能的开发与实现为研究对象,该开发是在Perfecto Mobile认证服务基础上进行。为了验证是否能够获得合法用户及其移动终端设备完全操作权限,建立了相应的测试脚本,利用Perfecto Mobile认证服务来完成自动化测试过程。Perfecto Mobile提供了基于OAuth2.0协议的测试模块,可以由开发者进行调用。在测试时通过获取令牌来完成用户登录,其流程如图1所示。
图1用户授权获取流程图
图中前置步骤的内容是完成使用Perfecto Mobile服务接口所需的预留信息的填写,系统用户管理模块通过临时授权页面来访问Perfecto Mobile服务过程,该页面可以输入登录信息并能够确保其不被第三方获取。在完成登录后信息通过session保存,在下次登录时如果session信息仍存在直接进入下一环节当到达Perfecto Mobile授权服务的参数不同时可以根据参数为用户展示相应授权页。当用户确认后授权服务会进行重定向,将浏览器页面跳转到应用所指定的“redirecturi”,同时会在数据包中携带授权服务所分配的code参数和state参数。授权服务会根据相关参数决定响应包及重定向地址。令牌可以通过下述步骤获取:①发出令牌获取请求access_token。用户登录后就能从服务模块获取到授权码即code,通过该code置换Access Token。请求数据报应该携带下列必需参数:grant_type:值固定为“authorization_code”;code:
通过上面第一步所获得的Authorization Code;client_id:测试应用的ID;
client_secret:测试应用的Key;
redirect_uri:该值必须与获取AuthorizationCode时传递的“redirect_uri”保持①服务器将返回令牌。返回的JSON文本中含有下列信息:
Access Toke:要获取的Access Token;
expires_in:Access Token的有效期,以秒为单位;
Access Token:用于刷新Access Token的Refresh Token。其中access_token表示用户登录所需要的正式授权信息,利用它就可以登录Perfecto Mobile服务进行选择测试设备和执行测试用例等后续操作。登录后会调用QTP测试工具,并解析其指令按照步骤转义为测试工具可以识别的格式,进而进行相关功能的开发和实现。指令经由QTP发出后进行转义处理并被Perfecto Mobile服务接收执行,最终利用相应的网络协议传达到终端测试设备。在完成前述功能的设计开发后,只要获得令牌,系统就可以随时访问存在于perfecto mobile服务中的移动设备进行测试。在这一阶段所有的交互都是通过命令发送的形式完成通信过程。此时反馈给测试人员的只是最终结果,而测试过程和具体效果则不得而知。为了让测试效果能够直观地显示出来,系统会利用信息传送模块将终端测试结果以图像等形式返回给QTP,然后利用浏览器的Web kit组件把相关信息实时显示在PC浏览器页面,便于测试人员看到测试过程,判断测试是否达到目的。
2软件测试路径选择优化模型及其进化求解
通过选择从函数输入到目标宵禁元素的一半路径,根据单元宵禁测试间隔的操作选择路径,然后,根据区间的操作确定路径可达性和不可到达路径变换,得到包含目标覆盖件的可到达路径。根据修正条件改变了确定目标覆盖件测试的路径选择方法。这种方法是一种基于程序控制流程图选择要测量的实际矢量和路径的方法。为了解决圆形路径问题,提出了一种新的路径检测方法,该方法减少了实现高照明频率所需的状态数,确定状态的优先级,然后删除创建的新状态,而不更改代码覆盖状态。研究了派生回归测试的问题,方法是将信息替换为已测试数据的路径,然后选择覆盖所有目标分支的多个路径。
通过已有方法能够得到一个基路径集合,作为本文的初始路径集.该集合中的路径不仅能包含控制流图中的所有可达边,而且都是可达的路径.然而,该方法得到的初始路径集合中有大量的冗余路径,这些多余的路径将大大增加测试消耗.本节采用提出的方法解决该问题,得到不含有冗余路径的目标路径集.本文中,去掉冗余路径的问题实质上是一个路径选择问题,可以描述为:从被测程序中选择一定数量的路径形成目标路径集,使得该路径集既不含有冗余路径,基于该路径集的测试又能够满足测试充分性准则。鉴于此,本节从初始路径集中,选择若干路径形成目标路径集,使得该路径集包含的可达边尽可能多、路径尽可能少.可以看出,路径选择问题能够建模为一个多目标优化问题.下面,建立该问题的多目标优化模型:
(1)决策变量
在传统的优化问题中,决策变量一般为单个元素,而本文中路径选择问题的决策变量为若干路径形成的集合,记为,X={x1,x2,...,xm}其中,xi( ̄i=1,2,...,m)为该集合的第i条路径,TM为该集合包含的路径条数.由于每一路径均由若干条边组成,因此,路径可表示为 其中
,为路径包含的第j条边,ni为该路径包含边的条数.由于目标路径集X是一个子集合,因此
为优化问题的搜索空间。
(2)目标函数
XE=x1[x2[...[xm
首先,我们希望选择的路径集包含的边最多.这是因为,包含的边越多,那么,选择的路径集越能够满足测试充分性准测.记决策变量对应的路径集包含边的集合,那么,该路径集包含的边数可以表示为:
然后,我们希望选择的路径集不包含冗余路径,那么,路径数就要尽可能的少.这是因为,路径越少,需要生成的测试数据就越少,从而降低路径覆盖测试的时间消耗.记为X包含的路径条数,那么,软件测试路径选择优化模型及其进化求解:
这样一来, 建立的路径选择问题的多目标优化模型可以表示为:
公式的目标是期望 和 都能最大, 一般来说, 如果某路径集包含的边数越多, 那么, 需要的路径也应该越多, 但我们却期望该路径集包含的路径少. 因此, 公式包含两个相互冲突的目标, 是一个典型的两目标最大化问题. 此时, 需要采用有针对性的方法, 高效求取问题的 Pareto 最优解集。
结束语
(1)应用本文建立的模型能够在保证测试覆盖率的情况下,有效减少路径集包含的路径条数;(2)针对路径选择优化模型设计的多目标方法,能够有效降低测试数据生成的时间消耗,提高测试效率。(1)内部威胁:个体群优化的参数设置会影响实验结果.参数不同会影响实验的运行时间及结果.为了减少这类威胁,个体群优化的参数参照文献从实验结果可以看出,上述参数设值是合理的.(2)外部威胁:所选的被测程序影响实验结论.如果所选程序不具有代表性或者不足,那么,运行时间及实验结果就很难直接推广到其他程序中.为了尽可能减轻这类威胁,我们在实验中选择7个具有不同代码行数的程序,其中行数最多的一个程序为10459行.此外,时间消耗是反映所提方法效率的重要指标.实验中,以秒的形式描述时间消耗,该值与实现环境的配置,如处理器数量与类型等密切相关.显然,在完成相同任务时,具有不同配置的环境将具有不同的时间消耗.为了缓解该威胁,在相同环境中,运行10次相同的任务,并记录时间消耗,基于此计算平均时间消耗。
参考文献
[1]任珅.L公司软件测试项目成员绩效考核体系优化研究[D].大连理工大学,2021.
[2]刘琴.通信设备嵌入式软件测试流程的改进分析[J].电子元器件与信息技术,2021,5(11):121-122.
[3]王士信,熊蕾,过飞洋.新工科背景下软件测试课程改革的探索与实践[J].南方农机,2021,52(21):185-187.
[4]郑春红,刘志敏.高职院校软件测试课程教学改革研究[J].亚太教育,2021(21):150-152.
[5]刘佳,张鑫.一种机载软件测试项目的状态控制方法[C]//.第十八届中国航空测控技术年会论文集.,2021:531-533.