接口测试-公司内部培训资料
1.Jmeter接口测试案例1--通过物联网接入基础平台登录来了解http请求等: 下面来看使用Jmeter怎么来做HTTP的接口请求,在请求中使用浏览器的network获取请求的信息。 通过火狐浏览器web工作台-网络抓包测试物联网基础接入平台登录接口post请求及响应数据。 http://10.8.2.12:8086/# 消息头见附件文档 http请求及入参如图所示:
http信息头管理器如图所示设置:
点击执行后,可看到执行的结果,见执行结果的截图:
2.Jmeter接口测试案例2之文件上传:
接口说明 |
图片上传接口,用于上传机构、医生的照片 |
上传地址 |
http://10.10.2.202:9001/BS-HMS2.0/upload/image |
参数 |
参考参数说明(Header中携带如下参数) |
参数名 |
说明 |
长度 |
类型 |
必填 |
备注 |
|||
doctorId |
医生Id |
50 |
String |
否 |
||||
organizationId |
机构编码 |
50 |
String |
是 |
||||
返回数据 |
||||||||
参数名称 |
类型 |
长度 |
必填 |
说明 |
||||
msg |
String |
提示信息 |
||||||
code |
String |
返回编码,成功返回200 |
||||||
body |
String |
上传成功,返回图片id中间以逗号分隔 |
文件上传成功后查看 http://10.10.2.202:9001/BS-HMS2.0/upload/image/{fileId}
3.Jmeter接口测试案例3之查看cnblog中我的粉丝 HTTP是基于应用层的协议,底层的网络传输层它不需要去关心,同时它是一个无状态的协议,它的请求流程具体可以总结为: 1、客户端连接服务端建立TCP的连接; 2、客户端发送(Request)请求到服务端; 3、服务端响应( Response)回复给客户端; 4、客户端与服务端之间关闭TCP的连接。 HTTP在版本1.0以及现在使用的1.1中,它默认是持久连接,也就是Connection对应的Value值是:keep-alive,再通俗的说任意一端没有明确断开连接,保持TCP的连接。但是HTTP毕竟是一个无状态的协议,也就导致了cookie技术的发展,而Cookie是客户端的浏览器存储键值对的一些内容,首次客户端访问服务端的时候,服务端会把内容写入到客户端中,客户端下次访问的时候会带着键值对的内容发送到服务端,但是Cookie它是客户端的机制,敏感信息存储在客户端是很不合理的,也就有了Session,客户端发送请求到服务端,服务端会把信息保存在内存中,客户端下次请求的时候带上SessionID的信息来保持会话的连接。比如登录cnblog后,想查看博客园的粉丝信息,必须是保持在登录的状态,并且是客户端得明确的告诉服务端是查看那个用户的博客园的粉丝,如果客户端请求的时候不带SessionID的信息,服务端会直接拒绝客户端的请求并且跳转到登录的页面。 通过Firefox浏览器web控制台-网络抓包查看到粉丝接口地址为: https://home.cnblogs.com/u/1864058/relation/followers/
下面使用Jmeter来实现该接口,查看我的粉丝,见Jmeter的截图
执行后,见执行的结果:
跳转到登录的页面,并没有跳转到我的粉丝的页面,这是因为客户端在发送请求的时候并没有在请求头中带Cookie,所以服务端认为是无登录,跳转到登录的页面, 下来处理这部分,在客户端发送请求的时候,在请求头中带上Cookie,见带上后的截图:
再次执行,就返回我的粉丝的响应数据,见截图:
4.Jmeter接口测试案例4之HTTP请求默认值: 不管是在UI级别的自动化测试还是在接口级别的自动化测试中,对公共数据数据的分离都是一种趋势,或者某种程度来说,这是自动化测试中必须要掌握的一种能力,是基本技能。这些公共数据就包含了测试地址,以及登录的账号密码等其他的数据,对公共数据的分离好处是可以在一个地方来维护数据,来提高测试的效率,而不是重复的去干一件事,比如测试地址,在N个接口用例中都会使用到,如果某些时候由于某些原因测试地址的URL发生了变化,就需要修改每个测试地址的URL,很明显这就是重复并且无效的工作,如果把URL分离出来,直接在一个地方修改,这样就高效很多了。 下面还是结合博客园cnblogs的案例来进行说明,使用Jmeter来创建接口用例,接口案例分别是查看我的粉丝和我的个人资料,见截图: 接口地址分别为: https://home.cnblogs.com/u/1864058/relation/followers/ https://home.cnblogs.com/u/1864058/detail/ 接口均为GET请求 Jmeter中我的粉丝接口信息如图
Jmeter中我的个人资料接口信息如图
如上的二个接口用例,共同点是前面的请求地址是一致的,如果请求地址发生了变化,意味着这两个接口的请求地址都得改变,如果是N*2个接口用例,那么这样修改起来就是很浪费时间和无效的工作量,那么如何在Jmeter中分离出公共的请求地址了? 使用HTTP请求默认值来解决如上的问题,在配置元件中选择HTTP请求默认值,在HTTP请求默认值的服务器地址或IP地址中填写要分离的地址,这里案例地址是https://home.cnblogs.com,见HTTP请求默认值的截图:
接下来所有的接口用例只需要在请求地址中就不需要填写https://home.cnblogs.com,见我的粉丝接口请求地址,见截图:
使用HTTP请求默认值,就可以把请求地址给分离出来,这样即使由于某些原因修改了,测试只需要在一个地方接口下地址就可以了,而不像之前每个接口用例都得修改。
5.Jmeter接口测试案例5之使用Jmeter进行WebServices接口测试(手机号码归属查询) http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo 关于什么是web services,可以到W3C中查看详细的信息,本文章主要介绍使用Jmeter怎么来做web services的接口测试,首先它也是基于HTTP协议的,我们实现电话号码归属地的查询,首先来看请求信息和响应信息,见如
POST /WebServices/MobileCodeWS.asmx HTTP/1.1 Host: ws.webxml.com.cn Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://WebXml.com.cn/getMobileCodeInfo" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMobileCodeInfo xmlns="http://WebXml.com.cn/"> <mobileCode>string</mobileCode> <userID>string</userID> </getMobileCodeInfo> </soap:Body> </soap:Envelope> HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/"> <getMobileCodeInfoResult>string</getMobileCodeInfoResult> </getMobileCodeInfoResponse> </soap:Body> </soap:Envelope>
在如上的信息中,可以得知如下的信息: 请求地址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx 请求方法:POST Content-Type:text/xml;charset=utf-8 请求参数:mobileCode,该参数不能为空,userID,该参数可以为空 请求成功后,响应的响应数据显示该电话号码它是在哪个归属地,下面使用Jmeter实现这部分。 首先在Jmeter创建线程组,见创建后的目录结构截图:
见HTTP信息头管理器截图:
见具体的接口用例请求参数截图:
点击run后,见执行的结果截图:
在如上的截图中,可以看到客户端发送请求后,服务端响应回复的数据,在这里特别注意HTTP的信息头管理器,它的Content-Type是text/xml,还有就是请求参数部分。
6.Jmeter接口测试案例6之用户自定义变量 在使用Jmeter做接口自动化测试中,经常会使用到公共的数据,那么就需要对这些公共的数据分离出来,不管是基于测试框架的思想,还是使用工具来进行做自动化测试,公共数据的分离首先是需要思考的。这里就以获取电话号码归属地来作为测试的案例,看接口的文档,之前有罗列,请看附件-号码归属查询接口文档(webservice接口) 在如上信息中,可以得出如下的信息: 请求地址: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx 请求头: Content-Type: text/xml; charset=utf-8
请求参数: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <getMobileCodeInfo xmlns="http://WebXml.com.cn/"> <mobileCode>string</mobileCode> <userID>string</userID> </getMobileCodeInfo> </soap:Body>
其中请求参数中userID可以为空,而请求参数mobileCode不能为空 打开Jmeter测试工具,创建线程组并且新增该接口的测试用例,如图所示:
那么在这个案例中,参数mobileCode它就是一个变量,我们完全可以把它分离出来,因为依据测试用例的不同查询的电话号码是不同的,在计划中,添加用户自定义的步骤为:添加--->配置元件--->用户自定义的变量,添加用户自定义变量后,定义变量mobile,如下图所示:
那么下来就是调用该变量,在Jmeter中调用的方式为${自定义的变量},在接口变量中调用,我们在请求参数中直接调用mobile的变量,如下图所示:
再次执行接口用例,执行的结果如图所示:
发送请求后,服务端返回的响应数据:
也许看到这里,有人心里会想,那么每次请求可以除了这种方式可以自定义不同的电话吗?答案是可以的,这就是下一节需要讲的知识体系。
7.Jmeter接口测试案例7之参数化: 在接口测试中,某些时候一些场景会使用到参数化的场景,参数化简单的说就是同一个请求需要不同的数据,比如在性能测试中需要并发多个用户的场景,这样的目的是为了模拟真实的用户场景,需要模拟不同的账号,这里就需要参数化的过程。在Jmeter中参数化处理主要会应用到配置元件中的CSV数据文件设置。下面通过不同的案例来说明这部分在接口测试中详细的应用。 任然使用归属地接口来讲。 下面就在Jmeter中创建线程组,以及HTTP的请求来测试这部分,见如图所示的部分
接下来要实现的是期望每次发送请求的时候,参数mobileCode是不同的参数,那么首先在该线程组添加CSV数据设置文件,添加的步骤是右键线程组,点击配置元件,然后选择CSV数据设置文件 在创建的CSV数据设置文件中导入该文件,并且填写变量名称,如下图所示:
在mobile.csv文件中填写了7个不同的电话号码,并且变量名称是mobile,那么在接口请求的参数中调用该变量名称,调用的方法是:${mobile},如下图所示:
然后调整线程组,设置执行7次,如下图所示:
一切设置完成后,点击执行,可以看到接口执行了7次,并且每次调用的是不同的电话号码,见下图所示:
1.csv文件设置中,csv文件可以是txt格式的,测试结果也是一样; 2.可以对多个参数进行参数化设置并执行 3.对线程数设置多少以及执行多少次可以测试接口并发或者请求数据次数,在后续的接口性能中会经常用到,后续通过案例来进行讲解。
8.Jmeter接口测试案例8之参数传递 在接口自动化测试中,经常会遇到的一种场景就是参数的场景,比如在用户列表中获取所有的用户列表,然后获取到某一个用户的ID,查看该用户的详细信息。首先在这里理清思路,它的流程是,首先获取到数据,然后在Jmeter中,通过后置处理器中的jp@gc - JSON Path Extractor把响应数据中的需要处理的数据单独的取出来,定义成一个变量,然后在下个接口调用的时候,把该变量的值传进去,就能够解决动态参数传递这样的一个问题。 例:分级诊疗URL接口验证: 调用地址:http://IP:Port/项目名/#/hms/服务地址?+参数+权限标识token 示例:http://10.8.3.175:8084/BS-HMS1.0/#/hms/consManage?doctorId=001&organizationCode=004&token=eb0ef24d35df4fc18e0957dbcd9ce985
1.1. 权限获取 1.1.1. http 调用说明 接口说明
接口说明 |
获取url接口调用权限 |
接口名 |
hms.person |
方法名 |
getAccessToken |
参数 |
参考参数说明 |
返回数据 |
||||
参数名称 |
类型 |
长度 |
必填 |
说明 |
body |
String |
必填 |
返回的标识符 |
|
code |
String |
必填 |
返回编码,成功返回200 |
参数例子
Json例子 |
{"serviceId":"hms.person","method":" getAccessToken ","body":[]} |
1.2. 参数编码 1.2.
接口测试-公司内部培训资料相关推荐
- linux网络编程 华清,网络编程(华清远见内部培训资料).ppt
网络编程(华清远见内部培训资料) 地址结构的一般用法 定义一个struct sockaddr_in类型的变量并清空 struct sockaddr_in myaddr; memset(&mya ...
- JAVA内部培训资料
JAVA内部培训资料 一.JAVA基础培训系列 1.孙鑫JAVA高级软件工程师班培训录像(2DVD) 简介:光盘由孙鑫老师亲自授课录制.循序渐进.通俗易懂.实战性强.内容全面.讲解深刻.问答形式是 ...
- 谈谈我2013上半年在公司内部培训的经历
在这里谈谈我在今年上半年在公司内部培训实习生(今年七月毕业的学生)的经历. 今年三月份我担任公司技术培训的负责人,回顾培训历程,做个总结. 公司目标是通过培训能让实习生快速掌握知识,成为一名优秀的技术 ...
- Linux安全培训 ppt,腾讯内部培训资料linux安全基础ppt课件
腾讯内部培训资料linux安全基础ppt课件 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 根据三原色原理叠加后的单色形成了第三 ...
- 如何成为一名优秀的工程师(华为内部培训资料)
在1985年,我被问了一些问题,从那时起,我就开始找寻真正的答案.提出问题的是贝尔实验室(那是仍然是AT&T的一部分,现在属于Lucent Technologies Inc.).贝尔实验室由全 ...
- 百度内部培训资料PPT:数据分析的道与术
这是一个来自百度内部培训关于数据分析的.阅读类的PPT,文字说明非常充分,适合刚入门数据分析的朋友进行学习.
- 微软公司内部培训程序员资料---操作矩阵类
/** 操作矩阵的类 Matrix* * 周长发编制*/ using System;namespace MSAlgorithm {public class Matrix{/// <summary ...
- 微软公司内部培训程序员资料---求解线性方程组的类
/** 求解线性方程组的类 LEquations* * 周长发编制*/using System;namespace MSAlgorithm {public class LEquations{/// & ...
- 腾讯文档服务器,腾讯内部培训资料服务器硬件介绍-20210712081429.ppt-原创力文档...
服务器硬件介绍;培训内容:1.基础概念2.常用服务器简介3.存储设备简介4.服务器配件简介;一.基本概念;易混淆的地方 CPU主频.外频.倍频.前端总线频率 1.主频是CPU的时钟频率,简单说是CPU ...
最新文章
- java面向对象示例_JAVA面向对象基础示例
- Hadoop中的压缩Codec
- Linux学习 LVM ***
- access手工注入笔记
- (12)高斯和均值模糊放到一起
- 关于kotlin GPUImage的使用
- 工作流引擎的五大接口
- python3 正则 去除 html标签、提取正文内容_Python通过正则表达式去除(过滤)HTML标签,提取文字...
- MongoDB使用小结:一些不常见的经验分享
- c语言指针生成numpy数组,python – 在cython中声明numpy数组和c指针
- C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
- RHCE之DHCP配置详解
- 面试题 02.01. 移除重复节点(链表删除操作模板)
- Linux常用终端命令及扩展(五)
- 刷面经笔记2019.01.30
- 中国电网计算机面试题目,国家电网面试经验
- 【Linux学习】常见基本指令
- 中小学在线学习云平台最新社区版 自适应手机端 ASP v1.0
- 系统分析实验 Python
- 图像增强(拉普拉斯锐化增强)