性能测试遍布在生活中的各个地方,所有的项目都要或多或少都要进行性能测试 通过特定方式,对被测系统按照一定策略施加压力,获取系统响应时间、TPS(TransactionPerSecond)、吞吐量、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。 特定方式:软件性能来讲 --使用jmeter给服务器产生压力 移到策略:电商秒杀(多人同时操作) 论坛浏览(在线用户多) 简单来讲:大数据量的测试() 性能测试一般包含3个方面:l 应用在客户端性能的测试: pc端软件:内存占用,是否有卡顿,引起电脑发热 手机app:耗电,占用内存,流量,卡顿 网站:图片加载速度,js性能,数据解析速度 小程序 应用在网络上性能的测试l: 公司的网络出现性能问题,一般运维解决和测试,花钱(中小公司都会使用云服务器,阿里云、腾讯云、华为云 等) 应用在服务器端性能的测试: 测试工程师必须要做的,模拟大量用户请求向服务器施加压力 性能测试目的:l 1.客户有明确要求,如:系统要求同时满足100用户登陆,平均每个用户登陆时间不能超过5秒l 2.考察目前系统性能(容量测试),需要对系统做出分析,找出系统的压力点l 3.找出系统性能瓶颈,需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试l 4.了解系统在长时间的压力下性能状况(强度测试) 提前做强度测试 环境问题:被测试软件的环境 (jdk1.8以上+tomcat9.0左右+MySQL5.7+centos7) 数据库作为独立数据库 tomcat/web;ogic/jboss/jetty web应用服务器/web服务器 ngix+redis (php5.3+apache2.3+mysql5.7) 硬件环境:服务器(购置、云服务器) 一般公司的环境类型: 开发环境:开发人员调试代码用的,经常项目跑不起来,各种问题(项目最新代码都在这里) 测试环境:测试人员进行系统测试的环境,代码比较新 项目下一个发布版本 版本验证环境/预发布环境:和线上环境的代码一致(用途:线上问题的跟踪) 线上环境/生产环境:是普通用户使用的环境,公司用来盈利的环境(代码最老的) uat环境:验收测试环境,主要面向要交付的人员进行验证测试。
pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。
test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。
dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大 性能测试环境:l 硬件环境:被测服务器硬件配置,用于加压客户端的机子配置,CPU内存等l 要求:被测服务器硬件配置要求必须和线上环境硬件类型一致,但配置可以等比例缩小 线上环境:dell服务器R240 256G金斯顿***内存 32TB西部数据盘 测试环境:dell服务器R240 32G金斯顿***内存 4TB西部数据盘 加压客户端的机器配置:普通的PC机(16G内存、1T固态硬盘) 软件环境:被测系统的架构,前端、中间件、服务器(这里指运行系统软件服务器,如tomcat)、数据库、测试环境部署信息以及性能测试工具信息。 要求:保证软件的版本和生产环境一致,且配置的参数尽量保证一致 线上环境:tomcat9.0.342 jdk 1.9.11 mysql 5.7.64 测试环境:tomcat9.0.342 jdk1.9.11 mysql5.7.64 网络环境:找出系统性能瓶颈可以在广域网环境进行,其它性能测试可以在局域网进行,排除网络干扰 局域网环境下进行性能测试,由于网络质量非常好,出现性能问题可以排除是网络问题 真实网络环境下 也需要进行一次性能测试,查看整体的性能指标是否合格 性能测试注意事项: 1.修改性能测试的bug会有比较大的概率引起功能出现错误(找到了性能的bug,开发说修改代码解决了,性能回归的时候,性能没问题了,此时一定要做一轮软件基本功能测试) 2.性能测试要在功能测试稳定的情况下进行(系统测试后期开展) 3.性能测试开始的时候,会组建一个性能优化团队(测试工程师、核心开发、DBA(数据库管理员)、运维) 性能测试流程: 两个阶段做性能测试: 1. 接口开发完毕后,通知测试部门进行单接口压力测试(联调的时候20%几率 2. 系统测试中后期,系统的功能稳定后,做的针对业务的性能测试(100%要做 熟悉需求文档,提取出与性能有关系的需求(项目管理员直接提性能测试需求) 编写性能测试计划 设计性能测试用户场景 比如:100个用户,2秒钟之内登录完成 制作与调试性能测试脚本 (jmeter登录/发帖) 在性能测试工具中根据设计的用户场景进行 用户场景配置 执行性能测试,在测试过程中,收集性能测试指标数据 把性能测试指标数据做出一份性能测试报告 根据测试报告的结果进行系统调优
|