• 12
  • 12
分享
  • 浅谈基于预测模型的软件性能测试TPS分析方法——软件测试圈
  • 曼倩诙谐 2021-06-21 11:25:39 字数 2720 阅读 1834 收藏 12

  性能测试是描述测试对象性能相关特征并对其进行评价而实施的一类测试,是软件测试的重要组成部分,对于保证软件质量起到了至关重要的作用。TPS指单位时间完成的事务数,是衡量服务器承载能力的重要指标,直接体现软件系统性能的承载能力。TPS在性能测试中常作为重点关注的性能指标,目标TPS的计算需要一套科学客观的方法。

  一、目标TPS的估算

  当前在软件性能测试中估算目标TPS通常都会考虑被测系统未来一段时间的预期交易量,然而对于未来预期交易量往往是项目组凭借主观经验估计一个业务年增长率来进行估算的,缺乏科学客观的预测方法。

  因此,我们提出了一种应用时间序列分析中的ARIMA模型估算被测软件未来预期日交易量,从而进行TPS分析的方法。该方法通过提取被测软件一段时间内生产上的交易量数据,建立ARIMA模型估算未来一段时间的交易量,为软件性能测试制定目标TPS提供科学客观的数据支撑。

  二、未来交易量的预测方法

  基于预测模型的软件性能测试TPS分析方法主要包括数据获取、描述性分析、数据预处理、模型训练、模型检验和交易量预测共六个主要步骤(如图1所示)。具体分析过程如下:

  步骤S1:获取数据。因时间序列受滞后期影响,模型效果与序列长度有关,条件允许情况下应获取较多数据。获取被测软件在一段连续时间内(两个季度以上)生产上的日交易量。如获取被测软件连续n天的日交易量,得到一个n维列向量(X1, X2, X3, ... , Xn)T。

  步骤S2:描述性分析。分析日交易量数据的基本特征,包括最大值、最小值、分位数等,以日期为横轴、日交易量为纵轴做序列曲线图,可视化展示日交易量数据序列,并观察数据变化趋势。

  步骤S3:季节性判断。根据步骤S2中序列曲线图判断交易量数据是否具有季节性,若曲线图中每间隔λ个时间单位后交易量数据呈现出相似性,如都处于波峰或波谷,或都处于上升或下降,称序列有长度为λ的季节特性。如部分金融系统交易量表现出每周7天的周期特征。

  步骤S4:数据预处理。主要为缺失数据处理和数据量级处理。

  缺失数据处理。当某天的日交易量数据缺失时需进行数据填充,可分为以下三种情况:

  1) 缺失值若出现在选取交易量时间段的开始和结尾,可直接删除这几天的数据;

  2) 缺失值出现在序列中间且日交易量数据不存在季节性(季节性通常指年、季度、月、周、节假日等引起的数据周期性改变,具有固定的周期长度),则用缺失值附近3到5天的日交易量的均值进行填充。如第j(j<n)天的日交易量数据Xj缺失,可用附近5天交易量数据填充,Xj=(Xj-1+Xj-2+Xj-3+Xj-4+Xj-5) / 5。

  3) 缺失值出现在序列中间且日交易量数据存在季节性,则用其他不同季节周期相同位置的日交易量的均值填充。设日交易量数据序列共有α个季节周期,季节性周期为λ,如果第β(1≤β≤α)个季节周期中的第j(j<n)天的日交易量数据Xj缺失,则:

2-1.jpg

  数据量级处理。当日交易量数据量级在千万级以上时则取自然对数降低数据量级,即将步骤S1中的n维列向量(X1, X2, X3, ... , Xn)T变换为(lnX1, lnX2, lnX3, ... , lnXn)T。

  步骤S5:季节性数据序列的因素分解。若数据序列具有季节性,则需要进行因素分解。因素分解是将原始序列分解成趋势项T、季节项S、随机项I,可用加法或者乘法分解,加法分解:Y=T+S+I,乘法分解:Y=T*S*I。当步骤S2中序列曲线图显示的季节变动大致相等,即时间序列图等宽变化时,应采用加法分解。当骤S2中序列曲线图显示的季节变动与长期趋势大致成正比时,应采用乘法模型。

  步骤S6:自相关、偏自相关分析。根据自相关图、偏自相关图初步确定序列是AR(自回归)序列还是MA(移动平均)序列,初步确定滞后阶数lag,即前期序列对后期影响的时间长度。如果自相关、偏自相关系数在最初的lag阶明显大于两倍标准差,lag阶之后的95%自相关、偏自相关系数在两倍标准差范围之内,且自相关、偏自相关系数衰减较快,初步确定滞后阶数为lag。

  步骤S7:平稳性判断。通过ADF单位根检验平稳性。时间序列平稳性指序列均值、方差是与时间无关的常数,协方差与时间间隔有关,与时间无关的常数。若因素分解后的趋势项不平稳,则进行差分运算,直到差分后的序列平稳,同时记录差分阶数d。若因素分解后的趋势项平稳,步骤S8中的模型参数差分阶数d为0。差分运算是时间序列后期值减去前期值,记:

2-2.jpg

记为:

2-3.jpg

  ω步差分,t为时间。

  步骤S8:确定模型参数。ARIMA模型参数(p, d, q),d是差分阶数,在步骤S7确定,p是交易量数据自相关滞后阶数,q是随机扰动影响交易量数据的滞后阶数。通过设定p、q变化范围,比如p的范围为1, 2, ... , p,q的范围为1, 2, ... , q,p、q应大于步骤S6中确定的lag阶数。循环迭代每一个(p, d, q)组合,建立一共p*q个ARIMA(p, d, q)模型,得到每一个模型的BIC统计量,共p*q个BIC统计量,BIC=m * ln(n) - 2ln(L),其中m为模型参数个数,n为样本数,L为似然函数。构建一个p行q列的BIC值矩阵,对BIC排序找出最小BIC所在的行数和列数即为p、q。

  BIC矩阵如下:

