九、直连数据库
通过直连数据库让程序代替接口访问数据库,如果二者预期结果不一致,就找到了程序缺陷。
获取某条学院的名字,放在百度搜索:
- JMeter 不具备直连数据库功能,必须整合第三方(jar包)实现
- 配置数据库的连接
- 通过JDBC Request请求向数据库发送 SQL语句并接收提取响应结果
- 结果获取规则可以通过 Debug Sampler 组件查看
- 将提取到的响应结果在百度上
1、测试计划添加jdbc链接配置
步骤:测试计划--》配置元件--》JDBC Connection Configuration
2、测试计划添加jar包
3、线程组添加调试取样器
步骤:线程组--》添加--》取样器--》Debug Sampler。
4、百度搜索结果
这里可以当成一个思路,如果想用上面的结果去做其他的事情是怎么用?
比如:百度搜索某个结果,运用对应的结果:${变量名}
十、断言
断言:让程序代替人工判断响应结果是否符合预期
响应断言=断言状态码和响应体
大小断言=判断响应内容的字节长度
断言持续时间=判断响应时间
步骤:
1、按照之前的实现编写测试脚本
2、为被判断的取样器添加断言组件
3、直接运行查看结果断言通过:无提示;断言失败:给出错误
①响应断言
步骤:请求--》添加--》断言--》响应断言
举例:响应文本结构是否包含“xxx”
②大小断言
步骤:请求--》添加--》断言--》大小断言
③时间断言
十一、JMeter的逻辑控制器
通过参数化可以实现单个接口的功能测试,而接口测试过程中,除了单个接口的功能测试之外,还会测试接口业务实现,所谓业务,就是一套完整的业务逻辑或流程,这就必须要使用到逻辑控制和关联。
步骤:请求上--》添加--》逻辑控制器--》选择对应的逻辑控制器
①if逻辑控制器
注意这里的显示,必须包含请求
②foreach逻辑控制器
③循环逻辑控制器
好处:可以单独设置请求的循环次数
十二、JMeter的后置处理器
关联:上一个请求的响应结果和下一个请求的数据有关系
①xpath提取器
举例需求:两个http请求,请求A访问传智播客官网,请求B访问百度,请求A将传智播客官网源码中的 title 标签的值取出,传递给请求B,在请求B中作为关键字搜索这个 title值
步骤:
1、搭框架编写两个请求,传智播客 +百度搜索
2、核心: 取出传智播客页面源码的 title 值
3、传递给百度:${变量名}的方式传值
步骤:请求-》添加--》后置处理器--》xpath提取器
②正则表达式提取器
步骤:请求-》添加--》后置处理器--》正则表达提取器
十三、跨越线程传值
变量作用域局限于当前线程组,其他线程组不可以直接调用。可以将请求A中提取的结果导出到公共空间(可以被不同线程组共享),请求B再从公开空间调用该变量,相当于全局变量。
步骤:请求-》添加--》后置处理器--》BeanShell后置处理程序
十四、性能测试
模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否能够达标。
①高并发
JMeter 中内置了 定时器,可以实现时间模式相关的性能测试
需求1:同一时刻 100 个同学去访问学生管理系统的查询所有学院信息功能,统计高并发情况下平均响应时间以及错误率(高并发)
1、搭框架,测试计划,线程组,取样器,结果树(局限性),指定线程组的线程数属性值为 100
2、添加定时器 synchronizing timer(集合点组件)
3、运行并查看结果查看: 聚合报告组件,可以对结果汇总分析
同步定时器步骤:请求--》添加--》定时器--》synchronizing timer
聚合报告步骤:线程--》添加--》监听器--》聚合报告
②高频率
需求2:一个用户以20QPS(== 20次/s)的频率访问学生管理系统服务器,持续15秒,统计服务器的平均响应时间
QPS:Query per Seconds 每秒查询数(查询率)每秒访问多少次服务器
1、搭框架,测试计划,线程组,取样器,聚合报告,根据题干计算数据:循环次数=访问频率*持续时间
2、添加QPS访问频率控制的相关组件:每分钟访问次数=访问频率*60
常数吞吐量定时器步骤:请求--》添加--》定时器--》Constant Throughput Timer
③分布式
多台机协作,以集群的方式完成测试任务,可以提高测试效率。
角色划分:
控制机 = 负责任务分配
执行机 = 负责任务实现
工作流程:
1、控制机需要制定测试任务,并下发到执行机
2、执行机执行任务并将结果返回个控制机
3、控制机做结果汇总
十五、接口功能测试
1、制定测试计划,分配任务
2、从API 文档中提取接口清单: 对 API 文档简化提高测试效率,接口清单就是对 API 文档简化压,主要提取三要素
3、设计测试用例并参数化覆盖测试用例
4、编写脚本实现,并导入设计的测试数据
5、测试结果汇总,BUG提交