接口测试
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 ...
随机推荐
- java中内部类的积累
放在一个类的内部的类我们就叫内部类. 二. 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访 ...
- Django学习笔记之Django的url反向解析
0x00 URL反向解析和三种不同的反向解析方式 Django中提供了关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解 ...
- GridView自定义自增长的 序号 列
如图所示,添加一个普通列(非模板列),将其显示文本为 序号 在GridView的RowDataBound事件中作如下处理 后台.CS 代码:
- encoder-decoder环境部署问题
pip -v 2.7 cp -r pip2.7 pip pip list appdirs (1.4.3)cycler (0.10.0)distribute (0.7.3)extern (0.1. ...
- 20145335郝昊《java程序设计》第2次实验报告
20145335郝昊<java程序设计>第2次实验报告 实验名称 Java面向程序设计,采用TDD的方式设计有关实现复数类Complex. 理解并掌握面向对象三要素:封装.继承.多态. 运 ...
- 4.9版本的linux内核中温度传感器adt7461的驱动源码在哪里
答:drivers/hwmon/lm90.c,这个文件中支持了好多芯片,内核配置项为CONFIG_SENSORS_LM90 Location: -> Device Drivers -> H ...
- ubuntu18.04安装ssh服务
1.安装openssh-server sudo apt-get install openssh-server 2.启动ssh服务 sudo service ssh start 3.检测是否启动了ssh ...
- RabbitMQ单机多实例配置
由于某些因素的限制,有时候你不得不在一台机器上去搭建一个rabbitmq集群,当然这种集群只适合自己玩玩,验证下结论,这个有点类似zookeeper的单机版.真实生成环境还是要配成多机集群的.有关怎么 ...
- redmine修改附件储存路径
如果想把redmine 1.x.x 版本中的attachments files 放在自定义的目录(例如/home/darkofday/redmineAttachFile/).执行下列命令:cd /ho ...
- Sql Server的还原和导入数据效果不一样
SQL SERVER2012数据库,导入数据和通过备份还原的效果不一样,如果之前的数据库结构修改过,那么另一个数据在导这个数据库时就会有问题,数据有丢失,这时候就要通过备份还原来同步数据.