• 1
  • 1
分享

  一、背景

  随着各类应用快速和多样化的发展,产品迭代更换频繁,导致业务需求旺盛,开发测试任务源源不断。项目团队通过采取测试分层策略、测试数据治理、自动化回归、性能测试等一系列举措确保系统的安全生产。然而,通过调研发现,投产运行后的缺陷90%以上为性能问题,为我们敲响了性能警钟。为此,项目团队探索打破以项目维度开展性能测试的壁垒,按系统维度进行性能周期性检测,尽可能模拟系统生产运行模式,检验特定情况下是否会有系统级性能问题,降低系统投产的性能风险。

  二、探索实践

  性能周期性检测实践从性能测试环境建设、性能测试范围选取、测试脚本集准备、性能测试场景设置、性能测试结果对比分析及调优几个维度逐层深入,剖析性能检测全流程的策略制定及重点要点。

  1.三举措建设性能环境

  对于测试环境复杂,依赖大量外围环境的系统,我们需要重点关注外围系统环境的可用性:

  一是按照独立性、挡板化、分批建设的原则,将多个外围系统按交易优先级排序,在项目实施周期内,紧急重要的优先建设;另外,可以通过实现挡板中心,解决外围环境不稳定、失效等问题。

  二是深入调研各个外围系统并开展分析评估,对于现有功能常备环境可承受超柜峰值TPS性能压力的系统采用复用现有功能测试环境;对于有性能压力的系统采用新建性能测试环境;达到资源利用最大化。

  三是建设关联系统的可用性最小案例集,通过自动化执行的方式定期检测关联系统的环境可用性,确保各关联环境能够满足常态化的测试需要。

  2.三因素逐步覆盖性能测试范围

  随着系统需纳入性能检测范围交易的增多,我们考虑以下三方面因素选定周期性交易,按照“重点先行、逐步覆盖”的原则开展性能检测工作。

  一是周期检测交易按日均交易量进行排序打分;

  二是对于以往出现生产性能异常涉及的交易,加入检测清单,通过分析与当期检测内交易的关联关系,确定是否纳入当期检测;

  三是关注投产相关的交易,纳入周期批次测试范围。

1-1.png

1-2.png

  3.三方法稳步确保测试脚本质量

  开展性能检测测试需要编写高质量的测试脚本,降低周期内调试脚本的工作量。然而,测试数据稳定性不足、数据异常时定位问题困难等一直是性能测试的一大顽疾,因此,测试数据的参数化是准备性能检测脚本集需要关注的重点。我们提炼了以下三种方法确保检测测试脚本的质量:

  一是对于查询类交易,采用固定数据的方式;

  二是对于必须使用唯一数据的交易,需准备数据脚本,并建立与性能脚本的映射关系;

  三是对于数据消耗型交易,编写特定脚本对数据进行恢复。

1-3.png

  4.一模型自动设置性能测试场景

  由于性能检测实行分批次逐步覆盖待测交易集,且每批次待测交易集会随实际投产情况动态变化,因此需要按照交易量占比为当前批次的所测交易配置混合场景的交易比例。当前我们实现了“一种基于交易分布建模的性能测试场景自动设置方法”。

1-4.png

  5.四维度对比分析性能测试结果

  以往性能测试的结果分析都是基于本批次执行结果开展的横向分析,然而对于性能检测测试,需要将本批次的执行结果与上一次或前几次进行纵向比较,主要从以下四个维度开展分析:

  一是当前批次新增交易是否存在性能问题;

  二是当前批次新增交易对原交易集的响应时间是否有影响;

  三是当前批次交易集对应用服务器资源使用率(包括CPU、内存、磁盘、网络等)是否有影响;

  四是当前批次交易集对数据库服务器资源使用率(包括CPU、内存、锁资源等)是否有影响。

  三、应用成效

  结合实践经验,我们将适用场景分为四类:

  ①重要对客系统按周期性窗口投产,可以将检测工作作为基础背景,模拟新增或优化类变更对系统性能的影响。

  ②系统基础软件升级等技改类项目。

  ③架构改造类项目。

  ④协助生产事件的快速定位与复现,为项目团队提供技术支持与决策分析。

  四、后续展望

  目前,性能周期性检测工作仍存在环境准备时间长、手工干预多、管理有待优化等问题。在总结经验、调查分析、创新思路的基础上,主要目标如下:

  (一)按“分类管理、研测结合、协同共享”的思路,建立分级、分类的差异化管理流程。一是对于多个项目同时开展性能测试导致互相干扰的情况,测试环境可按时间片管理,归口调度。二是优先开展提供基础服务的平台类系统及重要中后台系统的性能测试环境建设,识别全链条测试的必要性,开展有针对性的性能测试。三是建立外围环境登记申请机制,实现资源共享,提高资源使用效率。

  (二)加强自动化研究,提高性能检测效率。一是充分发挥Xmeter工具的强大功能,实现脚本的轻便化管理。二是通过交易自动配比模型的落地,降低目前手工配消耗的工作量,提高整个性能周期性检测工作效率。三是研究性能自动化对比分析模型,实现多期周期性检测结果的自动对比分析,为调整测试策略提供依据,保证周期性检测测试工作的科学性、有效性。


