本文主要介绍何时开展性能测试,如何开展性能测试,性能测试的开展需要做哪些准备。

一、

性能测试三连问

1

何时进行性能测试?

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

2

如何进行性能测试?

一个被测系统,我们需要分3部分来分析:

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

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

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

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

3

开展性能测试的步骤?

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

1.确认测试目标;

2.分析被测系统业务需求;

3.分析被测系统的系统结构;

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

5.设计测试方案、检测方案和测试案例;

6.选择测试工具;

7.测试开发;

8.测试执行;

9.测试结果分析;

10.测试调优、测试验证、测试分析;

11.输出测试报告;

二、

性能测试开展前的准备

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

1.确认测试目标;

2.分析被测系统的业务;

3.分析被测系统的结构;

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

5.设计测试方案、检测方案和测试方案;

以下具体分析以上5个步骤:

1

确认测试目标

任何一个任务首先都要确认任务的目标是什么,如果不知道目标,任何努力得到的结果有可能都不是最终所需要的结果。性能测试也一样,首先需要确立明确的目标。无论是随机测试系统的当前性能情况,还是奔着对系统进行优化而去,或是检验一下系统的性能是否满足需求等等,这些都是开展性能测试之前的一个目标。之后的分析到方案和用例设计,到测试执行监控,再到最后的测试分析和报告,都是要围绕这个目标展开。所以,首要的任务就是确认测试的目标要求,需要达到怎样的一个测试目的和目标。

假如有一些测试任务没有明确的目标或者要求,并不说明它没有目的和目标,这需要我们进行沟通和分析。及时与项目组达成一致的目的要求,分析需求,分析系统,最后明确项目或者系统测试任务的目的要求。

2

分析被测系统的业务

朋友曾经在一次面试中,有一位面试官给了他这样一个题目:“有一个网站,只知道它的总访问量一天是300万,怎么测试它的性能?”

大家想一想要怎么设计方案?

猜想面试官是向面试者回答,正态分布、二八原理等基本的测试原则应用。朋友当时没有回答任何与正态分布、二八原理相关的东西。当时面试官对他的回答好像是“蔑视”地笑了笑,可能是觉着连基本的正态分布、二八原理都不知道,还搞性能测试?。其实,性能测试并不是想象的那样简单,并不是一个简单的原理应用就行的,如果这么容易,那岂不是谁都能搞定。

性能测试的基础是基于系统的业务功能基本趋于稳定,首要的任务就是性能在系统满足业务功能需求上展开,因此我们必须要分析系统的业务。不管是普通的网站也好还是比较专业的系统也好,它都是有业务功能需求,所有的性能测试都要基于这些功能才能进行,脱离了业务功能的性能测试没有意义。性能测试首要的任务就是分析系统的业务功能,分析系统业务上的性能限制,也就是业务需求。

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

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

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

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

有人会问,我们项目组没有可确认的业务需求的时候怎么办?

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

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

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

3

分析被测系统的结构

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

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

TCPDUMP的使用:

bash

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

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

(2)-i eth1 : 只抓经过接口eth1的包;

(3)-t : 不显示时间戳;

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

(5)-c 100 : 只抓取100个数据包;

(6)dst port ! 22 : 不抓取目标端口是22的数据包;

