CN105630679B - 代码测试的方法及装置 - Google Patents

代码测试的方法及装置 Download PDF

Info

Publication number
CN105630679B
CN105630679B CN201510980966.0A CN201510980966A CN105630679B CN 105630679 B CN105630679 B CN 105630679B CN 201510980966 A CN201510980966 A CN 201510980966A CN 105630679 B CN105630679 B CN 105630679B
Authority
CN
China
Prior art keywords
function
custom
code
tested
global table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510980966.0A
Other languages
English (en)
Other versions
CN105630679A (zh
Inventor
艾菲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Qianxin Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Beijing Qianxin Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Beijing Qianxin Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510980966.0A priority Critical patent/CN105630679B/zh
Publication of CN105630679A publication Critical patent/CN105630679A/zh
Application granted granted Critical
Publication of CN105630679B publication Critical patent/CN105630679B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种代码测试的方法及装置,涉及互联网技术领域,为解决测试过程需要搭建外部环境的问题而发明。本发明的方法包括:在测试代码中添加自定义函数,自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;执行测试代码,屏蔽被测试函数访问外部数据库的操作并执行自定义函数;向被测试函数返回预设的数据内容;对返回的数据内容进行验证,获得被测试函数的测试结果。本发明主要应用于脚本类型的测试过程中。

Description

代码测试的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种代码测试的方法及装置。
背景技术
现有测试函数的方法是,编写测试代码构建测试框架,在测试框架中执行被测试函数,对被测试函数的功能进行验证,获得测试结果。有些被测试函数具有访问外部数据库的功能,例如从数据库中读取配置信息,或者向站点服务器请求统一资源定位符(UniformResource Locator,简称URL)链接等。在对这些功能进行测试时,需要执行函数中实现这些功能的语句,向外部数据库请求相应的数据内容,然后在测试框架内对请求获得的数据内容进行验证(例如判断是否能够成功获取到数据内容,或者获取的数据内容是否正确),得到测试结果。
在上述函数测试的过程中发明人发现:当测试函数的外部访问功能时,如果使用第三方的真实数据库(例如百度的服务器)进行测试,那么大多数情况下无法获得第三方的授权,因此实际应用中通常需要测试人员自己为测试过程搭建外部环境,例如模仿第三方创建的数据库。一般测试过程访问数据库的次数并不多,而第三方数据库的数据量又十分庞大,因此为测试过程搭建外部环境的方式成本过高,会大大降低测试效率。
发明内容
本发明提供了一种代码测试的方法及装置,能够解决测试过程需要搭建外部环境的问题。
为解决上述问题,一方面,本发明提供了一种代码测试的方法,该方法包括:
在测试代码中添加自定义函数,自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
执行测试代码,屏蔽被测试函数访问外部数据库的操作并执行自定义函数;
向被测试函数返回预设的数据内容;
对返回的数据内容进行验证,获得被测试函数的测试结果。
另一方面,本发明还提供了一种代码测试的装置,该装置包括:
添加单元,用于在测试代码中添加自定义函数,自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
执行单元,用于执行测试代码,屏蔽被测试函数访问外部数据库的操作并执行自定义函数;
返回单元,用于向被测试函数返回预设的数据内容;
验证单元,用于对返回的数据内容进行验证,获得被测试函数的测试结果。
本发明提供的代码测试的方法及装置,能够在测试代码中添加与外部数据库作用相同的自定义函数。当被测试函数访问外部数据库时,屏蔽被测试函数的访问操作,并执行该自定义函数向被测试函数返回其所请求的数据内容,以便通过对返回数据内容的验证获得被测试函数的测试结果。与现有技术相比,本发明能够通过测试框架中自定义的函数向进行外部访问的被测试函数返回需要的数据内容,测试过程不再依赖外部环境实现,因此可以节省搭建外部环境产生的成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种代码测试的方法流程图;
图2示出了本发明实施例提供的另一种代码测试的方法流程图;
图3示出了本发明实施例提供的一种代码测试的装置的组成框图;
图4示出了本发明实施例提供的另一种代码测试的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种代码测试的方法,如图1所示,该方法包括:
101、在测试代码中添加自定义函数。
本实施例中,需要对被测试函数的外部访问功能进行测试,外部访问主要是指对测试框架之外的其他主体(服务器、平台等)的数据库请求数据。为达到测试外部访问功能的目的,本实施例在测试代码中添加了自定义函数。该自定义函数用于替代外部数据库向被测试函数返回预设的数据内容,进而达到测试外部访问功能的目的。
由于在测试代码中增加了自定义函数,因此在进行外部访问时,无需真正访问外部数据库,而是对自定义函数进行调用,获得自定义函数返回的数据内容。
102、执行测试代码,屏蔽被测试函数访问外部数据库的操作并执行自定义函数。
在写好测试脚本后,对测试脚本进行编译,按照预编辑的测试用例对被测试函数进行执行和测试。当执行到外部访问的语句代码时,按照该语句代码的内容,此时需要访问外部数据库获取数据内容。而在本实施例中,由于无需搭建外部环境,因此不需要被测试函数真正访问外部数据库;但同时又需要被测试函数获得外部环境中的数据内容,因此可以屏蔽被测试函数访问外部数据库的操作,以禁止其访问外部数据库,并且执行自定义函数,响应被测试函数的访问请求,返回其所请求的数据内容。
本实施例中,自定义函数中的数据内容可以按照外部数据库中的内容进行定义,也可以根据自身的测试需求进行自定义。对于前者方式,为实现测试框架的轻量化设计,可以仅定义少量数据内容,而无需将外部数据库中的内容全部写入自定义函数中。
103、向被测试函数返回预设的数据内容。
执行自定义函数后,向被测试函数返回其所请求的数据内容,以便执行步骤104,通过对返回内容的验证获得外部请求功能的测试结果。
104、对返回的数据内容进行验证,获得被测试函数的测试结果。
所谓验证包括但不限于:是否能够成功返回数据内容、返回的数据内容与访问请求所要求获取的数据内容是否一致。示例性的,当被测试函数请求一个URL“hao.360.cn/? src=lm&ls=n0b9f6f3992”时,自定义函数返回“360导航页”的超文本标记语言(HyperText Markup Language,简称HTML)源代码,可以据此确定外部访问功能正常;或者,当被测试函数请求获取一段配置信息时,自定义函数返回了相对应的配置信息,则可以据此确定外部访问功能正常。
需要说明的是,实际应用中自定义函数中的数据内容也可以是抽象的,例如对应上述URL的数据内容可以不是真实的HTML源代码,而是一个内容上无具体含义的字符串。在编写自定义函数时,需要对访问请求与抽象数据内容之间的关联关系进行设定,以便于在步骤104中能够验证出被测试函数是否请求了正确的数据内容。例如,设置第一URL“hao.360.cn/?src=lm&ls=n0b9f6f3992”对应的数据内容为“111”,第二URLwww.baidu.com对应的数据内容为“001”。当请求第一URL时,如果返回“111”则外部访问功能正常,如果返回“001”或其他字符串,则外部访问功能异常。
本发明实施例提供的代码测试的方法,能够在测试代码中添加与外部数据库作用相同的自定义函数。当被测试函数访问外部数据库时,屏蔽被测试函数的访问操作,并执行该自定义函数向被测试函数返回其所请求的数据内容,以便通过对返回数据内容的验证获得被测试函数的测试结果。与现有技术相比,本发明实施例能够通过测试框架中自定义的函数向进行外部访问的被测试函数返回需要的数据内容,测试过程不再依赖外部环境实现,因此可以节省搭建外部环境产生的成本。
进一步的,作为对图1所示方法的细化,本发明实施例还提供了一种代码测试的方法,如图2所示,该方法包括:
201、将外部数据库中的数据内容封装到自定义函数中。
本实施例中,可以将外部数据库中的真实数据封装到自定义函数中。例如将用于测试的配置信息封装到自定义函数中。
202、对测试代码的全局表进行表替换,将自定义函数添加到全局表中。
为屏蔽被测试函数访问外部数据库的操作并执行自定义函数,本实施例对测试代码使用全局表进行表替换操作。通常,被测试函数调用的各种功能函数会存放在全局表中。当执行被测试函数时,如果执行到调用功能函数的语句,则访问全局表查找并调用相对应的功能函数。本实施例中,将全局表中用于访问外部数据库的外部访问函数替换为自定义函数。并且将外部访问函数的函数名作为自定义函数在全局表中的函数名使用,即使自定义函数拥有与外部访问函数相同的函数名。由此,当被测试函数执行到调用外部访问函数的语句时,就可以直接调用并执行全局表中的自定义函数了。此外,由于使用了与原功能函数相同的函数名,因此无需修改被测试函数中的函数调用语句,被测试函数仍然执行原函数调用语句,并调用原函数名对应的功能函数。由于函数名下的函数已经被替换为自定义函数,因此就可以在对被测试函数“零改动”的前提下调用自定义函数了。
203、根据被测试函数的访问语句,在全局表中查找外部访问函数的函数名。
访问语句即为前述所指的函数调用语句,访问语句中写有要调用函数的函数名。当执行到访问语句时,从访问语句中获取函数名,然后在全局表中查找该函数名。
204、执行函数名对应的自定义函数。
由于全局表中该函数名对应的函数已经被替换为自定义函数,因此实际上调用的函数为自定义函数。
在本实施例的一种实现方式中,为了对被测试函数进行多次测试,可以在自定义函数中封装对应访问语句的多个不同数据内容。当多次执行自定义函数时,自定义函数会分别返回不同的数据内容。例如对于URL1,可以在自定义函数定义与其关联的3个字符串“121”、“111”及“123”。当第一次调用自定义函数时,返回字符串“121”,第二次调用函数则返回字符串“111”,第三次调用函数则返回字符串“123”。基于不同的字符串内容进行验证,可以提高测试结果的准确性。
205、向被测试函数返回预设的数据内容。
206、对返回的数据内容进行验证,获得被测试函数的测试结果。
步骤205至步骤206的实现方式与图1中步骤103至步骤104的实现方式分别对应相同,此处不再赘述。
进一步的,在本实施例的另一种实现方式中,还可以利用修改全局表的方式对上线函数进行热更新和/或热修复。具体的,可以对全局表进行表替换,将上线函数调用的某个功能函数替换为用于代码更新的代码更新函数,和/或用于代码修复的代码修复函数,由此将代码更新函数和/或代码修复函数添加到全局表中。当执行上线函数时,通过对代码更新函数和/或代码修复函数的调用,实现对上线函数的代码更新和/或代码修改。此外,还可以在全局表中新增代码更新函数和/或代码修复函数,而不对全局表中的已有函数进行替换。这种方式也可以实现代码更新和/或代码修复,但是需要对上线函数进行少量修改,增加调用上述新增函数的代码语句。本实施例提供的代码更新和/或代码修复的方法,能够对在线函数进行在线更新或在线修复,更新或修复过程无需停服。
进一步的,作为对上述各方法实施例的补充,在本实施例的另一种实现方式中,在对全局表进行修改后,还可以将全局表进行还原,将替换的自定义函数、代码更新函数或代码修复函数还原为被替换的功能函数(例如外部访问函数)。
下面,给出本发明实施例的一个应用场景:
被测试函数具有外部访问功能,该功能用于向外部的某个数据库请求获取配置信息,对应的代码语句为“Get conf”。外部访问功能在全局表中对应的函数名称为“FUN1”。在进行测试前,可将全局表中的“FUN1”函数替换为自定义函数,并且将自定义函数的名称修改为“FUN1”。该自定义函数的功能为响应被测试函数的访问请求,向被测试函数返回预设的字符串“S1”。在测试被测试函数时,当执行到代码语句“Get conf”时,访问全局表,调用自定义函数,获得自定义函数返回的字符串“S1”。然后验证该字符串是否为“S1”,如果验证结果为是,则获得外部访问功能正常的测试结果,如果验证结果为否,则获得外部访问功能错误的测试结果,返回BUG报告。
进一步的,作为对图1及图2所示方法的实现,本发明实施例还提供了一种代码测试的装置,如图3所示,该装置包括:添加单元31、执行单元32、返回单元33以及验证单元34。其中:
添加单元31,用于在测试代码中添加自定义函数,自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
执行单元32,用于执行测试代码,屏蔽被测试函数访问外部数据库的操作并执行自定义函数;
返回单元33,用于向被测试函数返回预设的数据内容;
验证单元34,用于对返回的数据内容进行验证,获得被测试函数的测试结果。
进一步的,如图4所示,该装置进一步包括:
封装单元35,用于在测试代码中添加自定义函数之前,将外部数据库中的数据内容封装到自定义函数中。
进一步的,添加单元31用于对测试代码的全局表进行表替换,将自定义函数添加到全局表中。
进一步的,添加单元31用于将全局表中的外部访问函数替换为自定义函数,并将外部访问函数的函数名作为自定义函数在全局表中的函数名使用;
其中,外部访问函数用于访问外部数据库。
进一步的,如图4所示,执行单元32,包括:
查找模块321,用于根据被测试函数的访问语句,在全局表中查找外部访问函数的函数名;
执行模块322,用于执行函数名对应的自定义函数。
进一步的,添加单元31添加的自定义函数中封装有对应访问语句的不同数据内容;
返回单元33,用于当多次执行自定义函数时,分别返回不同的数据内容。
进一步的,添加单元31,用于对全局表进行表替换,将代码更新函数和/或代码修复函数添加到全局表中;
执行单元32,用于执行代码更新函数和/或代码修复函数,对被测试函数进行热更新和/或热修复。
进一步的,如图4所示,该装置进一步包括:
还原单元36,用于对全局表进行表还原,将添加的函数恢复为被替换的函数。
本发明实施例提供的代码测试的装置,能够在测试代码中添加与外部数据库作用相同的自定义函数。当被测试函数访问外部数据库时,屏蔽被测试函数的访问操作,并执行该自定义函数向被测试函数返回其所请求的数据内容,以便通过对返回数据内容的验证获得被测试函数的测试结果。与现有技术相比,本发明实施例能够通过测试框架中自定义的函数向进行外部访问的被测试函数返回需要的数据内容,测试过程不再依赖外部环境实现,因此可以节省搭建外部环境产生的成本。
本发明的实施例公开了:
A1、一种代码测试的方法,其特征在于,所述方法包括:
在测试代码中添加自定义函数,所述自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数;
向所述被测试函数返回预设的数据内容;
对返回的数据内容进行验证,获得所述被测试函数的测试结果。
A2、根据A1所述的方法,其特征在于,在所述在测试代码中添加自定义函数之前,所述方法进一步包括:
将所述外部数据库中的数据内容封装到所述自定义函数中。
A3、根据A2所述的方法,其特征在于,所述在测试代码中添加自定义函数,包括:
对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中。
A4、根据A3所述的方法,其特征在于,所述对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中,包括:
将所述全局表中的外部访问函数替换为所述自定义函数,并将所述外部访问函数的函数名作为所述自定义函数在所述全局表中的函数名使用;
其中,所述外部访问函数用于访问所述外部数据库。
A5、根据A4所述的方法,其特征在于,所述执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数,包括:
根据所述被测试函数的访问语句,在所述全局表中查找所述外部访问函数的函数名;
执行所述函数名对应的所述自定义函数。
A6、根据A5所述的方法,其特征在于,所述自定义函数中封装有对应所述访问语句的不同数据内容;
所述向所述被测试函数返回预设的数据内容,包括:
当多次执行所述自定义函数时,分别返回不同的数据内容。
A7、根据A3所述的方法,其特征在于,所述方法进一步包括:
对所述全局表进行表替换,将代码更新函数和/或代码修复函数添加到所述全局表中;
执行所述代码更新函数和/或代码修复函数,对所述被测试函数进行热更新和/或热修复。
A8、根据A3至7中任一项所述的方法,其特征在于,所述方法进一步包括:
对所述全局表进行表还原,将添加的函数恢复为被替换的函数。
B9、一种代码测试的装置,其特征在于,所述装置包括:
添加单元,用于在测试代码中添加自定义函数,所述自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
执行单元,用于执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数;
返回单元,用于向所述被测试函数返回预设的数据内容;
验证单元,用于对返回的数据内容进行验证,获得所述被测试函数的测试结果。
B10、根据B9所述的装置,其特征在于,所述装置进一步包括:
封装单元,用于在测试代码中添加自定义函数之前,将所述外部数据库中的数据内容封装到所述自定义函数中。
B11、根据B10所述的装置,其特征在于,所述添加单元用于对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中。
B12、根据B11所述的装置,其特征在于,所述添加单元用于将所述全局表中的外部访问函数替换为所述自定义函数,并将所述外部访问函数的函数名作为所述自定义函数在所述全局表中的函数名使用;
其中,所述外部访问函数用于访问所述外部数据库。
B13、根据B12所述的装置,其特征在于,所述执行单元,包括:
查找模块,用于根据所述被测试函数的访问语句,在所述全局表中查找所述外部访问函数的函数名;
执行模块,用于执行所述函数名对应的所述自定义函数。
B14、根据B13所述的装置,其特征在于,所述添加单元添加的所述自定义函数中封装有对应所述访问语句的不同数据内容;
所述返回单元,用于当多次执行所述自定义函数时,分别返回不同的数据内容。
B15、根据B11所述的装置,其特征在于,所述添加单元,用于对所述全局表进行表替换,将代码更新函数和/或代码修复函数添加到所述全局表中;
所述执行单元,用于执行所述代码更新函数和/或代码修复函数,对所述被测试函数进行热更新和/或热修复。
B16、根据B11至15中任一项所述的装置,其特征在于,所述装置进一步包括:
还原单元,用于对所述全局表进行表还原,将添加的函数恢复为被替换的函数。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (12)

1.一种代码测试的方法,其特征在于,所述方法包括:
将外部数据库中的数据内容封装到自定义函数中;
在测试代码中添加所述自定义函数,所述自定义函数用于替代所述外部数据库向被测试函数返回预设的数据内容;
所述在测试代码中添加所述自定义函数,包括:
对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中,所述全局表中保存有被测代码调用的全部功能函数,且所述自定义函数的函数名与被测函数的函数名相同;
执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数;
向所述被测试函数返回预设的数据内容;
对返回的数据内容进行验证,获得所述被测试函数的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中,包括:
将所述全局表中的外部访问函数替换为所述自定义函数,并将所述外部访问函数的函数名作为所述自定义函数在所述全局表中的函数名使用;
其中,所述外部访问函数用于访问所述外部数据库。
3.根据权利要求2所述的方法,其特征在于,所述执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数,包括:
根据所述被测试函数的访问语句,在所述全局表中查找所述外部访问函数的函数名;
执行所述函数名对应的所述自定义函数。
4.根据权利要求3所述的方法,其特征在于,所述自定义函数中封装有对应所述访问语句的不同数据内容;
所述向所述被测试函数返回预设的数据内容,包括:
当多次执行所述自定义函数时,分别返回不同的数据内容。
5.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
对所述全局表进行表替换,将代码更新函数和/或代码修复函数添加到所述全局表中;
执行所述代码更新函数和/或代码修复函数,对所述被测试函数进行热更新和/或热修复。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法进一步包括:
对所述全局表进行表还原,将添加的函数恢复为被替换的函数。
7.一种代码测试的装置,其特征在于,所述装置包括:
封装单元,用于在测试代码中添加自定义函数之前,将外部数据库中的数据内容封装到所述自定义函数中;
添加单元,用于在测试代码中添加自定义函数,所述自定义函数用于替代外部数据库向被测试函数返回预设的数据内容;
所述添加单元,还用于对所述测试代码的全局表进行表替换,将所述自定义函数添加到所述全局表中,所述全局表中保存有被测代码调用的全部功能函数,且所述自定义函数的函数名与被测函数的函数名相同;
执行单元,用于执行所述测试代码,屏蔽所述被测试函数访问所述外部数据库的操作并执行所述自定义函数;
返回单元,用于向所述被测试函数返回预设的数据内容;
验证单元,用于对返回的数据内容进行验证,获得所述被测试函数的测试结果。
8.根据权利要求7所述的装置,其特征在于,所述添加单元用于将所述全局表中的外部访问函数替换为所述自定义函数,并将所述外部访问函数的函数名作为所述自定义函数在所述全局表中的函数名使用;
其中,所述外部访问函数用于访问所述外部数据库。
9.根据权利要求8所述的装置,其特征在于,所述执行单元,包括:
查找模块,用于根据所述被测试函数的访问语句,在所述全局表中查找所述外部访问函数的函数名;
执行模块,用于执行所述函数名对应的所述自定义函数。
10.根据权利要求9所述的装置,其特征在于,所述添加单元添加的所述自定义函数中封装有对应所述访问语句的不同数据内容;
所述返回单元,用于当多次执行所述自定义函数时,分别返回不同的数据内容。
11.根据权利要求7所述的装置,其特征在于,所述添加单元,用于对所述全局表进行表替换,将代码更新函数和/或代码修复函数添加到所述全局表中;
所述执行单元,用于执行所述代码更新函数和/或代码修复函数,对所述被测试函数进行热更新和/或热修复。
12.根据权利要求7至11中任一项所述的装置,其特征在于,所述装置进一步包括:
还原单元,用于对所述全局表进行表还原,将添加的函数恢复为被替换的函数。
CN201510980966.0A 2015-12-23 2015-12-23 代码测试的方法及装置 Active CN105630679B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510980966.0A CN105630679B (zh) 2015-12-23 2015-12-23 代码测试的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510980966.0A CN105630679B (zh) 2015-12-23 2015-12-23 代码测试的方法及装置

Publications (2)

Publication Number Publication Date
CN105630679A CN105630679A (zh) 2016-06-01
CN105630679B true CN105630679B (zh) 2019-04-23

Family

ID=56045649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510980966.0A Active CN105630679B (zh) 2015-12-23 2015-12-23 代码测试的方法及装置

Country Status (1)

Country Link
CN (1) CN105630679B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109062178A (zh) * 2018-07-20 2018-12-21 深圳市雷赛控制技术有限公司 一种自动化测试方法、装置、测试设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法
CN1710547A (zh) * 2004-06-16 2005-12-21 华为技术有限公司 软件测试方法及其系统
WO2008008773A1 (en) * 2006-07-10 2008-01-17 Asterion, Inc. System and method for performing processing in a testing system
CN102693182A (zh) * 2012-05-25 2012-09-26 苏州博远容天信息科技有限公司 一种在mvc 中使用测试驱动开发的存储库模式
CN103984582A (zh) * 2014-06-04 2014-08-13 网易(杭州)网络有限公司 一种热更新方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632909B2 (en) * 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法
CN1710547A (zh) * 2004-06-16 2005-12-21 华为技术有限公司 软件测试方法及其系统
WO2008008773A1 (en) * 2006-07-10 2008-01-17 Asterion, Inc. System and method for performing processing in a testing system
CN102693182A (zh) * 2012-05-25 2012-09-26 苏州博远容天信息科技有限公司 一种在mvc 中使用测试驱动开发的存储库模式
CN103984582A (zh) * 2014-06-04 2014-08-13 网易(杭州)网络有限公司 一种热更新方法和装置

Also Published As

Publication number Publication date
CN105630679A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
US10409700B2 (en) Flexible configuration and control of a testing system
EP2420931A1 (en) Solving hybrid constraints to generate test cases for validating a software module
CN108920496B (zh) 一种渲染方法及装置
CN105204916B (zh) 基于环境变量的项目进程运行方法及装置
US9317405B2 (en) Test double generation
US20060288106A1 (en) Method and apparatus for protecting HTTP session data from data crossover using aspect-oriented programming
WO2007137403A1 (en) System and method of generating applications for mobile devices
CN106355049A (zh) 一种加固安卓安装包的动态链接库so文件的方法和装置
CN105589805A (zh) 一种代码覆盖率报告的生成方法和装置
WO2017081558A1 (en) Monitoring and actuation of view controller parameters to reach deep states without manual developer intervention
CN110673837B (zh) 代码修复方法及装置、电子设备、计算机可读存储介质
CN106201893A (zh) 一种Java字节码调试器及调试方法
CN103544271B (zh) 一种浏览器中加载图片处理窗口的方法和装置
Ahmad et al. Challenges of mobile applications development: Initial results
CN108958855A (zh) 页面跳转的方法、装置及系统
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
US9047403B2 (en) Debugger with previous version feature
CN105630679B (zh) 代码测试的方法及装置
US10146664B2 (en) Virtual test environment for webpages with automation features
CN111385661B (zh) 语音控制全屏播放的方法、装置、终端及存储介质
CN111949543A (zh) 基于分布式平台的测试方法、装置、电子设备及存储介质
US20140137083A1 (en) Instrumenting computer program code by merging template and target code methods
US9436587B2 (en) Test context generation
CN106126517A (zh) 将pc端应用页面转换为移动端应用页面的方法及装置
CN106126198B (zh) 在移动端加载pc端应用页面的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Co-patentee after: Qianxin Technology Group Co., Ltd.

Patentee after: Beijing Qihu Technology Co., Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Co-patentee before: BEIJING QI'ANXIN SCIENCE & TECHNOLOGY CO., LTD.

Patentee before: Beijing Qihu Technology Co., Ltd.