前言:
近期接到一些性能测试项目,各种各样的项目类型,有接口、网站不一而足,但是往往没有一个明确的性能需求。需求方最常见的一句话就是:“这个需要性能测试”或者“项目上线前要压一压”,等我发了邮件去问具体性能需求,才匆匆忙忙的抛出比如“网页7秒内打开”之类的话,这样的需求,首先不准确,比如这个7秒,是在什么样的带宽多少用户并发返回的结果呢?
在项目开始之前:
一般来讲,在软件(网站)调研阶段,需求分析人员与业务人员进行沟通,此时就需要明确的提出性能指标,比如并发用户量,交易频度、业务数据量、网络要求等等。然后对系统的响应时间、用户数和资源进行分析,最终提供一份性能需求给测试人员,进行性能测试。
测试需求是一切的基石:
在公司,我们做性能测试基本是以运营统计数据为准,说白了,是以TPS为基础建模,响应时间是后续结果,建场景的基础都是以TPS为主,然后需要提供网络拓扑。比如Booking接口每天交易200000笔,根据2/8原则,80%的访问发生在20%的时间,集中的交易数:200000*80%=160000,集中访问时间:24*20%=17280秒,计算可得160000/17280=9.3TPS。那么如果是新项目,没有现成的TPS怎么办?此时就需要需求方进行确认,期望项目达到什么样的支撑量。
打个比方,我们的客户管理系统,可能需要支撑同时2000人访问,那么对于测试人员需要去做的就是通过模拟线上的压力,把这个情景进行压测出来,甚至有些时候我们需要模拟一个极限的数字,比如以我们现有的环境条件,我们是否可以支撑200%甚至300%这样的数字?
所以,作为测试人员,期望提过来的需求是相对清晰跟合理的。比如你项目生产环境最多只有20人使用或者数据存量只有寥寥,那么是否有必要进行这个压力测试,则需要另行商榷。正常来讲,需要进行压测的网站访问量肯定是比较大的,那么我们需要根据经验,结合具体的功能去定义一些压测点,例如:
1、 首页访问
2、 个人中心展示
3、 用户登录功能
……
经过确认这些测试点,我们又可以进行下一步,确认具体测试参数。比如上文提到的需要支撑2000人,又或者页面需要在3秒钟内返回。
有些情况是在特定要求下的,比如百万级的业务数据条件、100用户并发执行10小时、每次访问数据量大于1M等等,对于特殊需求,需求方在项目初期就要尽可能的挖掘出来,因为要创建符合的模拟场景是很耗费时间和资源的。
常见的性能需求:
首页打开速度3秒以下;
接口返回在300毫秒以下;
系统在200%的压力下可以稳定运行12小时;
20用户并发,接口处理能力至少达到50TPS;
一些其他的方法:
首先是提问,问测试同事和架构师,可以得到很多有用信息,例如接口响应时间不要超过300毫秒啦,网页访问要低于3秒等等,这些数据都可以是确认新项目性能的一些参考。
其次是找以前项目的历史数据,进行横向比较。一般来说公司对项目的性能要求会保持一致性,所以用公司的历史数据参考是非常靠谱的事情。
最后要注意一些特殊场景,比如刚刚过去的双十一。我们平时测试注重的是一个平均值,那么这种时刻就是峰值。在双十一的时候,公司页面可能会承受平时十倍的访问量。类似情况还有寒暑假前期、重大节假日、火车票抢票开始等等,这些都是需要业务人员提供具体生产数据,然后进行计算和转换的。