8年测试工程师分享,我是怎么开展性能测试的(基础篇)

news2024/12/22 22:37:14

第一节 测试的一般步骤

性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义(后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资源);因此,性能测试首先是基于功能测试的,你必须了解其功能实现才能开展性能测试。

我们还是来逐步分解说明:

一个被测系统来了,我们需要分三块来分析

  • 入口:需要怎么发送请求,施压方应该施加多大的压力,用什么方法施压;

  • 被测系统:系统怎么应对单个请求,系统业务流程是怎么样的,系统网元节点、数据流向等,整体性能需求有没有,需要考察哪些指标,怎么监控;

  • 出口:接收数据有哪些,怎么获取和比对;

OK,是不是感觉就像功能测试差不了多少?是的,就是先分析单个用户的功能流程以及系统的数据流向(包括后台的数据流向)结构图,然后再考虑大量的用户操作。

那么一般系统的性能测试步骤大体如下:

1) 确认测试目标

2) 分析被测系统业务需求

3) 分析被测系统的系统结构

4) 分析被测系统的性能测试点

5) 设计测试方案、检测方案和测试案例

6) 选择测试工具

7) 测试脚本开发

8) 测试执行

9) 测试结果分析

10) 测试调优、测试验证、测试分析

11) 测试报告

第二节 测试准备

测试准备工作越充分后期的测试执行越顺利,一般测试准备工作如下:

1) 确认测试目标

2) 分析被测系统的业务

3) 分析被测系统的结构

4) 分析被测系统可能产生性能瓶颈的节点

5) 设计测试方案、检测方案和测试方案

我们分步来研究一下:

1、确认测试目标

拿到一个任何任务首先都要确认任务的目标是什么。如果不知道目标,你所做的任何努力得到的结果有可能都不是最终所需要的结果。

性能测试也一样,它首先是有一个目标的。无论是你是随机测试想看看系统的当前性能情况,还是奔着对系统进行优化而去的,还是检验一下系统的性能是否满足需求,等等,这些都是你再做事情之前的一个目标。

你后面所做的一切事情,从分析到方案和案例设计,到测试执行监控,再到最后的测试分析和报告,都是要围绕这个目标展开的。

所以,首要的任务就是确认测试的目标要求,需要达到怎样的一个测试目的和目标。

有一些测试任务没有明确的目标或者要求,并不说明它没有目的和目标,这就需要我们进行沟通和分析了。

沟通就是要和项目组达成一致的目的要求;分析,分析需求,分析系统,最后也是要明确项目或者系统测试任务的目的要求。

2、分析被测系统的业务

曾经在一次面试中,有一位面试官给了我这样一个题目:“有一个网站,只知道它的总访问量一天是300万,怎么测试它的性能?”,大家想一想要怎么设计方案?

------猜想面试官是想面试者回答,正态分布、二八原理等基本的测试原则应用。

我当时没有回答任何与正态分布、二八原理相关的东西;记得当时面试官对我的回答好像是“蔑视”的笑了笑;可能是觉着“连基本的正态分布、二八原理都不知道,还搞性能测试?”。

其实,性能测试并不是想象的那样简单,并不是一个简单的原理的应用就行的,如果这么容易,那岂不是谁都能搞。

性能测试的基础是基于系统的业务功能基本趋于稳定,首要的任务就是性能在系统满足业务功能需求上展开,因此我们必须要分析系统的业务。

不管是普通的网站也好还是比较专业的系统也好,它都是有业务功能需求的,所有的性能测试都要基于这些功能才能进行,脱离了业务功能的性能测试没有意义。

性能测试所以首要的任务就是分析系统的业务功能,分析系统业务上的性能限制,也就是业务需求。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

 

那么怎么分析系统的业务需求呢?

  • 如果有用户需求规格说明,首要的任务就是阅读和理解分析用户需求规格说明;

  • 如果没有用户需求规格说明,那么就需要分析系统功能,提炼出系统的业务需求。如果可能,项目组比较熟悉的人讲述一遍是最好的了。

  • 最后无论哪一种,最好的方法就是按照自己的理解画出系统的业务流程或者系统的功能结构图,拿到项目组进行确认。一定要进行确认,和整个项目组达成一致的认同。

有人会说,我们自由测试没有项目组可确认的时候怎么办?

还是一样,需要从分析入手。如果不分析,你就不会知道系统的功能数据流向,请求的数据构成,系统的网元结构,以及系统可能出现的瓶颈在哪一个节点,你又怎么进行优化呢?

当然面对一种全新的知识领域的时候,可能需要我们多积累经验,更多的进行分析;我们可能需要结合实践,多次实际运行系统或者执行测试,在测试中不断的进行优化和完善我们的分析过程、分析结果、测试方案、测试开发甚至是测试执行等等。

分析被测系统的业务,有时候不是一蹴而就,需要我们进行多次反复的分析、确认和再分析、再确认,直到把系统弄明白,甚至有可能在测试执行的最后阶段你还需要再次进行分析和确认,然后重新规划测试。