(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24;

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

从第一个节点分析流向到哪,确定第二层的节点;然后从第二层每个节点分析第三层节点,逐层分析,完善系统的数据流向的所有结构层次和节点;再弄明白每个节点部署的应用程序或者进程队列;对每一个节点的应用程序或者进程队列进行测试监控;最后才能得出哪些应用或者进程队列需要进行优化。

弄明白系统的节点构成之外,还需要弄明白各个节点之间的通讯协议和数据格式,之后测试工具选择和测试数据准备以及测试脚本开发就需要以此作为依据。这一切的基础就是要分析和弄明白系统的所有节点,也就是要分析清楚系统的结构。

4

分析系统可能的性能瓶颈

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

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

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

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

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

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

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

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

常见的瓶颈:

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

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

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

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

5. 有部分程序结构上不能利用多个CPU;

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

5

测试计划和测试用例的设计

测试计划的设计以及最后测试总结文档的形成,实际就是所有分析工作的总结。

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

测试计划包含了分析和整理的各个方面,一个好的测试计划包含的内容:测试目的、测试目标、测试内容(可能包含业务性能、可靠性、稳定性等等),业务需求目标,系统业务构成,系统节点构成,测试方法流程,需要监控的指标要求和节点等等。

测试用例一般包含在测试计划中,测试用例实际上就是普通的业务操作流程,用测试工具或者其他测试手段来模拟大的数据量业务操作,并对系统的各个节点进行监控,获取监控数据。预期的监控数据和实际监控数据的对比,满足要求就是预期要求,实际对比结果就是测试结果。

6

测试前的准备

环境搭建:测试环境搭建这一步工作量不大,如果有必要可以请开发商协助配置完成。

场景建模:考虑哪些场景下可能存在性能瓶颈,相应地设置对应的测试脚本和测试逻辑,以尽可能模拟生产环境( 一定要熟悉系统业务,因为需求的产生,就是用户+场景)。

测试数据准备:测试数据准备常用的有这两种方式:将生产数据复制一份过来、开发脚本预埋制造数据(但无论哪种,一定要注意数据隔离,防止数据污染)。

测试脚本开发:首先,需要从开发那里获取开发接口文档和数据库表设计文档。然后,通过工具或者写测试脚本调试接口,先保证接口可以成功调用。

给你一个项目,你会如何开展性能测试工作相关推荐

  1. 多个敏捷团队同时做一个项目_您说您的团队很敏捷……但是这个词可能并不代表您的想法。...

    多个敏捷团队同时做一个项目 by Mark Shead 由马克·希德(Mark Shead) Many things get called Agile - especially by people w ...

  2. 如何衡量一个项目的交付质量???

    昨天与部门开会讨论项目的完整规范交付流程,参会的涉及到项目相关的所有人员,总结一下供大家讨论交流: 1.小插曲:我们把客户的干系人.自己的干系人对项目的影响做了一个排名并打分,结果很有意思:客户的领导 ...

  3. 一个项目在启动前都应该明确哪些事

    前言 广告系统在之前很长一段时间都是依赖用户主动行为进行查询透出以达到效果. 但随着用户和模式的成熟,主动模式几乎达到了业务瓶颈,这就需要采用更智能的方式,比如推荐,去引导和促进用户发生转化,提升效果 ...

  4. 一个项目的开发流程是怎样的? 原名:「只差程序员」离优秀的产品还有多远?...

    http://www.toutiao.com/a4919665444/ ......产品开发的流程问题,这也是个严肃的问题.解决流程问题,就知道技术团队需要什么人,产品开发就成功了一半. 一个项目的开 ...

  5. 对于后端来说,一个项目究竟应该怎么做

    引子 作为一个程序员,平时的工作是与项目来挂钩的,但是有的时候会发现有些项目做得风生水起,有的则做得浑身难受,那么一个项目究竟应该怎么做? 一个后端接到项目的主要流程 需求咨询 需求评审 项目估期 技 ...

  6. 转Java转iOS-第一个项目总结(2):遇到问题和解决方案

    目录 1.UITableView滑动卡顿的优化 2.右滑手势返回 3.添加页面统计 4.debug版和release版 5.关于页面刷新 6.关于页面布局 7.推荐博客 遇到问题和解决方案 本文是Ja ...

  7. 好的开始是成功的一半 -- 怎么做好一个项目的启动...

    俗话说号的开始是成功的一半,管理一个项目也同样是这样,很多的时候,项目运行中的遇到的问题往往就是在填项目启动时所埋的坑.一个好的项目启动能极大的提高项目成功的概率,避免项目过程中很多的风险.这里我简单 ...

  8. Maven初探-如何快速入手一个项目

    这已是一个工具的时代,而不是一个到处搜集JAR的年代,如果还在为搭建一个项目而到处找依赖,那你就彻底OUT了.下面,跟各位一起重温学习下Maven. 什么是Maven Maven项目对象模型(POM) ...

  9. 做一个项目,平时都用到哪些工具提高效率(上)

    做一个项目,平时都用到哪些工具提高效率(上)  转载 做.NET 相关项目,Visual Studio 2008,SQL Server 2000/2005是标准的配置,但是,除此之外,还可以应用哪些工 ...

  10. 团队开发经验:如何带领一个项目团队并做好项目总结 !!

    最近带领一个小团队做完一个项目,项目虽不算大,可五赃俱全,感觉在这项目中最重要的还是沟通协调.下面是我自己经过这个项目,自己的一点体会,写在这里,总结自己的思路,并希望在以后的项目中有更多的提高,到时 ...

最新文章

  1. ROS_Kinetic ubuntu 16.04
  2. DNS 到底怎么工作的? (How does dns work?)
  3. 了解大脑的“小情绪”,轻松成为“效率达人”
  4. wps怎么投递简历发到boss直聘_2020年疫情时期,在厦门的你怎么开启新工作
  5. Qt paintevent事件
  6. 第五次会议记录:开始进一步需求分析,及初步分工
  7. 了解Base64编码解码
  8. android 底部圆角,android 实现部分圆角图片
  9. 快速入门 Nacos 作为配置中心操作
  10. python 报文解析_python解析DNS数据包实例代码
  11. 开发函数计算的正确姿势 —— 排查超时问题
  12. C语言中文件初始化,C语言版GetPrivateProfileString()函数,从初始化文件中指定的条目取得字串...
  13. 图:[PPT双屏技术-知识竞赛方案策划]华中师范大学-城市与环境科学学院-城环学院地理知识竞赛胜利闭幕.
  14. Linux管理与应用(张美平著)- 绪论知识点
  15. GWR4 软件输入数据制作
  16. 国产免费虚拟化OVM与 OpenStack对比
  17. 很全的zencart 模板修改
  18. 如何查找计算机中的视频文件,win7系统快速搜索查找电脑里的视频文件的操作方法...
  19. 个人看过的动漫、动画电影推荐
  20. JS中函数式编程基本原理简介

热门文章

  1. 力扣(674.160)补8.30
  2. python编程midi键盘按键错乱_电脑键盘按键错乱怎么回事 电脑键盘按键错乱原因【图文】...
  3. 万物互联所必需的泛在物联网建设需要多少钱?成本低到不可想象
  4. 【echarts】柱状图正负值双色
  5. 《听后感-罗振宇2023“时间的朋友”跨年演讲》
  6. 【CXY】JAVA基础 之 GUI
  7. css 根据手机屏幕适应页面高度
  8. 苹果新款笔记本_谷歌发布售价99美元的新款Wi-Fi路由器(全文)_苹果 新款MacBook Pro 13英寸_笔记本新闻...
  9. python绘制条形图 中文横坐标_python3使用matplotlib绘制条形图
  10. MongoDB索引优化