CN107797911A - 用于测试http接口的方法和装置 - Google Patents
用于测试http接口的方法和装置 Download PDFInfo
- Publication number
- CN107797911A CN107797911A CN201610800785.XA CN201610800785A CN107797911A CN 107797911 A CN107797911 A CN 107797911A CN 201610800785 A CN201610800785 A CN 201610800785A CN 107797911 A CN107797911 A CN 107797911A
- Authority
- CN
- China
- Prior art keywords
- test
- data
- testing procedure
- http
- tested
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
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)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了用于测试HTTP接口的方法和装置。所述方法的一具体实施方式包括:获取用户输入的针对待测试超文本传输协议HTTP接口的测试用例;将所述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将所述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包并发送到所述待测试HTTP接口;判断所述待测试HTTP接口返回的响应数据是否与所述当前测试步骤的期望结果数据相同,如果不同,则生成测试失败的结果;如果相同,则进一步判断所述当前测试步骤是否是所述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将下一测试步骤作为当前测试步骤,继续执行所述HTTP接口测试步骤。该实施方式提高了HTTP接口的测试效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及用于测试HTTP接口的方法和装置。
背景技术
目前网页自动化测试常用的方案是通过测试工具(例如,Selenuim)打开网页,等待指定操作的页面元素已加载后,再进行模拟用户行为操作(例如,访问、输入、点击、文件选择等操作),通过操作结果获取页面元素并判断操作结果,最终确定测试用例是否成功。
然而,通过测试工具模拟浏览器操作会存在以下问题:(1)无论是在内存中静默打开还是调用用户界面打开,都会因为等待页面某个脚本代码执行而出现加载效率问题;(2)对于一些页面元素变动需要经常维护测试脚本,增加测试成本;(3)开发脚本成本较高,需要分析页面元素;(4)模块化效果差,因为测试工具是基于页面元素实现自动化,因此调用模块也必须要加载页面元素才能被使用,在使用或维护时效率低。如在访问一个多层链接时,测试工具需要一层一层去操作,类似用户手工点击进去。这对于HTTP接口验证,前面的页面操作是没有意义的。
发明内容
本申请的目的在于提出一种改进的用于测试HTTP接口的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于测试HTTP接口的方法,所述方法包括:获取用户输入的针对待测试HTTP(Hyper Text Transfer Protocol,超文本传输协议)接口的测试用例,所述待测试HTTP接口包括统一资源定位符URL,所述测试用例包括顺序执行的至少一个测试步骤,所述测试步骤包括测试操作、测试数据和期望结果数据,所述测试操作包括GET操作和POST操作,所述测试数据包括URL,所述测试数据的URL与所述待测试HTTP接口的URL相同;将所述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将所述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将所述HTTP测试请求包发送到所述待测试HTTP接口;接收所述待测试HTTP接口返回的响应数据,判断所述响应数据是否与所述当前测试步骤的期望结果数据相同,如果不同,则根据所述当前测试步骤和所述响应数据,生成测试失败的结果;如果相同,则进一步判断所述当前测试步骤是否是所述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将所述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行所述HTTP接口测试步骤。
第二方面,本申请提供了一种用于测试HTTP接口装置,所述装置包括:获取单元,配置用于获取用户输入的针对待测试HTTP接口的测试用例,所述待测试HTTP接口包括统一资源定位符URL,所述测试用例包括顺序执行的至少一个测试步骤,所述测试步骤包括测试操作、测试数据和期望结果数据,所述测试操作包括GET操作和POST操作,所述测试数据包括URL,所述测试数据的URL与所述待测试HTTP接口的URL相同;执行单元,配置用于将所述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将所述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将所述HTTP测试请求包发送到所述待测试HTTP接口;接收所述待测试HTTP接口返回的响应数据,判断所述响应数据是否与所述当前测试步骤的期望结果数据相同,如果不同,则根据所述当前测试步骤和所述响应数据,生成测试失败的结果;判断单元,配置用于如果相同,则进一步判断所述当前测试步骤是否是所述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将所述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行所述HTTP接口测试步骤。
本申请提供的用于测试HTTP接口方法和装置,通过获取用户输入的针对待测试HTTP接口的测试用例,然后对测试用例中的每个测试步骤,将该测试步骤的测试操作和测试数据封装成HTTP测试请求包,并将该HTTP测试请求包发送到待测试HTTP接口,最后根据从待测试HTTP接口接收到的响应数据,生成测试结果。即,模拟浏览器向HTTP接口发送GET或POST请求,直接提交数据给待测试HTTP接口,触发待测试HTTP接口对应功能服务做出响应,获取返回数据并判断响应是否成功,而不用等待所有页面元素都加载成功再进行模拟测试,从而实现了测试操作和测试数据的独立,加快了测试脚本开发的速度,降低了维护成本,提高了测试效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本中请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的用于测试HTTP接口的方法的一个实施例的流程图;
图3是根据本申请的建立测试用例的一个实施例的流程图;
图4是根据本申请的用于测试HTTP接口的装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于测试HTTP接口的方法或用于测试HTTP接口的装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户(例如,测试工程师)可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种客户端应用,例如网页测试类应用,网页浏览器应用等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的网页提供支持的后台网页服务器。后台网页服务器可以对接收到的网页页面请求(例如GET请求或POST请求)等数据进行分析等处理,并将处理结果(例如网页页面数据)反馈给终端设备。
需要说明的是,本申请实施例所提供的用于测试HTTP接口的方法一般由终端设备101、102、103执行,相应地,用于测试HTTP接口的装置一般设置于终端设备101、102、103中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,其示出了根据本申请的用于测试HTTP接口的方法的一个实施例的流程200。所述的用于测试HTTP接口的方法,包括以下步骤:
步骤201,获取用户输入的针对待测试HTTP接口的测试用例。
在本实施例中,用于测试HTTP接口的方法运行于其上的电子设备(例如图1所示的终端设备101、102、103)可以本地或者远程地获取用户输入的针对待测试HTTP接口的测试用例。其中,上述待测试HTTP接口包括URL(Uniform Resource Locator,统一资源定位符),例如,http://www.xxxxx.com/index.html。上述测试用例包括顺序执行的至少一个测试步骤,每个测试步骤包括测试操作、测试数据和期望结果数据,测试操作包括GET操作和POST操作,测试数据包括URL,上述测试数据的URL与上述待测试HTTP接口的URL相同。
HTTP是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务器端请求和应答的标准。HTTP协议中定义了若干种请求资源的不同操作方式,包括POST、GET、DELETE等。在本实施例中,考虑到GET方式和POST方式是最常用的两种操作方式,因此将测试操作分为GET操作和POST操作。GET操作是指从待测试HTTP接口请求数据;POST操作是指向待测试HTTP接口提交要被处理的数据。
在本实施例的一些可选的实现方式中,GET操作对应的测试步骤的测试数据还可以包括以下至少一项:HTTP请求头、待获取的数据、浏览器缓存。其中,HTTP请求头是HTTP请求的核心,它承载了关于用户端浏览器、客户端请求的资源以及HTTP接口对应的服务器等相关的信息。例如HTTP请求头可以包括:“User-Agent”表明客户端的浏览器版本和操作***,也可以包括“Accept-Encoding”来告诉服务器客户端的浏览器可以接受哪些类型的压缩输出等。待获取的数据是客户端向服务器所请求的数据信息。浏览器缓存(也叫Cookie或Cookies)是指某些网站为了辨别用户身份、进行会话(也叫session)跟踪而储存在用户本地终端上的数据(通常经过加密)。
在本实施例的一些可选的实现方式中,POST操作对应的测试步骤的测试数据还可以包括以下至少一项:HTTP请求头、待提交的数据、浏览器缓存、待上传文件的存储路径信息。
步骤202,将测试用例中的第一个测试步骤作为当前测试步骤。
在本实施例中,上述电子设备可以在获取到测试用例后,将测试用例中的第一个测试步骤作为当前测试步骤。
步骤203,将当前测试步骤的测试操作和测试数据封装成HTTP测试请求包。
在本实施例中,上述电子设备可以将当前测试步骤的测试操作和测试数据封装成HTTP测试请求包。这里,上述电子设备可以根据测试操作的类型是GET操作还是POST操作,封装不同的HTTP测试请求包。
作为示例,对于GET类型的测试操作,可以采用myGet(url,data,header,cookies)来将测试操作和测试数据封装成HTTP测试请求包,括号中的url为必选参数,是测试数据中的URL,同时也是待测试HTTP接口的URL;括号中的data为可选参数,是测试数据中的待获取的数据;括号中的header为可选参数,是测试数据中的HTTP请求头;括号中的cookies为可选参数,是测试数据中的浏览器缓存数据。
myGet(url,data,header,cookies)会在提交给待测试HTTP接口的HTTP测试请求包中HTTP请求头之前加上如下的请求行(也叫Request Line):“GET path Protocol”,其中:“GET”表示HTTP请求的类型为获取类型(GET类型);“path”体现的是主机之后的路径。例如,客户端请求“http://www.xxxxxx.com/tutorials/others/”时,“path”就会是“/tutorials/others/”;“Protocol”表示客户端与服务器通信的协议以及协议的版本号,例如“Protocol”可以是“HTTP/1.1”或“HTTP/1.X”。
myGet还可以在请求行之后附上HTTP请求头,当然也可以不设置HTTP请求头。
myGet还可以在HTTP请求头后附上浏览器缓存,当然浏览器缓存数据是可选的。
myGet还可以在Cookie之后附上客户端所请求的资源,客户端所请求的资源可以是网页中的文字,层叠样式表和图片等。
作为示例,对于POST类型的测试操作,可以采用myPost(url,data,header,cookies,File)来将测试操作和测试数据封装成HTTP测试请求包,括号中的url为必选参数,是测试数据中的URL,同时也是待测试HTTP接口的URL;括号中的dara为可选参数,是测试数据中的待提交的数据;括号中的header为可选参数,是测试数据中的HTTP请求头;括号中的cookies为可选参数,是测试数据中的浏览器缓存数据;括号中的File为可选参数,是测试数据中的待上传文件的存储路径信息。
myPost会在提交给待测试HTTP接口的HTTP测试请求包中的HTTP请求头之前加上如下的请求行(也叫Request Line)“POST path Protocol”,其中:“POST”表示HTTP请求的类型为提交类型(POST类型);“path”体现的是主机之后的路径。例如,客户端请求向“http://www.xxxxxx.com/submit.php”提交数据时,“path”就会是“/submit.php”;“Protocol”表示客户端与服务器通信的协议以及协议的版本号,例如“Protocol”可以是“HTTP/1.1”或“HTTP/1.X”。
myPost还可以在请求行之后附上HTTP请求头,当前也可以不设置HTTP请求头。
myPost还可以在HTTP请求头后附上浏览器缓存,当然浏览器缓存数据是可选的,例如浏览器缓存数据可以是“Cookie:PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120”。
myPost还可以在浏览器缓存数据之后附上待提交的数据,例如,待提交的数据可以是
“first_name=John&last_name=Doe&action=Submit”。
当然,myPost还可以在待提交数据之后附上待上传文件的存储路径信息。
步骤204,将HTTP测试请求包发送到待测试HTTP接口。
在本实施例中,上述电子设备可以将步骤203中封装的HTTP测试请求包发送到待测试HTTP接口。这里,如果步骤203中封装的HTTP测试请求包中封装的是GET操作,则将HTTP测试请求包发送到待测试HTTP接口即相当于向待测试HTTP接口发送了GET类型的请求(也叫Request);如果步骤203中封装的HTTP测试请求包中封装的是POST操作,则将HTTP测试请求包发送到待测试HTTP接口即相当于向待测试HTTP接口发送了POST类型的请求。
步骤205,接收待测试HTTP接口返回的响应数据。
在上述电子设备将HTTP测试请求包发送到待测试HTTP接口之后,待测试HTTP接口会对接收到的HTTP测试请求包中的数据进行处理,并返回响应数据(即,Response),这样,上述电子设备可以接收待测试HTTP接口返回的响应数据。
一个HTTP响应数据(HTTP Response)通常包括状态行,状态行中包括HTTP版本号和HTTP状态码,例如状态行可以是“HTTP/1.1200OK”;响应数据中还可以包括一些头部信息,例如产生Response的时间、主体内容的编码类型和长度;响应数据中还可以包括主体内容(也叫Body),存放向客户端返回的数据,这些数据可以是文本类型、HTML(Hyper TextMarkup Language,超文本标记语言)类型或者XML(Extensible Markup Language,可扩展标记语言)类型的数据。
步骤206,判断响应数据是否与当前测试步骤的期望结果数据相同,如果是,转到步骤207,如果否,转到步骤208。
在本实施例中,上述电子设备可以在接收到待测试HTTP接口返回的响应数据之后,判断响应数据是否与当前测试步骤的期望结果数据相同,如果是,转到步骤207,如果否,转到步骤208。
在本实施例的一些可选的实现方式中,上述判断响应数据是否与当前测试步骤的期望结果数据相同可以采用如下方式进行:首先,上述电子设备可以获取响应数据中的HTTP状态码,例如上述步骤205中所示例的“HTTP/1.1200 OK”中的“200”即为HTTP状态码;然后,上述电子设备可以判断HTTP状态码是否与当前测试步骤的期望结果数据相同。
步骤207,判断当前测试步骤是否是测试用例的最后一个步骤,如果是,转到步骤209,如果否,转到步骤210。
在本实施例中,上述电子设备可以在响应数据与当前测试步骤的期望结果数据相同的情况下,进一步判断当前测试步骤是否是测试用例的最后一个步骤,如果是,表明测试用例中的所有测试步骤都测试成功,则转到步骤209以生成测试成功的结果,如果否,表明当前测试步骤以及之前的测试步骤都测试成功,但还有其他测试步骤等待测试,则转到步骤210,以继续测试后续测试步骤。
步骤208,根据当前测试步骤和响应数据,生成测试失败的结果。
在本实施例中,在响应数据与当前测试步骤的期望结果数据不相同的情况下,证明当前测试步骤测试失败,上述电子设备可以根据当前测试步骤和响应数据,生成测试失败的结果。
在本实施例的一些可选的实现方式中,上述电子设备可以根据所述当前测试步骤和响应数据中的HTTP状态码,生成测试失败的结果。这里,测试失败的结果可以是测试失败的标志位,也可以是测试失败的标志位、HTTP状态码以及HTTP状态所代表的意义。
作为示例,表1列举了几种常见的HTTP状态码,以及不同的状态码所代表的结果是成功还是失败,以及成功或失败的原因。
HTTP状态码 | 成功/失败 | 意义 |
200 | 成功 | 成功 |
404 | 失败 | 没有找到(Not Found) |
401 | 失败 | 未经授权(Unauthorized) |
403 | 失败 | 被禁止(Forbidden) |
500 | 失败 | 服务器错误(Internal Server Error) |
表1
例如,响应数据中的HTTP状态码为404时,生成测试失败的结果可以是“失败-404-没有找到”。
步骤209,生成测试成功的结果。
在本实施例中,在响应数据与当前测试步骤的期望结果数据相同而且当前测试步骤是测试用例的最后一个步骤的情况下,表明测试用例中的所有测试步骤均测试成功,则上述电子设备可以生成测试成功的结果。
步骤210,将测试用例中当前测试步骤的下一测试步骤作为当前测试步骤。
在本实施例中,在响应数据与当前测试步骤的期望结果数据相同而且当前测试步骤不是测试用例的最后一个步骤的情况下,表明当前测试步骤以及之前的测试步骤均测试成功,但是测试用例中还存在尚未测试的步骤,因此,上述电子设备可以将测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,并继续转到步骤203进行下一测试步骤的测试。
在本实施例的一些可选的实现方式中,在步骤201获取测试用例之前,还可以包括建立测试用例的步骤,关于建立测试用例的具体流程可参看下文关于图3的实施例的说明部分。
本申请的上述实施例提供的方法通过模拟浏览器向HTTP接口发送GET或POST请求,并直接提交数据给待测试HTTP接口,触发待测试HTTP接口对应功能服务做出响应,获取返回的响应数据并判断响应是否成功,从而实现了测试操作和测试数据的独立,加快了测试脚本开发的速度,降低了维护成本,提高了测试效率。
进一步参考图3,其示出了根据本申请的建立测试用例的一个实施例的流程300。该建立测试用例的流程300,包括以下步骤:
步骤301,获取待测试HTTP接口的功能测试用例。
在本实施例中,为建立测试用例,可以首先获取待测试HTTP接口的功能测试用例。其中,功能测试用例是用于对待测试HTTP接口的各功能进行逐项测试的测试用例。功能测试用例中描述了待测试HTTP接口的各个步骤的功能、每个步骤所需要的数据以及各个步骤之间的逻辑关系。
例如,对于一个电子购物网站而言,第一步是注册用户;第二步则是输入正确的用户名和密码进行登录;第三步则是用户点击商品信息的链接浏览商品信息;第四步用户将商品信息加入订单;第五步用户支付订单完成整个购物流程。
步骤302,将功能测试用例分解成至少一个步骤。
在本实施例中,可以将步骤301中获取的功能测试用例分解成至少一个步骤,其中,步骤包括:输入参数信息、期望结果数据和功能类型。输入参数信息可以包括输入参数的个数,每个输入参数的数据类型以及取值范围。例如,输入参数年龄而言,数据类型只能是非负整数,而取值范围可以是0到200之间的整数。功能类型可以是获取类型的操作或者提交类型的操作。
步骤303,对至少一个步骤中的每个步骤,根据该步骤的功能类型和输入参数信息生成测试操作和测试数据,为该步骤生成测试步骤,将测试操作、测试数据和该步骤的期望结果数据分别作为该步骤的测试步骤的测试操作、测试数据和期望结果数据。
在本实施例中,可以采用如下方式根据该步骤的功能类型和输入参数信息生成测试操作和测试数据:
如果该步骤的功能类型为获取类型,则为该步骤生成GET类型的测试操作,如果该步骤的功能类型为提交类型,则为该步骤生成POST类型的测试操作;
根据该步骤的输入参数信息生成测试数据。
步骤304,组合至少一个步骤中每个步骤的测试步骤,形成测试用例。
在本实施例中,可以基于步骤301获取的功能测试用例中的各个步骤之间的逻辑关系,组合步骤303生成的各个步骤的测试步骤,从而形成测试用例。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种用于测试HTTP接口的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所述的用于测试HTTP接口的装置400包括:获取单元401、执行单元402和判断单元403。其中,获取单元401,配置用于获取用户输入的针对待测试HTTP接口的测试用例,上述待测试HTTP接口包括统一资源定位符URL,上述测试用例包括顺序执行的至少一个测试步骤,上述测试步骤包括测试操作、测试数据和期望结果数据,上述测试操作包括GET操作和POST操作,上述测试数据包括URL,上述测试数据的URL与上述待测试HTTP接口的URL相同;执行单元402,配置用于将上述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将上述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将上述HTTP测试请求包发送到上述待测试HTTP接口;接收上述待测试HTTP接口返回的响应数据,判断上述响应数据是否与上述当前测试步骤的期望结果数据相同,如果不同,则根据上述当前测试步骤和上述响应数据,生成测试失败的结果;判断单元403,配置用于如果相同,则进一步判断上述当前测试步骤是否是上述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将上述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行上述HTTP接口测试步骤。
在本实施例中,用于测试HTTP接口的装置400的获取单元401、执行单元402和判断单元403的具体处理可分别参考图2对应实施例中步骤201、步骤202-步骤206与步骤208和步骤207与步骤209-步骤210的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,上述GET操作对应的测试步骤的测试数据还可以包括以下至少一项:HTTP请求头、待获取的数据、浏览器缓存,上述POST操作对应的测试步骤的测试数据还包括以下至少一项:HTTP请求头、待提交的数据、浏览器缓存、待上传文件的存储路径信息。
在本实施例的一些可选的实现方式中,上述执行单元402可以进一步配置用于:获取上述响应数据中的HTTP状态码;判断上述HTTP状态码是否与上述当前测试步骤的期望结果数据相同。
在本实施例的一些可选的实现方式中,上述执行单元402还可以进一步配置用于:根据上述当前测试步骤和上述HTTP状态码,生成测试失败的结果。
在本实施例的一些可选的实现方式中,上述用于测试HTTP接口的装置400还可以包括测试用例建立单元404,上述测试用例建立单元可以包括:获取模块4041,配置用于获取上述待测试HTTP接口的功能测试用例;分解模块4042,配置用于将上述功能测试用例分解成至少一个步骤,上述步骤包括:输入参数信息、期望结果数据和功能类型;生成模块4043,配置用于对上述至少一个步骤中的每个步骤,根据该步骤的功能类型和输入参数信息生成测试操作和测试数据,为该步骤生成测试步骤,将上述测试操作、上述测试数据和该步骤的期望结果数据分别作为该步骤的测试步骤的测试操作、测试数据和期望结果数据;组合模块4044,配置用于组合上述至少一个步骤中每个步骤的测试步骤,形成测试用例。获取模块4041、分解模块4042、生成模块4043和组合模块4044的具体处理可分别参考图3对应实施例中步骤301、步骤302、步骤303和步骤304的相关说明,在此不再赘述。
在本实施例的一些可选的实现方式中,上述生成模块4043可以进一步配置用于:如果该步骤的功能类型为获取类型,则为该步骤生成GET类型的测试操作,如果该步骤的功能类型为提交类型,则为该步骤生成POST类型的测试操作;根据该步骤的输入参数信息生成测试数据。
下面参考图5,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机***500的结构示意图。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、执行单元和判断单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取测试用例的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:获取用户输入的针对待测试HTTP接口的测试用例,上述待测试HTTP接口包括统一资源定位符URL,上述测试用例包括顺序执行的至少一个测试步骤,上述测试步骤包括测试操作、测试数据和期望结果数据,上述测试操作包括GET操作和POST操作,上述测试数据包括URL,上述测试数据的URL与上述待测试HTTP接口的URL相同;将上述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将上述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将上述HTTP测试请求包发送到上述待测试HTTP接口;接收上述待测试HTTP接口返回的响应数据,判断上述响应数据是否与上述当前测试步骤的期望结果数据相同,如果不同,则根据上述当前测试步骤和上述响应数据,生成测试失败的结果;如果相同,则进一步判断上述当前测试步骤是否是上述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将上述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行上述HTTP接口测试步骤。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种用于测试HTTP接口的方法,其特征在于,所述方法包括:
获取用户输入的针对待测试超文本传输协议HTTP接口的测试用例,所述待测试HTTP接口包括统一资源定位符URL,所述测试用例包括顺序执行的至少一个测试步骤,所述测试步骤包括测试操作、测试数据和期望结果数据,所述测试操作包括GET操作和POST操作,所述测试数据包括URL,所述测试数据的URL与所述待测试HTTP接口的URL相同;
将所述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将所述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将所述HTTP测试请求包发送到所述待测试HTTP接口;接收所述待测试HTTP接口返回的响应数据,判断所述响应数据是否与所述当前测试步骤的期望结果数据相同,如果不同,则根据所述当前测试步骤和所述响应数据,生成测试失败的结果;
如果相同,则进一步判断所述当前测试步骤是否是所述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将所述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行所述HTTP接口测试步骤。
2.根据权利要求1所述的方法,其特征在于,所述GET操作对应的测试步骤的测试数据还包括以下至少一项:HTTP请求头、待获取的数据、浏览器缓存,所述POST操作对应的测试步骤的测试数据还包括以下至少一项:HTTP请求头、待提交的数据、浏览器缓存、待上传文件的存储路径信息。
3.根据权利要求1所述的方法,其特征在于,所述判断所述响应数据是否与所述当前测试步骤的期望结果数据相同,包括:
获取所述响应数据中的HTTP状态码;
判断所述HTTP状态码是否与所述当前测试步骤的期望结果数据相同。
4.根据权利要求3所述的方法,其特征在于,所述根据所述当前测试步骤和所述响应数据,生成测试失败的结果,包括:
根据所述当前测试步骤和所述HTTP状态码,生成测试失败的结果。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括建立测试用例的步骤,所述建立测试用例的步骤包括:
获取所述待测试HTTP接口的功能测试用例;
将所述功能测试用例分解成至少一个步骤,所述步骤包括:输入参数信息、期望结果数据和功能类型;
对所述至少一个步骤中的每个步骤,根据该步骤的功能类型和输入参数信息生成测试操作和测试数据,为该步骤生成测试步骤,将所述测试操作、所述测试数据和该步骤的期望结果数据分别作为该步骤的测试步骤的测试操作、测试数据和期望结果数据;
组合所述至少一个步骤中每个步骤的测试步骤,形成测试用例。
6.根据权利要求5所述的方法,其特征在于,所述根据该步骤的功能类型和输入参数信息生成测试操作和测试数据,包括:
如果该步骤的功能类型为获取类型,则为该步骤生成GET类型的测试操作,如果该步骤的功能类型为提交类型,则为该步骤生成POST类型的测试操作;
根据该步骤的输入参数信息生成测试数据。
7.一种用于测试HTTP接口的装置,其特征在于,所述装置包括:
获取单元,配置用于获取用户输入的针对待测试超文本传输协议HTTP接口的测试用例,所述待测试HTTP接口包括统一资源定位符URL,所述测试用例包括顺序执行的至少一个测试步骤,所述测试步骤包括测试操作、测试数据和期望结果数据,所述测试操作包括GET操作和POST操作,所述测试数据包括URL,所述测试数据的URL与所述待测试HTTP接口的URL相同;
执行单元,配置用于将所述测试用例中的第一个测试步骤作为当前测试步骤,并执行以下HTTP接口测试步骤:将所述当前测试步骤的测试操作和测试数据封装成HTTP测试请求包;将所述HTTP测试请求包发送到所述待测试HTTP接口;接收所述待测试HTTP接口返回的响应数据,判断所述响应数据是否与所述当前测试步骤的期望结果数据相同,如果不同,则根据所述当前测试步骤和所述响应数据,生成测试失败的结果;
判断单元,配置用于如果相同,则进一步判断所述当前测试步骤是否是所述测试用例的最后一个步骤,如果是,则生成测试成功的结果;如果不是,则将所述测试用例中当前测试步骤的下一测试步骤作为当前测试步骤,继续执行所述HTTP接口测试步骤。
8.根据权利要求7所述的装置,其特征在于,所述GET操作对应的测试步骤的测试数据还包括以下至少一项:HTTP请求头、待获取的数据、浏览器缓存,所述POST操作对应的测试步骤的测试数据还包括以下至少一项:HTTP请求头、待提交的数据、浏览器缓存、待上传文件的存储路径信息。
9.根据权利要求7所述的装置,其特征在于,所述执行单元进一步配置用于:
获取所述响应数据中的HTTP状态码;
判断所述HTTP状态码是否与所述当前测试步骤的期望结果数据相同。
10.根据权利要求9所述的装置,其特征在于,所述执行单元进一步配置用于:
根据所述当前测试步骤和所述HTTP状态码,生成测试失败的结果。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括测试用例建立单元,所述测试用例建立单元包括:
获取模块,配置用于获取所述待测试HTTP接口的功能测试用例;
分解模块,配置用于将所述功能测试用例分解成至少一个步骤,所述步骤包括:输入参数信息、期望结果数据和功能类型;
生成模块,配置用于对所述至少一个步骤中的每个步骤,根据该步骤的功能类型和输入参数信息生成测试操作和测试数据,为该步骤生成测试步骤,将所述测试操作、所述测试数据和该步骤的期望结果数据分别作为该步骤的测试步骤的测试操作、测试数据和期望结果数据;
组合模块,配置用于组合所述至少一个步骤中每个步骤的测试步骤,形成测试用例。
12.根据权利要求11所述的装置,其特征在于,生成模块进一步配置用于:
如果该步骤的功能类型为获取类型,则为该步骤生成GET类型的测试操作,如果该步骤的功能类型为提交类型,则为该步骤生成POST类型的测试操作;
根据该步骤的输入参数信息生成测试数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800785.XA CN107797911A (zh) | 2016-09-02 | 2016-09-02 | 用于测试http接口的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610800785.XA CN107797911A (zh) | 2016-09-02 | 2016-09-02 | 用于测试http接口的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107797911A true CN107797911A (zh) | 2018-03-13 |
Family
ID=61529734
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610800785.XA Pending CN107797911A (zh) | 2016-09-02 | 2016-09-02 | 用于测试http接口的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107797911A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600048A (zh) * | 2018-04-12 | 2018-09-28 | 平安科技(深圳)有限公司 | 接口测试方法、装置、设备及计算机可读存储介质 |
CN108595339A (zh) * | 2018-05-09 | 2018-09-28 | 成都致云科技有限公司 | 自动化测试方法、装置及*** |
CN109032956A (zh) * | 2018-09-11 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种接口测试方法及装置 |
CN109117290A (zh) * | 2018-08-20 | 2019-01-01 | 郑州云海信息技术有限公司 | 一种接口的模拟方法和装置 |
CN110471842A (zh) * | 2019-07-12 | 2019-11-19 | 平安普惠企业管理有限公司 | 一种测试方法、装置及计算机可读存储介质 |
CN110716844A (zh) * | 2019-09-23 | 2020-01-21 | 上海游族信息技术有限公司 | 服务器性能压力测试的加压方法 |
CN111198821A (zh) * | 2020-01-06 | 2020-05-26 | 瑞庭网络技术(上海)有限公司 | 接口异常判断方法、装置及可读存储介质 |
CN111427797A (zh) * | 2020-04-12 | 2020-07-17 | 广州通达汽车电气股份有限公司 | 一种接口自动测试方法、装置、电子设备及存储介质 |
CN111464594A (zh) * | 2020-03-13 | 2020-07-28 | 平安国际智慧城市科技股份有限公司 | Http接口连接方法、装置及存储介质 |
CN111562490A (zh) * | 2019-02-14 | 2020-08-21 | 深圳市汇顶科技股份有限公司 | 测试方法及*** |
CN112015483A (zh) * | 2020-08-07 | 2020-12-01 | 北京浪潮数据技术有限公司 | Post请求参数自动化处理方法、装置及可读存储介质 |
CN112162923A (zh) * | 2020-09-25 | 2021-01-01 | 中诚信征信有限公司 | 一种接口测试方法及装置 |
CN112383661A (zh) * | 2020-11-20 | 2021-02-19 | 北京达佳互联信息技术有限公司 | 移动端自动化测试方法、装置、电子设备及存储介质 |
CN113704080A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 一种自动化测试方法和装置 |
CN116708215A (zh) * | 2023-06-15 | 2023-09-05 | 重庆智铸达讯通信有限公司 | 自动化测试方法、装置、电子设备及存储介质 |
CN111464594B (zh) * | 2020-03-13 | 2024-07-05 | 平安国际智慧城市科技股份有限公司 | Http接口连接方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246448A (zh) * | 2008-03-17 | 2008-08-20 | 中兴通讯股份有限公司 | 一种自动化脚本实现方法 |
WO2011054024A1 (en) * | 2009-11-06 | 2011-05-12 | Toby Biddle | A usability testing tool |
CN104268082A (zh) * | 2014-09-26 | 2015-01-07 | 北京国双科技有限公司 | 浏览器的压力测试方法和装置 |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
CN104866422A (zh) * | 2015-05-20 | 2015-08-26 | 中国互联网络信息中心 | Web Service自动化测试***和方法 |
CN104978261A (zh) * | 2014-04-03 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及*** |
-
2016
- 2016-09-02 CN CN201610800785.XA patent/CN107797911A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246448A (zh) * | 2008-03-17 | 2008-08-20 | 中兴通讯股份有限公司 | 一种自动化脚本实现方法 |
WO2011054024A1 (en) * | 2009-11-06 | 2011-05-12 | Toby Biddle | A usability testing tool |
CN104978261A (zh) * | 2014-04-03 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及*** |
CN104268082A (zh) * | 2014-09-26 | 2015-01-07 | 北京国双科技有限公司 | 浏览器的压力测试方法和装置 |
CN104820640A (zh) * | 2015-05-19 | 2015-08-05 | 广州华多网络科技有限公司 | 一种网页测试方法和装置 |
CN104866422A (zh) * | 2015-05-20 | 2015-08-26 | 中国互联网络信息中心 | Web Service自动化测试***和方法 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600048A (zh) * | 2018-04-12 | 2018-09-28 | 平安科技(深圳)有限公司 | 接口测试方法、装置、设备及计算机可读存储介质 |
WO2019196213A1 (zh) * | 2018-04-12 | 2019-10-17 | 平安科技(深圳)有限公司 | 接口测试方法、装置、设备及计算机可读存储介质 |
CN108595339A (zh) * | 2018-05-09 | 2018-09-28 | 成都致云科技有限公司 | 自动化测试方法、装置及*** |
CN109117290A (zh) * | 2018-08-20 | 2019-01-01 | 郑州云海信息技术有限公司 | 一种接口的模拟方法和装置 |
CN109117290B (zh) * | 2018-08-20 | 2021-10-01 | 郑州云海信息技术有限公司 | 一种接口的模拟方法和装置 |
CN109032956A (zh) * | 2018-09-11 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种接口测试方法及装置 |
CN111562490A (zh) * | 2019-02-14 | 2020-08-21 | 深圳市汇顶科技股份有限公司 | 测试方法及*** |
CN111562490B (zh) * | 2019-02-14 | 2023-01-20 | 深圳市汇顶科技股份有限公司 | 测试方法及*** |
CN110471842A (zh) * | 2019-07-12 | 2019-11-19 | 平安普惠企业管理有限公司 | 一种测试方法、装置及计算机可读存储介质 |
CN110716844A (zh) * | 2019-09-23 | 2020-01-21 | 上海游族信息技术有限公司 | 服务器性能压力测试的加压方法 |
CN111198821A (zh) * | 2020-01-06 | 2020-05-26 | 瑞庭网络技术(上海)有限公司 | 接口异常判断方法、装置及可读存储介质 |
CN111198821B (zh) * | 2020-01-06 | 2021-07-16 | 瑞庭网络技术(上海)有限公司 | 接口异常判断方法、装置及可读存储介质 |
CN111464594A (zh) * | 2020-03-13 | 2020-07-28 | 平安国际智慧城市科技股份有限公司 | Http接口连接方法、装置及存储介质 |
CN111464594B (zh) * | 2020-03-13 | 2024-07-05 | 平安国际智慧城市科技股份有限公司 | Http接口连接方法、装置及存储介质 |
CN111427797A (zh) * | 2020-04-12 | 2020-07-17 | 广州通达汽车电气股份有限公司 | 一种接口自动测试方法、装置、电子设备及存储介质 |
CN111427797B (zh) * | 2020-04-12 | 2023-12-05 | 广州通达汽车电气股份有限公司 | 一种接口自动测试方法、装置、电子设备及存储介质 |
CN113704080A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 一种自动化测试方法和装置 |
CN112015483A (zh) * | 2020-08-07 | 2020-12-01 | 北京浪潮数据技术有限公司 | Post请求参数自动化处理方法、装置及可读存储介质 |
CN112015483B (zh) * | 2020-08-07 | 2021-12-03 | 北京浪潮数据技术有限公司 | Post请求参数自动化处理方法、装置及可读存储介质 |
CN112162923A (zh) * | 2020-09-25 | 2021-01-01 | 中诚信征信有限公司 | 一种接口测试方法及装置 |
CN112383661B (zh) * | 2020-11-20 | 2023-05-02 | 北京达佳互联信息技术有限公司 | 移动端自动化测试方法、装置、电子设备及存储介质 |
CN112383661A (zh) * | 2020-11-20 | 2021-02-19 | 北京达佳互联信息技术有限公司 | 移动端自动化测试方法、装置、电子设备及存储介质 |
CN116708215A (zh) * | 2023-06-15 | 2023-09-05 | 重庆智铸达讯通信有限公司 | 自动化测试方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107797911A (zh) | 用于测试http接口的方法和装置 | |
US8281401B2 (en) | System for detecting vulnerabilities in web applications using client-side application interfaces | |
CN105447204B (zh) | 网址识别方法和装置 | |
US7992127B2 (en) | Method and system of encapsulating web site transactions for computer-aided generation of web services | |
US8365188B2 (en) | Content management | |
US7398291B2 (en) | Method, system and program product for providing a status of a transaction with an application on a server | |
US9459888B2 (en) | Implementing browser based hypertext transfer protocol session storage | |
US20030188262A1 (en) | Method and apparatus for populating a form with data | |
US11068385B2 (en) | Behavior driven development test framework for application programming interfaces and webservices | |
CN108268635B (zh) | 用于获取数据的方法和装置 | |
US10362089B1 (en) | Methods and systems for dynamically generating and reusing dynamic web content | |
US9971636B2 (en) | Methods for implementing web services and devices thereof | |
CN108268332A (zh) | 网页异常监控方法、设备及*** | |
CN106897336A (zh) | 网页文件发送方法、网页渲染方法及装置、网页渲染*** | |
US6862620B2 (en) | Web page monitoring system and methods therefor | |
CN107634947A (zh) | 限制恶意登录或注册的方法和装置 | |
US20210392144A1 (en) | Automated and adaptive validation of a user interface | |
CN107436843A (zh) | 网页性能测试方法和装置 | |
CN110414989A (zh) | 异常检测方法及装置、电子设备和计算机可读存储介质 | |
CN109428877A (zh) | 一种用于通过用户设备访问业务***的方法和装置 | |
CN107656910A (zh) | 用于生成表单的方法和装置 | |
CN107203576A (zh) | 信息同步方法和装置 | |
US6535916B1 (en) | Systems, methods and computer program products for linking transactions by multiple web site servers to web site visitors | |
CN110333866B (zh) | 承接页面生成方法、装置及电子设备 | |
CN113362173A (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 |