CN112433940A - 软件开发工具包sdk测试方法及相关设备 - Google Patents

软件开发工具包sdk测试方法及相关设备 Download PDF

Info

Publication number
CN112433940A
CN112433940A CN202011316381.6A CN202011316381A CN112433940A CN 112433940 A CN112433940 A CN 112433940A CN 202011316381 A CN202011316381 A CN 202011316381A CN 112433940 A CN112433940 A CN 112433940A
Authority
CN
China
Prior art keywords
target
test case
sdk
test
variable
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.)
Pending
Application number
CN202011316381.6A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202011316381.6A priority Critical patent/CN112433940A/zh
Publication of CN112433940A publication Critical patent/CN112433940A/zh
Pending legal-status Critical Current

Links

Images

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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

本申请涉及SDK测试技术领域,具体提供了一种软件开发工具包SDK测试方法及相关设备,应用于测试框架,所述测试框架运行于目标SDK所在操作***,该方法包括:获取用于测试目标SDK的目标测试用例;将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;根据所述目标函数返回的响应数据生成测试结果;本方案可以实现测试用例的复用。

Description

软件开发工具包SDK测试方法及相关设备
技术领域
本申请涉及SDK测试技术领域,具体而言,涉及一种软件开发工具包SDK测试方法及相关设备。
背景技术
SDK(Software Development Kit,软件开发工具包)一般有多种编程语言的版本,相应地会形成多个SDK终端。对于SDK的测试,针对每一测试项,需要针对每个SDK终端分别编写测试用例进行测试。在该过程中,由于要针对SDK的每一测试项分别编写对应于编程语言版本的测试用例,没有实现测试用例复用,造成了很多不必要的重复劳动,测试工作量大。
发明内容
本申请的实施例提供了一种软件开发工具包SDK测试方法及相关设备,以有效解决相关技术中所存在无法实现测试用例复用的问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种软件开发工具包SDK测试方法,应用于测试框架,所述测试框架运行于目标SDK所在操作***,所述方法包括:
获取用于测试目标SDK的目标测试用例;
将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;
通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;
根据所述目标函数返回的响应数据生成测试结果。
根据本申请实施例的一个方面,提供了一种软件开发工具包SDK测试装置,应用于测试框架,所述测试框架运行于目标软件开发工具包SDK所在操作***,所述装置包括:
获取模块,用于获取用于测试目标SDK的目标测试用例;
格式转换模块,用于将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;
解析模块,用于通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;
测试结果生成模块,用于根据所述目标函数返回的响应数据生成测试结果。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上所述的方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被处理器执行时,实现如上所述的方法。
在本申请的方案中,在需要对目标SDK进行测试时,先将为目标测试用例引入的变量转换为与目标测试用例的相同的格式,然后,通过对应于目标测试用例的编程语言的解析模块,对该目标测试用例和变量进行解析,以调用目标SDK中的目标函数,并对应根据目标函数返回的响应数据生成测试结果。在该测试过程,借助于所提供的测试框架,不需要限定测试用例的编程语言与待测的目标SDK的编程语言相同,而由测试框架中所配置的解析模块来自动将该测试用例和变量解析成目标SDK可识别的调用命令,实现SDK的跨语言测试,而不需为每一种编程语言版本的SDK分别编写对应编程语言的测试用例,因此,可以实现测试用例的复用,降低了SDK的测试工作量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是根据一实施例示出的适用于本申请方案的测试框架的结构图;
图2是根据本申请的一个实施例示出的软件开发工具包SDK测试方法的流程图;
图3是根据一实施例示出的运行于电脑端操作***的SDK测试方法的流程图;
图4是根据一实施例示出的运行于移动终端的操作***的SDK测试方法的流程图;
图5是根据一实施例示出的运行于移动终端的操作***的SDK测试方法的流程图;
图6是根据一实施例示出的软件开发工具包SDK测试装置的框图;
图7示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在进行具体说明之前,先对本申请涉及的术语进行解释:
SDK:Software Development Kit,软件开发工具包。一般是一些软件工程师为特定的软件包、软件框架、硬件平台、操作***等建立应用软件时的开发工具的集合。
WebView:WebView是一个基于webkit引擎、展现web页面的控件。
Native:Native为一种基于***原生调用层的概念,一般移动端SDK都是基于该层进行开发。
WebApp:WebApp是一种基于高端机的浏览器运行的移动端应用。
JavaScript:JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
Nodejs:Nodejs是一种运行在服务端的JavaScript脚本语言。
Flutter:Flutter是谷歌的移动UI框架,可以快速在IOS和Android上构建高质量的原生用户界面。
图1是根据一实施例示出的适用于本申请方案的测试框架的结构图;如图1所示,该测试框架包括协议层110、用例层120和接入层130。
其中,协议层110进行了协议定义和设置了数据中心,该数据中心用于存储变量,其中,数据中心的变量可以是预先设定的预设变量,也可以是从SDK调用中所写到响应数据中解析确定的变量。其中,在本申请的方案中,数据中心中的变量可以是按照设定数据格式定义的。
所定义的协议用于统一不同编程语言或者操作***之间的中间协议。该指定协议可以指示不同编程语言的数据格式之间的转换策略和指示将不同编程语言解析为待测SDK可识别的数据格式的解析策略。在本申请的方案中,为了在执行测试用例的过程中,统一进行测试用例和变量的解析,先将测试用例和变量的数据格式进行统一。
测试用例可以是通过各种编程语言编写的,例如Nodejs、python、PHP(Professional Hypertext Preprocessor,超文本预处理器)、Java、C#、C/C++等。
不同的编程语言,其定义数据的方式存在差异。例如对于位置,Nodejs中的定义方式是:new Geo.Point(90,23),但是在PHP中定义是:$db->Point(90,23)。而不同编程语言所定义数据可能并不兼容,即若一种编程语言版本的SDK可能并不能识别另一种编程语言所定义的数据类型。
由于每次测试所加载的测试用例的编程语言可能不同,数据中心中变量的格式与测试用例所对应的格式也可能不同,因此,将所引入的变量转换为该测试用例所使用编程语言的所限定的数据格式。
因此,根据所预先定义的协议将应用于该测试用例的变量进行格式转换,以将该变量的格式转换为所加载测试用例对应的编程语言所对应的格式,保证变量的格式与测试用例的格式的统一。
可以理解的是,所定义的协议指示了不同编程语言之间进行格式转换的转换策略,例如,若变量的格式为Python对应的格式,而测试用例是通过Java编写的,需要按照Python与Java之间格式转换策略,将Python格式的变量转换为Java格式的变量,以保证变量的格式与所加载测试用例的格式的统一。在具体实施例中,该协议可以根据实际需要进行自定义,例如根据SDK所涉及的编程语言版本来定义不同编程语言之间的格式转换策略等。
其中,用例层120用于存储为待测的SDK所编写的测试用例,该测试用例可以是针对SDK的各种功能所编写的测试用例,例如针对文件操作编写的文件操作用例、针对数据库操作的数据库操作用例、针对流程数据操作的流程数据操作用例、针对权限操作的权限操作用例,当然,以上仅仅是示例性举例。SDK的功能不同,所编写的测试用例也对应存在差异。
接入层130用于将测试框架与SDK所运行的操作***进行通信。在接入层中进行测试用例和对应的变量的解析,由接入层进行SDK中测试用例所指示目标函数的调用。在本申请的方案中,为了进行不同编程语言的解析,测试框架中还设置了针对不同编程语言的解析模块,例如针对Nodejs的解析模块、针对Python的解析模块、针对PHP的解析模块、针对Java的解析模块、针对C#的解析模块、针对C的解析模块、针对C++的解析模块,该解析模块可以将对应编程语言的测试用例和变量解析为待测SDK可直接识别的命令。
本申请的方案可以应用于测试不同编程语言版本的SDK,例如图1所示的JAVA-SDK、PHP-SDK、Nodejs-SDK、python-SDK、C#-SDK等。此外,该申请所提供的测试框架接入不同的操作***平台,例如对应于电脑端的操作***(如Windows、Linux、Mac OS)、对应于移动终端的操作***(Android、IOS、小程序、Flutter、WebApp),因此,本申请的方案可以应用于测试运行于不同操作***SDK,例如Android-SDK、IOS-SDK、小程序-SDK等。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2是根据本申请的一个实施例示出的软件开发工具包SDK测试方法的流程图,该方法可由具备处理能力的计算机设备执行,例如台式电脑等。该方法应用于测试框架,所述测试框架运行于目标SDK所在操作***,参照图2所示,该软件开发工具包SDK测试方法至少包括步骤210至步骤240,详细介绍如下。
步骤210,获取用于测试目标SDK的目标测试用例。
其中,目标SDK是指待进行测试的SDK。目标测试用例指示用于对目标SDK进行测试的测试用例。
在本申请的一些实施例中,可以分别为每一SDK预先编写多个测试用例,则所编写的每一个测试用例可以作为本申请方案中的目标测试用例。
在本申请的一些实施例中,步骤210,包括:根据为所述目标SDK配置的筛选条件在测试用例集中进行筛选,得到用于测试所述目标SDK的目标测试用例。
由于SDK可能存在多种编程语言的版本,而不同编程语言版本的SDK虽然主要功能是相同的,但是也可能存在有差异的功能,对于存在差异的功能,则需要单独为该编程语言版本的SDK编写测试用例。因此,为了避免错误加载测试用例,先从测试用例集中进行测试用例筛选,得到用于测试目标SDK的目标测试用例。
在本申请的一些实施例中,所述筛选条件包括配置的白名单和配置的黑名单;所述测试用例集包括通用测试用例集和特定测试用例集;所述根据为所述目标SDK配置的筛选条件在测试用例集中进行筛选,得到用于测试所述目标SDK的目标测试用例的步骤进一步包括:根据为所述目标SDK配置的白名单,从所述特定测试用例集中筛选得到适用于所述目标SDK的测试用例;以及根据为所述目标SDK配置的黑名单,过滤所述通用测试用例集中不适用于所述目标SDK的测试用例;将从所述特定测试用例集中筛选得到的测试用例和所述通用测试用例集中过滤后所剩下的测试用例作为所述目标测试用例。
对于存在多个编程语言版本的SDK而言,其功能多数是通用的,仅部分功能存在差异。在本实施例中,将针对通用功能所编写的测试用例存储于通用测试用例集中,将针对SDK的特定功能所编写的测试用例所编写的测试用例存储于特定测试用例集中。
其中,所配置的所述白名单指示了适用于所述目标SDK的测试用例,所述黑名单指示了不适用于所述目标SDK的测试用例。因此,当对于某一编程语言的SDK存在特定的测试用例时,将该特定的测试用例添加到为该SDK所配置的白名单中,则在加载特定用例集中的测试用例时只允许加载白名单内的测试用例。而对于一些通用功能,可能某一编程语言版本的SDK并不支持,将针对该通用功能所编写的测试用例添加到SDK的黑名单中,则在加载通用测试用例集合中的测试用例时需要排除掉黑名单中的测试用例。
当然,在其他实施例中,可以仅为每一版本的SDK配置黑名单,或者仅配置白名单。
在本申请的另一些实施例中,步骤210包括:根据所述目标SDK所在操作***对应的目标***类型,在若干测试用例集合中筛选得到所述目标***类型对应的测试用例集合;将所述目标***类型对应的测试用例集合中的测试用例作为所述目标测试用例。
在本实施例中,由于不同操作***所支持的功能存在差异,因此,针对差异化的功能,可以SDK所运行的操作***的类型来划分,例如操作***可以分为如Windows、Linux、Mac OS、Android、IOS、小程序、Flutter,然后将差异化的功能对应的测试用例划分为对应于Windows的测试用例集合、对应于Linux***的测试用例集合、对应于Mac OS***的测试用例集合、对应于Android***测试用例集合、对应于IOS***的测试用例集合、对应于小程序***的测试用例集合、对应于Flutter***的测试用例集合。当然,以上仅仅是一种示例性举例,针对不同操作***的差异程度,还可以将多个操作***划分为同一类。
步骤220,将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量。
为目标测试用例所引入的变量是指为目标测试用例配置的输入参数,例如若测试用例是针对目标SDK中的某一接口进行调用测试的,则在执行测试用例的过程中,需要对应为该输入参数进行赋值。
其中,为目标测试用例所引入的变量可以是环境变量,也可以是从已测的测试用例的响应数据中所解析确定的变量,例如上一测试用例的响应值。在步骤220中,将为测试用例所引入的变量的格式转换为目标测试用例所使用第一编程语言对应的格式,由此保证了为该目标测试用例所引入的变量的格式与目标测试用例的格式的统一。
步骤230,通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数。
在申请的实施例中,针对多种编程语言对应配置了解析模块,由此使得对应的解析模块可以用于对应编程语言的测试用例和变量进行解析,以实现目标SDK中测试用例所指示目标函数的调用。其中,该目标函数是与测试用例所对应的测试项相关的。
步骤240,根据所述目标函数返回的响应数据生成测试结果。
目标函数所返回的响应数据指示了执行目标测试用例的执行结果,其中,可以将该执行结果作为测试结果。例如针对SDK中某一接口的测试,将该测试用例针对该接口的返回值即为该目标测试用例的执行结果。
在一实施例中,该测试结果还可以用于指示该目标测试用例的执行结果与预期执行结果是否一致,其中,目标测试用例指示了该目标测试用例的预期执行结果。
在本申请的一些实施例中,该测试框架可以是基于Nodejs编程语言,当然,在其他实施例中,还可以通过其他编程语言实现本申请的测试框架。
在本申请的方案中,在需要对目标SDK进行测试时,先将为目标测试用例引入的变量转换为与目标测试用例的相同的格式,然后,通过对应于目标测试用例的编程语言的解析模块,对该目标测试用例和变量进行解析,以调用目标SDK中的目标函数,并对应根据目标函数返回的响应数据生成测试结果,在该测试过程,借助于所提供的测试框架,不需要限定测试用例的编程语言与待测的目标SDK的编程语言相同,而由测试框架中所配置的解析模块来自动将该测试用例和变量解析成目标SDK可识别的调用命令,实现SDK的跨语言测试,而不需为每一种编程语言版本的SDK分别编写对应编程语言的测试用例。
在本申请的一些实施例中,所述指定协议为所述目标测试用例所引入的变量是从数据中心获取到的,所述数据中心包括预设变量;步骤230之后,该方法还包括:对所述目标函数所返回的响应数据进行解析,以确定所述响应数据中的变量;将所确定所述响应数据中的变量存储于所述数据中心。
在本申请的一些实施例中,数据中心所存储的变量包括变量的变量名和对应的数据,而测试用例中,对应定义了需要进行数值输入的变量名,因此,在数据中心中,按照测试用例中所定义的变量名可以对应获取包括该变量名的变量。
由于SDK的测试中,可能存在功能的关联性测试,例如上一测试用例的执行结果中的全部或者部分参数需要作为下一测试用例的输入,在该种情况下,需要即时从已执行完的测试用例的测试结果中进行解析,以提取出可以用于之后测试用例的参数,即本申请中的变量。
在本申请的一些实施例中,可以在测试框架中定义对响应数据进行解析的协议,以基于所定义的协议来对响应数据进行解析,从中获取变量,并将其存入数据中心。
在本申请的一些实施例中,可以在指定协议中定义一个输出模块,该输出模块是用于解析响应数据中需要被存储起来的变量,当下个测试用例被执行时会对请求入参进行解析,如果请求入参数中包含特定变量,则对应将该请求入参赋值为数据中心中该请求入参对应的值。
在本申请的一些实施例中,本申请所提供的测试框架可以运行于电脑端的操作***,例如Windows、Linux、Mac OS***,基于此,本申请的测试框架按照本申请的方法可以用于测试可运行于电脑端操作***的SDK。
图3是根据一实施例示出的运行于电脑端操作***的SDK测试方法的流程图,如图3所示,该SDK测试方法包括步骤301-306。
步骤301,加载测试用例;其中,所加载的测试用例可以是针对不同版本的SDK所编写的测试用例。
步骤302,进行测试用例筛选;其中可以通过策略中心配置的策略来进行筛选以得到用于测试目标SDK的目标测试用例,其中,配置的策略可以按照上文中所列举按照配置的白名单、黑名单、以及按照目标SDK所运行操作***的类型来进行筛选,在此不进行具体限定。
步骤303,输出目标测试用例表;该目标测试用例表中的测试用例即用于测试目标SDK的目标测试用例。
步骤304,执行目标测试用例;具体的,步骤304包括:步骤3041-3044,其中,步骤3041,获取自定义的协议;其中,该自定义的协议是预先进行定义然后存储在测试框架中的。在自定义的协议可以根据实际需要进行定义,例如针对SDK所涉及的编程语言来定义两不同编程语言之间的格式转换策略,不同编程语言之间的解析策略等。
步骤3042,输入目标测试用例对应的变量。其中,该变量来源于数据中心,数据中心所存储的变量可以是预设变量,也可以是从已执行的测试用例的执行结果中解析得到的。
步骤3043,通过参数Handler对变量进行格式转换。具体的,该参数Handler按照所定义的协议将所引入的变量转换为对应于测试用例所使用编程语言的格式。可以理解的是,所定义的协议指示了将变量所对应编程语言与测试用例所使用编程语言之间的格式转换策略,以基于所定义协议中的格式转换策略来对变量进行格式转换。
步骤3044,通过解析模块对测试用例和转换后的变量进行解析,以调用目标SDK中的目标函数。
在本申请的方案中,测试框架中设置了针对不同编程语言的解析模块,例如图3中,针对PHP语言的解析模块(即PHP-SDK-Helper)、针对Python编程语言的解析模块(即Python-SDK-Helper)以及针对JavaScript编程语言的JS-SDK-Helper。由测试用例所使用编程语言的解析模块对该测试用例和转换后的变量进行解析,以调用目标SDK中的目标函数。其中,通过解析模块对测试用例和变量进行解析,可以将测试用例解析为目标SDK中针对目标函数的调用命令。
步骤305,解析返回的响应数据;通过解析响应数据将其中的变量提取出来并存储在数据中心,以供其中的测试用例用。
步骤306,输出测试报告。该测试报告可以指示测试用例的执行结果与测试用例中的预期执行结果是否一致。
在本申请的一些实施例中,所述操作***包括运行于移动终端的操作***,例如,小程序***、Flutter***、Android***和IOS***等。在此种应用场景下,所述测试框架运行于所述操作***的WebView控件中,所述目标SDK运行于所述操作***的Native层中,所述WebView控件和所述Native层通过JavaScript通道进行通信,所述测试框架通过异步回调的方式获得所述响应数据。
图4是根据一实施例示出的运行于移动终端的操作***的SDK测试方法的流程图,如图4所示,具体包括:
步骤401,获取配置信息;其中,该配置信息可以是用于进行测试用例筛选的信息,例如上文中所列举的白名单、黑名单等,还可以是其他用于实现测试用例筛选的信息,在此不进行具体限定。
步骤402,加载测试用例。
步骤403,输出测试用例表。
步骤404,获取自定义协议。具体自定义协议的内容可以参见图3对应实施例的描述,在此不再赘述。
步骤405,通过JavaScript通道调用Native层的目标SDK。在本实施例中,由于WebView控件和Native层不能直接通信,因此,基于所构建的JavaScript通道来实现二者的通信。在本实施例中,待测的目标SDK通过Web pack方式打包,该打包后的目标SDK可供WebView控件进行调用。
步骤406,异步等待执行结果。
步骤407,判断是否超时;若超时,则执行步骤409,若未超时,则执行步骤408。
步骤408,返回执行结果;该执行结果包括执行测试用例,调用目标SDK中目标函数所返回的响应数据。
步骤409,解析结果;如果解析的结果是所得到执行结果中的响应数据,则解析确定该响应数据中的变量,并将该变量存入数据中心中。
步骤410,输出测试报告。其中,该测试报告可以存储于云平台中。
图5是根据一实施例示出的运行于移动终端的操作***的SDK测试方法的流程图,如图5所示,具体包括初始化过程和测试用例的执行过程。如图5所示,初始化过程包括步骤511初始化运行环境;步骤512,调用js注入,通过Native层或Flutter层向Webview控件调用js注入,以向Webview控件提供调用入口;步骤513,执行入参,用于将Webview控件中的环境信息告知目标SDK;步骤514,注册调用函数,便于后续通过所注册的调用函数进行SDK的调用。
其中测试用例的执行过程包括:步骤521,获取触发信号;步骤522,根据触发信号执行单测试用例;步骤523,参数转换和解析请求,其中,参数转换即将测试用例对应的变量进行格式转换,解析请求即通过解析模块将测试用例和变量解析为目标SDK可识别的调用命令,以调用对应的目标SDK中的目标函数;步骤524,异步等待执行结果;如果执行超时,则进行出错提示,并返回对应的指示超时的结果;如果未超时,则向测试框架返回执行结果。在测试框架等待执行结果的过程中,如果超时或者测试结束,则执行步骤525,输出测试报告;如果未超时且未结束,则返回至步骤522,继续执行测试用例。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的方法。对于本申请装置实施例中未披露的细节,请参照本申请上述方法实施例。
图6是根据一实施例示出的软件开发工具包SDK测试装置的框图,该装置应用于测试框架,所述测试框架运行于目标软件开发工具包SDK所在操作***,如图6所示,该软件开发工具包SDK测试装置包括:
获取模块610,用于获取用于测试目标SDK的目标测试用例;
格式转换模块620,用于将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;
解析模块630,用于通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;
测试结果生成模块640,用于根据所述目标函数返回的响应数据生成测试结果。
在本申请的一些实施例中,所述指定协议为所述目标测试用例所引入的变量是从数据中心中获取到的,所述数据中心包括预设变量;该软件开发工具包SDK测试装置还包括:响应数据解析模块,用于对所述目标函数所返回的响应数据进行解析,以确定所述响应数据中的变量;存储模块,用于将所确定所述响应数据中的变量存储于所述数据中心。
在本申请的一些实施例中,获取模块610包括:筛选单元,用于根据为所述目标SDK配置的筛选条件在测试用例集中进行筛选,得到用于测试所述目标SDK的目标测试用例。
在本申请的一些实施例中,所述筛选条件包括配置的白名单和配置的黑名单;所述测试用例集包括通用测试用例集和特定测试用例集;筛选单元包括:第一筛选单元,用于根据为所述目标SDK配置的白名单,从所述特定测试用例集中筛选得到适用于所述目标SDK的测试用例;以及过滤单元,用于根据为所述目标SDK配置的黑名单,过滤所述通用测试用例集中不适用于所述目标SDK的测试用例;第一确定单元,用于将从所述特定测试用例集中筛选得到的测试用例和所述通用测试用例集中过滤后所剩下的测试用例作为所述目标测试用例。
在本申请的另一些实施例中,筛选单元,包括:第二筛选单元,用于根据所述目标SDK所在操作***对应的目标***类型,在若干测试用例集合中筛选得到所述目标***类型对应的测试用例集合;第二确定单元,用于将所述目标***类型对应的测试用例集合中的测试用例作为所述目标测试用例。
在本申请的一些实施例中,所述操作***包括运行于移动终端的操作***,所述测试框架运行于所述操作***的WebView控件中,所述目标SDK运行于所述操作***的Native层中,所述WebView控件和所述Native层通过JavaScript通道进行通信,所述测试框架通过异步回调的方式获得所述响应数据。
在本申请的一些实施例中,所述操作***包括运行于电脑端的操作***。
图7示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图7示出的电子设备的计算机***700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(Central Processing Unit,CPU)701,其可以根据存储在只读存储器(Read-Only Memory,ROM)702中的程序或者从存储部分708加载到随机访问存储器(Random Access Memory,RAM)703中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 703中,还存储有***操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(Input/Output,I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质77,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质77被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载计算机可读指令,当该计算机可读存储指令被处理器执行时,实现上述实施例中的方法。
根据本申请的一个方面,还提供了一种电子设备,其包括:处理器;存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时,实现上述实施例中的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种软件开发工具包SDK测试方法,其特征在于,应用于测试框架,所述测试框架运行于目标SDK所在操作***,所述方法包括:
获取用于测试目标SDK的目标测试用例;
将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;
通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;
根据所述目标函数返回的响应数据生成测试结果。
2.根据权利要求1所述的方法,其特征在于,所述目标变量是从数据中心获取到的,所述数据中心包括预设变量;
所述通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数之后,所述方法还包括:
对所述目标函数所返回的响应数据进行解析,以确定所述响应数据中的变量;
将所确定所述响应数据中的变量存储于所述数据中心。
3.根据权利要求1所述的方法,其特征在于,所述获取用于测试目标SDK的目标测试用例,包括:
根据为所述目标SDK配置的筛选条件在测试用例集中进行筛选,得到用于测试所述目标SDK的目标测试用例。
4.根据权利要求3所述的方法,其特征在于,所述筛选条件包括配置的白名单和配置的黑名单;所述测试用例集包括通用测试用例集和特定测试用例集;
所述根据为所述目标SDK配置的筛选条件在测试用例集中进行筛选,得到用于测试所述目标SDK的目标测试用例,包括:
根据为所述目标SDK配置的白名单,从所述特定测试用例集中筛选得到适用于所述目标SDK的测试用例;以及
根据为所述目标SDK配置的黑名单,过滤所述通用测试用例集中不适用于所述目标SDK的测试用例;
将从所述特定测试用例集中筛选得到的测试用例和所述通用测试用例集中过滤后所剩下的测试用例作为所述目标测试用例。
5.根据权利要求1所述的方法,其特征在于,所述获取用于测试目标SDK的目标测试用例,包括:
根据所述目标SDK所在操作***对应的目标***类型,在若干测试用例集合中筛选得到所述目标***类型对应的测试用例集合;
将所述目标***类型对应的测试用例集合中的测试用例作为所述目标测试用例。
6.根据权利要求1所述的方法,其特征在于,所述操作***包括运行于移动终端的操作***,所述测试框架运行于所述操作***的WebView控件中,所述目标SDK运行于所述操作***的Native层中,所述WebView控件和所述Native层通过JavaScript通道进行通信,所述测试框架通过异步回调的方式获得所述响应数据。
7.根据权利要求1所述的方法,其特征在于,所述操作***包括运行于电脑端的操作***。
8.一种软件开发工具包SDK测试装置,其特征在于,应用于测试框架,所述测试框架运行于目标软件开发工具包SDK所在操作***,所述装置包括:
获取模块,用于获取用于测试目标SDK的目标测试用例;
格式转换模块,用于将目标变量进行格式转换,以将所述目标变量转换为所述目标测试用例所使用的第一编程语言对应的格式;其中,所述目标变量是为所述目标测试用例引入的变量;
解析模块,用于通过所述第一编程语言对应的解析模块,对所述目标测试用例和格式转换后的所述目标变量进行解析,以调用所述目标SDK中所述目标测试用例所指示的目标函数;
测试结果生成模块,用于根据所述目标函数返回的响应数据生成测试结果。
9.一种电子设备,其特征在于,包括:
处理器;
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机可读指令,其特征在于,当所述计算机可读指令被处理器执行时,实现如权利要求1-7中任一项所述的方法。
CN202011316381.6A 2020-11-19 2020-11-19 软件开发工具包sdk测试方法及相关设备 Pending CN112433940A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011316381.6A CN112433940A (zh) 2020-11-19 2020-11-19 软件开发工具包sdk测试方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011316381.6A CN112433940A (zh) 2020-11-19 2020-11-19 软件开发工具包sdk测试方法及相关设备

Publications (1)

Publication Number Publication Date
CN112433940A true CN112433940A (zh) 2021-03-02

Family

ID=74693448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011316381.6A Pending CN112433940A (zh) 2020-11-19 2020-11-19 软件开发工具包sdk测试方法及相关设备

Country Status (1)

Country Link
CN (1) CN112433940A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543857A (zh) * 2022-12-02 2022-12-30 北京蔚领时代科技有限公司 Sdk测试包的制作方法、sdk测试方法及设备
CN115952758A (zh) * 2023-03-10 2023-04-11 成都登临科技有限公司 芯片验证方法、装置、电子设备及存储介质
WO2023232052A1 (zh) * 2022-06-01 2023-12-07 阿里云计算有限公司 远程证明报告的处理方法、数据库服务端和数据库客户端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188271A1 (en) * 2004-01-13 2005-08-25 West John R. Method and system for rule-based generation of automation test scripts from abstract test case representation
CN106126411A (zh) * 2016-06-13 2016-11-16 广州酷狗计算机科技有限公司 一种对被测程序代码进行测试的方法和装置
CN107391366A (zh) * 2017-07-07 2017-11-24 华为技术有限公司 一种测试用例的生成方法及执行方法和装置
CN107678941A (zh) * 2017-08-31 2018-02-09 深圳市小牛在线互联网信息咨询有限公司 应用程序测试的方法及装置、存储介质和计算机设备
CN111176996A (zh) * 2019-12-25 2020-05-19 平安普惠企业管理有限公司 测试用例生成方法、装置、计算机设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050188271A1 (en) * 2004-01-13 2005-08-25 West John R. Method and system for rule-based generation of automation test scripts from abstract test case representation
CN106126411A (zh) * 2016-06-13 2016-11-16 广州酷狗计算机科技有限公司 一种对被测程序代码进行测试的方法和装置
CN107391366A (zh) * 2017-07-07 2017-11-24 华为技术有限公司 一种测试用例的生成方法及执行方法和装置
CN107678941A (zh) * 2017-08-31 2018-02-09 深圳市小牛在线互联网信息咨询有限公司 应用程序测试的方法及装置、存储介质和计算机设备
CN111176996A (zh) * 2019-12-25 2020-05-19 平安普惠企业管理有限公司 测试用例生成方法、装置、计算机设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023232052A1 (zh) * 2022-06-01 2023-12-07 阿里云计算有限公司 远程证明报告的处理方法、数据库服务端和数据库客户端
CN115543857A (zh) * 2022-12-02 2022-12-30 北京蔚领时代科技有限公司 Sdk测试包的制作方法、sdk测试方法及设备
CN115543857B (zh) * 2022-12-02 2023-03-21 北京蔚领时代科技有限公司 Sdk测试包的制作方法、sdk测试方法及设备
CN115952758A (zh) * 2023-03-10 2023-04-11 成都登临科技有限公司 芯片验证方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109739478B (zh) 前端项目自动化构建方法、装置、存储介质及电子设备
CN107577607B (zh) 用户界面自动化测试方法、装置、电子设备、存储介质
CN112433940A (zh) 软件开发工具包sdk测试方法及相关设备
US10831456B1 (en) External code integrations within a computing environment
CN112100072B (zh) 应用程序代码的静态检测方法、装置、设备及介质
CN110825431B (zh) 接口文档处理方法及装置、***、存储介质和电子设备
CN111736840A (zh) 小程序应用的编译方法、运行方法、存储介质及电子设备
CN110532185B (zh) 测试方法、装置、电子设备和计算机可读存储介质
CN111240684A (zh) 一种js代码的裁剪方法、装置、介质和电子设备
CN110955409A (zh) 在云平台上创建资源的方法和装置
CN113760729A (zh) 一种代码检测方法和装置
CN111427782A (zh) 安卓动态链接库的运行方法、装置、设备及存储介质
CN113065137A (zh) Php项目中开源组件漏洞检测方法
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN106569868B (zh) 一种基于Gradle的编译优化方法及装置
CN111045724B (zh) 调用链信息的查询方法、装置和可读存储介质
CN110609786A (zh) 软件测试方法、装置、计算机设备和存储介质
CN114791885A (zh) 接口测试方法、装置、设备及介质
CN114756183A (zh) 数据打印方法、装置、设备及存储介质
CN111124423B (zh) 一种基于多平台的编译检测方法、装置、服务器及介质
US11030087B2 (en) Systems and methods for automated invocation of accessibility validations in accessibility scripts
CN114065197A (zh) 调用序列生成方法、装置、电子设备、存储介质及产品
CN107122667B (zh) 一种应用漏洞检测方法及***
CN110737983A (zh) 交通工具的功能试验方法、装置、设备及存储介质
CN111240693A (zh) 实时数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination