JMeter01--性能测试前期了解

如何掌握一门技术 3W1H

What 是什么 核心概念
字典:用来保存一对或多对数据的载体、容器、数据结构
{"one":1,"two":2}
键值对方式呈现,键是唯一的
key - value
Why 优秀,好处
查找表,适合快速查找
根据唯一的key能够快速找到所需的值
Where 在哪用 应用场合
面试时会提问遇到某问题该如何解决
程序中为了存储大量数据, 并且便于后续查找数据时使用
How 如何使用
使用步骤、注意事项 -- 最好结合项目描述
创建、添加元素、查询、删除、修改、遍历、拷贝.....
比如:Python使用requests库访问接口时
使用 data = {'city':'北京','key':mykey} 存储请求参数

企业招聘需求要点

精通常用测试方法,编写测试用例方法
熟悉至少一种主流的数据库,例如MySQL,熟练使用SQL语句进行增删改查等操作
熟悉TCP/IP协议,熟悉HTTP、HTTPS常用协议
熟练使用linux操作系统,查看系统日志,搭建测试环境等
熟悉主流的性能测试工具,例如JMeter等
熟悉主流的接口测试工具,例如Postman、JMeter、Fiddler等
熟悉常用的中间件,例如Tomcat
熟悉Python编程语言
善于发现性能瓶颈,并给出指导意见,协助完成性能调优
有大型网站性能测试的经验

软件工程

需求分析 --->系统分析与设计---> 开发 ---> 测试 ---> 实施
需求分析师 分析师、架构师 程序员 测试人员 实施团队
需求规格说明书 设计文档(接口文档) 代码实现 计划 用例 功能 性能 安全

对比功能测试和性能测试

功能测试:测试产品的功能是否满足功能需求
ATM取款是否成功或者转账是否成功 -- 一个用户的正常使用
性能测试:测试产品的性能是否满足性能需求
ATM耗时30分钟,10万人同时转账,系统崩溃属于性能问题
结论:性能测试基于功能,其要求又高于功能

测试基本流程

功能测试 --- 安全测试 ---性能测试

不同的就业方向

功能测试:手工、自动化测试(代码要求略高)

性能测试:基本只能自动化 使用工具模拟大量用户(虚拟用户)

​ 重点关注:业务关系、网络协议、脚本的增强

​ 涉及范围比较广泛:硬件、操作系统、网络、服务器、数据库、软件架构、算法实现

手机测试:手工、自动化、功能、性能

接口测试:业务、接口文档、协议、工具、功能、性能、安全

那些行业和产品需要性能测试

对性能要求较高的行业:银行、金融、证券、通讯、保险、互联网应用、企业级应用
共同特点:用户量大,数据量大,业务繁杂,访问频繁,要求稳定性高、响应要快

软件测试分类

按照测试内容分类:

​ 功能测试:业务流程是否正常实现

​ 性能测试:关注各种性能指标是否符合预期

​ 负载测试、压力测试、性能测试、大数量测试、可靠性测试、并发测试等

​ 安全测试:渗透测试,由网络安全工程师参与,模拟各种"注入"

​ 其它:易用性测试、安装测试、恢复测试、兼容性测试、文档测试等

按照测试方法分类:

​ 白盒测试、黑盒测试、灰盒测试

按照程序运行状态分类:

​ 静态测试、动态测试

按照测试阶段分类:

​ 单元测试、集成测试、系统测试、验收测试、回归测试等

性能

是对计算机系统或子系统执行其功能的能力的度量。
例如:响应时间、吞吐能力、事务处理数等。

什么是性能测试

通过模拟真实的生产环境,制定性能测试计划,使用压测工具模拟不同用户发起不同的压力访问被测系统,根据需求和计划中的性能指标分析是否满足性能的需求
关键词:需求 计划 环境 工具 执行 结果 分析 报告

性能测试的目的

目的是验证软件系统是否能够达到用户提出的性能要求,同时发现软件系统中存在的性能瓶颈,提供系统性能验收测试报告,优化软件,最终起到优化系统的目的

主要包括以下几个点:
​ 评估系统的能力
​ 识别体系中的弱点
​ 系统调优
​ 验证稳定性和可靠性

性能测试的价值

保证系统的性能,面临着多用户,海量数据,多任务,稳定性高,高强度,高并发,高可靠性等需求,找出性能瓶颈,提供良好的体验

中国铁路客户服务中心网站12306

