接口自动化测试文档解析.docx
- 文档编号:1750742
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:13
- 大小:111.03KB
接口自动化测试文档解析.docx
《接口自动化测试文档解析.docx》由会员分享,可在线阅读,更多相关《接口自动化测试文档解析.docx(13页珍藏版)》请在冰豆网上搜索。
接口自动化测试文档解析
接口自动化测试
背景介绍
1.简介
功能测试、性能测试、GUI自动化回归测试已经能够满足我们的测试需求,保证网站质量,而随着产品功能越来越多、系统架构越来越复杂、新人越来越多,一些预想不到的缺陷出现在我们面前,我们必须要寻找一种更加有效的测试方法来适应当前的变化,保证产品的质量。
因此接口测试应运而生。
对于Web接口应用,包含浏览器与服务器交互的HTTP协议的接口和webService接口,软件测试人员在日常的测试工作中,需要大量的手动操作来验证接口的功能。
开发人员在开发过程中,需要访问其应用并且验证其功能是否正常运行,反复调试重复验证。
系统维护人员也需要经常访问其应用,以确保系统的正常运行。
如果某系统的接口较多,功能较为复杂,如上所述的这些操作就需要花费大量的时间和人力,如能引入自动化测试代替人工重复操作,将极大地提高团队的生产效率。
在这里,我们将介绍如何使用HttpClient框架完成接口自动化测试。
2.web接口自动化测试
如今,大多数的应用软件是基于Web的应用程序并通过浏览器展示给用户并与之进行交互。
不同公司和机构组织都需要测试这些应用程序的有效性。
在一个高度交互性和响应的软件时代,许多组织及团队倾向于运用敏捷开发理论,自动化测试一定程度上成为了敏捷开发流程中不可或缺的手段。
所谓自动化测试,就是执行自动测试工具或者用某种程序设计语言编写程序,控制被测软件中的各种模块,模拟手动测试步骤,完成测试的过程。
测试自动化有很多优点,比如:
频繁快速的迭代回归、高效的测试反馈、一致与重复性的执行、化繁为简的形式、弥补手工测试的可能遗漏缺陷等。
目前也有许多商业和开源的软件,可辅助面向Web接口自动化测试,如:
HttpClient、HttpUnit、HtmlUnit、JwebUnit等。
HttpClient是一个功能丰富支持HTTP协议的客户端编程工具包,能够很好满足我们对接口的自动化测试。
协议请求
1.HTTP协议
HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
●请求信息
请求行:
例如GET/images/logo.gifHTTP/1.1,表示从/images目录下请求logo.gif这个文件。
请求头:
例如Accept-Language:
en。
空行
可选消息体:
请求行和标题必须以
空行内必须只有
在HTTP/1.1协议中,所有的请求头,除post外,都是可选的。
●请求方法
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URL制定的资源不同操作方式。
比较常用的方法有HEAD、POST、GET方法。
HEAD:
向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。
这一方法可以在不必传
输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
POST:
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
数据被包含在请求体中。
POST请求可能会导致新的资源的建立和/或已有资源的修改。
GET:
请求获取Request-URL所标识的资源。
HEAD方法和GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息时相同的。
利用这个方法,不必传输整个资源内容,就可以得到Request-URL所标识的资源信息,该方法常用于测试连接的有效性,是否可以访问,以及最近是否更新。
在本文使用的接口自动化框架中,主要使用POST和GET方法发送请求,下面对这两种方法简单做一下比较:
1、GET提交的数据会放在URL之后,以?
分割URL和传输数据,参数之间以&相连,如
EditPosts.aspx?
name=test1&id=123456。
POST方法是把提交的数据放到HTTP协议包的Body中。
2、GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限
制。
3、GET方式提交数据,会带来安全问题,比如一个登陆页面,通过GET方式提交数据时,用户名和密
码将出现在URL上,如果页面可以被缓存或者其他人访问这台机器,就可以从历史记录获得该用户
的账号和密码。
●响应信息
在接收和解释请求消息后,服务器返回一个HTTP响应信息。
HTTP响应也是由三个部分组成,分别是:
状态行、响应头信息和响应正文。
状态行:
包含HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器返回的响应状态码;
Reason-Phrase表示状态代码的文本描述。
响应头信息:
包括通用头、请求头、响应头和实体头四个部分。
(具体内容可以去网上查阅相关内容)
响应正文:
响应正文就是服务器返回的资源的内容。
2.Soap协议
接口自动化框架测试中,有些模块之间采用了Soap协议的请求方式,本节我们对Soap协议进行简单的介绍。
Soap协议即简单对象访问协议,是一种轻量的、简单的、基于XML(标准通用标记语言的一个子集)的协议,它被设计成WEB上交换结构化和固化的信息。
Soap使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同的操作环境中的分布式对象。
●Soap协议包含四部分
封装:
定义一个框架,该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必选的。
编码规则:
定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
RPC表示:
定义了用于表示远程过程调用和应答的协定。
绑定:
定义了一种使用底层传输协议来完成在节点间交换封装的约定。
SOAP消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求/应答的模式。
所有的SOAP消息都使用XML编码。
一条SOAP消息就是一个包含有一个必需的SOAP的封装包,一个可选的SOAP标头和一个必需的SOAP体块的XML文档。
把SOAP绑定到HTTP提供了同时利用SOAP的样式和分散的灵活性的特点以及HTTP的丰富的特征库的优点。
●协议结构
Soap消息格式:
Envelope> HEADER> …… HEADER> Body> …… Body>
Envelope>
HttpClient
1.简介
HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。
虽然在JDK的javanet包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。
HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。
HttpClient已经应用在很多的项目中,比如ApacheJakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。
现在HttpClient最新版本为HttpClient4.3(GA),在接口自动化测试框架中我们使用的版本为HttpClient4.2.5。
2.安装
在介绍HttpClient的功能之前,首先需要安装好HttpClient。
◆HttpClient可以在http:
//jakarta.apache.org/commons/httpclient/downloads.html下载。
◆HttpClient用到了ApacheJakartacommon下的子项目logging,你可以从这个地址http:
//jakarta.apache.org/site/downloads/downloads_commons-logging.cgi下载到commonlogging,从下载后的压缩包中取出commons-logging.jar加到CLASSPATH中。
◆HttpClient用到了ApacheJakartacommon下的子项目codec,你可以从这个地址http:
//jakarta.apache.org/site/downloads/downloads_commons-codec.cgi下载到最新的commoncodec,从下载后的压缩包中取出commons-codec-1.x.jar加到CLASSPATH中。
3.功能介绍
HttpClient提供的主要的功能如下,要知道更多详细的功能可以参见HttpClient的主页。
◆实现了所有HTTP的方法(GET,POST,PUT,HEAD等)
◆支持自动转向
◆支持HTTPS协议
◆支持代理服务器等
4.基本功能使用
●GET方法
1、创建HttpClient的实例。
HttpClienthttpClient=newHttpClient();
2、创建GET连接方法的实例,在这里使用HttpGet方法。
在HttpCet的构造函数中传入待连接的地址。
HttpGetget=newHttpGet(url);
3、调用第一步创建好的实例的execute方法来执行第二步中创建好的method实例。
HttpResponsehttpResponse=httpClient.execute(get);
4、读取response。
从返回的response中获取状态码、响应正文等信息。
5、释放连接。
client.getConnectionManager().shutdown();
6、对得到后的内容进行处理。
●POST方法
POST方法用来向项目的服务器发送请求,要求它接受被附在请求后的实体,并且把它当作请求队列中请URL所指定资源的附加新子项。
调用HttpClient中的HttpPost方法与HttpGet方法类似,除了设置HttpPost的实例与HttpGet有些不同之外,剩下步骤相同。
1、创建HttpClient的实例。
HttpClienthttpClient=newHttpClient();
2、创建POST连接方法的实例,在这里使用HttpPost方法。
在HttpPost的构造函数中传入待连接的地址。
HttpPostpost=newHttpPost(url);
3、给post实例填充表单的值。
例如一个登录接口,需要id和passwd
NameValuePair[]data={newNameValuePair("id","youUserName"),newNameValuePair("passwd","yourPwd")};
4、调用第一步创建好的实例的execute方法来执行第二步中创建好的method实例。
HttpResponsehttpResponse=httpClient.execute(post);
5、读取response。
从返回的response中获取状态码、响应正文等信息。
6、释放连接。
client.getConnectionManager().shutdown();
7、对得到后的内容进行处理。
●Soap方法
使用soap协议的请求信息是使用xml文件传入的,使用HttpClient对这种形式请求的处理方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口 自动化 测试 文档 解析