软件测试知识持续更新中

    • 性能测试常见问题
      • 简述性能测试流程
      • 如何确定系统最大负载?
      • 你们系统哪些地方(哪些功能)做了性能测试?
      • 你们的并发用户数是怎么确定的?
      • 你们性能测试什么时间执行?
      • 怎么分析性能测试结果?
      • think_time 的作用是什么?
      • 在确定性能测试结果可信后,如果发现以下问题,按下面提供的思路来定位问题
        • 问题一:响应时间不达标
        • 问题二:服务器 CPU 指标异常
        • 问题三:内存溢出,进程消失
        • 问题五:程序在多用户运行时严重超时,甚至提示连不上服务器。
        • 问题六:如何识别系统瓶颈?
        • 常见的施压模型有哪几种?
        • 性能测试中可能会遇到哪些问题
  • 附录
    • Mock 接口
    • Docker 基础命令

性能测试常见问题

简述性能测试流程

1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为 100%,TOP99%是 5 秒,最大并发用户为 1000人,CPU 和内存的使用率在 70%以下
2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
3.编写测试用例
4.搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控数据
8.分析测试结果,收集相关的日志提单给开发
9.性能测试回归
10.编写测试报告

如何确定系统最大负载?

通过负载测试,不断增加并发,随着并发数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。Jmeter 中可以用 rps 定时器或者阶梯加压线程组。

你们系统哪些地方(哪些功能)做了性能测试?

选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单

你们的并发用户数是怎么确定的?

1)会先上线一段时间,根据收集到的用户访问数据进行预估
2)根据需求来确定(使用高峰时间段,注册用户数,单次响应时间等
你们性能测试在什么环境执行?
搭建一套独立的性能测试环境进行测试

你们性能测试什么时间执行?

基准测试:功能测试之后,系统比较稳定的时候再做。
负载测试:夜深人静,系统没人用的时候

怎么分析性能测试结果?

首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试

think_time 的作用是什么?

在业务基准测试中模拟用户的思考时间

在确定性能测试结果可信后,如果发现以下问题,按下面提供的思路来定位问题

问题一:响应时间不达标

查看事务所消耗的时间主要在网络传输还是服务器,如果是网络,就结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,如果存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;如果不存在瓶颈,那么,可能是网路不稳定导致。如果主要时间是消耗在服务器上,就要分别查看 web 服务器和数据库服务器的 CPU,内存的使用率是否过高,因为过高的 CPU,内存必定会造成响应时间过长,如果是 web服务器的问题,就把 web 服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。

问题二:服务器 CPU 指标异常

1:关注 cpu 利用率和负载情况,如果利用率过低负载过高,那么可能是进程队列过多,造成了阻塞
2:关注上下文切换,如果主动切换过多,那么可能是内存/IO 瓶颈;如果被动切换过多,那么可能时间片不够,可以考虑调整进程优先级来增加时间片

问题三:内存溢出,进程消失

1:观察堆内存的年轻代与老年代空间分配是否合理,调整内存参数
2:swap 空间是否不足,触发了 oomkiller

问题五:程序在多用户运行时严重超时,甚至提示连不上服务器。

程序可能是单线程处理机制,后续的线程全部在排队等待

问题六:如何识别系统瓶颈?

1:随着负载的增加,吞吐量是否能持续稳定的上升,找到吞吐量下滑的那个点
2:随着负载的增加,响应时间是否开始变长,找到响应时间突然变长的那个点
3:随着负载的增加,是否开始出现错误

常见的施压模型有哪几种?

1、并发模式(虚拟用户模式)
并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数,可以使用该模式设置目标并发,也就是 jmeter 工具里面的线程数
2、RPS 模式(吞吐量模式)
RPS(Requests Per Second)是指每秒请求数。RPS 模式即“吞吐量模式”,通过设置每秒发出的请求数,从服务端的角度出发,直接衡量系统的吞吐能力。

性能测试中可能会遇到哪些问题

TPS 上不去,波动大:调整 jvm 参数,可以定位线程问题
cpu 利用率偏低:定位上下文切换,看 cpu 在做什么
连接拒绝,连接超时:定位 tomcat 连接数是否偏低,超时时间是否偏低
内存溢出,进程卡死:fullgc 过于频繁,线程长时间暂停
进程消失:swap 空间不足,进程被系统杀死

附录

Mock 接口

下面两个 mock 接口可以直接发起请求,供大家练习表达式
https://easy-mock.com/mock/5b88b27476b79510db917603/example/query1
https://easy-mock.com/mock/5b88b27476b79510db917603/example/query2

Docker 基础命令

sudo service docker start 启动 docker
sudo service docker stop 停止 docker
sudo docker images 查看所有镜像
docker rmi 删除 images
docker rmi -f {TAG} 根据 tag 删除 images
docker rmi $(docker images -q)删除全部 image
docker rmi $(docker images | grep “^” | awk “{print $3}”) 删除 untagged
images,也就是那些 id 为的 image
sudo docker ps -a 查看所有容器
docker stop CONTAINER ID 停用容器
docker rm CONTAINER ID 删除容器
docker stop $(docker ps -a -q) 停用所有容器
docker rm $(docker ps -a -q) 删除所有容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq) 停用并删除所有容器
docker pull {镜像名称:tag} 拖镜像
docker run -d -p {映射端口}:{本地端口} --name{自定义名称} {镜像名称:tag 标签} 运行镜像
docker exec -it {container names} bash 进入容器
sudo docker login --username={阿里云用户名} {远程仓库名称} 登录阿里云远程仓库
sudo docker tag [ImageId] {远程仓库名称}:[TAG] 修改镜像名称
sudo docker push registry.cn-hangzhou.aliyuncs.com/msj:[TAG] 上传镜像到阿里云远程仓库

