接口测试
1. 接口的分类:webService和http api接口
1) webService接口:是按照soap协议通过http传输,请求报文和返回报文都是xml格式,一般要借助工具来测试接口;
2) http api接口:是按照http协议传输的,请求报文是key-value格式,返回报文json串,一般常用的请求方式是get和post请求。
2. 接口测试其实就是功能测试,也是测试业务逻辑,只不过没有页面可以点;接口测试就是按照接口规范文档提供的调用地址、请求参数、拼接报文,发送请求检查返回结果。
3. 接口测试的必要性:
1) 能够发现很多页面点击发现不了的bug;
2) 提高系统的异常处理能力;
3) 前端随便变,接口测好了,后端不用变。
4. 接口文档至少得包括:
1) 接口的说明;
2) 调用地址的URL;
3) 请求参数,参数的类型,请求参数的说明;
4) 请求方式;
5) 返回值的说明。
5. get和post请求:
1) get请求能直接在浏览器中发送请求;
2) post请求需要借助工具来发送。
3) 两者的区别:
i get请求使用URL或cookie传参,host请求使用请求体body传参;
ii get请求的URL在长度上有限制;post请求没有;
III post请求比get请求安全,因为get请求数据放在URL中;
IV get请求一般用来请求数据,post请求一般用来发送数据;get请求数据发在请求头中,post请求数据放在请求body中。
6. http状态码:http有1个状态码,来标识每次请求是否成功,常见状态码有如下几种。
1) 200:2开头的都表示这个请求发送成功。
2) 300:3开头的表示重定向;常见的是302,把请求重定向到别的URL了。
3) 400:4开头的表示客户端发送的请求有语法错误;
I 常见的401表示访问的页面需身份验证;
II 403表示服务端拒绝访问请求;
III 404表示没有这个页面。
4) 500:5开头的表示服务器有异常:
I 500代表服务器内部有异常,无法完成请求;
II 503表示服务暂时不可用;
III 504代表服务器端超时,无返回结果。
7. 如何测webService接口
前提要知道测试的URL或wsdl文件,直接在soapui中导入即可,导入后能看到所有接口,填写参数调用接口, 查看返回结果即可。
8. 通用的接口用例设计
1) 通过性验证:保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入发送请求,看是否可以返回正确的结果。
2) 参数组合:有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功;id传2时,传入商品id是否删除成功。
3) 接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功。
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验。
4) 异常验证:异常的,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
5) 根据业务逻辑设计用例:把业务的测试点列出来,然后造数据验证这些测试点。
9. 练习发送【获取所有学生信息】的请求,发现察看结果树-》响应数据中中文处显示的都是乱码。
解决方法:在jmeter安装目录/bin/jmeter.properties文件中找sampleresult.default.encoding=xx, 后面xx改成utf-8,然后取消注释
10. 练习发送【添加学生信息】接口请求时,在http请求的 Body Data 中写的中文,为什么都是乱码(方框中间有个问号)
解决方法:在jmeter安装目录/bin/jmeter.properties文件找到 JSyntaxTextArea,把注释取消就行了。
11. 练习发送【添加学生信息】接口请求时,传参中有中文,请求成功后,再从【查看所有学生信息】接口看到,中文参数显示的乱码。
解决方法:在content-encoding中写上utf-8,将中文以utf-8格式编码,然后发送请求
jmeter
1. jmeter:跨平台的,windows mac Linux下都可以用,使用前必须装jdk。
2. jmeter参数化:
1) 用户定义的变量;
2) 函数生成器:
3) 从文件中读取
3. 1) jmeter关联:获取返回的值保存起来,给其它请求用,或做其它一些处理。关联是通过jmeter的正则表达式提取器实现的。
例子:有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。token是从哪来的呢,肯定是从登录接口返回的,因为要先登录,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。
2) 实际练习时候出现1个问题:正则表达式自己手动输入时,运行察看结果树一直提示“未登录”,

