8. 第八阶段 高级自动化测试技术
接口测试技术
第一章 接口测试
一. 接口测试概述
- 接口的定义
- API接口属于一种操作系统或程序接口
- GUI接口属于一种图形操作系统
- 接口测试的定义
- 接口测试是测试系统组件间接口的一种测试
- 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
- 接口测试的目的和意义
- 接口测试是自动化并且持续集成的
- 接口测试是一个完整的体系,也包括功能测试、性能测试
- 接口测试使用环境
- 一般应用于多系统间交互开发
- 适用于为其他系统提供服务的底层框架系统和中心服务系统
- 适用于一个上层系统中的服务层接口
- 平台越复杂,系统越庞大,接口测试的效果越明显
- 接口测试的好处
- 可以发现很多在页面上操作发现不了的bug
- 检查系统的异常处理能力
- 价差系统的安全性、稳定性
- 前端随便变,接口测好了,后端不用变
- 接口测试的分类
- 业务功能测试
- 正常场景
- 异常场景
- 边界分析测试
- 业务规则边界分析
- 输入输出参数边界分析
- 覆盖所有的必选参数
- 组合可选参数
- 参数有、无或为null
- 参数的顺序、个数、类型
- 参数类型数值大小、输入的数值范围
- 参数字符长短,
Null*max*max+1
- 参数包含特殊字符
- 参数组合测试
- 异常情况测试
- 幂等(重复提交)
- 并发测试
- 事务测试
- 分布式测试
- 环境异常
- 大数量测试
- 同时处理大批数据的测试
- DB数据量很大时,测试DB操作
- 性能测试
- 响应时间
- 吞吐量
- 并发数
- 服务器资源使用率
- cpu
- 内存
- IO
- Network
- 安全测试
- 敏感信息是否加密
- 前后端数据传输书否加密
- 日志信息是否加密
- 批量抽奖?
- SQL注入
- 敏感信息是否加密
- 业务功能测试
- 测试要点
- 检查数据的交换
- 传递和控制管理过程
- 以及系统间的相互逻辑依赖关系
二.接口文档的阅读和分析
- 接口文档应该包含的内容
- 接口说明
- 调用url
- 请求方法 (get/post)
- 请求参数、参数类型请求参数说明
- 返回参数说明
三.接口的请求和响应
-
HTTP协议基础
- HTTP协议工作原理 : 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器放所有请求
-
HTTP请求及其结构
-
HTTP使用同一资源标识符(Uniform Resorce Identifiers,URI)来传输数据和建立连接
-
HTTP请求(request)
请求行 请求头部 空行 请求数据
-
HTTP响应 (response)
状态行 消息报头 空行 响应正文
-
-
HTTP常用请求方式
-
HTTP响应及其结构
-
HTTP常见响应码
四.常用的接口测试工具
-
常用浏览器 : 谷歌和火狐
-
Postman
-
Jmeter
- Fiddler
五.接口测试用例的设计
第二章 Postman接口测试
-
Postman简介和安装
接口测试用例模板范例
-
Postman主要功能说明
-
发送HTTP请求和分析响应数据
-
请求数据的参数化
- Value用
{{name}}
模板数据txt首行用{{}}里面的名字,也就是name
- Value用
-
加入断言 (检查点)
-
Postman中加入断言
-
Postman通过tests进行断言的插入
tests["Response time is than 200 ms"]=responseTime < 200; 中括号内是文本提示 tests["status code"]=responseCode.code === 200;
-
-
断言的实现
-
-
生成并导出接口脚本 (Python版)
第三章 JMeter接口测试
- JMeter简介和安装
-
JMeter主要功能模块介绍
-
JMeter测试项目中的必要内容
-
JMeter脚本的录制
- badboy
-
JMeter用于接口测试
-
JMeter用于性能测试
第四章 JMeter测试实例
-
JMeter测试脚本强化
-
参数化设置
-
断言设置
-
插入集合点
-
- JMeter用于系统间接口测试
第五章 Fiddler抓包基础
-
Fiddler简介和安装
-
Fiddler设置代理
-
HTTPS简介
- HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并未浏览器和服务器之间的通信加密
- HTTP和HTTP的区别
- https协议需要到ca申请证书,一般免费证书很少,需要交费
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
- http和https使用的连接方式完全不同,端口也不一样,http是80,https是443
- http是简单的连接,无状态的;https协议是由ssl9http协议构建的可进行加密传输、身份认证的网络协议,比http安全
-
-
Fiddler过滤会话
-
过滤功能开启
-
过滤功能设置
-
过滤类型设置
-
过滤内容设置
-
- Fiddler其他常用功能
性能测试技术
1. 性能测试基础和Load runner简介
-
性能测试概述
-
性能测试 : 是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
-
1. 一般性能测试 验证软件在正常情况下系统条件下能否满足性能指标 2. 负载测试 验证系统在一定压力下延长系统运行时间,直到系统性能出现 "拐点" 3. 压力测试 验证系统在已经处于极限负载下或者某指标已经处于饱和状态下系统性能的表现 4. 大数据量测试 验证系统正在使用大批量数据对系统产生压力或影响的情况下系统各种指标是否正常 5. 配置测试 验证系统下不同的软件和硬件配置的情况下,找出系统各项资源的最优分配 6. 稳定性测试 验证系统在连续运行的情况下,查看系统的各项性能指标, ——MTBF(错误发生的平均时间间隔) 7. 其他专项测试
-
-
性能术语
虚拟用户 并发和并发用户数 响应时间 : 包含 "请求响应时间" 和 "事务响应时间" 每秒事务数 : (Transaction Per Second,TPS) 每秒系统能够处理的交易或者事务的数量 吞吐量 : 在单次业务中,客户端和服务器端进行的数据交互总量;受服务器性能和网络性能的影响 吞吐率 : 吞吐量除以传输时间.是衡量服务器性能和网络性能的重要指标之一;一般可以用" 请求数/秒" 、"页面数/ 秒"、"字节数/秒" 等单位衡量 点击率 : 一般指每秒用户向服务器提交的请求数 (WEb测试中特指HTTP请求数) 思考时间 : 用户操作时,每个请求的间隔时间; 0思考时间 性能计算器 :
-
不同角色看性能
- 黑盒测试的角度
- 黑盒测试操作应用界面
- 数据请求经过网络发送
- 服务器前端接收处理
- 在数据库服务器获取相关数据
- 前端吹后返回数据
- 应用界面接收到数据响应
- 开发的角度
- 结构合理性
- 数据库设计合理性
- 代码与算法
- 系统中内存的使用方式
- 系统中线程的使用方式
- 系统资源是否有恶性、不合理竞争
- 系统管理员角度
- 硬件资源利用率
- JVM
- DB(数据库)
- 换何种硬件可以提高系统性能
- 系统能否支持7*24单人服务
- 扩展性、兼容性、最大容量、可能的瓶颈
- 性能测试角度
- 服务器硬件性能
- 根据需要和历史数据制定性能目标
- 建立性能通过模型
- 对开发代码框架和硬件框架进行性能分析
- 针对开发发布版本的基准测试
- 对软件进行性能验收和稳定性测试
- 生产环境的配置和优化
- 制定性能测试测试用例
- 制定性能测试场景设计
- 特定性能分析
- 黑盒测试的角度
-
性能测试职业技能
- 测试工具
- Jmeter
- Load runner
- 服务器性能诊断
- CPU 、内存、硬盘、网络
- 优化技能
- 代码 、构架、数据库、操作系统
- 网络协议
- HTTP/HTTPS
- Web socket/web service
- 自动化
- 接口自动化
- Web自动化
- 持续集成
- Jenkins
- SVN Maven
- 测试工具
-
性能测试流程
- 系统硬件资源相互之间的关系及原理
- 选择可靠性能指标以及之间之间的关联和判定方法
- 永不宕机的实现原理和常见错误
- 排队系统与延迟及缓存的优化关系
- 优化的成本和性价比
- 业务优化的操作实施
- 多系统串联原理及测试隔离
-
性能测试工具选择
-
考虑的因素
- 专业、稳定、高效,如Load runner,工业级的性能负载工具
- 还能单且容易上手,在测试脚本上不用花费太多时间
- 有技术支持,文档完善,不用在软阿金使用的疑难问题上花费时间
- 性价比与投入产出比
-
常用测试工具简介
- HP公司的Load runner
- Apache Jmeter (开源)
- Grinder (开源)
- CompuWare公司的QAload
- Microsoft公司的WAS
- RadView公司的WebLoad
- IBM公司的RPT
-
-
Load runner简介
-
LoadRunner的三大模块
- Virtual User Generator – 录制脚本
- LoadRunner Controller – 创建、运行和监控场景
- LoadRunner Analysis – 分析测试结果
-
制定压力/负载测试计划
-
分析被测系统
- 预计有多少用户会连到系统
- 客户机的配置情况
- 服务器使用什么类型的数据库以及配置情况
- 客户机和服务器之间如何通讯
- 还有什么组件会影响 响应时间
- 通讯装置的吞吐量
- 每个通讯装置能够处理多少并发用户
-
确定测试目标
- 系统完成某个事务所花费的时间
- 明确何种配置能够使系统性能最优
- 系统能够无差错运行的最大时间
-
Loadrunner的组成和原理
- 使用Controller创建测试场景
- 创建场景的目的是为了实现真实的负载,也就是让一台或多台机器模拟多个用户,同时执行脚本,对被测应用进行操作或发起请求
- 每个LoadRunner的场景都相当于一套负载测试方案,因为它包括了反应业务操作流程的测试脚本,反映系统承受能力的虚拟用户数量,用于平衡测试机自身压力的Load Generator 机器及脚本之间的执行顺序等,执行场景的过程就是对系统施压的过程
- Controller实时监控场景
- LoadRunner集成了实时的监控器,在场景执行过程中,用户可以根据需要选择一个或多个监视窗口对关心的数据进行动态监控,可监控的信息包括系统资源、网络设备、Web服务器和数据库等交易数据
- Analysis分析测试结果
- LoadRunner提供分析和报告工具——Analysis ,能够打开这些结果数据,帮助用户查找到性能问题并追溯原由。
- 使用Controller创建测试场景
-
场景
- 创建场景的目的是为了实现真实的负载,也就是让一台或多台机器模拟多个用户,同时执行脚本,对被测应用进行操作或发起请求
- 每个LoadRunner的场景都相当于一套负载测试方案,因为它包括了反应业务操作流程的测试脚本,反映系统承受能力的虚拟用户数量,用于平衡测试机自身压力的Load Generator 机器及脚本之间的执行顺序等,执行场景的过程就是对系统施压的过程
- Controller实时监控场景
- LoadRunner集成了实时的监控器,在场景执行过程中,用户可以根据需要选择一个或多个监视窗口对关心的数据进行动态监控,可监控的信息包括系统资源、网络设备、Web服务器和数据库等交易数据
- Analysis分析测试结果
- LoadRunner提供分析和报告工具——Analysis ,能够打开这些结果数据,帮助用户查找到性能问题并追溯原由。