2-4.png

  步骤S9:建立ARIMA(p, d, q)模型。差分阶数d由步骤S7确定,滞后阶数p、q由步骤S8确定。

  步骤S10:分析评价模型。分析模型残差,通过LB统计量检验残差是否白噪声,若为白噪声,信息提取较充分,不为白噪声,可将p、q设置为步骤S6得到的滞后阶数lag尝试模型,也可设置为步骤S8得到的p、q附近值尝试模型。

2-5.jpg

  其中,n为残差序列长度,k为残差滞后阶数,ρk为残差自相关系数。

2-6.jpg

  μ为残差序列的均值。

  步骤S11:预测未来交易量X和TPS。输入需要预测的未来时间长度,用ARIMA模型预测未来交易量。根据预测结果计算TPS,按照二八原则,TPS=0.8X / (0.2H*60*60),H为系统每天发生业务的小时数。

2-7.jpg

图1 基于ARIMA预测模型的软件性能测试TPS分析方法流程示意图

  三、总结

  基于ARIMA模型的软件性能测试TPS分析方法,合理利用了已经产生的数据资产,应用时间序列分析方法预测未来交易量,进行性能测试目标TPS的计算,具有科学性和客观性。并且,该方法不依赖具体的系统和需求,只依赖交易量数据,无需其他特征数据,具有很好的适用性和推广价值。



作者:赵晓彬   

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   由于测试的薪水比较高,最近几年有很多其他专业的人涌进了测试行业,加速了这个行业的内卷,但是据某招聘网上的数据统计,测试当前的需求量还是远高于其他行业的平均线的。所以,测试的现状我觉得是不错的,至少几年内是无需担心的。  测试就业前景如何,我现在居住在一个三线城市,朋友是从事测试工程师,处于三线城市一个测试开发工程师就月入7k到9k更别说一线,二线城市,你说他的前景如何?现在还是互联网普及时代,新媒体快速发展,测试就显得尤为重要。  一、测试基本知识  测试同学的职责无非就是两个,保证软件测试质量和提高测试效率。  为了达到这两个目标,测试同学的日常就包括:常规需求的功能测试,自动化测试,性...
            0 0 439
            分享
          • 经常问的问题Q #1) PostgreSQL 相对于 MySQL 的优势是什么?答: PostgreSQL 以其可扩展性和对不同标准的遵从性而闻名。它是执行复杂操作的首选。Q #2) MySQL 相对于 PostgreSQL 的优势是什么?答: MySQL 是一个大型数据库,使用广泛,也是最值得信赖的数据库。Q #3) PostgreSQL 对数据库大小有任何限制吗?回答:不,PostgreSQL 中数据库的最大大小没有限制。它是无限的。Q #4) PostgreSQL 可以免费使用吗?答:是的,PostgreSQL 可以免费使用。该许可证类似于 MIT 风格的许可证。即使...
            0 0 899
            分享
          • 写测试用例的时候,不能想到什么就写什么,要按照一定的测试用例模板去写,要有自己的思路,不能完全去套用模拟以前的测试用例,按照一整套的测试流程来分析重要的关注点,时间长也会有自己积累的一套的测试模式,按照框架的思路,可能会达到事半功倍的效果哦!功能测试框架一般情况就是包含以下几类:界面友好性测试、功能测试、页面链接测试、容错测试、稳定性测试、性能测试(简单方面)等等。1.1.1界面友好性测试风格、样式的协调性是否合理界面布局是否整齐,尽量不要使用滚动条界面操作、标题描述要恰当操作符合大众的常规习惯提示界面符合规范(不要出现中英混写)界面中各个控件是否整齐美观日期控件是否可正常编辑、长度是否合理,...
            0 1 935
            分享
          • 基于主机的集中式架构核心系统面临着成本高昂、处理能力接近极限、技术封闭与弹性伸缩不足等方面的挑战。分布式核心系统,以构建主机+开放融合式架构为目标,搭建开放平台分布式核心系统应用平台,对原有的关联系统实现透明,对外提供统一的服务。分布式核心系统在扩展性、低成本、降低运行风险等方面具有明显优势。那么,分布式核心系统如何测试呢?小伙伴们,赶紧一起来看下吧!一、联机交易测试新架构下,开放平台继承主机(应用模块A)功能,搭建开放平台应用体系(开放系统A),服务于开放平台其它应用;与主机应用无关的功能从主机剥离,下移到开放平台,减少主机消耗。其总体架构如图1所示。图1 分布式核心系统总体架构根据原主机应...
            0 0 2961
            分享
          • 提纲:接口测试定义;接口测试的适用范围;接口测试的划分;接口测试小结。一、什么是接口测试主要用于检测外部系统与系统之间内部各个子系统之间的交互点,测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。接口可分为内部接口(开发人员)和外部接口(如组件接口和web服务器):系统与系统之间的调用;例如支付宝提供接口给淘宝调用,一个业务的修改可能会影响其他业务的使用,这是需要做接口测试;上层服务对下层服务的调用;例如Service层会调用DAO层的接口,而应用层会调用服务层提供的接口,比如注册用户时,会调用用户查询的服务,查询用户是否已经注册;我们所要做的接口测试,先了解基...
            0 0 840
            分享
      • 51testing软件测试圈微信