1.企业的要求
随着计算机/互联网的飞速发展,人们对软件的质量要求也越来越高。大家早就已经不满足功能上的需求了,对软件的性能/安全方面越来越关注。所以越来越多的公司开始重视性能测试了。那么企业对性能测试人员的要求有哪些呢?
·要求能够熟练使用至少一种性能测试工具进行性能测试脚本的开发。
·要求性能测试工程师能够对性能需求进行获取、分析、提炼。
·要求性能测试工程师能够根据性能需求进行性能测试场景的设计和执行。
·要求性能测试工程师能够根据需求对相关的性能指标进行监控。
·要求性能测试工程师能够对性能测试结果(包括监控数据)进行分析、定位性能瓶颈。
·能够进行性能调优(事实上性能测试工程师最多只是需要给出调优建议即可)。
·要求能够编写合格的性能测试报告。
·要求具备良好的沟通协调、团队合作能力。·要求具有其它的一些能力(学习能力)。
2.性能测试工程师的技术栈
上面我们已经知道企业的要求了,那么作为测试人员的你,你该掌握哪些知识才能够在性能测试领域做的更好呢?
·了解计算机系统原理。
·了解计算机网络,计算机网络通信的基本原理。
·熟练掌握至少一门编程语言。
·熟练掌握至少一种服务器的安装和配置。
·熟练掌握至少一种数据库的安装、配置以及操作。
·熟练掌握至少一种性能测试工具。
·熟练掌握常见的性能测试监控工具。
·具有良好的数学思维。
·具有良好的文档编写能力。
·具有良好的沟通交流能力。
·具有良好的学习、探索能力。
3.正确理解性能与性能测试
什么是性能呢?
新华字典对于性能的解释:事务的性质和能效。
那么,我们怎么样评价一个软件系统的性能呢?
通常来说,一个软件系统的性能主要体现在两方面:
“快慢”:快慢是给用户最直接的感受,也就是我们常说的响应时间。
“多少”:单位时间内能够处理事情越多,那么性能当然越优秀。所以这个“多少”就是用来衡量系统处理能力的指标。
我们在衡量软件系统性能好坏的时候,一定要结合两方面一起。单考虑一点是没有太多意义的。
既然我们刚刚提到了“快慢多少”,我们接下来再来了解下常用性能指标。
·响应时间:通常来说,响应时间反映的就是系统的处理效率。
·吞吐量:通常来说,常见的吞吐量指标有两种:
·TPS/QPS:每秒多少个事务或者操作。,单位是:个/秒
·Throughput:一般是指网络带宽或者磁盘IO,单位一般是:byte/s。
·资源利用率:一般来说是指被测服务器的系统资源利用率,通常是指CPU、内存和磁盘IO。
了解了这么多,我们再来看看性能测试的定义:在一定的负载条件下,测试系统在不同的负载下的性能表现是否达标。可以发现,定义上,我们性能测试同样遵循软件测试的定义,我们最终都是在确认是否满足用户需求而已。无非在测试的过程中,使用了不同的工具和方法而已,换句话说,性能测试其实没大家想的这么难!
虽然我们知道了性能测试的定义,但是很多同学还是没有正确的理解它。所以大家很有必要了解下性能测试的分类。我这里讲的分类是根据性能测试的目的来进行分类的,分类并不重要,性能测试的目的才是重点。
·负载测试:在不同的负载条件下,测试系统的性能表现,从而获取系统的最大处理能力、最佳性能点和最大有效负载用户数。
PS:不同的负载条件,一般就是指调节虚拟用户数的数量。
·压力测试:测试系统在极限负载下的稳定性。
PS:极限不等于最大或者超过最大的虚拟用户数。一般来说,压力测试都是7×24小时进行的。压力测试,是取的重负载区的压力来实现测试的。
·容量测试:测试系统在特定的容量下的性能表现,或者通过测试来评估系统在特定容量下的性能表现。在软件系统中,容量一般体现在:带宽、连接数、缓冲池、磁盘IO、内存、数据库之上。在性能测试领域,数据库容量是必须要进行考虑的。
·基准测试: 获取系统的基准的响应时间指标和资源利用率指标。这里又分为两种情况:
·同一轮次:建议采用一个虚拟用户来做为基准,获取系统的基准值。
·不同轮次:使用上一轮次的测试方案作为当前轮次的基准。
·配置测试:获取系统的最低配置和推荐配置。
·并发测试:测试系统是否存在资源争用、事务冲突或者锁的升级现象。一般通过大量用户集合点来实现。
性能测试的分类是帮助我们更好的去工作,有目的的去工作,那么我们性能测试究竟是做什么呢?
通常来说,性能测试技术可以分为三块:
·用户行为模拟:即通过性能测试脚本去模拟用户的行为操作和场景的执行。因为性能测试工具都是基于协议级别的,所以一般来说对于用户的行为模拟是通过模拟客户端所发送的协议级别的请求包(数据)来实现的。对于用户行为模拟,在脚本处理层面,一般要注意以下三个问题:
·模拟不同用户的不同请求。是指逻辑相同、数据不同。(参数化处理)
·处理请求之间的依赖。(关联处理)
·模拟用户的延迟和并发。(思考时间和集合点)
·指标监控:对于指标监控,主要是掌握监控的原则和工具。
·性能调优:分析、定位瓶颈和给出调优建议。
4.深入理解几个“用户数”
·系统实际用户数:即系统最大用户数。通常传统行业的软件,用户数就是根据使用系统的人数(设备数)进行计算和评估。而互联网企业,用户数需要根据商业目标、同类产品和统计数据来进行计算和评估。如果在接口层面,就需要根据对架构的分析,得出接口的实际调用频率和用户的比例关系,或者获取生产环境的接口实际调用数据。
·在线用户数:在线用户是指大量频繁的使用系统的用户人数。
·并发用户数:并发分为狭义的并发和广义的并发。
·狭义的并发:又叫严格的并发,是指单位时间内向服务器提交请求的用户人数。
·广义的并发:在线即并发,系统同时在线的人数就是系统的并发人数。
一般如果对测试结果不用特别严谨或者本身没有历史数据的项目:
严格的并发人数=在线用户数×(5%~10%)
这是一个参考值,根据你实际需要来取值,取得越多,对服务器的压力越大。
如果有历史数据:
并发人数=TPS×响应时间。
5.性能测试流程
性能测试属于测试的一种,所以遵循测试的总体流程,只是在一些细节上有些不同而已。我们从开始到结束,一般可以分为以下流程:
·前期分析:性能测试的成败取决于前期的分析。在性能测试开展的早期,对被测系统要进行详细的分析,我们一般从三个大的角度来进行:
·系统分析:站在全局的角度去分析被测的系统。
·业务分析:确认待测业务和不测业务。
·需求分析:提取分析被测系统的需求。
·测试计划:什么人什么时候做什么事情
·测试方案:事情具体的实现策略、方式和方法等。
·测试脚本:根据需求和待测业务去实现测试脚本。
·测试环境的搭建:根据搭建手册进行即可。
·测试数据的准备:测试数据要求尽可能的达到生产数据的级别,甚至要超过生产数据的级别,另外测试数据的特征要近似生产数据的特征。
·测试场景的设计和实现:根据需求分析,编辑相应的脚本并且按计划将脚本“还原”。
·结果分析、定位和调优:根据测试结果及过程监控数据做分析,找问题和解决问题。
·测试报告的编写:同功能测试一样,无非是需要多加入分析过程而不是笼统的图片复制粘贴。