13年测试老鸟总结,真实性能测试如何做?性能测试完整流程+细节...

news2025/1/24 22:48:53

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

性能测试什么时候开始?

一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始:性能目标制定、场景获取、环境申请等。

1、制定性能测试目标

在特定的并发用户数下测试特定场景的响应时间;
在一定的响应时间的要求下来测试特定场景的最大并发用户数;
测试特定场景的TPS;

1)线上系统

对线上系统的日志进行分析以获取到这个系统每个功能的访问情况、最大的并发用户量、平均/最大/最小响应时间。

然后通过每日的增长趋势来确定最大的并发用户数、响应时间参考日志分析的结果,即与平均响应时间相当。

2)全新项目

开发过程相关文档:
项目开发计划书、需求规格说明书、设计说明书等文档都可能涉及性能测试的要求。通过收集这些材料,可以找到初步的性能需求。但这些性能测试需求往往不够准确,需要性能测试人员进行专业的引导。

类似项目:
公司的其他产品或以往项目会累积出一些数据,可以作为参考。

用户使用模型:
分析用户使用模型是获取性能测试需求的有效手段,考虑哪些用户使用系统的哪些典型的业务,在什么时段有多少用户进行了什么功能的操作。

例如:
某OA系统每天早上8:00会有200个用户在10分钟内登录系统;

每天查询交易的高峰是在9:00——11:00和下午的14:00——16:00等,然后根据这个用户使用模型并结合80/20原则计算OA系统的登录以及交易查询业务的并发量。

80/20原则:
80/20原理就是系统在每个工作日有80%的业务是在20%的时间内集中完成,或者系统80%的用户会在20%的时间内集中进行应用操作。

举两个例子说明:

例1:
某网站每日的总访问人数为10万,其中浏览单品页占30%,搜索业务占20%,登录+购买业务占50%。

采用80~20原则,8小时的20%作为基准时间,计算各个业务的并发数。

搜索业务:(100000*20%*80%/8*3600*20%=2.78取整为3
浏览单品页:(100000*30%*80%/8*3600*20%=4.17取整为5
登录+购买:(100000*50%*80%/8*3600*20%=6.94取整为7

例2:
系统每年的业务集中在8个月完成,每个月平均有20个工作日,每个工作日8小时,按照80/20原则,即每天80%的业务在1.6小时完成。

去年全年处理业务约100万笔,其中15%的业务处理中每笔业务需对应用服务器提交7次请求,其中70%的业务处理中每笔业务需对应用服务器提交5次请求,剩余15%的业务处理中每笔业务需对应用服务器提交3次请求。

根据以往的统计结果,每年的业务增长量为15%,考虑到今后3年的业务发展需要,测试需按现有业务量的两倍进行请求数来计算系统应该达到的TPS。

每年的总请求数=(100*15%*7+100*70%*5+100*15%*3)*2=1000万
TPS=(10000000*80%)/(8*20*8*3600*20%)=8.68,取整即TPS=9

响应时间标准

2秒以内,用户感受良好
2~5秒,用户觉得可以接受
5~10秒,用户会觉得很烦躁,无法接收,会频繁刷新页面
10秒以上,用户完全无法接收,直接离开

2、性能测试场景获取

1)线上系统

单场景:

根据对线上系统的日志分析结果,访问量排在前面的功能、本次改动的以及可能会影响到的功能、和钱有关的功能。为保险起见最好再和开发确认一下会影响到的功能。

混合场景:

还是根据线上系统的日志分析结果,得到系统级别的最大并发数,再根据每日的增长趋势做一个增量从而得到最终的最大并发数。然后根据日志分析结果中的各个重要功能的占比数来进行用户分配。

稳定性场景:

确定好单场景和混合场景后,还应该考虑稳定性场景。其目的是测试系统是否有内存泄漏现象发生,同时也可以测试系统的平均无故障时间。

所以,可以用混合场景做长时间的稳定性测试。

2)全新项目

单场景:
重要、核心的功能
常用功能
业务流程复杂的功能
资源占用严重的功能(比如多表查询或向多张表中插入数据)

混合场景:
根据一定的比例把所有重要的功能都加入混合场景

稳定性场景:
可以考虑用混合场景做长时间的稳定性测试。

3、性能测试数据确定

性能测试中很重要的一点就是场景数据的设计。比如一个数据查询场景,如果该场景对应的数据库表只有10条数据,那么查询结果肯定相对较快。

但是,如果这个查询场景对应的数据库表有1000万条数据,那么查询结果肯定会比只有10条数据的查询结果要慢一些。如果性能测试不考虑数据量,那么性能测试的结果是不准确的,上线后由于未考虑数据量的因素而引发的性能问题几率会很大。

对于线上系统来说,各表的数据量可以根据线上系统的各表数据量以及增量来确定。而新系统需要根据开发文档以及和相关项目干系人(如:客户代表、项目经理、需求分析员、系统架构师以及产品经理一起调研和讨论来决定)

4、性能测试用例设计

1)单场景

