性能测试测试(一)

  话说性能测试,听上去比较复杂,实则,确实复杂。无论是从性能测试计划编写还是到测试执行、测试报告,没一个环节确实都不简单。这一篇主要是性能测试的准备工作描述,不涉及具体操作。还记得上一份工作的时候,我们组内开展了性能测试的培训,但是呢,老板要求我们必须,首先要学好linux,至少会装虚拟机,而且对没一个步骤都驾轻就熟,对linux的系统设计和实现要烂熟于心。我当时不以为然,这两者有什么联系呢?到今天我才明白,性能测试真的是一个包含软、硬件各个方面所有的知识,你必须要清楚的知道程序的设计、可能存在的漏洞、程序与硬件通信的过程、硬件指标的含义等等,这些还不是全部的,当然还包含性能测试的基础理论,如果这些你都掌握,那么你就可以轻松的入门性能测试了,否则还是门外汉,比如我。偶然的机会,我在公司的项目里接手了性能测试,下面我只是就我的经历,分享一些工作上的总结。

  首先,要会梳理性能测试目标。一般一个项目上线之前,产品都会梳理功能上的需求,业务量的需求一并也会提到,但是他们提的不够明确,要么就是要多少用户量啦,响应的时间长短等。我们需要把这些业务上的需求转化为我们软件功能的性能需求上面去。而评价一款软件的性能包含哪些呢,业务上的包含TPS、响应时间、成功率、并发数,硬件指标上的包含cpu 内存 磁盘IO 网络请求等,了解了这些评价的指标,那么我需要把业务请求转化到这些目标上去。

我接触到需求有以下:

  • XXX产品到年底期待50w用户量-->每月用户量是N个->根据以往算一个转化率->算出大概每个月会有多少请求,进而计算出多少并发请求
  • 响应时间,也就是一个请求进来到返回的时间,这一点不需要转化
  • 其他的,比如tps一般的要求是100上下,成功率100%,硬件上的指标大概维持正常水平即可

  转化成为性能需求之后,我们就把这些列为性能测试的一个目标值,也就是把现实测试的结果与之对比,看看是否满足这个目标。

  梳理了需求之后,我们接下来要设计性能测试计划,也就是测试用例,话说这部分是最让我头疼,因为性能测试是用于衡量线上的情况,但是我们不可能拿到线上的环境去执行,为此我们需要从各个角度去尽量的和线上持平。具体的,我这里列一下

  • 数据库基础数据,这个要和线上目前或者未来某个时间段可能达到的数据量
  • 请求参数模型,这个也要和目前线上的保持一致,也就是大概几成的用户会带这类参数,几成的用户会带其他的参数。这一块可以根据线上已经有的数据量去设计数据比例模型,也可以根据产品需求,如果是新项目,反正一切跟着业务场景来就行
  • 部署结构。有些是通过中间系统去请求到我方系统,而我们在测试环境是否需要也要完全一致呢? 不一定,按照性能目标来指定。

  比如我遇到的情况,我们的系统在线上提供dubbo服务接口,消费者系统通过请求这个接口来完成整个流程。但是,线上的这个消费者系统是持续部署的,也就是这个系统在启动后就一直在运行,并且与这个zookeeper保持了长连接,用户请求进来之后,可以立马通过zk去获取提供者的地址,从而快速得到响应。但是我们的测试工程呢,我们是在本地跑的,通过xml去和zk连接到服务提供者,由于我们的测试工程不是一个“服务” 也就是不是部署的,我们只是通过dubbo.xml的方式去临时获取一个连接,连接完成后即可释放,而并不是长连接的过程。这里的区别提现在哪儿呢,就是并发用户多,那么瞬间去与zk连接的消费者节点会变的很多,我的担忧是首先这个zk是否支持这么多的客户端去连接,还有就是是否会影响我们对响应时间的统计呢?关于前者,我查了一下,zk里有这么一个参数maxClientCnxns,来限制客户端请求数,官方是这样解释的

ZooKeeper关于maxClientCnxns参数的官方解释:
单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。
maxClientCnxns
Limits the number of concurrent connections (at the socket level) that a single client, identified by IP address, may make to a single member of the ZooKeeper ensemble. This is used to prevent certain classes of DoS attacks, including file descriptor exhaustion. The default is 60. Setting this to 0 entirely removes the limit on concurrent connections.

所以,很显然我们如果把测试工程放在同一台执行机去执行,是不会出现这个问题的,因为zk接收到的请求都来自于同一个IP,也就不会受到限制。对于第二个问题呢,我和对应的开发探讨了一下,他提出了我们这个接口的统计时间,可以通过数据库的时间差去统计,或者日志,这样我们就可以绕开与zk连接的时间差。特别是对于异步实现的接口,这个统计的tps和响应时间都是针对同步的,所以这个统计并没有意义。所以无论是通过什么样的形式,将用户的这个请求送达被测系统,我们的关注点只有【被测系统的性能】 没错,只要在请求到达被测系统的时候是一个并发的,那么就能构成我们的这个场景。特别是对于消息监听的这类接口,我们的测试类都是针对发送消息到队列的,这类tps统计根本是毫无意义的,因为服务处理的过程是个异步的过程,我们只要把消息送达被测系统,这种并发的请求,就能达到我们想要的测试场景。

  性能测试需求、用例这两块是我认为在编写性能测试计划过程中最重要的两个部分,特别是目标的指定,一定要与项目相关人员进行评审。

