闭包测试方法和装置制造方法

文档序号:6500463阅读:145来源:国知局
闭包测试方法和装置制造方法
【专利摘要】一种闭包测试方法,包括以下步骤:获取待测试闭包标识;根据所述待测试闭包标识生成待插入代码;根据所述待测试闭包标识查找得到对应的注释,根据所述注释确定与所述待测试闭包标识对应的闭包;将所述生成的待插入代码添加到所述查找到的闭包;对所述添加了待插入代码的闭包进行测试。此外还提供了一种闭包测试装置。上述闭包测试方法和装置,该方式只需添加闭包相应的注释,工作量很小,不会改变源码文件中的有效内容,使得不需进行额外的功能级测试,减轻了测试人员的负担,提高了测试效率,同时发布到外网的源码也不需要为了测试目的而将闭包内部接口对外暴露,提高了程序的安全性。
【专利说明】闭包测试方法和装置
【技术领域】
[0001]本发明涉及软件测试领域,特别是涉及一种闭包测试方法和装置。
【背景技术】
[0002]JavaScript是一种解释性脚本编程语言,在网页编程中使用相当广泛。JavaScript中执行的代码以及执行这些代码的作用域构成的综合体称为闭包,所有的JavaScript函数都是闭包。
[0003]对于匿名函数实现的闭包,在闭包外部无法直接对该闭包里的接口进行调用,无法对其中的数据进行读和写操作。因此,对匿名函数实现的闭包进行白盒测试时,由于不能直接在其外部调用该闭包中的函数或获取闭包中的变量值而无法测试。其中,白盒测试是指测试人员根据代码的实现逻辑从语句和函数接口层对代码进行的一种测试类型。
[0004]为了实现对这种匿名函数实现的闭包的白盒测试,往往需要对该被测的闭包代码进行一个调整,将该闭包中的一些接口方法通过一定的方式(如通过调整代码)将内部的方法或数据关联到一个外部可直接访问的全局对象上,对外进行暴露,使得闭包外部的代码可直接访问到该闭包内部的方法或数据,从而实现白盒测试。然而,采用上述方式进行白盒测试存在以下几个问题:
[0005]第一是该方式违背了源码中使用闭包的初衷,使得闭包带来的好处不复存在,如隐藏内部接口和数据的优点消失了 ;
[0006]第二是由于每一个由匿名函数实现的待进行白盒测试的闭包可能都需要调整代码,且调整的工作量因闭包具体实现不同,外部测试用例运行环境可能的限制,使得调整工作量很大;
[0007]第三是需要对调整过后的闭包源码进行一次功能和逻辑的验证测试,以保证不会因测试的需要而进行的代码调整使得程序工作不正常,该测试给测试人员带来额外的工作负担;
[0008]第四是在较为极端的情况下,如被测闭包的应用环境因为安全或其它原因而不允许将闭包内部的接口或数据等信息对外暴露,这样这些接口将无法被外部测试代码调用或获取,从而使得白盒测试无法进行。
[0009]综上所述,传统的闭包测试方法测试效率低且安全性低。

【发明内容】

