第1课:接口测试和jmeter总结

接口测试

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语句
5.  jmeter path extractor下载地址:https://jmeter-plugins.org/wiki/JSONPathExtractor/
 

转载于:https://www.cnblogs.com/qiezizi/p/8028137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 工作日,如何在Android上重复警报工作日

小编典典请尝试此代码。已在我的应用中成功运行if (chk_monday.isChecked()) {forday(2);} else if (chk_tuesday.isChecked()) {forday(3);} else if (chk_wednesday.isChecked()) {forday(4);} else if (chk_thursday.isChecked()) {forday(5);} else if (chk_friday.isCheck…

hdu4419

对于这类面积覆盖的题,大致就两点要注意的 1.同一把矩形放在笛卡尔坐标系上做 2.pushup函数要注意下细节:及在统计子区间和之前要先判断是否有子区间 用sum数组来保存区间被覆盖的情况,如果遇到多次覆盖问题,那就开多个sum数组分别保存被覆盖…

最简单 - 单例模式

public class Person {// Person 引用private static Person p null;static {if (p null) {p new Person();}}/***单例模式获取Person对象. * return*/public static Person getInstance(){return p;} ​} 复制代码转载自: 简书 - 低至一折起 文章:w…

极客时间和极客学院_极客历史记录的本周:Twitter的诞生,OS X十周年以及太空停留时间最长的时代即将结束...

极客时间和极客学院Every week we bring you interesting trivia and milestones from the archives of Geekdom. Today we’re taking a peek at the birth of Twitter, ten years of Mac OS X, and the longest space stay in history. 每周,我们都会为您带来有趣…

Android风格ppt,Material Design风格的快手PPT

突发奇想,感觉MD风格既然适合 Android 软件的界面,那么在一般PPT 演示中,效果当也是不错。于是在网上去寻了几处制作贴,也简单看了 MD 设计指南的几处要点。先试试一番再说。关于 MD 设计指南和几处制作贴,我会把链接贴…

11月16日站立会议

今天是冲刺阶段的第二天,我今天做了统计在线人数模块的编写而且对其进行了测试并修改完成,为团队制作了今日的燃尽图。 明天我要完成服务器端可以断开所有用户连接的一个小模块和继续为团队制作燃尽图。 今天遇到的困难是用Java进行编写时,出…

iOS核心动画高级技术(十三) 高效绘图

More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason—including blind stupidity. 不必要的效率考虑往往是性能问题的万恶之源。 ——William Allan Wulf #软件绘图 术语绘图通常在Core Anima…

dropbox链接过期_询问操作方法:“开始”菜单中的Dropbox,了解符号链接和翻录TV系列DVD...

dropbox链接过期This week we take a look at how to incorporate Dropbox into your Windows Start Menu, understanding and using symbolic links, and how to rip your TV series DVDs right to unique and high-quality episode files. 本周,我们来看看如何将D…

android listpreference 自定义,Android – 我的ListPreference中的自定义行布局

在我的Android应用程序中,我实现了从ListPreference扩展的类SubtitleColorListPreference.我需要这个,因为我需要为列表中的每个项目设置自己的布局.一切正常,它看起来像这样:重要的代码是onPrepareDialogBu​​ilder(AlertDialog.Builder builder)中的方法,我在其中…

springMVC3学习(十一)--文件上传CommonsMultipartFile

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/itmyhome/article/details/27976873 使用springMVC提供的CommonsMultipartFile类进行读取文件须要用到上传文件的两个jar包 commons-logging.jar、commons-io-xxx.jar1、在sp…

基于React和SpringBoot的快速开发模板QuickAdmin

经过一段时间的总结和完善,我的管理系统快速开发模板已经基本成型,现在GitHub上开源啦: QuickAdmin QuickAdmin是基于Spring Boot和React.js实现的管理系统开发框架。用于开发网站的后台管理系统。 本框架提供了如下功能: 完整的基…

android sim iso,android – 意外的telephonyManager.getSimCountryIso()行为

您可以使用MCC MNC获取SIM卡国家/地区,它是SIM配置的,与您所在的网络无关.Configuration config getResources().getConfiguration();int countryCode config.mcc;您可以在此处找到MCC列表MccTable.java例如,西班牙是214,法国是208MCC should work on all GSM devices with S…

火狐 增强查找工具栏_在“提示”框中:简单的IE至Firefox同步,轻松的Windows工具栏和识别USB电缆...

火狐 增强查找工具栏() Every week we tip into our mail bag and share great tips from your fellow readers. This week we’re looking at an easy way to sync your bookmarks between IE and Firefox, using simple Windows toolbars, and a clever way to ID USB cables…

day22 模块-collections,time,random,pickle,shelve等

一、引入模块的方式: 1. 认识模块 模块可以认为是一个py文件. 模块实际上是我们的py文件运行后的名称空间 导入模块: 1. 判断sys.modules中是否已经导入过该模块 2. 开辟一个内存 3. 在这个内存中执行该py文件 4. 给这个内存起个名字, 一般用的是py文件的名字。返回…

基于Redis实现分布式锁,避免重复执行定时任务

Spring提供了定时任务的功能,但是在多个实例的集群中,会出现定时任务重复执行多次的情况。 使用Qutaz框架自带的分布式定时任务可以很好的解决这个问题,但是讲道理功能有些过于强大,对于需求不高,乃至可以一定程度上允…

Input Director使用一个键盘和鼠标即可控制多台Windows计算机

The problem is having two or more PC’s and having to go back and forth between workstation. Input Director solves the problem by allowing you to control multiple Windows systems with only one keyboard and mouse on the Master PC. 问题是拥有两台或更多台PC…

viper4android 生效,另一种让V4a音效在Poweramp上生效的方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼本人按照网上的方法进Poweramp设置—音频—高级选项—直接音量控制—不打勾后 V4a音效没有生效 我又把V4a音效兼容模式里的正常模式切换成为兼容模式 结果还是不行......后来我郁闷了三天三夜有一天我去了v4a官网论坛看到了admin帖…

[学习笔记]状压dp

状压 \(dp\) 1、[SDOI2009]Bill的挑战 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位状态为 \(j\) 的方案数 那么方程就很明显了&#xff0c;每次枚举第 \(i\) 位的字母 \(alpha\) 然后 \(O(n)\) 判断就好了 时间复杂度 \(O(26Tlen2^nn)\) \(Code\ Below:\) #include <bits/st…

excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

excel导入csv文件Microsoft Excel will automatically convert data columns into the format that it thinks is best when opening comma-separated data files. For those of us that don’t want our data changed, we can change that behavior. Microsoft Excel将在打开…

MySQL之进化篇

MySQL之实用篇 MySQL之牛刀小试 子查询是指出现在其他SQL语句内的SELECT子句. 例如: SELECT * FROM t1 WHERE column1 (SELECT column2 FROM t2) 其中 SELECT * FRIN t1 称为outerQuery SELECT column2 FROM t2 称为subQuery 注意:子查询指嵌套在查询内部,且必须始终出现在圆括…