时间: 2024-10-05 08:46:47

性能测试测试(一)的相关文章

如何理解压力、负载、性能测试测试

性能测试是一个较大的范围,实际上性能测试本身包含了性能.强度.压力.负载等多方面的测试内容. 压力测试是标准工作环境下,不断增加系统负荷,最终测试出该系统能力达到的最大负荷(稳定和峰值).是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试.在增大访问系统的用户数量.或者几个用户进行大数据量操作都是压力测试. 而负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分.100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个

性能测试(测试指标监控策略汇总)

监控类别 监控指标 监控工具或命令 APP前端 响应时间.吞吐量.TPS.点击率.超时概率.错误概率.页面性能 工具:ddms25.页面工具:YSlow3.1.ChromDevTools(基于Chrome57)综合工具:GT.Emmagee 应用服务器(jvm和配置) JVM.最大线程数.DB连接数.full gc频率.是否有异常日志.是否有OOM.内存泄露.代码异常.线程死锁 工具:jvisualvm(基于jdk1.7)工具:MemoryAnalyzer1.6命令:jps jinfo jsta

swift分布式存储性能测试以及破坏性测试

延续上一个文章的做接下来的测试,环境是一个proxy和三个storage. 1.性能测试 测试一:五个线程,每个线程上传一个大小差不多一个G的文件 /data/swift/upload> du -sh test*.zip 987M    test1.zip 987M    test2.zip 987M    test3.zip 987M    test4.zip 987M    test.zip 上传 swift -Ahttp://192.168.1.211:8090/auth/v1.0 -U

Link prefetching原理及性能测试

背景: Link Prefetching  是 HTML 5的一个标准, 最早是由Mozilla 发布的一个互联网标准草案,link prefetching 现在是 W3C和WHATWG关于HTML 5中的一部分.网页可以嵌入 prefetching 标记,当浏览器加载完当前页面即结束加载网页,在浏览器闲置的时候会触发prefetching 标记的link,浏览器会在后台静默prefeching指定的documents, 并存储在cache中. 当用户访问到prefetched  documen

XPON测试解决方案

摘要FTTx由于使用XPON(无源光网络)技术,在网络中消除了放大器和有源器件的使用,大大降低了网络安装和设备开通.维护的费用,正成为颇有竞争力的接入系统.随着基于以太网的无源光网络(EPON)商用规模的逐步扩大,如何对XPON系统进行合理地测试,已越来越成为许多设备厂商非常关注的问题.本文旨在对生产及研发阶段XPON系统的测试提供完善的测试解决方案. 作为国内主要的通信测试设备供应商,信而泰科技(TELETEST)可为用户提供全面的XPON测试解决方案,以帮助客户快速.低成本地部署产品生产并从

如何测试Nginx的高性能

简介 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器: 作为一款轻量级的Web服务器,具有占有内存少,并发能力强等优势,是高连接并发场景下Apache的不错的替代品: 本篇主要介绍Nginx作为Web服务器时,相对于Apache的性能优势: 下一篇将会介绍Nginx作为方向代理服务器的实现: 重要特点 非阻塞:数据复制时,磁盘I/O的第一阶段是非阻塞的: 事件驱动:通信机制采用epoll模型,支持更大的并发连

JNI/NDK开发指南(九)——JNI调用性能测试及优化

转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了,在Java中声明一个native方法,然后生成本地接口的函数原型声明,再用C/C++实现这些函数,并生成对应平台的动态共享库放到Java程序的类路径下,最后在Java程序中调用声明的native方法就间接的调用到了C/C++编写的函数了,在C/C++中写的程序可以避开JVM的内存开销过大的限制.处理高性能的计算.调用系统服务等功能.同时也学习到了在本

手机app测试要点(复制文)

目录: 一.简介?4 1.1什么是App测试?6 1.2  测试方法?6 1.2.1  白盒测试?6 1.2.2  黑盒测试?6 1.2.3  人工测试?7 1.2.4  自动化测试?7 1.3   UT.IT.ST测试?7 1.3.1  Unit Testing单元测试?7 1.3.2  Integrate Testing集成测试?7 1.3.3  System Testing系统测试?8 二.移动App的系统测试?9 2.1  冒烟测试(Smoke Testing)?10 2.2    功能

memcached&redis性能测试

转自:http://www.iigrowing.cn/memcached-redis-xing-neng-ce-shi.html 一.Memcached 1.1.memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通