3、分析被测系统的结构

系统的结构和系统的业务一样重要,不知道系统的网元结构可能就没有办法进行监控,就没有办法知道瓶颈在哪个节点,就不能进行优化。

分析系统的结构,最好的方法就是项目组提供系统的部署和构成图;如果项目组不能提供或者没有项目组,那就需要用TCPDUMP等抓包工具,分析数据流向。

TCPDUMP的使用:

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

  • tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

  • -i eth1 : 只抓经过接口eth1的包

  • -t : 不显示时间戳

  • -s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包

  • -c 100 : 只抓取100个数据包

  • dst port ! 22 : 不抓取目标端口是22的数据包

  • src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24

  • -w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

从第一个节点分析流向到哪,确定第二层的节点;

然后从第二层每个节点分析第三层节点,逐层分析,完善系统的数据流向的所有机构层次和节点;

然后再弄明白每个节点部署的应用程序或者进程队列;

对每一个节点的应用程序或者进程队列进行测试监控;

最后才能得出哪些应用或者进程队列需要进行优化。

弄明白系统的节点构成之外,还需要弄明白各个节点之间的通讯协议和数据格式,后面的测试工具选择和测试数据准备以及测试脚本开发就需要你明白这些。

这一切的基础就是要分析和弄明白系统的所有节点,也就是要分析清楚系统的结构。

4、分析系统可能的性能瓶颈

分析系统的业务需求和系统的结构组成,同时预判系统可能存在的性能瓶颈,这是分析中的一个目标;得到预判的性能瓶颈后我们后面需要在监控的时候多注意一下这些节点。

当然有一些常见的可能会是系统瓶颈的节点我们需要注意:

  • 登录,一般系统登录要进行多种校验,可能数据交互比较频繁;

  • 下单,抢单、抢红包这个时候会有一定量的并发需求;

  • 大数据的查询、统计和报表分析,会对系统产生压力;

  • 视频、动画等会对网络产生压力;

  • 消息比较集中的系统功能节点,会对系统产生压力;

  • 一些特殊的业务需求会对系统产生压力;

常见的瓶颈:

  • 数据库的瓶颈一般在磁盘IOPS过高造成进程阻塞

  • 系统进程数过多一般会消耗系统的内存空间

  • 消息队列和缓存服务,开启持久化后会需要考察磁盘IOPS,不开启持久化则需要考察内存占用

  • 频繁的管道开辟和销毁会导致CPU占用较高

  • 有部分程序结构上不能利用多个CPU

在分析业务和系统结构的过程中,我们就需要考虑这个业务点或者结构点会不会有大量的数据访问,会不会产生压力,我们的设计会不会产生性能瓶颈。

5、方案和案例设计

测试方案的以及最后测试方案文档的形成,实际就是上面所有分析工作的总结。

你写测试方案的过程就是明确测试目的目标、分析业务需求、系统结构以及评估测试方法、测试安排、测试风险等等的过程总结。而这些全部来源于你在测试执行之前的分析,有时候可能你在测试过程中还需要做出一些分析和调整。

测试方案包含了这些你分析和整理的各个方面。

一个好的测试方案包含的内容:

测试目的目标、内容(可能包含业务性能、可靠性、稳定性等等),业务需求目标,系统业务构成,系统节点构成,测试方法流程,需要监控的指标要求和节点等等。

测试案例,实际上一般需要包含在测试方案中;测试案例,实际上就是普通的业务操作流程,用测试工具或者其他测试手段来模拟大的数据量业务操作,并对系统的各个节点进行监控,获取监控数据。

预期的监控数据和实际监控数据的对比,满足要求就是预期要求,实际对比结果就是测试结果。

如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

å¨è¿éæå¥å¾çæè¿°

全套资料获取方式:

å¨è¿éæå¥å¾çæè¿°

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

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

相关文章

足不出户怎么在家赚钱,暑假在家别闲着,给自己赚点生活费吧

在当今快节奏的现代生活中,人们面临着越来越大的竞争压力。为了过上舒适的生活、提前退休、创业或增加收入,许多人都希望能够在家中赚钱。那么,在家里如何可以找到赚钱的项目呢?本文将为您详细介绍一些方法。 一、在家工作有很多好…

《计算之魂》读书笔记——第2章,从递推到递归

我们人类的固有思维方式常常是出于直观的,由近及远、从少到多,这样的思维方式让我们很容易理解具体的事物,却也限制了我们的抽象思维,所以当我们理解远离我们生活经验的事物时,就容易出现障碍。我们人类这种自底向上、…

调用万维易源实现天气预测

作者介绍 房庚晨,男,西安工程大学电子信息学院,22级研究生 研究方向:机器视觉与人工智能 电子邮件:1292475736qq.com 王泽宇,男,西安工程大学电子信息学院,2022级研究生&#xff0…

