专栏首页猪圈子面试官一题难住我:如何规避生产环境性能测试风险 ?

面试官一题难住我:如何规避生产环境性能测试风险 ?

摘要:系统性能测试结果的可参考性与测试环境有着直接的关系,模拟环境与真实环境相比存在环境差异、数据量差异等问题,导致测试结果的可参考性差。

为了获得准确的性能数据,性能测试需尽量在生产环境进行。但是在生产环境进行测试可能会对系统造成一定的风险,测试中应尽量规避这些风险的发生。本文主要介绍生产环境中的性能测试风险以及风险规避的方法。

性能测试是针对系统的既定性能指标,制定测试方案,并执行测试,得出测试结果来验证系统性能是否满足用户要求而进行的测试。

性能测试结果的可参考性与测试环境有着直接的关系,如果测试是在模拟环境下进行,会存在一些问题,比如硬件和软件配置与生产环境的不一致、测试数据量和实际生产环境的数据相差太远等

这些因素都会影响测试结果的可参考性,因此,为了获取准确的性能数据,真实的反映系统性能,性能测试应尽量在生产环境进行。

生产环境是业务系统正式运行的环境,一般已经上线使用了一段时间,系统中存在大量的真实业务数据,且业务数据随着系统的运行在不断的增加和更新中

因此在生产环境进行性能测试必然会对业务系统产生影响,甚至造成一定的风险,作为测试方,我们必须预知风险,并有效的规避风险。

那么在生产环境进行性能测试可能的风险有哪些?我们在测试中应采用什么样的手段来规避这些风险呢?下面结合我自己的一些项目经验谈一下这方面的体会。

01 在生产环境进行性能测试

存在哪些风险?

1. 测试可能会导致系统崩溃

考虑到系统的业务发展,通常设定的性能指标会一定程度的高于目前系统运行时承受的压力,在系统能承受的最大压力未知的情况下,测试对系统施加的压力可能超过其所能承受的压力,导致系统崩溃,影响系统正常的业务运行。

2. 测试可能会造成数据损坏

在对系统进行压力测试时,可能会因为系统压力过大导致某些事务未成功执行,从而导致相关数据被破坏;

有些操作需要直接修改系统中的原始数据等,这些都可能对系统数据造成损坏

3. 测试会产生大量垃圾数据

由于性能测试的并发用户量大,而且要重复执行多次,所以会在系统中产生大量的垃圾数据,影响系统的使用

为规避以上的风险,在生产环境进行性能测试时,我们应采取有效的手段避免上述风险的发生。

02 风险规避手段有哪些?

1. 重要数据事前备份、事后恢复

在执行测试前,应尽可能对系统进行备份,至少对系统的重要数据和文件进行备份,确保系统测试结束后可以恢复到初始状态。

2. 测试时间选择系统空闲时间

对于系统并发负载测试或者其他可能影响系统运行并导致系统崩溃的测试操作,可以安排在系统空闲时间进行,出现系统异常时有时间可进行系统的恢复工作,不致于影响业务的正常运行。

3. 给测试数据加标记

对于系统测试过程中产生的垃圾数据要进行特殊标记,测试结束后要及时清理。

测试数据可以事先准备并予以特殊标记,也可以是带有特定意义的区域数据或者是特殊时间段内的数据

这样,当系统测试结束后,我们可以根据这些特殊标记将相应的垃圾数据删除,保证系统的正常运行,

对于那些需要直接在系统中进行变更的数据在相应的业务操作和功能确认完成后应予以及时恢复,确保将系统恢复到数据变更前的正常状态。

4. 实时关注系统状态

在具体实施系统并发负载测试时,应按照指标驱动和用户逐渐增加的方法对系统进行测试。

在测试过程中,应实时关注系统状态,当系统不能承受相应的压力时,测试立即终止,以有效保证测试不会超出系统的最大可承受压力,避免系统崩溃和数据损坏。

03实际工作中

风险规避方法的运用

案例1:“计生委人口宏观管理与决策信息系统”,系统上线运行一年,业务数据实行全国中心集中管理。对系统进行“流入人口登记”负载压力测试,并发用户数分别为100、200、500。

分析该系统的实际情况,全国各区县上报的业务数据在全国中心实行集中管理,

在测试过程中如果由于系统压力过大,出现系统崩溃或数据损坏的情况,那么将会导致系统不可用或一整年的业务数据丢失,损失一旦造成将不可挽回。

基于以上的考虑,在测试中我们采用了方法一、二、四来进行风险规避。首先,我们将测试时间安排在周末进行,避开了业务系统使用的繁忙期;

其次,在实施测试前,要求厂商进行全库数据备份,并做了数据恢复测试,在确保数据可以正确恢复的情况下开始进行测试;

同时,在测试实施过程中,对必要的操作系统、数据库的指标进行监控,根据系统的资源占用情况和响应时间等判断是否可进一步对系统施加压力。

在测试结束后,厂商对系统进行了数据恢复,使系统恢复到了测试前的初始状态,避免了数据丢失或损坏的风险。

案例2:“北京市社会保险信息系统升级改造项目”,根据业务情况,需进行“183号令补缴明细录入”操作的负载压力测试。

但该操作为不可逆操作,即系统未提供取消补缴的操作,为了清除测试数据,需手工修改数据库。

在这个项目测试中,我们采用了方法二、三、四进行风险规避,首先选择周末进行测试;

其次,为了保障测试结束后系统可恢复到测试前的状态,我们选择对北京市石景山区的参保用户进行该操作,测试执行完成后,由厂商对石景山区的数据进行了恢复,确保系统与测试前保持一致。

