性能测试在运营商业务开通中的应用及重要性研究

known 发布于 2025-08-25 阅读(438)

摘" 要:性能测试是日常软件测试过程中不可或缺的一个环节,文章以实际项目通信运营商的资源管理系统中的家宽业务开通接口进行性能测试为案例,首先提出接口性能测试的可行性方案,同时借助接口测试工具SoapUI进行压力测试和用Nmon工具进行服务器资源监控,模拟用户开通家宽业务的并发场景。在压力测试过程中检测软件是否存在缺陷,并分析其产生的原因,最终达到预防或解决软件性能问题的目标。同时,对性能测试的重要性进行分析,为相关测试人员提供一定的指导与借鉴。

关键词:家宽业务开通;SoapUI;性能测试应用;性能测试重要性

中图分类号:TP311.5" 文献标识码:A" 文章编号:2096-4706(2024)23-0005-06

Application and Importance Research on Performance Testing in Business Opening of Operators

DAI Guiqiong

(Shanghai Sincere Technology Co., Ltd., Shanghai" 201203, China)

Abstract: Performance testing is an indispensable part of the daily software testing process. This paper takes the performance testing of the home bandwidth-based business opening interface in the resource management system of an actual project communication operator as a case. Firstly, a workable solution for interface performance testing is proposed. At the same time, the interface testing tool SoapUI is used for stress testing and Nmon tool is used for server resource monitoring to simulate the concurrent scenario of users opening home bandwidth-based business. During the stress testing process, software is tested whether there are defects, and the causes of producing defects are analyzed, ultimately achieving the goal of preventing or solving software performance problems. Meanwhile, analyzing the importance of performance testing provides certain guidance and reference for related testers.

Keywords: home bandwidth-based business opening; SoapUI; performance testing application; importance of performance testing

0" 引" 言

随着互联网和人工智能的快速发展,软件产品现在已经渗透在各个领域的应用,用户对软件产品的质量和效率提出了更高的要求[1-4]。除功能测试外,性能测试引起了客户和软件从业人员的重视。功能测试主要根据用户的业务需求,模拟用户操作来测试功能以确认功能是否能满足用户实际的需求。性能测试则是通过特定的方式和手段,借助压力测试工具对软件系统按照一定的测试方案进行负载测试,并获取被测试系统的响应时间、事务运行效率、服务器的资源利用情况等各项性能指标,来评估系统是否满足用户性能需求的过程[5-6]。如何对系统进行性能测试,测试哪些功能点,关心哪些性能指标,已经成为软件企业中亟待解决的课题。本文以实际项目中的家庭客户宽带开通业务(简称家客)进行收单的压力测试,对测试方案进行了分析,借助SoapUI测试工具模拟各种场景的收单请求,并使用Nmon工具对压力测试过程中收集系统性能收集,最后根据测试结果进行分析,从而对性能测试的重要性进行评价[7-10]。

1" 性能测试方案

1.1" 测试需求

在某省运营商的资源管理系统中,家客工单需要在全省上线使用,预计高峰期1天约5.5万张工单,需要验证系统是否可以支持这个数据量的压力以及家客收单的性能。通过前期调研和准备,决定先在现有的实验室测试环境中,运用开源的接口测试工具SoapUI对家客收单接口进行模拟真实使用环境的压力负载,并监控服务器资源利用率,最终判断系统是否可以承受大量并发收单的压力。生产环境的配置比实验室测试环境更高,如果测试环境性能达标,生产环境的性能会更优。

1.2" 测试准备

1.2.1" 硬件配置

硬件配置如表1所示。测试所用机器并不是全部为压力测试服务,受条件所致,数据库服务器和中间件服务器同时跑着多个服务。

1.2.2" 测试工具(SoapUI)

SoapUI的主要特点有:

1)属于开源工具,功能好用且强大、界面简单易用。

2)支持功能测试、接口测试、负载测试、回归测试等多种测试。

3)既支持基于简单对象访问协议(Simple Object Access Protocol, SOAP)的Web服务,还支持REST风格的Web服务。

SoapUI将测试分为三个级别,即TestSuite、TestCase和TestStep:

1)测试集(TestSuite):测试用例的集合,可以在项目中创建任意数量的测试集,用于支撑大量的测试用例。

2)测试用例(TestCase):测试某个特定功能或接口API,可以组合不同的测试步骤完成该功能测试流程。

3)测试步骤(TestStep):最基础的单位,适用于控制、执行测试步骤,以及验证被测试服务返回。测试步骤是SoapUI的核心部分,灵活使用测试步骤,不仅可以提高测试的工作效率,还能节约脚本维护成本。

SoapUI支持使用自定义属性(Property)在项目中存储和共享数据。Property可以被 Groovy Script脚本、Property Transfer等引用,所有的属性都被处理为字符串。

