1.前言
现在市面上关于性能测试的书或者资料已经相当丰富,但多数浮于表面,着重讲述测试工具,而缺少关于性能测试思维和策略的详细讲解,本文旨在总结性能测试基础部分的知识体系,因此基本没有涉及性能测试工具的使用。
本文主要是两部分组成,第一是概念部分,主要是讲解性能测试中涉及的概念,帮助您对性能测试建立初步的认识;第二部分讲解性能测试过程模型PTGM,目的是讲解性能测试各阶段中应该进行的工作,这也是本文的主体,实际上对于性能测试来说,一个好的性能测试策略可能比你选一个好的性能测试工具更为重要。
在这里推荐段念的《软件性能测试-过程详解与案例剖析》,这本书全面地讲解了性能测试相关的大多数知识,它能帮助读者建立性能测试时的思路、方法与策略,对于初入门的读者有很大的启发和引领作用,对于已经参与性能测试相关工作的人员也提供了参考的材料。
2.概念部分
本部分主要想要讲解性能测试中的基础概念,理解这些概念可以让你对性能测试建立一个基本的认识。
2.1不同角度看软件性能
用系统干系人分析,可以得到四类人:用户、开发、管理员、测试,用户角度最关注的是响应时间;开发角度关注性能的制约原因和引起性能问题的原因;管理员关注系统的容量、可扩展性和稳定性;测试人员则需要在不同的角度对系统进行评估,意思就是用户关注的你当然要关注,而研发人员和管理员关注的你也需要关注,这就要求测试人员要同时兼顾系统对外的表现和对内的资源占用情况。
2.2关键词
性能测试中的关键词有响应时间、并发用户数、吞吐量、性能计数器、思考时间,这是性能测试中常用的几个概念,必须要有清晰的认识。
(1)响应时间
响应时间的定义可以参考下图,通常的响应时间是指从C1一直到C2全部的时间,这里我想补充的一个知识点是,由于前端性能这些年越来越受重视,用户感受到的时间并不是“客户端收到最后一个字节的时间”,而是越来越多的引入了“用户感受到的响应时间”。两者的区别在数据量庞大,页面渲染需要花费大量时间的情况下极为明显,即,我们优化系统响应时间的一个方向是让用户感受到的响应时间变短。
(2)并发用户数
并发用户数主要与在线用户数、系统用户总数区分。最简单的认知就是被测系统是一个QQ群,用户总是就是全体群成员,在线用户数就是在线的成员,并发用户数就是在聊天的成员。这么一来就很明显了,我们都知道一个QQ群里真正活跃的往往是少数人,所以被测系统的并发用户数也是远小于系统用户总数的。
如何确定并发用户数,这个问题常见的答案就是看具体情况,或者用户总数的10%20%。事实上,确实没有可以适用于大部分软件的确定并发用户数的方法。一般而言,针对于企业内部的信息系统而言,采用经验公式选择10%20%的用户总数作为并发用户数是比较合理的。
(3)吞吐量
吞吐量能直接反应系统的性能承载能力,反应的是系统在单位时间内处理请求的能力。常见的吞吐量衡量指标是请求数/秒或者字节数/小时,当然具体的系统可以选择不同的指标如页面数/秒,处理业务数/小时,等等。
注意:要区分这里的吞吐量与loadrunner的analysis的吞吐量概念并不完全相同,loadrunner中的吞吐量是字节数/秒,而且引入了平均事务响应时间TPS的概念,分别从不同维度展示被测系统的吞吐量。
(4)性能计数器
性能测试的执行阶段需要记录服务器的资源占用率,一般使用性能计数器来衡量被测系统当前的情况并且进行性能测试的结果分析。
性能计数器包括很多种类,通常需要我们关注的就是服务器的资源占用率、内存使用率、磁盘I/O,当然还有其他很多的性能计数器,这里不详细赘述。通过这些资源的占用情况我们能得到表征,但是具体的性能瓶颈还需要深入的分析。
由于服务器使用操作系统不同,所以需要选择不同的工具,对于Windows系统可以使用系统自带的资源监视器,对于Linux系统可以使用nmon工具,这类的工具有很多选择适用的就可以。
(5)思考时间
关于思考时间,很多时候我们都认为设置成0是最合理的,因为这样可以模拟一种尽量大的压力,以研究系统在巨大压力下的表现;但是如果要验证系统具有预期的能力,则需要尽量模拟真实用户在处理业务时的思考时间。
2.3测试的方法
性能测试的方法主要包括验收性能测试、负载测试、压力测试、配置测试、并发测试、可靠性测试、失败恢复测试。<