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

2024-03-25 23:38

本文主要是介绍面试官一题难住我:如何规避生产环境性能测试风险 ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

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

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

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

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

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

存在哪些风险?

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

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

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

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

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

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

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

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

02 风险规避手段有哪些?

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

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

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

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

3. 给测试数据加标记

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

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

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

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

4. 实时关注系统状态

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

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

03实际工作中

风险规避方法的运用

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

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

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

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

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

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

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

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

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

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

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

04 总结

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

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

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

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

推荐阅读

假如我是一名性能测试高手!

数据库压力测试方法概述

项目经理 : "UAT验收环节,测试同学做的很给力"

这篇关于面试官一题难住我:如何规避生产环境性能测试风险 ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846632

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

yolov3 上生产

1、在生产环境上编译darknet,执行make命令就好哦。  通过以后,拿到libdarknet.so 2、改一改../python/darknet.py文件 3、把darknet里的四个模型文件地址改一改就可以了     后面我会写一篇详细的,今天我要回家了

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何优化数据库查询性能,这是提升应用程序响应速度和用户体验的关键技术。 优化数据库查询性能的重要性 在现代应用开发中,数据库查询是最常见的操作之一。随着数据量的增加和业务复杂度的提升,数据库查询的性能优化显得尤为重

华为某员工爆料:偷偷跑出去面试,被面试官鄙视了。第一句话就问:华为淘汰的吧,35岁了,这个年龄在华为能混得下去吗?身体没啥毛病吧

“你都35岁了,难不成是被华为淘汰的?在华为混不下去了吧?身体没啥毛病吧,我们这体检可是很严的。” 近日,一位华为员工在朋友圈爆料,自己在面试时遭到了面试官的无理取闹和人身攻击,原因仅仅是因为他35岁了,曾经在华为工作过。 这番话,充满了傲慢与偏见,让人听了义愤填膺。这位面试官的言行,不仅是对求职者的不尊重,更是对职场规则的践踏。 面试本应是双向选择的过程,企业和求职者在相互了解的基

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”,意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相关依赖 <?xml version

cocospod 搭建环境和使用

iOS 最新版 CocoaPods 的安装流程 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sources -a https://ruby.taobao.org/ 3.验证新源是否替换成功 $gem sources -l 4.安装CocoaPods (1)  $sudo gem