而从登录返回的数据中复制json串,修改为"sign":"(.*)",后,运行提示操作成功的
解决方法:后来把两次操作的表达式复制到sublime Text中,就能很明显的看出原因了,提示未登录的那个表达式:后少一个空格,但在jmeter中很难看出来,加上空格即可。
4. jmeter操作mysql
1) 导入jar包:直接在测试计划中导入外部jar包(mysql-connector-java-5.1.7-bin.jar),或者将jar包放在jmeter安装目录的lib包中,重启jmeter即可。
2) 配置数据库连接:mysql的URL、端口号,用户名,密码
3) 写sql 执行sql,查看结果。
4) jdbc request从数据库查出来的结果中文显示???
解决方法:jdbc连接配置的Database URL中加上characterEncoding=UTF-8
5) query type为Callable Statement:执行多条sql语句
- Web接口测试工具--Jmeter
关于Jmeter性能测试工具不再过多介绍.如果你要学习软件性能测试,那么多少应该会对它有所耳闻. 强烈建议阅读官方文档学习:http://jmeter.apache.org/index.html 还有 ...
- 接口测试(jmeter和postman 接口使用)
接口测试基础知识 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.把前端(client)和后端(server)联系起来,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统 ...
- 接口测试——postman & jmeter
新名词: 自动化测试:写代码帮你测试 接口:是一个抽象的概念,一种交互关系. 抓包:拦截请求. 接口测试:就是功能测试,比后者还简单. 需要有测试文档,包括项目.模块.URL.请求方式.参数.参数说明 ...
- 接口测试工具Jmeter
一.安装Jmeter 1.安装JDK ①下载jdk,到官网下载jdk,地址:http://jmeter.apache.org/download_jmeter.cgi ② 安装jdk(Oracle官网下 ...
- 压力测试+接口测试(工具jmeter)
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因 为jmeter是java开发的,所以运行的时候必须 ...
- 接口测试工具-Jmeter使用笔记(一:运行一个HTTP请求)
博主自从毕业从事软件测试行业距今一年半时间,大多数时间都在跟各种API打交道,使用过的接口测试工具也有许多,本文记录下各工具的使用心得,以及重点介绍我在工作中是如何使用Jmeter做测试的,都是在wi ...
- Jmeter接口测试 2=> Jmeter工具的介绍
第一节 接口测试流程 参数化:EXCEl文件参数化.数据库参数化.直接代码中配置.配置文件 预处理请求(前置处理):对请求的参数进行预处理.准备,如加密数据.组织测试数据 发起请求:httpclien ...
- 【接口测试】jmeter的使用
学习地址: https://ke.qq.com/webcourse/index.html#course_id=89002&term_id=100088372&taid=15345918 ...
- 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...
随机推荐
- 如何用纯 CSS 创作一个单元素抛盒子的 loader
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qKwXbx 可交互视频 ...
- mybatis v jpa
mybatis的优势在于SQL的自由度上,SQL优化和返回对象的大小都是可控的.spring-data-JPA则在开发效率上有优势.
- java语言基本环境搭建
从放假开始,就开始路陆陆续续了解关于java语言的学习.首先从语言编辑环境就和以前学习的c语言会有些不同,对java语言的学习也有了很大很多新的认识. 首先从官网上下载jdk,按照娄老师给我们的操作提 ...
- 关于C++中的string的小知识点
这是GCC版本5.x的情况下的分析,在GCC版本4.x的情况下std::string的内存布局将不同.逆向C++的过程中经常遇到std::string,它在内存中的状态是什么样呢?我先简单地写了一个程 ...
- MR案例:单表关联查询
"单表关联"这个实例要求从给出的数据中寻找所关心的数据,它是对原始数据所包含信息的挖掘. 需求:实例中给出 child-parent(孩子—父母)表,要求输出 grandchild ...
- [翻译]纠正PostCSS的4大认识误区
市面上已经有很多的前端工具,再来引入新的前端工具,价值大不大?这主要取决于,它是否给开发人员提供了新的功能,是否值得花时间和精力去学习和使用? PostCSS出现时有一个很有趣的现象.像sass和le ...
- GCC精彩之旅
在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器.目前Linux下最常用的C语言编译器是GCC(GNU Compile ...
- 机器学习笔记—混合高斯和 EM 算法
本文介绍密度估计的 EM(Expectation-Maximization,期望最大). 假设有 {x(1),...,x(m)},因为是无监督学习算法,所以没有 y(i). 我们通过指定联合分布 p( ...
- (转)SQL Server中的索引结构与疑惑
说实话我从没有在实际项目中使用过索引,仅知道索引是一个相当重要的技术点,因此我也看了不少文章知道了索引的区别.分类.优缺点以及如何使用索引.但关于索引它最本质的是什么笔者一直没明白,本文是笔者带着这些 ...
- 对于"第一次创业者"应该给什么样的建议
转:其实我创业也不是很成功(目前属于第二次).目前为止,基本保证家里足够温饱和足够温馨,偶尔奢侈,但是我坚持走技术路线,不做土豪(因为做不了). 我创业的口号是:成全别人,累死自己!! 有人问 ...