一种接口自动化测试方法及装置制造方法

文档序号:6637048阅读:330来源:国知局
一种接口自动化测试方法及装置制造方法
【专利摘要】本申请公开了一种接口自动化测试方法及装置,该方法测试设备在待测接口的程序中,确定不影响接口的返回值的代码段,并针对该代码段生成测试脚本,然后,执行该测试脚本,以获取待测接口的返回值和与该代码段对应的日志,再判断获取的返回值和日志是否符合预设结果,若是,则确定待测接口工作正常,否则,确定待测接口工作不正常。通过上述方法,由于测试设备除了校验返回值是否正确之外,还通过日志校验了待测接口的程序中,不影响该接口的返回值的代码段是否工作正常,因此,测试设备可以准确地测试待测接口。
【专利说明】一种接口自动化测试方法及装置

【技术领域】
[0001] 本申请涉及计算机【技术领域】,尤其涉及一种接口自动化测试方法及装置。

【背景技术】
[0002] 目前,随着自动化测试技术在测试领域中的广泛应用,测试工程师可以将很多机 械重复的手工测试工作交给自动化测试平台完成,节省了人力,也提高了测试效率。
[0003] 在测试领域中,接口测试主要用于校验待测系统与外部系统之间、以及待测系统 内部的各个子系统之间的接口是否能够正常工作,具体的,要校验接口两侧数据的交换、传 递和控制管理过程,以及系统间相互的逻辑依赖关系是否与符合设计预期。由于接口相对 于其他的业务逻辑,待测试数据量大,且测试需求稳定,变更较少,因此,自动化测试技术很 适用于接口测试。
[0004] 在现有技术中,基于自动化测试平台,对接口的测试主要包括以下三个方面:
[0005] 1、对输入参数的完整性校验,即输入参数是否包含了所有必要参数;
[0006] 2、对输入参数的功能性校验,即针对所有的有效输入参数,校验接口的功能是否 符合设计预期;
[0007] 3、接口的容错能力,即针对无效的或错误的输入参数,接口是否能够正常返回结 果,并给出有意义的错误消息,以帮助调用方定位问题。
[0008] 以上的测试,都以接口的返回值是否符合设计预期作为评判标准。但是,在接口的 程序中,可能会存在不影响该接口的返回值的代码段,也即,无论该代码段是否工作正常, 都不会改变该接口的返回值(可能都会返回正确的返回值)。因此,在这种情况下,基于返 回值无法判断该代码段是否工作正常,从而,也无法准确地测试该接口。
[0009] 例如,假定某接口预期的功能是在接收一个有效的输入参数后,返回该输入参数 的阶乘值,并将该阶乘值写入数据库(写库)。当负责计算阶乘值的代码段工作正常时,该 接口能正确返回输入参数的阶乘值,而此时负责写库的代码段可能工作不正常,会写入错 误的阶乘值或写库失败。则在现有的接口自动化测试方法下,根据返回的阶乘值,会判断该 接口工作正常,而实际上该接口工作不正常,也即,无法准确地测试该接口。


【发明内容】

[0010] 本申请实施例提供一种接口自动化测试方法及装置,用以解决现有技术中当接口 的程序中存在不影响该接口的返回值的代码段时,基于返回值无法正确地测试该接口的问 题。
[0011] 本申请实施例提供的一种接口自动化测试方法,包括:
[0012] 在待测接口的程序中,确定需进行日志校验的代码段;
[0013] 针对所述代码段生成测试脚本;
[0014] 执行所述测试脚本,以获取所述待测接口的返回值和与所述代码段对应的日志;
[0015] 判断获取的返回值和日志是否符合预设结果;
[0016] 若是,则确定所述待测接口工作正常;
[0017] 否则,确定所述待测接口工作不正常。
[0018] 本申请实施例提供的一种接口自动化测试装置,包括:
[0019] 确定模块,用于在待测接口的程序中,确定需进行日志校验的代码段;
[0020] 第一生成模块,用于针对所述代码段生成测试脚本;
[0021] 获取模块,用于执行所述测试脚本,以获取所述待测接口的返回值和与所述代码 段对应的日志;
[0022] 判断模块,用于判断获取的返回值和日志是否符合预设结果,若是,则确定所述待 测接口工作正常,否则,确定所述待测接口工作不正常。
[0023] 本申请实施例提供一种接口自动化测试方法及装置,该方法测试设备在待测接口 的程序中,确定不影响待测接口的返回值的代码段,并针对该代码段生成测试脚本,然后, 执行该测试脚本,以获取待测接口的返回值和与该代码段对应的日志,再判断获取的返回 值和日志是否符合预设结果,若是,则确定待测接口工作正常,否则,确定待测接口工作不 正常。通过上述方法,由于测试设备除了校验返回值是否正确之外,还通过日志校验了待测 接口的程序中,不影响该接口的返回值的代码段是否工作正常,因此,测试设备可以准确地 测试待测接口。