[0010]基于此,有必要针对传统的闭包测试的效率低下及安全性低的问题,提供一种能提高测试效率和安全性的闭包测试方法。
[0011]此外,还有必要针对传统的闭包测试的效率低下及安全性低的问题,提供一种能提高测试效率和安全性的闭包测试装置。
[0012]一种闭包测试方法,包括以下步骤:
[0013]获取待测试闭包标识;[0014]根据所述待测试闭包标识生成待插入代码;
[0015]根据所述待测试闭包标识查找得到对应的注释,根据所述注释确定与所述待测试闭包标识对应的闭包;
[0016]将所述生成的待插入代码添加到所述查找到的闭包;
[0017]对所述添加了待插入代码的闭包进行测试。
[0018]在其中一个实施例中,所述获取待测试闭包标识的步骤为:
[0019]获取测试用例文件,对所述用例文件解析得到所述待测试闭包标识。
[0020]在其中一个实施例中,在所述获取测试闭包标识的步骤之前,还包括:
[0021]预先在待测试闭包的预定位置设置相应的注释。
[0022]在其中一个实施例中,所述预定位置为闭包的外部首位置、内部任意位置或外部尾位置;所述注释中包含的待测试闭包标识对应关系信息为预先指定格式的信息。
[0023]在其中一个实施例中,所述将所述生成的待插入代码添加到所述查找到的闭包的步骤为:
[0024]将所述生成的待插入代码添加到所述查找到的闭包中预先指定位置处。
[0025]一种闭包测试装置,包括:
[0026]获取模块,用于获取待测试闭包标识;
[0027]生成模块,用于根据所述待测试闭包标识生成待插入代码;
[0028]查找模块,用于根据所述待测试闭包标识查找得到对应的注释,根据所述注释确定与所述待测试闭包标识对应的闭包;
[0029]添加模块,用于将所述生成的待插入代码添加到所述查找到的闭包;
[0030]测试模块,用于对所述添加了待插入代码的闭包进行测试。
[0031]在其中一个实施例中,所述获取模块还用于获取测试用例文件,对所述用例文件解析得到所述待测试闭包标识。
[0032]在其中一个实施例中,所述装置还包括:
[0033]预设模块,用于预先在待测试闭包的预定位置设置相应的注释。
[0034]在其中一个实施例中,所述预定位置为闭包的外部首位置、内部任意位置或外部尾位置;所述注释中包含的待测试闭包标识对应关系信息为预先指定格式的信息。
[0035]在其中一个实施例中,所述添加模块还用于将所述生成的待插入代码添加到所述查找到的闭包中预先指定位置处。
[0036]上述闭包测试方法和装置,通过待测试闭包标识查找到包含待测试闭包标识对应关系信息的注释,进而根据注释确定待测试闭包对应的闭包,再将通过待测试闭包标识生成的待插入代码添加到与待测试闭包标识对应的闭包中,使得外部可对待测试闭包内部函数和数据进行调用和访问,保证了白盒测试的顺利进行,该方式只需添加闭包相应的注释,工作量很小,不会改变源码文件中的有效内容,使得不需进行额外的功能级测试,减轻了测试人员的负担,提高了测试效率,且为测试目的而添加的注释在被测源码发布到外网前会被压缩去掉,这使得发布的源码的内容和为测试目的而添加注释前一致,从而不会因为测试添加的注释影响发布的逻辑而带来额外的测试工作;同时发布到外网的源码也不需要为了测试目的而将闭包内部接口对外暴露,提高了程序的安全性。【专利附图】

