性能测试计划怎么编写

news2025/2/23 23:21:43

一.简介

简介部分就不用过多描述了,无非项目的背景,进行此次性能测试的原因,以及性能测试覆盖的范围等等,几乎所有项目文档都在开端对项目进行简单的阐述。

二.性能测试需求

寻找的被测试对象和压力点

要测试的对象不是凭空想象出来,而是经过分析与系统数据收集得到。下取几个典型的压力点

登录:对于一般的系统来说,登录是用户操作系统的前提,如果用户根本就登录不了,那么其它功能将毫无用处。例如网游戏,开新服的时候,玩家挤破了脑袋只为登录。

查询:查询一般比较消耗系统和数据库资源。搜索引擎的查询功能就是典型,如果你在输入框内输入内容,很久就得不到结果。我想被称为“互联网入口”的搜索引擎就不会存在。

交易:对于一些电子商务系统来说,交易过程的性能要求是很高的,如果交易过程消耗用户很长时间的话。我宁愿去超市买东西了。当然,除了交易速度外,对交易的成功率要求也是非常高的。不然,造成的损失也是不可估量的。

被测的系统应该是最重要的最基本的功能,也是用户使用最频繁的功能。

一般的性能要求包括:

系统容量:系统最大容纳多少个用户注册。

访问数:同时访问系统的用户数。

并发数:一个操作同时执行的并发数目,一个系统中应该有不同操作的并发数的组合(一般是有权限进行操作的用户)。

系统的最大用户数与最佳用户数:系统在承受的最大并发用户数量,系统在最佳状态下承受的并发用户数据。

响应时间:用户提交一个操作到得到响应的时间间隔。

吞吐率:系统每秒钟处理的TPS

性能测试关键的一个因素就是压力,性能是在系统设计满足的最大压力下的性能。并发数要不小于系统正常运行的峰值,数据总量不小于系统正常运行3个月的数据量。

在描述并发用户数目时,总是会带有相应的时间段限制。系统的性能指标实质上应当使用单位时间内系统处理请求的个数以及请求响应时间描述。单位时间内能处理的请求个数就是系统的业务吞吐量。虚拟并发用户的数量可以使用如下的公式换算: (真实用户数×每个真实用户请求数)/(总请求响应时间+真实用户总思考时间)=(虚拟用户数×每用户请求个数)/(总请求响应时间+虚拟用户总思考时间)=吞吐量。

三.测试环境

这里的测试环境主要指的软件硬件环境和网络环境。

笔者认为性能测试最好在一个独立的环境内进行,这样不会受到外界的干扰,能够保证测试的数据是独立有效的。如果现你对某个已经上线的网站进行压力测试,那么你得到的数据不是独立的,因为你在做压力测试的时候,其它散户也在访问系统。

软件环境:

这里的软件环境主要指项目运行的环境,比如采用什么样的操作系统、中间件、和数据库。

硬件环境:

这里的硬件环境除了主要包括主机内部部件,cpu、内存、磁盘以及主板、网卡等,传输介质和路由器也应该考虑在内,

网络环境:

网络环境除了考虑测试机与被系统服务器在一个局域网中进行,还应该保证这个网络的独立性。如果在在性能测试的过程中,其它机子也在消耗着路由器资源。那么路由器也会影响到数据库的传输速度。

四.数据准备

在很多时候,我们是要准备测试数据的,例如系统不允许相同用户的重复登录,那么必须要生成合法的用户数据。有时要对系统进行查询测试,只有在系统有一定数据量进才能验证出系统的真实性能。一个数据库中有两条数据和有两千万条数据,同相一条查询操作,对系统造成的压力是完全不一样的。

系统所需数据的分析可以参考以下方式:

历史数据分析有助于数据量级的确定。从历史数据入手,找出高峰期数据量。

从其他相似或者相同系统入手,进行数据分析,找出高峰期数据量。

无历史或者相关系统可以参考的时候,就要对系统的性能数据进行估算,包含系统容量,并发数等数据,估算以后给相关人员进行评审或者修订以后,按照大家同意的性能指标进行测试。

…………

测试数据最好和真实数据相同,如果能够获得真实系统运行3个月的数据,我们就可以在此基础上进行性能测试。

关于数据的生成,我们可以祝一个工具完成,如数据库数据生成工具,大小文件生成工具等。

五.测试工具

前面已经介绍如何分析需求,需求确定下来之后,我们可以考虑引入什么样的工具适合性能需求。

当然,在引入工具的时候除了考虑可以是否满足需求,还应该考虑工具的成本,这不单指工具的购买成本,还有测试人员对工具的学习成本。