软件测试入门知识,jmeter系统基础课程———带你由浅入深学性能(完)相关推荐

  1. 数控入门知识,零基础的看过来

    数控入门知识,零基础的看过来 人生最可贵的是两个词,一个是认真,一个是坚持,认真的人改变了自己,坚持的改变了命运,有些事情不是因为看到了希望才去坚持的,而是坚持了才有希望. 数控编程: 数控加工程序编 ...

  2. 计算机网络知识英语,计算机网络基础课程中英文简介.DOC

    计算机网络基础课程中英文简介 <计算机应用基础>课程中英文简介 Fundamentals of Computer Application 课程代码:070014ACourse Code:0 ...

  3. android系统知识,Android系统基础知识百科

    Android系统基础知识百科 2015-12-16 17:58:31 954浏览 Android系统作为一款功能强大的移动计算平台,在保持开放性的同时,必须提供强健的安全保障.Android的系统安 ...

  4. 基础课程《沉积岩岩石学》及《构造地质学》笔记

    2021年12月7日-11日集中学习了<沉积岩岩石学>和<构造地质学>两门基础课程.相对前面的两门课,这两门相对比较深入到细分领域.这两门课中需要记忆的基础概念相对没有那么多, ...

  5. 测牛学堂:软件测试入门学习之计算机基础知识总结(二)

    软件的架构分类 软件架构分类可以分为BS结构和CS结构 BS结构 Browser Server 就是浏览器-服务器,所有的网站,都是BS结构 BS结构优点: ●分布性强,客户端零维护.只需有网络.浏览 ...

  6. Python基础入门知识实例【基础算法】

    基础知识很简单却非常重要,有兴趣的伙伴可以看我以前的两篇基础文章: Python基础知识汇总https://blog.csdn.net/weixin_41896770/article/details/ ...

  7. 软件测试入门知识——学习笔记

    对软件测试的粗浅认知 个人简单的认知,软件测试是为了保证软件的质量而采取的措施. 初识软件测试 本人实际从事后端软件开发工作有一年多的时间,由于最近一直待在运维的项目中,对软件测试产生了兴趣,便踏上了 ...

  8. 软件测试入门笔记(测试基础)by.肖洪福

    第一章 测试基础 1. 什么是软件测试: 利用手工或自动化,按照测试方案对系统执行测试用例的过程 两个依据(需求.测试用例),两个方法(手工.自动),一个对比(预期结果和实际结果的对比) 软件缺陷(不 ...

  9. python入门知识大全_python基础知识有哪些

    Python基础知识:1.引用和对象:2.可变数据类型和不可变数据类型:3.引用传递和值传递:4.深拷贝和浅拷贝:5.基本数据类型:6.关键字.标识符和内置函数:7.算术.赋值运算符等等. Pytho ...

最新文章

  1. 日期NSDate的使用
  2. noip2014滚粗记
  3. xay loves count 枚举-复杂度-顺序无关-选择
  4. 《gcc五分钟系列》第六节:编译期符号检查
  5. centos php 开启socket,centos下phpsocket连接,该如何解决
  6. 使用gradle多渠道打包
  7. 调了 好几天的问题 treeview 的js 处理复选框之间的关系,选中子框父框自动选中,单独执行 没问题 放到框架页里 就有问题...
  8. 顺序写磁盘比随机写内存_深入理解 linux磁盘顺序写、随机写
  9. Oracle 实验4 更新数据
  10. Java学习笔记之方法
  11. 六维图见过么?Python 画出来了!
  12. 导致页面顶部空白一行解决方法
  13. nginx反向代理异常
  14. RHEL 6.2 Error: Cannot create GC thread. Out of system resources.
  15. 从源码分析Redis分布式锁的原子性保证
  16. 德米特里:玩世不恭大冒险 for Mac(冒险游戏)
  17. pycharm远程操作linux进行开发
  18. MT6797处理器怎么样?Helio X20处理器资料介绍
  19. 互联网晚报 | 周杰伦起诉网易不正当竞争案庭审结束;特斯拉中国工厂普通工人月薪1万块;SpaceX“星舰”发射计划推迟...
  20. 汉字对应的unicode编码

热门文章

  1. html,css,js写消灭小星星游戏
  2. 目前,目标跟踪技术主要应用于以下领域: 以及各种跟踪算法的简介
  3. 吃鸡神曲计算机谱子,老年乐队自制乐器激情演奏“吃鸡战歌” :成员平均年龄70岁...
  4. z7 mini Android8.1,Z7 mini(支持电信4G版本)
  5. JS省市联动 需要引用JQUERY包
  6. 数据挖掘 知识发现过程与应用结构
  7. echarts 折线图 无数据时连接线段
  8. PAT(A) - 1141. PAT Ranking of Institutions (25)
  9. java全景图片生成_[Java教程]使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果...
  10. python - 输出列表自动对齐(支持中英文混合)