专栏首页工程师的自我修养之路聊聊基准测试的可行性方案

聊聊基准测试的可行性方案

上篇文章介绍了基准测试的一些思路和方法策略,这篇聊聊基准测试的MVP(最小可行性方案)。

思维导图

一、测试策略

策略名称

阈值

运行时间

性能指标

基线

注释

并发测试

CPU75%+Error0.01%

10-30min

并发数、TPS、RT、内存占比

并发基线

并发测试得到的结果可以作为实际生产环境峰值流量下的性能表现

容量测试

CPU<100%+Error0.01%

10-30min

并发数、TPS、RT、内存占比

容量基线

一般来说90%即可作为阈值

双节点测试

CPU<100%+Error0.01%

10-30min

并发数、TPS、RT、内存占比

负载均衡基线

应考虑随着服务节点的增加,性能的递减效应,一般每增加1个节点,理论上性能递减2-5%(以实际测试结果为准)

稳定性测试

CPU75%+Error0.01%

≥12h

并发数、TPS、RT、内存占比

稳定性基线

稳定性的运行时间根据具体情况调整,一般不能低于12h

PS:今天和朋友聊起这个话题,朋友说还应该有一个高可用测试,不过仔细想了下,高可用个人认为应该更侧重容灾和失效恢复测试领域。。。

二、系统配置

nCnG:性能测试可能涉及多个系统,每个系统的服务器配置存在不同,因此要明确不同系统的硬件配置,这样也方便针对性的设定测试策略以及分析性能指标。

内存分配:这里主要指的是堆内存分配,需要根据具体的服务器配置进行分配,当然,最好针对性的进行配置测试来确定内存的合理分配。

应用版本:以JDK为例,每个版本都有不同的改进和优化,且被测系统环境应与实际生产环境保持一致的版本。

线程池:线程池数量,也是一个需要重视的问题(我本人就遇到过由于线程耗尽最终导致的OOM)。

最大连接数:容器、DB的最大连接数,消息队列的消费者数量,也是一个需要考虑的因素。

缓存策略:为了提高系统应对大流量冲击以及提高可用性,缓存是离不开的一种方法,这里需要关注的是缓存命中以及缓存穿透的问题。

三、环境选型

SIT:一般来说很少在SIT环境进行基准测试,原因很多,比如:交叉影响、稳定性、配置不一致甚至多个项目部署在同一个SIT环境等。

UAT:大多数时候,性能测试都是在UAT环境下进行,因为UAT相比SIT稳定性更好,已经通过了系统测试阶段,且进行性能测试的成本相比生产环境更低。

PAT:在生产环境进行性能测试,测试结果的准确性是最高的,但也需要考虑到这几点因素:数据污染、隔离、改造成本、不能影响实际生产业务运行、测试时间等。

四、执行方式

稳定施压:上面提到的并发、容量、双节点、稳定性测试一般都是基于一个固定的并发数来模拟负载进行测试,具体的并发数值需要根据实际的用户数、使用频次、业务场景考虑。

浪涌测试:在实际生产环境中,有时候存在这种情况:短时间内有很高的流量冲击,比如限时秒杀等场景。

阶梯式加压:阶梯式加压是寻找系统拐点的最有效的方式。

五、风险预估

在进行基准测试前,要考虑到以当前的环境、业务模型、系统配置可能存在哪些影响测试的因素,以及影响程度、应对策略,比如:网络延时、网络波动、交叉影响等。

六、业务模型

基准测试的业务模型选择,无论是从实施难易程度或者成本考虑,一般都以以下三种类型出发:

核心业务:一般来说核心业务的重要性和使用频次都是优先级最高的,比如支付、订单。

高频次业务:查询、更新等高频操作场景,也是需要重点关注的场景。

日常轮询业务:基准测试的实施前提就是可重复执行和长时间进行测试,这样才可以进行对比和统计,来分析长期的系统性能基线变化。

七、工具选型

性能测试过程中,需要借助的工具很多,使用占比最高的为以下几种:

负载生成工具:比如Jmeter、Loadrunner、Locust、Gatling、Artillery。

应用监控工具:主要用来监控服务端的各项指标,比如Nmon、Skywalking。