关于测试工具的选择,后面会单独有一章节介绍,这里就不细说了。

如果你选择的性能测试工具不是足够的强大的话,你可能还需要其它的辅助的工具。如果jmeter利用badboy来录制脚本,更能提高脚本开发效率。在压力测试的过程中也可能需要性能计数器来记录软硬件的性能。如监控服务器cpu、内存的计数器,记录中间件日志的监控中工具,监控数据库性能的监控工具等。

六.测试策略

对于一个特定的业务系统,用户一般会分散在一天的各个时间段进行访问。在不同的时间段中,用户使用业务系统的频率不同,而系统的繁忙程度不同。在一些特定的条件下,可能出现短时间内用户集中访问某个业务系统的情况。例如对于公文处理子系统而言,可能就存在短时间内大量用户查看并办理某条公文的情况。 在进行性能测试时,应当使用“考虑最坏情况的原则”。也就是应当在用户使用业务系统最频繁、对系统造成最大压力的情况下对系统的功能进行测试,判断各功能和页面是否能够满足性能的要求,系统的响应时间是否过长。

另一方面,系统性能的验证必须做到“覆盖全面”。虽然系统中各个功能的使用频率并不相同,一些功能的使用频率相对于其他功能来说比较低,但是在进行性能测试和优化时,不能忽略这些功能,编制测试用例时也不能仅仅选择最常用功能。例如可能所有的用户都会访问我的通知列表,但是一般只有5%的用户会使用通过系统设置模块查找某个用户的信息;但是在测试时,我们并不能因为查看用户信息功能的使用频率相对较少,而忽略掉这项功能的测试。所以,这里进行系统性能测试时,对于不同业务,用户的访问比例应该做一个合理分配。

在测试策略上,我们还应该考虑,同一个系统在不同硬件环境下的性能表现。从而让系统满足需求的情况下,硬件配置也能达到一个最佳的状态。过份的增加硬件来满足需求也是一种浪费。再说增加硬件设备不是能解决所有性能问题的。

七.人力与时间安排

最后一条,就是要根据项目的进度要求以及规模,来进行人力与时间的安排。对于大型的性能测试,项目前期的需求调研,环境的部署,工具的选购或开发,人员对测试工具的学习与使用,性能测试的后进行,后期数据的分析与调优。都需要人员安排的。有可以需要专业的,系统工程师、数据库工程师、软件开发工程师、网络工程师以及性能测试工程师的共同参与配合完成。不是一个性能测试人员就可以全部搞定的。

笔者听说,最牛x的性能测试,需要几个国家的十几个城市的性能测试团队同步时行。前期的准备工作就需要几个月的时间。如何把控性能测试的同步进行。后期测试数据的汇总与分析。是一个非常复杂的过程。这个例子有待考证,我想说明的是,对于大项目的性能测试,人员与时间安排也至关重要。

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1286034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯算法心得——想吃冰淇淋和蛋糕(dp)

大家好,我是晴天学长,dp题,怎么设计状态很重要,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .想吃冰淇淋和蛋糕 想吃冰淇淋与蛋糕 输入格式 第一行输入一个整数n。…

python文件操作知识

【一】操作流程: 打开文件,得到一个文件句柄(对象),赋给一个对象。通过文件句柄对文件进行操作。关闭文件。 【 二 】 使用方法 open(路径 文件名,读写模式) 如下: …

Netty02-基础概念

什么是netty ​ Netty是一个基于Java NIO的异步事件驱动网络应用程序框架。它提供了简单易用的API,用于快速开发可维护的高性能网络应用程序。Netty的设计目标是提供一种高度可扩展的、高性能的网络应用程序框架,使得开发人员能够轻松地构建各种类型的网…

unity | 动画模块之循环滚动选项框

一、作者的话 评论区有人问,有没有竖排循环轮播选项框,我就写了一个 二、效果动画 如果不是你们想要的,就省的你们继续往下看了 三、制作思路 把移动分成里面的方块,还有背景(父物体),方块自…

基于 springboot + vue 健身房管理系统 毕业设计-附源码

qq(2829419543)获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:springboot 前端:采用vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件&#xf…

AI交互数字人如何成为古镇文化传播者?

近日,南浔古镇出现了5位数字人,将古镇文化与数字人相结合,实现旅游营销的创新尝试。数字人不仅可以作为南浔古镇的品牌形象,还可以作为南浔古镇的文化传播者,化身AI交互数字人与游客互动交流,讲述南浔古镇的…

安全AI系统开发指南

