软件测试方法及装置、电子设备和计算机可读存储介质制造方法及图纸

技术编号:33092985 阅读:17 留言:0更新日期:2022-04-16 23:22
本公开提供一种软件测试方法、装置以及电子设备和计算机可读存储介质,该方法包括:获取待测试源代码,所述待测试源代码中包括待测试函数,所述待测试函数包括目标参数;编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,所述目标钩子函数中包括调用关系代码;运行所述可执行文件至所述待测试函数,根据所述调用关系代码确定所述待测试函数的目标调用关系;根据所述目标调用关系确定目标篡改信息;根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值;根据篡改后的所述目标参数的值完成对所述待测试源代码的测试。测试源代码的测试。测试源代码的测试。

【技术实现步骤摘要】
软件测试方法及装置、电子设备和计算机可读存储介质


[0001]本公开涉及测试
,尤其涉及一种软件测试方法及装置、电子设备和计算机可读存储介质。

技术介绍

[0002]随着计算机科学技术的进步,软件行业的快速发展,软件测试工作也越来越被人们关注。
[0003]在进行函数级别的异常测试中,测试人员通常需要篡改函数的特定参数值或函数的返回值来验证服务容错能力。在实际工作中,测试人员通常需要在源代码中通过静态声明的形式修改函数的特定参数值或返回值,然后进行编译、运行以完成测试。上述测试方法不仅会延长测试周期,还将会极大的浪费人力、物力,严重者可能会耽误产品上线。
[0004]因此,一种可以快速、便捷地对函数进行测试的测试方法,对软件测试来说十分重要。
[0005]需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0006]本公开实施例提供一种软件测试方法及装置、电子设备和计算机可读存储介质,能够基于目标钩子函数、目标篡改信息便捷地完成对待测试源代码的测试。
[0007]本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
[0008]本公开实施例提出一种软件测试方法,该方法包括:获取待测试源代码,所述待测试源代码中包括待测试函数,所述待测试函数包括目标参数;编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,所述目标钩子函数中包括调用关系代码;运行所述可执行文件至所述待测试函数,根据所述调用关系代码确定所述待测试函数的目标调用关系;根据所述目标调用关系确定目标篡改信息;根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值;根据篡改后的所述目标参数的值完成对所述待测试源代码的测试。
[0009]本公开实施例提供了一种软件测试装置,所述软件测试装置包括:测试源代码获取模块、编译模块、调用关系确定模块、目标篡改信息获取模块、篡改赋值模块以及测试模块。
[0010]其中,所述测试源代码获取模块可以配置为获取待测试源代码,所述待测试源代码中包括待测试函数,所述待测试函数包括目标参数。所述编译模块可以配置为编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,所述目标钩子函数中包括调用关系代码。所述调用关系确定模块可以配置为运行所述可执行文件至所述待测试函数,根据所述调用关系代码确定所述待测
试函数的目标调用关系。所述目标篡改信息获取模块可以配置为根据所述目标调用关系确定目标篡改信息。所述篡改赋值模块可以配置为根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值。所述测试模块可以配置为根据篡改后的所述目标参数的值完成对所述待测试源代码的测试。
[0011]在一些实施例中,所述目标参数包括目标形参,所述目标篡改信息包括针对所述目标形参的形参篡改信息。
[0012]在一些实施例中,所述篡改赋值模块可以包括:形参篡改单元和形参测试单元。
[0013]其中,所述形参篡改单元可以配置为根据所述形参篡改信息对所述目标形参的值进行篡改赋值。所述形参测试单元可以配置为根据篡改后的所述目标形参的值运行所述待测试函数,完成对所述待测试源代码的测试。
[0014]在一些实施例中,所述编译模块可以包括:第一语法解析单元、第一声明单元以及第一赋值单元,所述形参篡改单元可以包括:第一值篡改子单元和值传入单元。
[0015]其中,所述第一语法解析单元可以配置为对所述待测试函数进行语法解析,以获得所述待测试函数的所述目标形参以及所述目标形参的参数类型。所述第一声明单元可以配置为根据所述目标形参的参数类型声明目标形参结构体,所述目标形参结构体包括与所述目标形参一一对应的形参对象。所述第一赋值单元可以配置为对所述形参对象进行初始赋值。所述第一值篡改子单元可以配置为根据所述形参篡改信息对所述形参对象的值进行篡改赋值。所述值传入单元可以配置为将篡改后的所述形参对象的值传入所述目标形参,以篡改所述目标形参的值。
[0016]在一些实施例中,所述目标参数包括目标返回参数,所述目标篡改信息包括针对所述目标返回参数的返回参数篡改信息。
[0017]在一些实施例中,所述篡改赋值模块可以包括:真实返回值获取单元和返回值篡改单元。
[0018]其中,所述真实返回值获取单元可以配置为运行所述待测试函数,获得所述目标返回参数的真实返回值。所述返回值篡改单元可以配置为根据所述返回参数篡改信息对所述目标返回参数的所述真实返回值进行篡改赋值。
[0019]在一些实施例中,所述编译模块可以包括:第二语法解析单元、第二声明单元,所述返回值篡改单元可以包括:第二赋值单元、第二值篡改单元以及目标返回值确定单元。
[0020]其中,所述第二语法解析单元可以配置为对所述待测试函数进行语法解析,以获得所述待测试函数的所述目标返回参数以及所述目标返回参数的参数类型。所述第二声明单元可以配置为根据所述目标返回参数的参数类型声明目标返回参数结构体,所述目标返回参数结构体包括与所述目标返回参数一一对应的返回参数对象。
[0021]其中,所述第二赋值单元可以配置为根据所述目标返回参数的真实返回值对所述返回参数对象进行赋值。所述第二值篡改单元可以配置为根据所述返回参数篡改信息对所述返回参数对象的真实返回值进行篡改赋值,获得所述返回参数对象的篡改返回值。所述目标返回值确定单元可以配置为以所述返回参数对象的篡改返回值作为所述待测试函数的目标返回值。
[0022]在一些实施例中,所述目标参数包括第一参数,所述目标篡改信息包括针对所述第一参数的第一目标篡改信息,所述第一目标篡改信息包括针对所述第一参数的第一篡改
值和所述第一参数为第一参数类型的第一确认信息。
[0023]在一些实施例中,所述篡改赋值模块可以包括:第一参数确定单元、第一类型判断单元。
[0024]其在,所述第一次参数确定单元可以配置为通过反射机制获取所述待测试函数的所述第一参数以及所述第一参数的参数类型。所述第一类型判断单元可以配置为若所述第一参数的参数类型为所述第一确认信息中的第一参数类型,则通过所述第一篡改值对所述第一参数进行篡改赋值。
[0025]在一些实施例中,所述目标参数包括第二参数,所述第二参数包括目标参数对象,所述目标篡改信息包括针对所述第二参数的第二目标篡改信息,所述第二目标篡改信息包括针对所述目标参数对象的目标子篡改信息,所述第二目标篡改信息包括所述第二参数为第二参数类型的第二确认信息,所述目标子篡改信息包括所述目标参数对象为字符串类型的第三确认信息和针对所述目标参数对象的第二篡改值。
[0026]在一些实施例中,所述篡改赋值模块可以包括:第二参数确定单元、目标参数对象获取单元以及第二类型确定单元本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件测试方法,其特征在于,包括:获取待测试源代码,所述待测试源代码中包括待测试函数,所述待测试函数包括目标参数;编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,所述目标钩子函数中包括调用关系代码;运行所述可执行文件至所述待测试函数,根据所述调用关系代码确定所述待测试函数的目标调用关系;根据所述目标调用关系确定目标篡改信息;根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值;根据篡改后的所述目标参数的值完成对所述待测试源代码的测试。2.根据权利要求1所述方法,其特征在于,所述目标参数包括目标形参,所述目标篡改信息包括针对所述目标形参的形参篡改信息;其中,根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值,包括:根据所述形参篡改信息对所述目标形参的值进行篡改赋值;根据篡改后的所述目标形参的值运行所述待测试函数,完成对所述待测试源代码的测试。3.根据权利要求2所述方法,其特征在于,编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,包括:对所述待测试函数进行语法解析,以获得所述待测试函数的所述目标形参以及所述目标形参的参数类型;根据所述目标形参的参数类型声明目标形参结构体,所述目标形参结构体包括与所述目标形参一一对应的形参对象;对所述形参对象进行初始赋值;其中,根据所述形参篡改信息对所述目标形参的值进行篡改赋值,包括:根据所述形参篡改信息对所述形参对象的值进行篡改赋值;将篡改后的所述形参对象的值传入所述目标形参,以篡改所述目标形参的值。4.根据权利要求1所述方法,其特征在于,所述目标参数包括目标返回参数,所述目标篡改信息包括针对所述目标返回参数的返回参数篡改信息;其中,根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值,包括:运行所述待测试函数,获得所述目标返回参数的真实返回值;根据所述返回参数篡改信息对所述目标返回参数的所述真实返回值进行篡改赋值。5.根据权利要求4所述方法,其特征在于,编译所述待测试源代码获得可执行文件,其中在编译过程中向所述待测试源代码注入针对所述待测试函数的目标钩子函数,包括:对所述待测试函数进行语法解析,以获得所述待测试函数的所述目标返回参数以及所述目标返回参数的参数类型;根据所述目标返回参数的参数类型声明目标返回参数结构体,所述目标返回参数结构体包括与所述目标返回参数一一对应的返回参数对象;其中,根据所述返回参数篡改信息对所述目标返回参数的所述真实返回值进行篡改赋值,包括:
根据所述目标返回参数的真实返回值对所述返回参数对象进行赋值;根据所述返回参数篡改信息对所述返回参数对象的真实返回值进行篡改赋值,获得所述返回参数对象的篡改返回值;以所述返回参数对象的篡改返回值作为所述待测试函数的目标返回值。6.根据权利要求1所述方法,其特征在于,所述目标参数包括第一参数,所述目标篡改信息包括针对所述第一参数的第一目标篡改信息,所述第一目标篡改信息包括针对所述第一参数的第一篡改值和所述第一参数为第一参数类型的第一确认信息;其中,根据所述目标篡改信息对所述待测试函数的所述目标参数的值进行篡改赋值,包括:通过反射机制获取所述待测试函数的所述第一参数以及所述第一参数的参数类型;若所述第一参数的参数类型为所述第一确认信息中的第一参数类型,则通过所述第一篡改值对所述第一参数进行篡改赋值。7.根据权利要求1所述方法,其特征在于,所述目标参数包括第二参数,所述第二参数包括目标参数对象,所述目标篡改信息包括针对所述第二参数的第二目标篡改信息,所述第二目标篡改信息包括针对所述目标参数对象的目标子篡改信息,所述第二目标篡改信息包括所述第二参数为第二参数类型的第二确认信息,所述目标子篡改信息包括所述目标参数对象为字符串类型的第三确认信息和针对所述目标参数对象的第二篡改值;其中,根据所述目...

【专利技术属性】
技术研发人员:周勇钧
申请(专利权)人:财付通支付科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1