场景描述:模拟用户进行登录操作
并发量:分别模拟并发用户数为1、10、50三种情况进行测试
压测时间:每次15分钟
数据量:MySQL的user表中有70万账户
集合点:不使用集合点

重点关注指标:响应时间、事物成功率、应用服务器资源使用情况(CPU、内存、IO)、MySQL数据库资源使用情况(CPU、内存、IO)、应用日志是否有死锁等错误、数据库日志是否有死锁等错误、JVM内存使用情况和GC情况

预期指标:响应时间在2秒内、事物成功率为100%、应用服务器和数据库服务器CPU使用率≤60%、没有内存泄漏、数据库死锁、线程死锁等现象

2)混合场景

混合场景不是把所有的测试场景糅合在一起形成一个大的场景,而应该先考虑不同的混合场景组合,如数据库查询操作的混合场景、数据库写操作的混合场景、数据库查询与写操作都包含的大混合场景。

如下:
场景描述:模拟系统不用用户进行数据库读写操作的混合场景,场景包括用户登录、广告词默认查询、新建广告组、广告词默认创建、广告审核、广告生效、广告词按价格排序。

并发量:总共模拟300个用户同时操作,其中登录操作占比20%、广告词默认查询占比25%、新建广告组占比15%、广告词默认创建8%、广告审核10%、广告生效15%、广告词按价格排序7%

压测时间:每次15分钟

数据量:MySQL的cpc表有150万条数据、plan表有10万条数据、group表有50万条数据、audit表有100万条数据,MongoDB的report表有1TB数据、user表有90万条数据。

集合点:不使用集合点

重点关注指标:响应时间、事物成功率、应用服务器资源使用情况(CPU、内存、IO)、MySQL数据库资源使用情况(CPU、内存、IO)、应用日志是否有死锁等错误、数据库日志是否有死锁等错误、JVM内存使用情况和GC情况

预期指标:登录、广告词默认查询、新建广告组等操作响应时间在2秒内,广告词默认创建、广告审核、广告生效、广告词按价格排序等操作响应时间在3秒内,事物成功率为100%、应用服务器和数据库服务器CPU使用率≤60%、没有内存泄漏、数据库死锁、线程死锁等现象

3)稳定性场景

场景描述:模拟系统不用用户进行数据库读写操作的混合场景,场景包括用户登录、广告词默认查询、新建广告组、广告词默认创建、广告审核、广告生效、广告词按价格排序。

并发量:总共模拟300个用户同时操作,其中登录操作占比20%、广告词默认查询占比25%、新建广告组占比15%、广告词默认创建8%、广告审核10%、广告生效15%、广告词按价格排序7%

压测时间:持续2*24小时

数据量:MySQL的cpc表有150万条数据、plan表有10万条数据、group表有50万条数据、audit表有100万条数据,MongoDB的report表有1TB数据、user表有90万条数据。

集合点:不使用集合点

重点关注指标:JVM内存使用情况和GC情况

预期指标:无内存泄漏现象或迹象发生

5、性能测试环境准备与搭建

性能测试环境包括软件环境、硬件环境和网络环境。这三大环境不仅是指应用服务器环境,还包括数据库服务器、缓存服务器、文件服务器以及其他中间应用服务器环境。

硬件环境包括:CPU、内存、磁盘等基本因素。

软件环境包括:操作系统版本号、配置,Linux磁盘分区、JDK版本、位数、厂商,中间件版本号、位数,数据库版本号、位数,以及这些软件的安装路径也最好与线上环境一致。配置文件包括JVM配置、中间件配置、数据库配置文件等。

网络环境包括:网络协议及网络带宽。

集群环境包括:应用相关服务器的负载均衡环境、数据库的热备或主从环境、集群环境等。

申请线下仿真测试环境的时候,应遵循以下原则:

1)硬件环境尽可能地保持与生产环境一致

2)如果是集群环境,测试环境就不可能申请到那么多台服务器,那么可以考虑申请3台与线上生产环境一致的机器来作为线下的性能测试机器。

在性能测试的过程中,可以分别测试单机、双机和三机负载均衡时候的性能表现,然后根据3种情况下性能表现计算出线上生产环境(比如说100台)进行负载均衡时的性能损耗率,从而较为真实的计算出线上100台机器进行负载均衡时候的性能指标。