执行摘要 本文件建议为使用人工智能(AI)的任何系统的提供商提供指导方针,无论这些系统是从头开始创建的,还是建立在他人提供的工具和服务之上的。实施这些指导方针将有助于提供商构建按预期运行、在需要时可用的人工智能系统&…

基因组注释流程

一边学习,一边总结,一边分享! 详细教程请访问: 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA … 本期教程文章 题目:Genomic insights into local adaptation and future climate-induced vu…

2023Q4 私有化版本发布,和鲸 ModelWhale 持续赋能大科研、高校教改的 AI for Science

作为数据科学多人协同平台,和鲸 ModelWhale 从一而终地为各级用户提供完备而周全的解决方案,覆盖数据研究、算法探索、模型调优、Python 案例教学等多个场景。特别地,如果对研究分析平台有更高的安全合规要求、希望兼容原有业务系统&#xff…

自定义构建jdk镜像

(1)准备jdk压缩包、创建Dockerfile文件 jdk压缩包、Dockerfile文件在同一目录,如下 Dockerfile文件内容如下 # 指定基础镜像 FROM centos:latest # 作者和电子邮件 MAINTAINER vinegar93 "vinegar93163.com" # 指定工作目录 WORK…

【JavaScript手撕代码】浅拷贝的五种实现

目录 Object.assign扩展运算符数组方法slice()concat 手写 Object.assign ES6提供的方法,接收多个参数,第一个参数是目标对象,后面的参数是源对象 ,这个API将源对象复制到目标对象上,但是注意: 若源对象和…

StarGAN 使用指南:一个模型实现多个域的迁移

StarGAN 使用指南 网络结构多数据集训练使用指南StarGAN v2 论文地址:https://arxiv.org/pdf/1711.09020.pdf 我们有猫的图片集、狗的图片集和兔子的图片集。 目标是让猫的图片看起来像狗的图片,狗的图片看起来像兔子的图片,兔子的图片看起…

CUDA简介——CUDA内存模式

1. 引言 前序博客: CUDA简介——基本概念CUDA简介——编程模式CUDA简介——For循环并行化CUDA简介——Grid和Block内Thread索引 CUDA内存模式,采用分层设计,是CUDA程序与正常C程序的最大不同之处: Thread-Memory Correspondenc…

Linux信息收集

Linux信息收集 本机基本信息 #管理员 $普通用户 之前表示登录的用户名称,之后表示主机名,再之后表示当前所在目录 / 表示根目录 ~表示当前用户家目录1、内核,操作系统和设备信息 uname -a 打印所有可用的系统信息 uname -r 内核版本 u…

每日一题 2477. 到达首都的最少油耗(中等,树)

去参加CCF软件大会,好多天没做每日一题了 我的思路: 看到题目是一个由叶子节点向根节点汇聚的过程,就想到拓扑排序每次移动都只将叶子节点向前移动一格,并删除它,此时移动的目标节点数量加一,并根据该叶子…

vue创建项目,使用可视化界面安装插件

安装项目: vue create vue-app 选择默认配置就行,也可以按需选择自定义配置 vue ui通过可视化管理项目 通过可视化安装全家桶插件

文件重命名:删除文件名中的空格,提高文件可读性和可管理性的方法

在计算机科学中,有效的文件管理对于提高工作效率和保持数据的一致性至关重要。工作中经常会遇到文件名中包含空格的情况,这不仅会使文件在某些情况下难以读取,而且可能导致管理上的困扰。在文件名中添加空格可能会使文件名变得模糊和不明确&a…

批量创建/更新外协工序采购信息记录

批量创建/更新没有物料号的外协工序采购信息记录。 执行事务代码ZME1X_OP,下载模板。(此程序可同时用于外协工序的创建和修改)创建外协工序的时候如果是新建则不需要输入采购信息记录号,如果是要更新外协工序价格,则必须输入采购信息记录号。价格单位默认为‘1’,货币代码…

Flannel源码解析

Flannel源码解析 项目地址: https://github.com/flannel-io/flannel 更多文章访问 https://www.cyisme.top flannel中有三种工作模式: udp。 性能最低,利用tun/tap设备,通过udp封装ip包。中间需要经过多次内核态和用户态的切换。vxlan。 性能中等&…

JavaWeb(六)

一、Maven的常用命令 maven的常用命令有:compile(编译)、clean(清理)、test(测试)、package(打包)、install(安装)。 1.1、compile(编译) compile(编译)的作用有如下两点: 1、从阿里云下载编译需要的jar包,在本地仓库也能看到下载好的插件(远程仓库配置的是阿里…