某航空项目第三方接口测试总结及接口测试技术的探讨

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  发送请求,运行测试步骤

如下图所示,点击左上角的按钮,运行测试步骤。

时间: 2024-10-15 07:39:37

某航空项目第三方接口测试总结及接口测试技术的探讨的相关文章

asp.net后台集成QQ第三方接口含发送微博、带图片微博(有源码)

最近在做项目的时候用到了QQ第三方接口,腾讯提供了JS.安卓.IOS.php的SDK,但是没有C#的SDK.一开始我是在前台直接用JS的SDK做登陆验证,但是做完自己就感觉这样很可笑,JS是暴露给客户端的,那么客户完全可以直接绕过去,进入到你的后台. 所以我在通过登陆验证后回调后台页面,在后台进行合法性验证,防止非法登陆. 原理就是后台通过httpwebrequest操作第三方接口 /// <summary> /// HTTP POST方式请求数据 /// </summary> /

第三方接口调用封装

1.背景 基于公司项目情况,几乎每个项目都有大量的调用第三方数据接口的情况,因此急需一个公共的调用第三方接口的组件.同时也需要在调用过程中对于缓存.出错日志.重试等公共操作的封装. 2.组件设计说明 1.代码简洁.清晰 2.面向接口编程,支持扩展 3.职责单一原则 4.组件架构如下图: 3.代码说明 1.代码库地址: http://git.bbdops.com/dafei/components 2.采用技术包括 mybatis.jpa.swagger2.springboot

调用支付宝第三方接口(沙箱环境) SpringMVC+Maven

一.蚂蚁金服开放平台的操作 网址:https://open.alipay.com/platform/home.htm 支付宝扫码登陆 之后配置你的沙箱支付宝 支付宝提供一键生成工具便于开发者生成一对RSA2密钥:https://docs.open.alipay.com/291/105971 注意:生成时一定要选择PKCS8+2048,第一个坑    将应用网关和回调地址更改为:https://www.alipay.com [AES密钥不用管] [然后往下会有支付宝沙箱安卓端工具,下载,以供后续支

java springboot调用第三方接口 借助hutoool工具类 爬坑

楼主是个后端小白一枚,之前没接触过后端,只学了java基本语法,还是在学校老师教的,学的很浅,什么ssh.ssm框架都没有学,最近在自学spring boot,看书学也看不是很懂,就在b站上看教学视频,大概看了几个老师讲的,最后选了尚硅谷的视频,老师讲的很好,有点偏向底层源码解析,讲的很细,对我这个新手小白来说也不知道好不好,反正我就是跟着看了.最近接到超哥布置的一个任务,spring boot调用第三方接口,下面就讲讲我这个新手小白是怎么一步一步磕出来结果的,顺便记录一下,免得我后面忘了. 首

Java Web系统经常使用的第三方接口

1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web  Service接口, Web Service作为接口使用广泛的原因,与它的特点息息相关. Web Service的主要目标是跨平台的可互操作性,为了实现这一目标, Web Service 全然基于 XML(可扩展标记语言). XSD( XML Schema)等独立于平台.独立于软件供应商的标准,是创建可

采用http请求第三方接口实现Demo

我们在调用第三方接口的时候,有的时候需要采用http协议进行通信,这里简单介绍一下http请求的执行过程. 写在前面: 你需要找到一个能访问的接口url,知道需要传递什么参数,请求的编码格式. 下面是我写的一个示例. package cn.sccl.lijianbo; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; i

快速对接第三方接口--短信接口

1,账号注册.获取key及secret 在第三方接口站点注册账户,进而获取账户的key和secret 2,浏览所需接口,复制示例代码 对需求接口文档大致快速浏览,找到示例代码复制到本地,详细阅读文档,一一对照,编辑代码. 对调试屡次出错的情况: A,如允许get提交,直接超链接方式传值,访问浏览器,确定错误范围 B,整体认真查看文档后,再示例代码,分别对比,确认本地代码与其差距,找出错误

关于 第三方接口支付的时候 采用post提交的方式,有两种 一种是通过 curl来进行,一种是通过js当页面加载完后跳转

这是第一种.通过javascript页面加载完后,对表单采用 post方式提交给 第三方接口----- echo <<<_END<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.

如何与第三方接口保持数据一致性

大家经常遇到这样的需求,尤其是支付中心接口的时候: 查询满足某种条件的订单,调用第三方接口成功,更改订单状态. 常见实现示例 task1: orders = queyrOrder(...); //查询已离店的订单         for (Map<String, Object> order : orders) {             try {                 con.setAutoCommit(false);                 String orderNo