easyui03(tree后台工作)

一.数据库脚本 create table TB_MODULE ( id NUMBER not null, pid NUMBER not null, text VARCHAR2(150) not null, iconcls VARCHAR2(100) not null, url VARCHAR2(100), sort NUMBER not null ) insert into TB_MODULE (id, pid, text, icon…

Android音视频开发实战01-环境搭建

一,FFmpeg介绍 FFmpeg 是一款流行的开源多媒体处理工具,它可以用于转换、编辑、录制和流式传输音视频文件。FFmpeg 具有广泛的应用场景,包括视频编解码、格式转换、裁剪、合并、滤镜等等。官网:https://ffmpeg.org/ FFmpeg 支持各种常见的音视频格式&a…

设置论文中的图、表的题注(小记)

参考b站:毕业论文图表如何自动编号/word图表自动编号/图表编号自动更新 其中,更新图表序号 视频使用ctrlp进入打印再退出,也可以使用altf9进行更新 设置论文中的图、表的题注 step1:设置章节1.1 章节设置字体样式,选择标题11.2 章…

中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮你的春夏秋冬

不要因为看到别人发光,就默认自己的暗淡。每个人都有自己的闪光时刻,或早或晚。只要努力奋进,你也会拥有。针对金融行业计划在职的人员来说,中国人民大学与加拿大女王大学金融硕士项目就像一束光,照亮了我们的春夏秋冬…

赋能全栈软件,开源软件协调,我对英特尔有了全新认知

文章目录 一、前言二、培养开源文化三、现场展区体验四、软硬协同分论坛,和社区开发者共建生态五、快来加入开源社区吧 一、前言 “开源赋能 普惠未来”,2023 年 6 月 11 日到 13 日,我有幸参加了 2023 开放原子全球开源峰会。 “赋能中国软…

数据结构算法刷题(28)回溯组合型和全排列

剪枝技巧: 思路:剪枝的特点是找特定长度的子集。首先确定大框架,当path的长度等于k的时候,就要更新答案并且return。然后在进行path的元素选择,这里采用倒叙,从i到d(dk-len(path))倒…

MySQL——视图(VIEW)详解

今天我们一起来学起视图(VIEW),那么视图是什么呢?视图有什么作用呢?视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图!带着问题一起来寻找答案吧~~~ 1. 常见的数据库…

【实验】语音识别

为学校数字信号处理实验总结和归纳; 语音识别 题目及相关要求在here. 数据预处理 大致步骤: 获取原始音频 检测 分帧 加窗 特征提取 端点检测 端点检测参数指标相对值初始短时能量高门限50初始短时能量低门限10初始短时过零率高门限10初始短时过零率低…

Web网页制作期末复习(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接

目录 HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 标题标签 段落、换行、水平线 图片 图片路径* 超链接 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾 HTML是一种标记语言,标…

在提交代码时有哪些注意事项

分享 10 种适合初学者的技术,这些技术将帮助您立即编写更好的代码。因此,如果您准备好将您的编码技能提升到一个新的水平,请继续阅读! 1. 从计划开始 编写更好代码的最佳方法之一是从计划开始。在开始编码之前,请花几…

SQL详细处理流程.md

连接器:管理连接,权限验证解析器:词法以及语法分析优化器:生成执行计划,选择合适索引执行器:操作引擎获取结果存储引擎:存储数据,提供读写接口

iterm2 ssh免密码登录

不需要下载其他插件,使用脚本 目录 操作步骤如下: 实际举例如下: 1.编写sh文件 2.编辑sh文件 3.进入iterm2,打开profiles,edit profiles 4.验证 扩展 expect脚本 操作步骤如下: 在你电脑你想编辑的…

阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?

阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?   阿里云服务器安全性简介   作为全球领先的云计算服务提供商,阿里云始终注重保障用户数据安全。在面对各种网络攻击和安全威胁时,阿里云积极构建…

mysqldump 数据备份

使用实例 使用方法 Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3…] OR mysqldump [OPTIONS] --all-databases [OPTIONS] For more options, use mysqldump --help OPTION通常是:-u 用户名 -p …

【计算机网络自顶向下】计算机网络从0到1全篇总结-2023电子科技大学期末考试

相关术语 URI:Uniform Resource Identifier 统一资源标识符,指的是一个资源 URL:Uniform Resource Location 统一资源定位符,URI的子集,用地址定为的方式指定一个资源 URN:Uniform Resource Name 统一资…

基于微信小程序新疆特色产品团购系统设计与实现+第四稿+文档

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 基于微信小程序新疆特色产品团购系统设计与实现第四稿文档 视频演示 视频去哪了呢?_哔哩哔哩_bilibili 系统介绍 2.3.1 主要功能描述 在…

常见技术场景

常见技术场景 1.单点登录这块怎么实现的 1.1 概述 单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统 在以前的时候,一般我们就单系统,所有的功能都在同一个…