3)如果数据库集群环境太庞大,比如数据库是8组32台,那么线下测试不会申请32台机器进行性能测试。一般这种情况只会申请一组数据库(一主三从)作为性能测试的数据库即可。

因为大型数据库的集群基本都是采用拆库分表策略,所以会导致数据库集群庞大。申请一组数据库机器就可以开展性能测试,只需要保证性能测试所用的用户数据都落在申请的这组数据库即可。

4)如果实在无法保证硬件环境与线上一致,那么只能按照低配置环境进行测试,如果低配置环境测出的结果能满足线上要求,那么线上高配置环境肯定也能满足既定的性能要求。

如果无法满足,则不建议做建模估算,因为如果CPU颗粒数、高速缓存、物理内存大小、磁盘转速不同,性能建模得出的性能结果也不够准确。如果在低配置的机器测试达不到要求,则要在测试报告中写明测试环境,并说明不能保证因为测试环境的提升而达到要求。

6、做脚本

7、跑场景

根据测试用例来跑测试场景。

8、做监控

在性能测试的过程中,先用命令来监控,发现有问题再连上工具进行监控。

9、分析调优

每一个调优后,配置信息及测试结果都需要详细的记录下来。

10、回归测试

回归测试后,全部的目标达成后编写性能测试报告并发送给项目组成员。

11、出图写测试报告

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

没有什么比拥有一个不屈不挠的精神更重要了。在挫折与纷争中,坚持自己的理想,永不言败,这才是真正的胜利者所应具备的品质。加油!

只要还有呼吸,就不能停止梦想的追求。不要怕失败,不要怨天尤人,勇往直前,相信未来,你会看到那道不可思议的彩虹!

不论前方多么坎坷,不论风雨多么凛冽,只要心怀梦想,追逐自己的信仰,勇往直前,就能跨越万难,创造美好未来!奋斗不止,成就更大!

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

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

相关文章

【HttpRunner】接口自动化测试框架

简介 2018年python开发者大会上,了解到HttpRuuner开源自动化测试框架,采用YAML/JSON格式管理用例,能录制和转换生成用例功能,充分做到用例与测试代码分离,相比excel维护测试场景数据更加简洁。在此,利用业…

傅里叶变换和其图像处理中的应用

以下部分文字资料整合于网络,本文仅供自己学习用! 一、为什么要在频域进行图像处理? 一些在空间域表述困难的增强任务,在频率域中变得非常普通 滤波在频率域更为直观,你想想嘛,所谓滤波,就是…

第 115 场 LeetCode 双周赛题解