【专利附图】

【附图说明】
[0024] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0025] 图1为本申请实施例提供的接口自动化测试过程;
[0026] 图2为本申请实施例提供的接口自动化测试详细过程;
[0027] 图3为基于本申请实施例提供的接口自动化测试方法,可实现的测试工具中类的 调用关系图;
[0028] 图4为基于本申请实施例提供的接口自动化测试方法,可实现的测试工具中的核 心架构图;
[0029] 图5为本申请实施例提供的接口自动化测试装置结构示意图。

【具体实施方式】
[0030] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及 相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一 部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0031] 图1为本申请实施例提供的接口自动化测试过程,具体包括以下步骤:
[0032] SlOl :测试设备在待测接口的程序中,确定需进行日志校验的代码段。
[0033] 在本申请实施例中,所述的测试设备可以是基于自动化测试平台的测试设备,所 述的待测接口可以是待测软件接口(以下待测接口也可简称为接口),可由测试设备对接 口的功能和性能进行自动化测试。
[0034] 一般的,对于一个接口自动化测试工程,首先,用户可制定测试策略,测试策略描 述了该测试过程的总体方法和目标,包括测试过程中所使用的自动化测试平台、测试技术 和测试工具,以及在测试过程各个阶段的测试任务等。然后,在对接口进行测试之前,需配 置接口,并由用户根据接口设计文档,预先针对接口设计相应的测试用例和执行该测试用 例的预期结果(测试用例的预期结果,以下称为:预设结果),并制定测试计划,测试计划描 述了本次测试过程中执行哪些测试用例、执行的时间点、执行的次数等,其中,测试用例和 测试计划都可包含在所使用测试工具的配置文件中。进而,测试设备可通过该测试工具对 接口进行自动化测试,具体的,测试设备可按照用户制定的测试计划,自动地执行相应的测 试用例,并判断接口的返回值是否符合预设结果,若是,则确定接口工作正常,否则,确定接 口工作不正常。
[0035] 但是,在接口的程序中,可包含两类代码段,一类是能够影响接口的返回值的代码 段(以下称为返回值逻辑),另一类是不影响接口的返回值的代码段,对于不影响接口的返 回值的代码段,若这种代码段工作不正常,则即使接口的返回值符合预设结果,接口也是处 于工作不正常的状态。例如,假定在接口 A的程序中,除了包含返回值逻辑,还包含了内部 调用另一个接口 B的附加代码段,且该附加代码段的执行,并不能影响返回值逻辑执行后 所生成的接口 A的返回值,则当返回值逻辑工作正常,而该附加代码段工作不正常时,虽然 该返回值可能符合预设结果,但是,接口 A也是处于工作不正常的状态。
[0036] 因此,根据上述说明,在未确定不影响接口的返回值的代码段是否工作正常的情 况下,仅基于接口的返回值对接口进行测试的方法是不可靠的。
[0037] 在本申请实施例中,可以通过日志校验的方式,判断上述的代码段是否工作正常, 则在对接口进行测试之前,测试设备可在接口的程序中,确定出需进行日志校验的代码段, 也即,在接口的程序的各代码段中,确定不影响接口的返回值的代码段,作为需进行日志校 验的代码段。
[0038] 另外,在接口测试中,也存在这样的情况,即:返回值逻辑在工作不正常时,对于一 些特定输入参数值,仍可以生成正确的返回值,假定测试该接口时所使用的输入参数值均 包含在这些特定输入参数值中,则测试设备也无法正确地测试返回值逻辑,因此,在这种情 况下,测试设备除了对不影响接口的返回值的代码段进行日志校验之外,还可对返回值逻 辑也进行日志校验,从而可提高测试结果的可靠性。
[0039] S102 :针对该代码段生成测试脚本。
[0040] 在本申请实施例中,由于后续需要确定不影响接口的返回值的代码段是否工作正 常,因此,在确定出该代码段后,用户可针对该代码段制定相应的测试策略并配置接口,再 进一步的针对该代码段设计相关的测试用例,以及制定相应的测试计划。其中,所述的配 置接口具体包括:配置接口传递数据采用的方法,如GET方法(不隐藏用户标识和用户密 码)、P0ST方法(隐藏用户标识和用户密码);配置接口传递数据采用的模式,如同步模式、 异步模式。
[0041] 此后,测试设备可根据测试计划,通过执行与该代码段相关的测试用例,对该代码 段进行测试。其中,执行测试用例,具体可包括:测试设备对测试用例进行解析,将测试用 例中包含的针对接口的输入参数值、测试逻辑等信息转换为用脚本语言表示的代码(也 艮P,生成测试脚本),以及后续执行该测试脚本。其中,测试设备生成测试脚本时中所使用 的脚本语言包括但不限于:工具命令语言(Tool Command Language, TCL)、实用报表提取 语言(Practical Extraction and Report Language,PERL)、超文本预处理器(Hypertext Pr印rocessor,PHP)、PYTHON、RUBY 等脚本语言。
[0042] S103 :执行该测试脚本,以获取待测接口的返回值和与该代码段对应的日志。
[0043] 在本申请实施例中,测试设备在执行该测试脚本的过程中,会通过该测试脚本调 用该代码段,或直接执行该代码段,并将与该代码段相关的调用或执行过程记录为日志,即 为所述的该代码段对应的日志。其中,该日志中可包含调用或执行该代码段时所涉及的各 参数的取值状态和变化过程,从而,可为后续校验该代码段是否工作正常提供依据。当然, 测试设备也可记录测试脚本的完整的执行日志,显然,该执行日志中包含有与该代码段对 应的日志。
[0044] S104:判断获取的返回值和日志是否符合预设结果,若是,则执行步骤S105,否 贝1J,执行步骤S106。
[0045] 在本申请实施例中,接口的返回值是由接口的返回值逻辑根据测试脚本中包含的 输入参数值生成的,因此,测试设备在执行完该测试脚本,获取到接口的返回值和该代码段 对应的日志后,可根据预设结果,对该返回值进行校验,以判断返回值逻辑是否工作正常, 且测试设备同时还可根据预设结果,对获取的与该代码段对应的日志进行校验,以判断该 代码段是否工作正常。
[0046] S105 :确定待测接口工作正常。
[0047] S106 :确定待测接口工作不正常。
[0048] 通过上述方法,由于测试设备在对接口进行自动化测试时,除了通过返回值校验 了接口的返回值逻辑是否工作正常之外,还通过日志校验了接口的程序中,不影响该接口 的返回值的代码段是否工作正常,因此,测试设备可以准确地测试接口。
[0049] 在本申请实施例中,对于上述步骤SlOl,测试设备在接口的程序中,确定需进行日 志校验的代码段,具体包括:测试设备在接口的程序的各代码段中,确定不影响接口的返回 值的代码段,作为需进行日志校验的代码段。在实际应用中,测试设备或用户可使用代码工 具(例如Understand代码工具)对接口的程序进行审计,生成代码逻辑关系依赖图,以分 析确定出接口的程序中存在的不影响接口的返回值的代码段。
[0050] 进一步的,在对接口进行测试前,测试设备还可对使用的测试工具进行相应的配 置,如接口所在主机的互联网协议(Internet Protocol, IP)地址、端口号、对应的数据库连 接统一资源定位器(Uniform Resource Locator,URL)、用户账号、用户密码等等。其中,在 实际应用中,可在所述的测试工具上实现本申请实施例中所述的方法,则测试设备在测试 接口时,可通过使用该测试工具执行所述的方法。
[0051] 接下来,测试设备可开始对接口进行测试,也即,测试设备可根据测试计划,执行 与该代码段相关的测试用例,对于上述步骤S102,针对所述代码段生成测试脚本,具体包 括:根据预设的与所述代码段相关的测试用例,生成测试脚本。当然,若接口的测试场景较 少时,用户也可不设计测试用例,而是手动编写测试脚本并上载至测试设备上,则测试设备 可直接执行用户编写的测试脚本。
[0052] 更进一步的,由于在执行测试脚本的过程中需记录相关的日志,而接口的程序中 一般不会包含记录日志的程序,因此,若要记录日志,可由测试设备在执行测试脚本之前, 加载日志程序,其中,所述的日志程序可以由测试设备上的自动化测试平台提供,也可由用 户提供给测试设备使用。在本申请实施例中,对其中的一种加载日志程序的方法进行说 明:
[0053] 测试设备在执行测试脚本之前,可向接口的程序中加入日志程序,相应的,在上述 步骤S103中,执行该测试脚本,以获取与该代码段对应的日志,具体包括:执行该测试脚 本,并通过该日志程序获取与该代码段对应的日志。
[0054] 例如,对于某接口 A,假定接口 A内部调用了另一个接口 B,且即使该调用过程执行 失败也不会影响接口 A生成正确的返回值,则可对接口 A内部调用接口 B的代码段进行日 志校验,测试设备在对接口 A进行测试之前,可在接口的程序中加入日志程序,具体的,可 在接口 A内部调用接口 B的代码段下加入以下代码:
[0055]