SoapUl允许在项目的各个层次中定义属性,常用的层次包括:Project、TestSuite、TestCase、Property。

Project级别的属性适用于整个项目,使用语法$。TestSuite级别的属性适用于整个测试集,使用语法$。TestCase级别的属性适用于整个测试用例,使用语法$。Property级别的属性适用于测试步骤,使用语法$(Property 级别的语法有些特别,Properties 是测试步骤的名称,可以修改)。属性的变量引用如图1所示。

要使用SoapUI进行测试,首先要准备好工作空间,用来后续存放文件。其次,创建项目,项目可以存在多个测试集,而测试集包含多个测试用例,比如不同的接口或API。在测试用例中的测试步骤中,包括如请求、变量设置、数据源、Groovy脚本等。最终项目可以导出为xml格式存储,测试流程如图2所示。

1.2.3" 监控工具(Nmon)

Nmon(Network Monitor)是一个性能监视工具。它主要用于在Unix和Linux系统上实时监视系统性能和资源利用率。Nmon可以提供有关CPU使用率、内存使用情况、磁盘活动、网络流量等系统性能指标的详细信息。

如图3所示,Nmon以交互式的方式运行,用户可以通过终端界面显示实时数据,同时也支持将数据写入文件中,以供后续分析。该工具可以协助系统管理员、性能分析师和其他用户深入了解系统的运行状况,从而更好地优化和调整系统性能。

如图4所示,执行收集指令后,查询后能看到生成的.nmon结尾的结果文件,该文件将记录时间段内的系统性能指标,从而可以发现在压测过程中,程序对服务器的资源占用情况,有没有引起异常,压测后指标有没有下降等。

若要查看和使用所收集到的数据,就要引入分析工具Nmon Analyser,Nmon Analyser是一个专门用于分析和可视化Nmon监控数据的工具,提供了一个图形用户界面,可以加载Nmon数据文件并以图表和表格的形式显示性能指标。用户可以通过直观的图形化界面轻松地查看系统的CPU使用率、内存使用情况、磁盘I/O、网络流量等信息,以及在不同时间段内这些指标的变化趋势。Nmon Analyser工具的界面如图5所示。

点击Analyze nmon data按钮后,会弹出一个文件选择对话框,我们选中之前记录的Nmon文件即可。如图6所示,生成数据图表,可以更直观的查看服务器性能变化。

1.2.4" 测试场景与用例设计

根据某省家客工单的实际使用的场景,该省下面有11个地市,每个地市有多个营业厅,营业厅下面有不同的终端,并且在不同的工作时间段内进行不同并发派单,派单间隔的时长等不同场景,设计如表2所示的测试用例。

2" 性能遇到的问题和解决方法

2.1" 资源争用问题

在负载测试的过程中,发现了一个问题:对同一个客户的开通动作会出现资源繁忙的情况,导致收单失败。后来通过与用户、需求、开发多方沟通发现,在实际使用场景中,同一个客户不会存在多并发的情况。通过对工具研究发现,优化压测脚本,在接口发送请求时,让客户对象使用随机数生成,如图7所示,最后顺利地解决了这个问题:

Random rand = new Random()

result = \"20240528\" + rand.nextInt(10000) +rand.nextInt(10000)

2.2" 队列收单和状态机改造

在家客业务上线一段时间之后,发现工单数量比之前预计的有增多,之前预计全省1天约有22 000张工单,后来发展比较快,约1天有50 000张工单。这对当时的软件架构和流程引擎是有一定的冲击。为了大力支持和保障家客业务的顺利运行,通过开发的家客接口架构调整,使用队列收单代替之前的实时收单,使用状态机代替流程引擎。队列收单是通过一个中间表,将第三方系统送过来的接口请求缓存到中间表,并设置最大缓存工单的数目,如500,然后通过队列中的线程,设置最大线程数为10,则有10个线程对中间表的记录进行收单到系统。通过压测结果表明,实时收单与队列收单的响应时间相比,从秒级上升到毫秒级,收单速度实现了质的飞越。

2.3" 回归压测发现的问题

2.3.1" 缺索引导致的压测变慢

在回归测试中,发现响应时间比以往的慢了接近2倍。之前平均时间在0.28 s,最近一次压测竟然达到0.79 s,速度慢了接近3倍。通过在数据库的报告,发现压测过程中有1条查询SQL有问题,执行计划显示了这条SQL对家客的E表做了全表扫描。于是马上通知开发和数据库管理员,通过压测提供的日志和数据库报告及SQL语句,开发调查最近代码方面是否做了逻辑改造,数据库管理员查询SQL语句是否有问题或是否缺少索引等方面展开排查。最后通过各方人员的努力,找到了问题的根源:家客E表的userid字段没有索引。加上索引之后,重新进行压力测试,响应时间提升到0.1 s,与以往相比,是平均收单响应最快的一次。在软件研发平时的工作中,需要考虑数据库字段索引的问题。