A 上一个遍历的整数 模拟 class Solution { public:vector<int> lastVisitedIntegers(vector<string> &words) {vector<int> res;vector<int> li;for (int i 0, n words.size(); i < n;) {if (words[i] ! "prev")li.push_back(stoi…

数据结构与算法——线性查找法

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

冲刺十五届蓝桥杯P0005单词分析

文章目录 题目分析代码 题目 单词分析 分析 统计字符串中字母出现的次数&#xff0c;可以采用哈希表&#xff0c;代码采用的是数组来存储字符&#xff0c;将字符-97&#xff0c;得到对应的数组下标&#xff0c;将对应下标的数组&#xff1b;找到数组元素最大的下标&#xff…

微店店铺所有商品数据接口,微店整店商品数据接口,微店店铺商品数据接口,微店API接口

微店店铺所有商品数据接口是一种允许开发者在其应用程序中调用微店店铺所有商品数据的API接口。利用这一接口&#xff0c;开发者可以获取微店店铺的所有商品信息&#xff0c;包括商品名称、价格、介绍、图片等。 其主要用途是帮助开发者进行各种业务场景的构建&#xff0c;例如…

如果不封车,坚持冬天骑行应该注意些什么?

亲爱的骑行爱好者们&#xff0c;你们好&#xff01;随着秋天的脚步渐行渐远&#xff0c;冬天也不远了。对于热爱骑行的你们来说&#xff0c;秋天的骑行是一种享受&#xff0c;而冬天的骑行则是一种挑战。那么&#xff0c;如果你打算在秋天骑行不封车&#xff0c;坚持过冬天&…

小解C语言文件编译过程【linux】

小解C语言文件编译过程【linux】 库动态库静态库 C语言文件 程序编译过程整体预处理编译汇编链接动态链接静态链接两种方法对比 库 看到标题是文件编译过程 但是开头却是库&#xff0c;这可不是挂羊头卖狗肉&#xff0c;而是因为库也是代码不可缺少的一部分&#xff0c;并且在…

运维 | 如何查看端口或程序占用情况 | linux

运维 | 如何查看端口或程序占用情况 | linux 前言 本期主要介绍了 LINUX 中如何查看某个端口或程序的使用情况&#xff0c;希望对大家有所帮助。 快速使用 netstat 命令&#xff08;推荐&#xff09; netstat 命令可以显示网络连接、路由表和网络接口信息等。可以使用 net…

股票量化分析工具QTYX使用攻略——代号“飞龙在天”,狙击龙头股战法(更新2.7.1)...

搭建自己的量化系统 股票量化交易系统QTYX是一个即可以用于学习&#xff0c;也可以用于实战炒股分析的系统。 分享QTYX系统目的是提供给大家一个搭建量化系统的模版&#xff0c;最终帮助大家搭建属于自己的系统。因此我们提供源码&#xff0c;可以根据自己的风格二次开发。 关于…

芯片学习记录LM2596

LM2596 芯片介绍 LM2596 系列稳压器是为降压开关稳压器提供所有有效 功能的单片集成电路&#xff0c; 能够驱动 3A 的负载 &#xff0c; 并且拥有 出色的线路和负载调节性能。这些器件可提供 3.3V 、 5V、 12V 固定输出电压和可调节输出电压版本。 这类稳压器不仅需要很少的…

企业如何通过媒体宣传扩大自身影响力

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 企业可以通过媒体宣传来扩大自身的影响力。可以通过以下的方法。 1. 制定媒体宣传战略&#xff1a; - 首先&#xff0c;制定一份清晰的媒体宣传战略&#xff0c;明确您的宣传目标、目标…

Ubuntu:Arduino IDE 开发环境配置【保姆级】

物联网开发学习笔记——目录索引 本章主要介绍在Ubuntu系统搭建Arduino IDE 开发环境&#xff0c;windows系统请移步&#xff1a;Windows&#xff1a;Arduino IDE 开发环境配置【保姆级】 参考官网&#xff1a;Arduino - Home 有关更多详细信息&#xff0c;请参阅 Arduino …

SpringCloud-Stream

一、介绍 &#xff08;1&#xff09;提供统一接口操作不同厂商的消息队列组件&#xff0c;降低学习成本 &#xff08;2&#xff09;生产者和消费者只需操作binder对象即可与消息队列交互&#xff0c;生产者output&#xff0c;消费者input &#xff08;3&#xff09;核心概念&a…

RobotFramework用户关键字(一)

文章目录 一 用户关键字1. 创建用户关键字2. 用户关键字的使用3. 用户关键字参数4. 用户关键字返回参数 一 用户关键字 Robotframework是一个用python写的基于关键字驱动的自动化测试框架。既然是基于关键字驱动的&#xff0c;那么关键字的编写和使用就是平时工作的核心。这篇文…

单链表经典OJ题

目录 ​编辑 题目&#xff1a; 一、移除链表元素&#xff1a; 本质&#xff1a; 解题思路&#xff1a; 本题分为两种解法&#xff1a; 我们使用解法二&#xff1a; 注意事项&#xff1a; 完整代码&#xff1a; 题目&#xff1a; 一、移除链表元素&#xff1a; 本质&…

论文阅读:Segment Any Point Cloud Sequences by Distilling Vision Foundation Models

论文地址&#xff1a;[2306.09347] Segment Any Point Cloud Sequences by Distilling Vision Foundation Models (arxiv.org) 代码地址&#xff1a;GitHub - youquanl/Segment-Any-Point-Cloud: [NeurIPS23 Spotlight] Segment Any Point Cloud Sequences by Distilling Visi…

计网第六章(应用层)(二)(域名系统DNS)

一、基本概述 域名和IP地址&#xff1a;在1983年&#xff0c;因特网就开始采用层次结构的命名树作为主机的名字&#xff0c;即域名。因为域名比IP地址更加方便人们记忆&#xff0c;人们可以通过域名更加方便地访问互联网。但实际上网络识别的仍然是IP地址&#xff0c;所以就有…

文件操作(打开关闭文件、文件顺序以及随机读写)

文章目录 写在前面1. 文件的打开与关闭1.1 文件指针1.2 文件的打开(fopen)与关闭(fclose)1.2.1 fopen函数1.2.2 fclose函数 2. 文件的顺序读写2.1. fgetc 和 fputc函数2.1.1 fputc函数2.1.2 fgetc函数 2.2 fgets 和 fputs函数2.2.1 fputs函数2.2.2 fgets函数 2.3 fscanf和fprin…

密码学技术总结

前言 本文内容主要摘抄网络规划设计师的教材和腾讯-SUMMER课堂&#xff0c;主要对网络安全进行简单梳理和总结 对称密码体制 密码分为私钥和公钥密码两种&#xff0c;而介于私钥和公钥只见密码成为混合密码。 私钥密码又称为对称密码&#xff0c;该体制的特点是加密和解密…