代码分析工具:比如SonarQube、Codacy,一般结合持续集成工具来进行。

日志分析工具:比如现在最常用的ELK。

DB监控工具:比如Zabbix、DBMonitor。

八、异常处理

在性能测试过程中,经常会遇到一些异常情况,比如超时、失败、接口依赖、敏感数据等情况,针对这些情况,设计合理可行的解决方案。

九、统计维度

测试的结果一定要方便从各个层次、维度进行统计,这样可以为后续的分析提供更可靠的数据来源,以响应时间来说,一般从以下几个维度统计:

维度

举例

适用测试策略

峰值

取系统CPU在75%左右的表现进行多次统计,加权平均计算

并发测试

极值

取系统CPU<100%的表现进行多次统计,加权平均计算

容量测试

平均值

平均值的统计,比较适用于响应时间波动不大的情况

双节点测试

百分比值

对于服务集群部署或者分布式部署的系统,百分比值,更能反映系统的性能表现

稳定性测试

十、查询展示

上篇博客介绍过,基准测试的结果一定要便于统计展示,可以明了直观的展示给相关人员,一般来说,可以从不同维度,粒度从大到小的形式进行查询展示,比如:

维度

说明

时间范围

比如默认展示最近一个月的基准变化,也可以设置根据时间来查询不同时间范围内的基准表现

系统名称

对于涉及对个业务系统的情况,可以根据系统名称进行查询

业务模型

从核心业务、高频次业务、日常轮询业务等维度,进行展示

测试策略

根据基准测试的策略,从并发、容量、双节点、稳定性等角度进行查询展示

可以通过web页面、仪表盘、折线图、树状图等形式,进行不同角度的系统基准表现展示,具体如何设计,可以进行需求调研,然后针对性的设计。

本文分享自微信公众号 - 工程师的自我修养之路(Engineer_Way),作者:老张

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 聊聊性能测试中的基准测试

    在性能测试中有一种测试类型叫做基准测试。这篇文章,就聊聊关于基准测试的一些事儿。。。

    写博客的老张
  • 性能测试从零开始实施指南——测试计划篇

    最近有些同学找我咨询关于性能测试计划相关的问题,原因是他们公司要做性能测试,Leader要求写一份性能测试计划,苦于之前没做过相关工作,无从下手。这篇文章,结合...

    写博客的老张
  • 聊聊性能测试开始前的准备工作

    之前在我的博客有介绍过完整的性能测试的流程和性能测试需求分析相关的内容,然而在实际的性能测试工作中,测试开始前也有很多的工作要做。

    写博客的老张
  • 干货 | 携程机票无线测试技术与效能提升

    作者简介 罗昭君,携程机票无线高级测试经理,负责机票移动端功能测试、自动化测试、平台开发等。从事开发、测试工作近12年,先后在阿里巴巴、携程任职。 一、敏捷下移...

    携程技术
  • 测试金字塔是个是什么鬼?

    我的女朋友是一名测试工程师,但她之前却不知道测试金字塔的概念,为此我曾经在家里的白板上画了一个图一层一层给她讲解过。我和同事在给团队面试测试和开发岗位时,也会必...

    Edison Zhou
  • 菜鸟小白的测试基础理论总结(一)

        今天我们看一看测试的理论知识,在学习测试理论知识之前我们先看看什么是测试?

    菜鸟小白的学习分享
  • 测试策略模型探索

    测试作为软件质量的把控,经常存在这样的一个误区:所有提测的功能都需要进行全面的测试,否则上线后就可能存在质量风险。而此时,也会迎来项目经理的质疑,此需求开发一周...

    用户5521279
  • 设计测试策略

    我便有了想法重新写一篇文章,体系性的介绍一下相关的内容。我那已经达到 800+ 篇的博客,正好缺失这样的一篇文章。

    Phodal
  • 第 8 章 软件测试

    love丁酥酥
  • 【测试】软件测试知识点-期中复习1

    1.2简述软件测试V模型的流程 需求分析——概要设计——详细设计——编码——单元测试——集成测试——系统测试——验收测试

    瑞新

扫码关注云+社区

领取腾讯云代金券