1、接口测试:接口(重点)
是什么:是数据交互的入口和出口,是一套规范、标准
为什么----用接口时的缺点:①研发标准不统一②研发周期长 ③可扩展性差----- 用接口的优点①统一设计标准 ②前后端开发相对独立 ③扩展性灵活 ④前后端都可以使用自己熟悉的技术
怎么用 ①接口规范是架构师制定的(API文档) ②前端和后端开发时共同参考的依据
2、接口测试:接口测试(重点)
是什么:测试后端实现是否符合接口规范
为什么:程序安全/效率
怎么用(实现流程):模拟客户向服务器发送数据,然后查看相应----要素1 定位服务器资源(通过URL实现https://www.baidu.com/ https://127.0.0.1:8000/资源路径)-----要素2:模拟用户提交数据----要素3:查看相应的结果是否符合预期
URL 定位服务器资源 + 提交数据 + 查看响应的数据是不是预期的
接口测试分类:①web接口测试 测B/S架构的 ----服务器接口测试:测试自己公司写的程序 ----第三方接口测试:测试别的公司是实现的接口 ②模块接口测试 主要测C/S架构(C/S越来越少了)
3、接口测试:环境搭建
是什么:搭建接口测试的测试环境,运行程序
怎么用:1)运维或开发实现程序部署 正常进行 2)自己搭建
3.2.1安装python 3.2.2安装依赖:pip install -r requirments.txt -i https://pypi.douban.com/simple 3.2.3 启动项目:python run_server.py 3.2.4测试:http://127.0.0.1:8000/apl/departments 如果正常相应数据了,那么程序安装启动正常 3)学生管理系统简介 ----核心:学生表 班级表 学院表----操作:3张表的增删改查
4、接口测试:插件
是什么:测试接口的测试工具
火狐----RESTClient
谷歌----POSTman;
Java 实现的测试工具Jmeter(重点)
为什么:测试工具功能强大一些,使6测试更快捷方便
怎么用:火狐安装RESTClient;谷歌安装POSTman;注:二者下载时都要注意版本,google插件资源下载被屏蔽了 安装提前下载完毕的
5、接口测试:RESTful风格(重点)
是什么:RESTful风格:开发测试时 大家都会遵守一些默认的规范,这些都是约定成俗的,大家的习惯做法,非强制性的RESTful风格就是这些习惯的一种。RESTful风格中规范了,URL的实现方式,提交的数据的实现方式,响应的数据的实现方式
为什么:为了程序的易读性和易维护性
怎么用:RESTful风格是约束操作的四种操作以及三个要素(记住)
增:
①URL+POST
②提交数据 常用方式a:URL?键=值&键=值 常用方式b:JSON格式s --------设置HTTP信息头 content-Type application/json;charset=utf-8 键=值&键=值
③200 | 201 + 添加的记录
删:①URL+DELETE ②提交数据。键=值&键=值 ③200|204 +无响应内容
改:①URL+PUT(更合适) ②提交数据。a:键=值&键=值 b:JSON格式s ③200 | 201 +修改后那条记录
查:①URL+GET ②常用方式:URL?键=值&键=值 ③200 +一条记录或多条记录
404 路径有误 505 服务器异常
get和post的区别:1、post安全性高 2、post提交的数据量没有大小限制。3、get效率高
6、接口测试:JSON
是什么:-----JSON是一种数据载体。----互联网本质就是数据传输 数据传输需要数据载体 eg:页面信息就是存储在html这种数据载体中的。
-----HTML格式
<html>
<head>
<title>hello</title>
</head>
<body>
<font color='red'>hello world</font>
</body>
</html>
-----xml格式
<person>
<name>huluwa</name>
<age>8</age>
</person>
缺点:标签标记语言 有效数据占有率低
-----JSON优化数据传输
{"title":"hello","font":"hello world"}
{"name":"huluwa","age":"8"}
为什么:JSON传输数据效率更高,所有部分场景下使用JSON替换html和XML(ajax)。缺点:JSON语法描述性不及标签语言,所以部分场景还得使用html和xml,但是如果传递的是少量数据的话,可能使用JSON
怎么用:对象和数组可以嵌套使用
语法:
格式1(JSON对象):{"键1":"值1","键2":"值2"......}
格式2(JSON数组):[值1,值2,值3......]
格式复合: {"name":"huluwa","age":"8","aihao":["救爷爷","吐火","吐水"]}
[ {"name":"huluwa","age":"8"}, {"name":"aotuman","age":"10"}......]
7、接口测试实战 目的:RESTful风格练习
a、安装并运行学生管理系统
b、获取并读懂接口规范
从前期文档中提取接口清单
API文档:application programing interface 应用程序编程接口
c、逐一测试接口
总结:1、新增数据时,数据是JSON格式,必须设置浏览器的http请求头,不然会当成普通文本处理
content-type application/json;charset=utf-8(记住)
content-type:提交的内容类型
application/json数据类型是json格式 大类型/小类型 img/jpg img/png.....
charset=utf-8设置编码集 utf-8支持世界所有字符 -------2
jmeter
1、jmeter
是什么:jmeter是apache公司使用Java开发的一款测试工具
为什么:高效、功能强大 模拟一些高并发或多次循环等特殊测试场景
怎么用:
a下载jmeter,解压缩
b安装Java环境(jmeter和Java环境的关系 类似MP3文件和播放器关系) 注意 安装路径不能有中文字符 空格 安装了JDK+JRE
c简单了解jmeter的目录结构 bin:存储了jmeter的可执行程序 比如启动程序 lib:存储了jmeter整合的功能(一些.jar文件的小程序)
d启动jmeter 启动方式一bin/apachejmeter.jar双击 *jmeter.bat windows下的启动程序 jmeter.sh linux下的启动程序
e 编写一个jmeter版本的测试案例
作用-------接口测试 性能测试(内在--程序的算法) 压力测试(外在---外在负载) web自动化测试 数据库测试(测试数据库) Java程序测试
优点: 开源、免费;支持多协议;小巧;功能强大
缺点:a.不支持IP欺骗 b.使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试
2、jmeter组件:线程组
是什么:
进程:一个正在执行的程序就对应一个进程
线程:进程中的执行线索(一个进程有多个执行线索)
线程组:按照线程性质对线程进行分组
并发执行:多个线程同时执行 特点:执行结束的顺序和线程的启动顺序不一定一致
顺序执行:按照线程的启动顺序挨个执行
为什么:方便管理
怎么用:
①三者关系:进程有多个线程组,线程组可以有多个线程
进程---测试计划
线程组----线程组
线程----线程组属性的线程数
②默认情况下,线程组中的线程是并发执行的
每一个线程都要执行组内的http请求
③怎么设置线程组顺序执行
勾选测试计划的第一个复选框(独立运行每个线程组)
④线程组练习 学院增删改查
练习:学生管理系统增删改查优化
可以使用http请求默认抽取共同的ip 端口号 协议 编码集 等信息
测试计划--->右击--->添加--->配置原件--->http请求默认值
作用:通过复用属性简化实现,提高测试效率
线程组高级((初始化与销毁线程组)
线程组属性:属性一 线程数---模拟用户数 属性二:时间值----在指定时间内启动所有线程 属性三:循环数----单个用户访问的次数
调度器:1)循环次数设置为永远 2)设置启动延迟 x和持续时间y 在x秒后访问服务器 并且持续y秒 3)设置启动时间 M,和结束时间N 在M时开始访问,在N时结束-----2和3实现不能同时使用 否则矛盾了
jmeter组件:参数化概述(了解)
是什么:参数化就是动态的获取并设置数据
为什么:比如执行批量操作时,批量插入或批量删除,之前数据都是手写的,每执行完都需要修改一次,效率太低 参数化就是可以以程序代替人工获取并设置数据:安全+高效
jmeter组件:参数化实现之CSV Data Set Config(重点中重点)
是什么:jmeter参数化实现组件之一
为什么:通过这个组件可以动态获取并设置数据,实现类似批量添加操作((执行一次 将多条数据插入到数据库)
怎么用:
其他:CSV Data Set Config.....CSV数据配置 CSV-->逗号分割值文件格式