2.3.2" 收单队列失效

在一次家客压测回归测试中,通过以往的压测经验,发现了一个非常严重的缺陷。因为之前家客的工单通过队列来收单,单子缓存到一个中间表,然后同过后台进程并发处理,但是回归压测的时候,发现速度非常慢,而且中间表的数据并没有生成,根据之前多次的压测经验,立即定位到问题为缓存的功能失效了。第一时间与开发人员沟通,开发检查了代码后,发现是不小心修改了一处代码引起,开发人员提供补丁之后,重新进行压测,功能正常。如果没有压测回归,单次收单发现不了该问题,一旦现场上线该版本,后果不堪设想。所以这次的压测回归,成功地避免了一次生产上的大事故。

3" 性能测试结果及分析

3.1" 测试结果指标解释

测试结果指标的详细说明如表3所示,由于测试工具问题,请求数不是特别精确,只作参考,具体以接口数和实际工单数为准。

3.2" 队列改造前测试执行结果

通过表4的数据,可以看出,在队列改造之前,实际工单数比接口数偏低,说明有丢单的情况,需要进行改造。

3.3" 收单队列测试结果

如表5所示,系统进行改造后,即家客收单接口改造成通过队列来收单,性能跟之前相比,有很大的提升,以下是最近一次家客收单压力测试数据,结果表明,没有丢单情况,响应时间0.1 s,相比之下,性能提示非常明显。

3.4" 结果分析

在家客场景1中,10并发,持续30分钟,接口数31 501,工单数31 501,平均响应时间0.1 s,没有出现丢单情况。

家客场景1中的服务器资源利用率正常,在压测结束后,服务器回落到正常的水平。

中间件服务器的CPU和IO使用情况如图8所示,数据库服务器的CPU和IO使用情况如图9所示。

具体而言,从家客场景1可以看出,并发数10,持续30分钟,没有出现丢单情况。另外,从服务器资源利用情况可以看出:在前30分钟的不断请求中,中间件的CPU使用率相对比较高,IO中间有3次较高;但在场景结束后,CPU和IO恢复至较低水平。数据库服务的CPU资源利用率在前30分钟比较高,在工单请求结束后,利用率下降,由于缓存收单,后续在后台还需要处理工单和产品,需要占用一定的资源,在这个区间,CPU使用相对平稳。IO在前30分钟的请求中比较平稳,之后恢复到较低水平。该功能点在并发场景下,不存在性能问题。

4" 结" 论

本文通过在通信运营商项目中对家客收单的性能测试,得出性能测试和性能回归在软件生命周期和质量保证中起着重要的作用。随着移动通信技术的飞速发展,通信行业产品在各个领域中广泛应用,用户量的增加,系统承担的负荷也会随着增加,系统软件的质量和性能的好坏将严重影响企业的自身利益。因此,在软件企业中,特别是业务量庞大的生产系统,性能测试的推广和优化必须重视。

参考文献:

[1] 马振芸.API接口测试方法总结与综述 [J].数字技术与应用,2024,42(1):10-13.

[2] 高静.接口管理与自动化测试系统的设计 [J].广播电视网络,2024,31(1):85-88.

[3] 王顺顺.基于Selenium的Web应用系统自动化测试软件的设计与实现 [D].西安:西安石油大学,2023.

[4] 孙立哲.异步接口性能测试方案中关键技术设计优化与实践 [J].计算机应用与软件,2023,40(8):13-16+103.

[5] 黄志辉,蔡杰峰,蔡汉钓.接口自动化测试的应用实践 [J].广播电视网络,2023,30(7):103-105.

[6] 高文辉.软件测试中接口测试概述与实践 [J].数字技术与应用,2020,38(3):112+114.

[7] 代晓倩,高赛军,张风玲,等.软件接口测试的典型缺陷分析与测试设计优化 [J].工业控制计算机,2024,37(9):25-27.

[8] 罗作民,朱燕,程明.Web服务测试工具SOAPUI及其分析 [J].计算机应用与软件,2010,27(5):155-157.

[9] 陈霁.性能测试进阶指南 [M].北京:电子工业出版社,2013.

[10] MYERS G J,BADGETT T,SANDLER C,等.软件测试的艺术:第3版 [M].张晓明,黄琳,译.北京:机械工业出版社,2012.

作者简介:戴桂琼(1985—),女,汉族,广东茂名人,中级工程师,本科,研究方向:计算机科学与技术。

标签:  测试 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor