# 性能测试篇
[TOC]
> ### 性能测试怎么做的?
参考答案:
1. 做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,打开系统首页,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过3秒,CPU和内存的使用率为70%以下。
2. 搭建性能测试环境,准备好性能测试数据。
3. 使用Jmeter开发优化脚本,包括:参数化,断言,关联等。
4. 设计性能测试场景,我们这个项目做了单用户单功能循环200次的基准测试,然后使用1500个用户,执行30分钟的负载测试,看系统有没有性能瓶颈;
5. 我们搭建了分布式压力测试环境进行测试,每台压力机并发500个用户,并监控linux服务器的CPU,内存,IO。
6. 分析性能测试结果,如果有性能瓶颈,收集相关的日志提单给开发修改。
7. 开发修改好后,回归性能测试,然后输出性能测试报告。
> ### 如何确定系统能够承载的最大用户数?
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。
> ### 你们系统哪些地方(哪些功能)做了性能测试?
我们选用了用户使用最频繁的功能来做性能测试,比如:登陆,打开系统首页,搜索,提交订单。
> ### 你们性能测试在哪里做的?
我们会搭建一套独立的性能测试环境进行测试。
> ### 你们性能测试什么时间做?
功能测试之后,系统比较稳定的时候再做。
> ### 怎样分析性能测试结果?
1. 查看聚合报告和服务器的资源使用图,检查响应时间,事务成功率,CPU,内存和IO使用率是否达到要求,如果出错率达到了总请求数的3%,我们会检查是什么原因导致的,修改好后,重新测试;
2. 如果出现了性能瓶颈,比如响应时间,或者CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致响应时间过长,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试。
> ### 如何判断网络是否存在瓶颈?
>
> 在性能测试结束之后,我们会根据性能测试的结果,查看在整个性能测试过程中,网络的吞吐量是多少,如果网络的吞吐量占到了服务器的70%以上,我们就认为网络存在瓶颈,通常会增加带宽或者压缩传输数据。
> ### 响应时间不达标
响应时间不达标的话,我们会根据性能测试结果先检查看下是否是服务器带宽存在问题,如果带宽存在瓶颈,则会考虑增加带宽或者压缩传输数据,如果带宽没有问题的话,我们会从服务器上导出日志,开发一起讨论分析是哪个地方导致响应时间过长,确定问题后,就提单给开发修复,修复好了就进行回归测试。
> ### CPU使用率不达标
CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致CPU使用率不达标,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试。
> ### 程序在单用户场景下运行成功,多用户运行则失败,提示连不上服务器。
原因:程序没有做多线程处理。
> ### 程序实现的功能是,随机给用户分配不同的任务,单用户运行时,能成功分配;多用户并发申请任务时,所有用户得到的任务都是一样的。
原因:程序存在线程同步的问题。
> ### 系统并发200个用户,服务器返回 http status-code = 500
原因:数据库连接没有来得及关闭,就有用户访问上来了,导致数据库崩溃 。这个就是数据库的链接这块开发没有处理好
> ### 你们的性能测试需求哪里来的?
参考答案:我们的需求文档上有的,不过有时候不太合理,我们可能需要和BA进行讨论。比如,我之前做了一个公司内部用的OA系统的性能测试时,要求并发用户200人,我们整个公司都没有100人,很明显,做200人并发是没有必要的,后来,我们只做了50人并发。
> ### 如何实现200用户的并发?
参考答案:在请求的前面添加集合点,设置并发用户数为200
> ### 什么情况下要做关联,关联是怎么做的?
参考答案:当发给服务器的请求数据需要依赖另一个请求返回的数据,就用关联。
> ### 有验证码的功能,怎么做性能测试?
参考答案:
1)、将验证码暂时屏蔽,完成性能测试后,再恢复。注意:屏蔽验证码是不会给性能测试的结果带来影响的。
2)、使用一个万能的验证码。
> ### 你们性能测试做的是前台还是后台?
参考答案:
我们做的是后台服务器的性能
> ### 性能测试指标有哪些?
平均事务响应时间,90%的事务响应时间,TPS,CPU、内存
> ### 你们项目最佳的并发用户数是多少?
参看答案:我们当时做到1500个并发用户的时候,查询功能的响应时间超过了性能指标2秒多,原因是有几个表的索引建得不合理导致的,重新建索引后,问题就解决了。我们当时做到1500并发用户后,就没再继续增加用户量了。
> ### 分布式环境怎么搭建?
分布式的环境搭建比较复杂,当时我也是根据自己的笔记来搭建的。具体的步骤不记得了,大概是要先修改配置文件,将所有需要使用到的压力机的IP地址添加进来,然后在压力机只需要开启服务,在主机的电脑就可以控制远程启动了
> ### 怎么监控服务器资源的
我们使用的是Nmon工具来监控服务器资源的,它能够将linux上一段时间的资源以文档的形式保存下来。
> ### Jmeter做性能测试的工作原理是什么?
Jmeter通过主机来控制各个压力机,并发大量用户,对服务器产生负载,从而实现性能测试。
> ### 服务器的配置是怎样的
CentOS、 6.8
CPU型号:英特尔 酷睿 i5
CPU核数:16核
内存:32G
- 总章
- Oracle数据库
- 常见的Linux命令
- 理论内容整理
- 给你如下功能怎么测试
- 支付怎么测试
- 购物车怎么测试?
- 搜索功能怎么测试?
- 文件上传功能怎么测试?
- 登录功能怎么测试?
- 还款功能怎么测试?
- 订单功能怎么测试?
- 自动化测试篇
- 必记代码
- 接口测试篇
- 性能测试篇
- app测试篇
- 面试篇
- 项目篇
- 职业素养篇
- 真实案列分析
- 如何预防冷场
- redis
- 琪琪
- 禅道搭建手册
- 禅道搭建手册1
- 禅道的基本使用
- 基于Python3_Selenium的自动化
- Python3安装
- Python3基础
- 列表_元组_集合
- 函数_模块_类
- Python代码
- selenium环境
- selenium定位方式
- Selenium常见操作
- toast读取代码
- 添加用户代码
- 隐式等待与显式等待
- 循环添加用户
- 测试用例练习
- 测试用例优化
- Fiddler抓包工具
- 安装
- Fiddler使用
- 接口测试
- Jmeter的安装
- Jmeter使用
- jmeter+ant+jenkins接口自动化测试框架
- 接口安全测试
- 性能测试
- Nmon监控LInux系统
- Jmeter分布式
- 性能测试-具体案例
- Monkey
- 安装1
- Monkey使用
- appium自动化
- appium的安装
- appium基本使用
- 真机USB连接
- 问题排查
- Jenkins持续集成
- Jenkins安装
- Jenkins配置任务
- Python扩展内容
- Python连接数据库
- Python进行接口测试
- 开启服务