04 总结

在现在的系统测试,特别是大型项目的测试中,系统性能的好坏已经成为评价系统总体质量的一个必不可少的方面

作为第三方评测服务机构的我们,在生产环境实施性能测试的时候,必须对系统进行深入的了解

分析系统特点,采取合适的测试方法并综合运用风险规避手段,既要准确的获得系统的性能数据,又要保证系统的安全,这样才是一个成功的性能测试。

来源:本文转载自自动化测试订阅号,如有侵权请联系删除

本文分享自微信公众号 - 猪圈子(Tester-sc)

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

原始发表时间:2021-07-13

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 灵魂拷问:如何规避生产环境的性能测试风险?

    Hi,大家好,常言道,上线一时爽,事后火葬场。隐秘Bug的哲学之道:不知道藏在哪里,不知道有多少,总是在你准备休息的时候出现。生产环境一旦出问题,内心一阵发凉,...

    ITester软件测试小栈
  • 微保在敏捷研发管理中的实践

    创业团队在组建和扩张时如何高效协作,是组织要解决的大难题。明确目标、确保成员清晰知道如何配合、过程中管理好干系人预期、关键环节做好变更管理和风险把控、采用增量...

    TAPD敏捷研发
  • 软件安全策略分享

    我想作为一个信息安全从业者,无论是在渗透测试、代码审计亦或是其他安全服务中都会接触到各种各样的漏洞。把这些漏洞进行简单分类可能能够得到几十类漏洞,当然几乎所有的...

    FB客服
  • 全链路压测体系建设方案的思考与实践

    在金融、零售快消、物流、新能源等传统行业,通常都会有一个相对独立的测试团队,其中包括了性能测试。

    iTesting
  • 防范攻击 加强管控 - 数据库安全的16条军规

    近日的数据安全事故,引发了很多企业的普遍关注,而不少用户从彻查中确实发现自己的数据库已经被注入,这为大家上了数据安全的重要一课。 甚至有的企业要求停用PL/SQ...

    数据和云
  • Shift Left在开发安全中的应用

    开发安全是一个老生常谈的话题,随着云计算、虚拟化等技术的发展,开发安全在SDL(Software Development Life Cycle)、DevOps中...

    aerfa
  • 静默错误:为什么看了那么多灾难,还是过不好备份这一关?

    8月6日 消息:近日,腾讯云用户“前沿数控”平台一块操作系统云盘,因受所在物理硬盘固件版本Bug导致的静默错误,文件系统元数据损坏。

    MongoDB中文社区
  • 静默错误:为什么看了那么多灾难,还是过不好备份这一关?

    可是毕竟广告好不好,还要看疗效,9个9的可靠性,你也永远无法论证你不是那 0.00000001%。

    数据和云
  • 微前端究竟是什么,可以带来什么收益

    https://juejin.im/post/6893307922902679560

    苏南
  • 网站做渗透测试服务的注意事项

    对于客户的渗透测试来说,在进行前与用户沟通某些有关事项是非常必要的:首先是渗透测试的目的:用户这次的需求是什么?等待保险、日常安全检查或者其他目的,不同的目的决...

    网站安全专家
  • 客户网站渗透测试需要提前预备的事项

    对于客户的渗透测试来说,在进行前与用户沟通某些有关事项是非常必要的:首先是渗透测试的目的:用户这次的需求是什么?等待保险、日常安全检查或者其他目的,不同的目的决...

    技术分享达人
  • 多层次金融科技治理体系研究——以英国监管沙盒为例

    金融科技是把双刃剑,需要建立起一套激发创新激励和风险管控的包容性双效监管机制。英国推出的“监管沙盒”监管创新,通过提供容错空间和监管指导,落实适度监管、柔性监管...

    用户1310347
  • 混沌工程

    混沌工程师一门新兴的技术学科,它的初衷是通过实验性的方法,让人们建立复杂分布式系统能够在生产中抵御事件能力的信息。

    孙玄@奈学教育
  • 奈学教育:“混沌工程”的基本理念和使用原则

    混沌工程师一门新兴的技术学科,它的初衷是通过实验性的方法,让人们建立复杂分布式系统能够在生产中抵御事件能力的信息。

    江帅帅
  • 性能测试实施全过程指南

      通过制定性能测试实施指南,从技术角度对性能测试实施过程中所涉及到的关键技术进行规范,能更好地从技术上来规避系统上线后的风险、评估线上系统的真实能力、根据业务...

    小老鼠
  • 5、商业需求文档(BRD)写作方法与技巧

     1、BRD文档的目的 -发现 发现产品改进的可能、一个创新产品 -需要 要权重、要项目、要资源 2、关于汇报对象 BRD也是一个产品,BRD的产品就是你和你的...

    陈树义
  • 扫雷行动——IDC人身安全管理

    数据中心IDC作为一个汇聚风、火、水、电的综合战场,隐藏着各种危及人身安全的“地雷”。如何保障IDC现场人员的人身安全?继上一期腾讯IDC物理安全介绍后,且看I...

    腾讯数据中心
  • 【运维安全】运维安全之应用发布安全隐患

    然而,影响业务的连续性、可用性不止是避免遭受攻击,安全隐患也可能潜伏在应用的上线流程中。

    aerfa
  • 性能专题:性能测试实施全过程指南

    本文是公号内性能专题,更新的第四篇,前三篇可参照上述。本想从理论到实践,以循序渐进的形式为大家分享介绍性能的知识体系,《性能专题之服务端测试》这部分,内容其实已...

    测试开发技术

扫码关注云+社区

领取腾讯云代金券