【权利要求】
1. 一种接口自动化测试方法,其特征在于,包括: 在待测接口的程序中,确定需进行日志校验的代码段; 针对所述代码段生成测试脚本; 执行所述测试脚本,以获取所述待测接口的返回值和与所述代码段对应的日志; 判断获取的返回值和日志是否符合预设结果; 若是,则确定所述待测接口工作正常; 否则,确定所述待测接口工作不正常。
2. 如权利要求1所述的方法,其特征在于,在待测接口的程序中,确定需进行日志校验 的代码段,具体包括: 在待测接口的程序的各代码段中,确定不影响所述待测接口的返回值的代码段,作为 需进行日志校验的代码段。
3. 如权利要求1所述的方法,其特征在于,针对所述代码段生成测试脚本,具体包括: 根据预设的与所述代码段相关的测试用例,生成测试脚本。
4. 如权利要求3所述的方法,其特征在于,执行所述测试脚本之前,所述方法还包括: 向所述待测接口的程序中加入日志程序; 执行所述测试脚本,以获取与所述代码段对应的日志,具体包括: 执行所述测试脚本,并通过所述日志程序获取与所述代码段对应的日志。
5. 如权利要求1所述的方法,其特征在于,判断获取的返回值和日志是否符合预设结 果之前,所述方法还包括: 生成与获取的日志对应的校验程序; 判断获取的返回值和日志是否符合预设结果,具体包括: 通过所述校验程序判断获取的返回值和日志是否符合预设结果。
6. 如权利要求1所述的方法,其特征在于,判断获取的返回值和日志是否符合预设结 果,具体包括: 从预设结果中提取预设返回结果和预设参数值; 当获取的返回值与所述预设返回结果匹配,且获取的日志中包含的既定参数值与所述 预设参数值匹配时,确定获取的返回值和日志符合预设结果; 当获取的返回值与所述预设返回结果不匹配,或获取的日志中包含的既定参数值与所 述预设参数值不匹配时,确定获取的返回值和日志不符合预设结果。
7. -种接口自动化测试装置,其特征在于,包括: 确定模块,用于在待测接口的程序中,确定需进行日志校验的代码段; 第一生成模块,用于针对所述代码段生成测试脚本; 获取模块,用于执行所述测试脚本,以获取所述待测接口的返回值和与所述代码段对 应的日志; 判断模块,用于判断所述获取模块获取的返回值和日志是否符合预设结果,若是,则确 定所述待测接口工作正常,否则,确定所述待测接口工作不正常。
8. 如权利要求7所述的装置,其特征在于,所述确定模块具体用于,在待测接口的程序 的各代码段中,确定不影响所述待测接口的返回值的代码段,作为需进行日志校验的代码 段。
9. 如权利要求7所述的装置,其特征在于,所述第一生成模块具体用于,根据预设的与 所述代码段相关的测试用例,生成测试脚本。
10. 如权利要求9所述的装置,其特征在于,所述装置还包括: 加入模块,用于在所述获取模块执行所述测试脚本之前,向所述待测接口的程序中加 入日志程序; 所述获取模块具体用于,执行所述测试脚本,并通过所述日志程序获取与所述代码段 对应的日志。
【文档编号】G06F11/22GK104360920SQ201410724763
【公开日】2015年2月18日 申请日期:2014年12月2日 优先权日:2014年12月2日
【发明者】徐炳松, 罗诗尧, 丁玲 申请人:微梦创科网络科技(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1