首页 > 代码库 > 某航空项目第三方接口测试总结及接口测试技术的探讨
某航空项目第三方接口测试总结及接口测试技术的探讨
XX项目第三方接口测试总结及接口测试技术的探讨
1. 了解第三方接口
1.1 第三方接口的概念
XX项目第三方接口也就是电子客票网站扩展接口,主要功能是为了满足用户通过对接口的调用来替代原来用户必须进入网站才能进行相关操作的需求,方便代理人(大客户)提高自有系统流程的自动化程度。常见的第三方接口为商旅网接口包括携程、去哪儿等OTA及一些较大的代理人网站等。
1.2 网站与第三方接口的关系
接口的业务功能与现有网站功能必须一致,用户使用接口生成的订单,也可以通过登录网站来进行处理,如用户可以在第三方接口中生成订单,然后用相同的用户名进入XX项目网站对该订单进行支付、改升、退票或订单取消等操作。第三方接口包含国内国际航班查询、提取税及代理费、PNR入库、订座并生成订单、支付、出票、订单查询、改升航班查询及预订、退票等各模块接口。
1.3 XX项目网站接口
XX项目网站整个订票系统也是由一系列接口组成的,如:
航班查询时,通过IBE调用SHOPPING接口,与open av系统相互交换数据;
预订确定价格时连接easyfare系统,需要使用pricing接口进行运价的查询;
改升时需要使用reshop接口;
特定条件下退票时,使用refund接口;
支付时需要调用EasyPay系统接口进行支付;
预订酒店时,也需要连接艺龙接口获取酒店的基本信息等;
1.4 XX项目第三方接口使用的技术
电子客票网站扩展接口用于为代理人提供订票的接口服务,而代理人所使用系统的多样性决定了本接口需要能够做到平台无关;另外电子客票网站本身是一个在线销售系统,安全性是网站必须具备的一个特点。因此,XX项目第三方接口采用WebService技术来实现的。
2. 接口测试基础论述
2.1什么是接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据报文的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系;
接口也有程序内部接口和程序外部接口之分。内部接口的测试通常是进行白盒测试。程序的外部接口也可细分为如组件的接口,web服务接口等等。对于组件的接口的测试也是使用白盒测试的,需要准备驱动程序。而web服务接口的测试,可以借助一些工具来进行,但其原理都是根据web服务的格式要求准备测试数据(xml文件),然后通过工具把请求发送的web服务器,从而验证返回的结果。
2.2 接口测试的适用系统
适用于原系统与外部系统有重要业务联系、且相互之间接口多且复杂。多系统交互,或者拥有多个子系统的应用开发。验证其正确性和稳定性。为高复杂的平台带来高效的缺陷检测和质量监督能力。平台越复杂、系统越庞大,接口测试的效果越明显。
2.3 接口测试可行性分析
从分层测试的特征,业务系统的结构出发,接口测试的必要性包括:1)迭代开发模式中,接口测试可先于系统级测试提前进行,属于测试前置;2)接口是连接系统与另一系统的桥梁,可以通过接口测试来检测测试环境的稳定性,也可判断某一bug是系统本身功能未实现还是由于接口异常引起的,从而有得于问题定位,提高测试效率;3)接口测试更专注接口数据正确性,稳定性与可靠性的验证,对于传输数据频繁的系统,更有利于提升测试质量。
接口在业务模块中的类型为典型的HTTP接口(Ajax,Dwr,Actio等),也有Java类型的一些接口(RPC,RMI,SOAP),在可测性上具有一些共通特征,如:1)可自动化率高:接口总能通过相应的client来发送请求;2)脱离开发人员代码依赖,只针对接口,属于灰盒测试范畴,难度较白盒低;
2.4 接口测试的发展
接口测试主要用于验证接口数据传输的正确性,在项目的测试过程中,可以搭建接口测试框架,把相应接口罗列出来,统一进行接口测试,也可把接口测试与自动化测试整合,实现接口的自动化,从而提升测试效率,如ITP自动化集成测试工具。
3. webservice接口
接口类型有很多种,有硬件方面基于各种通信协议(如MODBUS-TCP协议)的接口测试,也有基于web的接口测试。
web接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的HTTP协议的接口,另一类web service接口如soap,rmi,rpc等协议; 这些接口的共通特征都是作为Server对外的UI提供通信服务。
WebService技术优点主要体现在:1、平台无关性:WebService技术是居于XML技术的扩展,无论您的应用采用什么语言开发、部署于什么平台,只要它能够解析XML,它就能够居于WebService与其它应用通讯;2、网络安全性:WebService技术的数据传输是基于Http协议,一般来说只要开发80端口,就可以对服务进行调用请求,并接收回应消息。
4. soapui工具简介
Soapui接口测试工具基于java开发,支持多个平台,并支持功能、负载、回归测试;是标准的web服务测试工具;不仅可以测试基于soap的web服务,也可以测试rest风格的web服务。
Soapui中,一个测试集是一组测试用例的集合,主要是针对同一逻辑功能模块;一个测试用例是一组测试步骤的集合,一组测试步骤组合起来主要为了测试服务某一个主要特定的功能;而测试步骤,用来检验被测试服务的功能;测试用例管理与测试项目的层级映射关系图如下:
名词:WSDL(Web services decription language):网络服务描述语言,是一种使用XML编写的文档。这种文档可以描述某个web service,它可以规定服务的位置,以及此服务规定的操作及方法
Soapui中Web service mocking作用:是在soapui中伪造或模拟web service服务接口功能的一种途径。当web service服务接口没有启动或接口的编码尚未完成等各种原因导致接口暂无法使用时,mocking可以进行验证。
SoapUI中可对web service服务进行负载测试,简单操作为:选择一个功能测试用例,右击选择“new loadtest”,作用:可以在功能测试完成的情况下,快速、方便的检验web service接口是否能够承载指定的负载量。并可以得到响应时间、每秒吞吐量(tps)、错误数(errors)等重量参数值等;
5. 运用soapui工具进行XX项目第三方接口的测试
5.1 用soapui工具测试的意义
用soapui工具进行第三方接口测试主要是通过维护XML请求报文,模拟航班查询、确定价格、预订座位等请求数据,发送给webservice服务器端,来进行机票的查询、预订、改升、退票,从而可以通过查看订单是否同步到相同用户下的XX项目上,来检测商旅网接口是否正常,也可检验诸如商旅网用户不能转线下支付功能、DFSQ国际运价计算接口、ETDZ打票接口等第三方接口功能是否正确,是否与XX项目网站一致等。
5.2 xml用例编写
在上面1中提到过,用soapui工具进行XX项目第三方接口的测试,是通过维护XML用例来实现的,而编写XML参数的原理主要是:根据web服务的格式要求准备请求数据(xml文件),然后发送请求数据给webservice服务器,若服务器返回正确定的结果,则在下一步操作中选择服务器返回结果中的相应信息作为请求数据,依次类推,直到航班查询到出票,都按此逻辑进行编写XML用例;若发送请求失败或请求的XML有问题,则在返回的响应
结果中会报相应错误,错误代码在响应结果中的resultCode可见(参见下表响应参数说明)。具体系统结构,如下图:
请求参数包括airline、requestXML、serviceType、userId、、userType、version、、appUserId,服务的请求结果包括serviceType、version、responseXML、resultCode、errorDesc。具体参数说明如下图:
请求参数说明
参数 | 参数说明 | 测试系统值 | 备注 |
airline | 航空公司2字码 | HN | 具体见航空公司2字代码表 |
requestXML | 请求ota xml | OTA XML响应 | 与请求操作类型及Schema版本号对应的请求XML串。客户端要调用任何服务,除了需要在参数2(请求操作类型)中指定请求的服务类型外,还需要根据相应版本的Schema,将请求的参数组成符合要求的XML串,作为服务请求参数进行提交。 |
serviceType | 请求操作类型 | GENERAL_SERVICE | 当前WebService请求的实际功能定义,具体定义见操作类型代码表 |
userId | 用户ID | HNTEST | 调用WebService服务之前,需要注册成为电子客票网站的正式用户。该参数是指调用客户端在网站上对应的实际用户ID |
userType | 用户类别 | B2B | 指客户端在网站上对应的实际用户的用户类别 |
version | Schema版本号 | 1.0 | 请求参数中的XML请求参数串的Schema版本号 |
appUserId | 应用用户ID | HNTEST | 客户端网站上实际操作的用户ID,该用户必须是业务处理网站的注册用户 |
响应参数说明
参数 | 参数说明 | 备注 |
serviceType | 请求操作类型 | 当前WebService请求的实际功能定义,具体定义见操作类型代码表 |
version | Schema版本号 | 请求参数中的XML请求参数串的Schema版本号,具体定义在客户端进行服务调用开发时需与航信相关支持人员确认 |
responseXML | 响应ota xml | 业务响应xml |
resultCode | 服务请求的处理结果状态 | 1:成功 -1:超过并发数 -2:没有授权 -3:输入数据格式不正确 -4:输入请求参数不全 -5:业务逻辑错误 |
errorDesc | 错误信息 | 如果服务处理失败,则该字段返回错误的具体描述 |
如航班查询请求的XML参数及响应结果如下:
5.3 Soapui基本流程操作步骤:
1、可以在soapui新建项目,输入项目名称和webservice服务地址;也可直接将维护的XML文档导入soapui中;
导入XML后如下图:
2、添加测试用例和步骤
在项目名称处右键,点击new TestSuite4,可添加测试用例:
在测试用例中右键,单击add step,输入步骤名称,可添加测试步骤,流程如下:
3 双击测试用例,编写XML请求参数:
如下图所示,可根据上一用例集“支付申请”成功后,在右侧<orderID>节点中输入相应的订单编号:
注:相应请求XML参数可参见接口文档《XX项目B2C项目OTA接入文档 v3.9.doc》、《电子客票网站扩展WebService接口说明.doc》。
4 发送请求,运行测试步骤
如下图所示,点击左上角的按钮,运行测试步骤。
某航空项目第三方接口测试总结及接口测试技术的探讨