在有了性能测试计划后,我们就需要按照性能需求分析的结果来制定性能测试方案,即按照什么样的思路和策略去测试、需要设计哪些测试场景,以及测试场景执行的先后顺序、每个测试场景需要重点关注的性能点等,一般包括如下几个部分:
(1)测试场景的设计:
· 单场景设计:单一业务流程的处理模式设计。
· 混合场景设计:多个业务流程同时混合处理模式的设计。
(2)定义事务。测试方案中需要明确定义好压测事务,方便分析响应时间(特别是在混合场景中,事务的定义可以方便分析每一个场景响应时间的消耗)。比如我们对在淘宝网购买商品这一场景进行压测,可以把下订单定义为一个事务,把支付也定义为一个事务,在压测结果中,如果响应时间较长,就可以对每一个事务进行分析,看哪个事务耗时最长。
(3)明确监控对象。针对每个场景,明确可能的性能瓶颈点,比如数据库查询、Web服务器服务转发、应用服务器等;需要监控的对象,比如TPS、平均响应时间、点击率、并发连接数、CPU、内存、IO;等等。
(4)定义测试策略:
· 明确性能测试的类型:需要进行哪些类型的性能测试,比如负载测试、压力测试、稳定性测试等。
· 明确性能测试场景的执行顺序,一般是先执行单场景测试,后执行混合场景测试。
· 如果是进行压力测试,还需要明确加压的方式,比如按照开始前5分钟、20个用户,然后每隔5分钟增加20个用户的方式来进行加压。
(5)性能测试工具的选取。性能测试工具有很多,常见的有LoadRunner、JMeter、nGrinder等,那么如何来选取合适的性能测试工具呢?
· 一般性能测试工具都是基于网络协议开发的,所以我们需要明确待压测系统使用的协议,尽可能和被压测系统的协议保持一致,或者至少要支持被压测系统的协议。
· 理解每种工具实现的原理,比如哪些工具适用于同步请求的压测,哪些工具适用于异步请求的压测。
· 压测时明确连接的类型,比如属于长连接还是短连接、一般连接多久能释放。
· 明确性能测试工具并发加压的方式,比如是多线程加压还是多进程加压,一般采用的都是多线程加压。
(6)明确硬件配置和软件配置。
硬件配置一般包括服务器的CPU配置、内存配置、硬盘存储配置、集群环境下还要包括集群节点的数量配置等。
软件配置一般包括:
· 操作系统配置:操作系统的版本以及参数配置需要同线上保持一致。
· 应用版本配置:应用版本要和线上保持一致,特别是中间件、数据库组件等的版本,因为不同版本,其性能可能不一样。
· 参数配置:比如Web中间件服务器的负载均衡、反向代理参数配置、数据库服务器参数配置等。
(7)网络配置。一般为了排除网络瓶颈,除非有特殊要求,通常建议在局域网下进行性能测试,并且要明确压测服务器的网卡类型以及网络交换机的类型,比如网卡是否为千兆网卡,交换机属于百兆交换机还是千兆交换机等,这对我们以后分析性能瓶颈会有很大的帮助。在网络吞吐量较大的待压测系统中,网络有时候也很容易成为一个性能瓶颈。