12306已经是世界上规模最大的实时交易系统之一,到2020年中国每年中国的铁路每年输送人口高达30亿人往返,而在春节期间就有13亿人通过铁路交通往返全国各地,可想而知铁路购票网站压力巨大

性能测试应用场景

用户量大,使用频繁,面临大数据,重要的业务功能
快增长模式:用户量爆发增涨,比如:登录、购票、抢红包、下订单、获取验证码.....
慢增长模式:用户量逐渐增加、产品推销
总结:大数据时代,需要关注性能

时间配比

功能测试 : 性能测试 = 大约3:1

被测系统的组成

被测系统由应用服务器和数据库服务器组成

影响性能的因素

硬件:CPU、内存、硬盘……
操作系统:并发时缓存大小,缓存交换任务优先级
网络:公共网络延迟、服务器本地网络速度、带宽、吞吐量
中间件、Web服务器
数据库服务器:索引设计等因素
客户端:用户数和类型、活动频率、思考时间、访问数、点击数
编程语言、程序实现方式、算法、应用体系架构设计

性能测试内容

性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样

中国软件评测中心将性能测试概括为三个方面:

​ 应用在客户端性能的测试

​ 应用在网络上的性能测试

​ 应用在服务器端性能测试

通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测

客户端

应用在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。

它主要包括并发测试、疲劳强度测试、大数据量测试和速度测试等,其中并发测试是重点

网络端

应用在网络上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控网络应用性能分析网络预测

服务端

对于应用在服务器上性能的测试,可以采用工具监控,也可以使用系统本身的监控命令,例如可以使用Top命令监控资源使用情况
实施测试的目的是实现服务器设备服务器操作系统数据库系统、应用在服务器上性能的全面监控

性能测试结果标准

多 ---- 支持用户多
快 ---- 响应速度快
好 ---- 稳定性好
省 ---- 节省系统资源

从多个视角考虑性能测试指标

用户视角:用户数量、响应时间

​ 软件对用户操作的响应时间:按钮、指令、链接

​ 性能测试指标:响应时间(平均响应时间)

管理员视角:资源占用率、并发用户数、业务量、稳定性时间、是否有扩展性、瓶颈在哪里等。

​ 服务器的资源使用情况

​ 应用服务器和数据库的资源使用

​ 系统能否实现扩展

​ 系统性能可能的瓶颈在哪里

​ 更换那些设备能够提高性能

​ 最多支持多少用户的访问

​ 系统容量:系统最大的业务处理量

​ 系统稳定性:系统能否支持长时间连续的业务访问

开发视角:算法、架构、数据库设计、内存使用是否合理、是否有资源征用等问题。

​ 系统架构:架构设计是否合理

​ 数据库设计:数据库设计是否存在问题

​ 代码是否存在性能方面的问题

​ 系统中是否有不合理的内存使用方式

​ 是否存在不合理的线程同步方式

​ 是否存在不合理的资源竞争

衡量性能的指标

支持用户量、并发量、数据量多的

响应时间、请求响应、事务响应快的

稳定性、长时间稳定运行好的

节省系统资源、资源使用率要合理省的

常见的性能指标

平均事务响应时间、TPS每秒事务数、最大并发用户数、系统资源使用率

响应时间

对于一般的Web系统,普遍遵循"258"原则
2秒内、5秒内、8秒内

用户数的概念

注册用户数

系统中注册的账户数,数据库中用户的记录条数

表中的每一行,对应一条账户信息,比如用户名,密码

比如:全公司10000名员工,至少存在10000条账户信息

在线用户数

某个时间内对系统进行访问的用户数

比如:1000人使用各自的账号登陆系统并使用

并发用户数

几乎同一时刻向系统提交请求的用户数

规律是一般最多不超过在线用户数的10%

比如:目前最多形成100用户的并发量(严格的并发量)
平时系统中一般最多测试到1000~2000的并发量
用途指定测试计划、面试时作为参考

性能测试之前要搭建好测试环境,并做好系统备份

一般在项目文档中有所体现

硬件:主机、CPU、内存、磁盘、网络等情况

操作系统:Linux、Windows

中间件:比如Tomcat产品部署和设置

应用程序:部署Web应用、手机app

数据库:模拟海量数据满足增删改查等操作

网络:网络传输可能存在延迟

通过linux系统配置,通过注入方式模拟网络延迟

使用Fiddler进行弱网模拟等

测试机环境和被测系统

​ 客户端 服务器

​ JMeter Web服务器、数据库服务器

posted @ 2021-12-03 09:42  暄总-tester  阅读(208)  评论(0)    收藏  举报