作者:冯娜

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 我们平时生活中,使用苹果手机和安卓手机的各占半片江山,习惯了使用苹果手机的人很难适应安卓手机,用多了安卓手机的人也很不习惯苹果手机。于是在测试过程中,对于苹果手机和安卓手机都需要覆盖到。先来看下安卓和ios系统的机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制目前我们公司app产品的开发模式是:安卓:原生+RN+h5,ios:RN+h5一、测试安排对于同一app,RN的部分可以以其中一个系统为主进行测试,对于安卓原生的部分需要两个系统分别测试,确保功能不遗漏。二、系统交互考虑到两个系统本身交互不同,涉及与系统交互时需要考虑测试步骤的不同。比如:消息推送,安卓需要各个app自己实...
            8 6 7983
            分享
          • 性能测试工具可以帮助我们构造一些数据和脚本以便于自动执行,除此之外,还有一些监测小工具方便我们了解系统运行情况,包括:系统负载、系统I/O读写、mysql占用情况等。一、系统I/O读写(在web上)(尤其适合搭配jmeter使用)./nmon_x86_64_ubuntu1104 -fT -s 5 -c 100000000000000000000000000000ltest:这次监控记录的标题与生产的文件名称l-s 30:每30秒进行一次数据采集l-c 180:一共采集180次输入命令后,将自动在当前目录生成一个hostname_timeSeries.nmon的文件,如:lhosname为tes...
            1 1 10645
            分享
          •   功能  1、购物车界面的所有跳转链接都可以点的动。   ·点击店铺名可以跳转到店铺界面    · 点击商品可以跳转到商品界面    · 如果店铺的 table 区域中有"凑单"字样, 跳转到凑单界面    · 如果店铺有"领券"字样, 可以弹出领券界面  2、如果不选择任何商品就进行结算, 则显示"请选择要添加的商品"。  3、点击商品前的圆圈进行勾选后。    · 是否可以自动展示优惠后的价格  &n...
            0 0 6454
            分享
          • 1、异常优化考虑以下情形。def testLogin(){   #从Excel文件中读入测试数据,比如:Jerry/123456   #继续后续测试   }   def teardown(){   #从数据库表中删除的读入的数据,比如:Jerry/123456   ...   }比如测试程序在继续后续测试的时候出现了一个异常,比如元素没有找到,系统会自动退出,而不去执行teardown方法,也就是说数据库中的数据没有得到清除,这样如果下一次测试同样的case,采用同样的测试数据就会使测试程序发生脏数据异常,为了解决这个问题我们通过使用Python的try-catch来捕获异...
            0 2 3142
            分享
          • 静态测试静态测试是一种无需执行任何代码即可完成的测试。审查、演练和检查是执行静态测试的不同方法。诸如审查需求文档、客户需求规范、高级和低级设计、代码语法、命名标准等活动都属于静态测试。静态测试也适用于测试用例、测试计划、测试场景。进行静态测试是为了防止缺陷,而不是在后期捕获缺陷。这就是静态测试具有成本效益的原因。例如, Tester 正在测试一个宠物保险网站。保费计算的逻辑在需求文档中进行了描述。作为静态测试的一部分,测试人员可以查看开发人员代码进行溢价计算,并将其与需求文档进行比较,以防止与溢价计算相关的缺陷。漏洞测试该测试涉及识别软件、硬件和网络中的弱点,称为漏洞测试。在恶意程序...
            0 0 1580
            分享
      • 51testing软件测试圈微信