【附图说明】
[0037]图1为一个实施例中闭包测试方法的流程示意图;
[0038]图2为一个实施例中闭包测试装置的结构示意图;
[0039]图3为另一个实施例中闭包测试装置的结构示意图。
【具体实施方式】
[0040]下面结合具体的实施例及附图对闭包测试方法和装置的技术方案进行详细的描述,以使其更加清楚。
[0041]如图1所示,在一个实施例中,一种闭包测试方法,包括以下步骤:
[0042]步骤S110,获取待测试闭包标识。
[0043]具体的,待测试闭包标识是用于区分闭包唯一性的,可为闭包名称或闭包编号等。闭包名称如a,闭包标识如001等。
[0044]本实施例中,在编写具体的测试逻辑的白盒测试用例文件中以一定的格式指定待测试闭包标识,则获取测试用例文件,对用例文件进行解析得到待测试闭包标识。
[0045]在步骤SllO之前,还包括步骤:预先在待测试闭包的预定位置添加注释。
[0046]具体的,注释中包含有待测试闭包标识对应关系信息,如注释中包含闭包标识。例如,待测试闭包标识为闭包名称,注释中可包含闭包名称或与闭包名称存在对应关系的闭包编号,或者待测试闭包标识为闭包编号,注释中可包含闭包编号或与闭包编号存在对应关系的闭包名称等。注释中的包含的待测试闭包标识对应关系信息为预先指定格式信息,例如O闭包名称等。
[0047]预定位置可为待测试闭包的外部首位置、内部任意位置或外部尾位置。外部首位置是指在源码文件中位于对应待测试闭包的外部前面的位置,如Oa闭包代码,ia为注释;内部任意位置是指在待测试闭包中的任意位置;外部尾位置是指在源码文件中位于对应待测试闭包的外部后面的位置,如闭包代码@a,@a为注释。源码文件中包含有多个闭包,预先设定注释与待测试闭包的位置关系,根据预先设定的注释与待测试闭包的位置关系及查找到的注释位置确定相应的闭包位置。
[0048]步骤S120,根据该待测试闭包标识生成待插入代码。
[0049]具体的,生成的待插入代码主要用于指定待测试闭包中的参数为全局参数,以使待测试闭包的方法和接口对外暴露,使得外部可以访问闭包里的内容。
[0050]步骤S130,根据待测试闭包标识查找得到对应的注释,根据该注释确定与该待测试闭包标识对应的闭包。
[0051]具体的,获取待测试闭包标识后,可从源码文件中查找得到对应的注释的位置,然后再根据注释与待测试闭包的位置关系确定得到闭包的位置。例如注释位于待测试闭包的外部首位置,则查找到相应的注释后,可确定位于该注释后面的闭包为所要查找的与待测试闭包标识对应的闭包;注释位于待测试闭包的外部尾位置,则查找到相应的注释后,可确定位于该注释前面的闭包为所要查找的与待测试闭包标识对应的闭包;注释位于待测试闭包内任意位置,则查找到相应的注释后,可确定位于该注释所在的闭包为所要查找的与待测试闭包标识对应的闭包。
[0052]步骤S140,将该生成的待插入代码添加到该查找到的闭包。[0053]具体的,将该生成的待插入代码添加到该查找到的闭包中预先指定位置处。该预先指定位置处可为闭包中任意位置,例如闭包内的头部位置、闭包内的中间位置或闭包内的尾部位置等,但不限于此。本实施例中,将预先指定位置设为闭包的头部位置,方便进行白盒测试时,对待测试闭包进行调用和访问。
[0054]步骤S150,对添加了待插入代码的闭包进行测试。
[0055]具体的,运行测试用例文件,对添加了待插入代码的闭包进行测试,因加入的代码使得闭包中的方法和接口对外暴露,故可调用和访问该闭包。
[0056]上述闭包测试方法,通过待测试闭包标识查找到包含待测试闭包标识对应关系信息的注释,进而根据注释确定待测试闭包对应的闭包,再将通过待测试闭包标识生成的待插入代码添加到与待测试闭包标识对应的闭包中,使得外部可对待测试闭包内部函数和数据进行调用和访问,保证了白盒测试的顺利进行,该方式只需添加闭包相应的注释,工作量很小,不会改变源码文件中的有效内容,使得不需进行额外的功能级测试,减轻了测试人员的负担,提高了测试效率,且为测试目的而添加的注释在被测源码(JavaScript)发布到外网前会被压缩去掉,这使得发布的源码的内容和为测试目的而添加注释前一致,从而不会因为测试添加的注释影响发布的逻辑而带来额外的测试工作;同时发布到外网的源码也不需要为了测试目的而将闭包内部接口对外暴露,提高了程序的安全性。
[0057]如图2所示,在一个实施例中,一种闭包测试装置,包括获取模块110、生成模块120、查找模块130、添加模块140和测试模块150。其中:
[0058]获取模块110用于获取待测试闭包标识。
[0059]具体的,待测试闭包标识是用于区分闭包唯一性的,可为闭包名称或闭包编号等。闭包名称如a,闭包标识如001等。
[0060]本实施例中,在编写具体的测试逻辑的白盒测试用例文件中以一定的格式指定待测试闭包标识,则获取模块110获取测试用例文件,对用例文件进行解析得到待测试闭包标识。
[0061]生成模块120用于根据该待测试闭包标识生成待插入代码。
[0062]具体的,生成的待插入代码主要用于指定待测试闭包中的参数为全局参数,以使待测试闭包的方法和接口对外暴露,使得外部可以访问闭包里的内容。
[0063]查找模块130用于根据该待测试闭包标识查找得到对应的注释,根据该注释确定与该待测试闭包标识对应的闭包。
[0064]具体的,获取待测试闭包标识后,可从源码文件中查找得到对应的注释的位置,然后再根据注释与待测试闭包的位置关系确定得到闭包的位置。例如注释位于待测试闭包的外部首位置,则查找到相应的注释后,可确定位于该注释后面的闭包为所要查找的与待测试闭包标识对应的闭包;注释位于待测试闭包的外部尾位置,则查找到相应的注释后,可确定位于该注释前面的闭包为所要查找的与待测试闭包标识对应的闭包;注释位于待测试闭包内任意位置,则查找到相应的注释后,可确定位于该注释所在的闭包为所要查找的与待测试闭包标识对应的闭包。其中,外部首位置是指在源码文件中位于对应待测试闭包的外部前面的位置,如@a闭包代码,Oa为注释;内部任意位置是指在待测试闭包中的任意位置;外部尾位置是指在源码文件中位于对应待测试闭包的外部后面的位置,如闭包代码@a,ia为注释。源码文件中包含有多个闭包,预先设定注释与待测试闭包的位置关系,根据预先设定的注释与待测试闭包的位置关系及查找到的注释位置确定相应的闭包位置。
[0065]添加模块140用于将该生成的待插入代码添加到该查找到的闭包。
[0066]具体的,添加模块140还用于将该生成的待插入代码添加到该查找到的闭包中预先指定位置处。该预先指定位置处可为闭包中任意位置,例如闭包内的头部位置、闭包内的中间位置或闭包内的尾部位置等,但不限于此。本实施例中,将预先指定位置设为闭包的头部位置,方便进行白盒测试时,对待测试闭包进行调用和访问。
[0067]测试模块150用于对该添加了待插入代码的闭包进行测试。
[0068]具体的,运行测试用例文件,对添加了待插入代码的闭包进行测试,因加入的代码使得闭包中的方法和接口对外暴露,故可调用和访问该闭包。
[0069]上述闭包测试装置,通过待测试闭包标识查找到包含待测试闭包标识对应关系信息的注释,进而根据注释确定待测试闭包对应的闭包,再将通过待测试闭包标识生成的待插入代码添加到与待测试闭包标识对应的闭包中,使得外部可对待测试闭包内部函数和数据进行调用和访问,保证了白盒测试的顺利进行,该方式只需添加闭包相应的注释,工作量很小,不会改变源码文件中的有效内容,使得不需进行额外的功能级测试,减轻了测试人员的负担,提高了测试效率,且为测试目的而添加的注释在被测源码(JavaScript)发布到外网前会被压缩去掉,这使得发布的源码的内容和为测试目的而添加注释前一致,从而不会因为测试添加的注释影响发布的逻辑而带来额外的测试工作;同时发布到外网的源码也不需要为了测试目的而将闭包内部接口对外暴露,提高了程序的安全性。
[0070]进一步的,在一个实施例中,上述闭包测试装置,除了包括获取模块110、生成模块120、查找模块130、添加模块140和测试模块150外,还包括预设模块160。其中:
[0071]预设模块160用于预先在待测试闭包的预定位置设置相应的注释。具体的,注释中包含有待测试闭包标识对应关系信息,如注释中包含闭包标识。例如,待测试闭包标识为闭包名称,注释中可包含闭包名称或与闭包名称存在对应关系的闭包编号,或者待测试闭包标识为闭包编号,注释中可包含闭包编号或与闭包编号存在对应关系的闭包名称等。注释中的包含的待测试闭包标识对应关系信息为预先指定格式信息,例如@闭包名称等。
[0072]预定位置可为待测试闭包的外部首位置、内部任意位置或外部尾位置。
[0073]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0074]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种闭包测试方法,包括以下步骤: 获取待测试闭包标识; 根据所述待测试闭包标识生成待插入代码; 根据所述待测试闭包标识查找得到对应的注释,根据所述注释确定与所述待测试闭包标识对应的闭包; 将所述生成的待插入代码添加到所述查找到的闭包; 对所述添加了待插入代码的闭包进行测试。
2.根据权利要求1所述的闭包测试方法,其特征在于,所述获取待测试闭包标识的步骤为: 获取测试用例文件,对所述用例文件解析得到所述待测试闭包标识。
3.根据权利要求1所述的闭包测试方法,其特征在于,在所述获取测试闭包标识的步骤之前,还包括: 预先在待测试闭包的预定位置设置相应的注释。
4.根据权利要求3所述的闭包测试方法,其特征在于,所述预定位置为闭包的外部首位置、内部任意位置或外部尾位置;所述注释中包含的待测试闭包标识对应关系信息为预先指定格式的信息。
5.根据权利要求1所述的闭包测试方法,其特征在于,所述将所述生成的待插入代码添加到所述查找到的闭包的步骤为: 将所述生成的待插入代码添加到所述查找到的闭包中预先指定位置处。
6.一种闭包测试装置,其特征在于,包括: 获取模块,用于获取待测试闭包标识; 生成模块,用于根据所述待测试闭包标识生成待插入代码; 查找模块,用于根据所述待测试闭包标识查找得到对应的注释,根据所述注释确定与所述待测试闭包标识对应的闭包; 添加模块,用于将所述生成的待插入代码添加到所述查找到的闭包; 测试模块,用于对所述添加了待插入代码的闭包进行测试。
7.根据权利要求6所述的闭包测试装置,其特征在于,所述获取模块还用于获取测试用例文件,对所述用例文件解析得到所述待测试闭包标识。
8.根据权利要求6所述的闭包测试装置,其特征在于,所述装置还包括: 预设模块,用于预先在待测试闭包的预定位置设置相应的注释。
9.根据权利要求8所述的闭包测试装置,其特征在于,所述预定位置为闭包的外部首位置、内部任意位置或外部尾位置;所述注释中包含的待测试闭包标识对应关系信息为预先指定格式的信息。
10.根据权利要求6所述的闭包测试装置,其特征在于,所述添加模块还用于将所述生成的待插入代码添加到所述查找到的闭包中预先指定位置处。
【文档编号】G06F11/36GK104035862SQ201310074678
【公开日】2014年9月10日 申请日期:2013年3月8日 优先权日:2013年3月8日
【发明者】邓雄兵, 陈子舜 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1