













摘" 要:性能測(cè)試是日常軟件測(cè)試過程中不可或缺的一個(gè)環(huán)節(jié),文章以實(shí)際項(xiàng)目通信運(yùn)營(yíng)商的資源管理系統(tǒng)中的家寬業(yè)務(wù)開通接口進(jìn)行性能測(cè)試為案例,首先提出接口性能測(cè)試的可行性方案,同時(shí)借助接口測(cè)試工具SoapUI進(jìn)行壓力測(cè)試和用Nmon工具進(jìn)行服務(wù)器資源監(jiān)控,模擬用戶開通家寬業(yè)務(wù)的并發(fā)場(chǎng)景。在壓力測(cè)試過程中檢測(cè)軟件是否存在缺陷,并分析其產(chǎn)生的原因,最終達(dá)到預(yù)防或解決軟件性能問題的目標(biāo)。同時(shí),對(duì)性能測(cè)試的重要性進(jìn)行分析,為相關(guān)測(cè)試人員提供一定的指導(dǎo)與借鑒。
關(guān)鍵詞:家寬業(yè)務(wù)開通;SoapUI;性能測(cè)試應(yīng)用;性能測(cè)試重要性
中圖分類號(hào):TP311.5" 文獻(xiàn)標(biāo)識(shí)碼:A" 文章編號(hào):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" 引" 言
隨著互聯(lián)網(wǎng)和人工智能的快速發(fā)展,軟件產(chǎn)品現(xiàn)在已經(jīng)滲透在各個(gè)領(lǐng)域的應(yīng)用,用戶對(duì)軟件產(chǎn)品的質(zhì)量和效率提出了更高的要求[1-4]。除功能測(cè)試外,性能測(cè)試引起了客戶和軟件從業(yè)人員的重視。功能測(cè)試主要根據(jù)用戶的業(yè)務(wù)需求,模擬用戶操作來測(cè)試功能以確認(rèn)功能是否能滿足用戶實(shí)際的需求。性能測(cè)試則是通過特定的方式和手段,借助壓力測(cè)試工具對(duì)軟件系統(tǒng)按照一定的測(cè)試方案進(jìn)行負(fù)載測(cè)試,并獲取被測(cè)試系統(tǒng)的響應(yīng)時(shí)間、事務(wù)運(yùn)行效率、服務(wù)器的資源利用情況等各項(xiàng)性能指標(biāo),來評(píng)估系統(tǒng)是否滿足用戶性能需求的過程[5-6]。如何對(duì)系統(tǒng)進(jìn)行性能測(cè)試,測(cè)試哪些功能點(diǎn),關(guān)心哪些性能指標(biāo),已經(jīng)成為軟件企業(yè)中亟待解決的課題。本文以實(shí)際項(xiàng)目中的家庭客戶寬帶開通業(yè)務(wù)(簡(jiǎn)稱家客)進(jìn)行收單的壓力測(cè)試,對(duì)測(cè)試方案進(jìn)行了分析,借助SoapUI測(cè)試工具模擬各種場(chǎng)景的收單請(qǐng)求,并使用Nmon工具對(duì)壓力測(cè)試過程中收集系統(tǒng)性能收集,最后根據(jù)測(cè)試結(jié)果進(jìn)行分析,從而對(duì)性能測(cè)試的重要性進(jìn)行評(píng)價(jià)[7-10]。
1" 性能測(cè)試方案
1.1" 測(cè)試需求
在某省運(yùn)營(yíng)商的資源管理系統(tǒng)中,家客工單需要在全省上線使用,預(yù)計(jì)高峰期1天約5.5萬張工單,需要驗(yàn)證系統(tǒng)是否可以支持這個(gè)數(shù)據(jù)量的壓力以及家客收單的性能。通過前期調(diào)研和準(zhǔn)備,決定先在現(xiàn)有的實(shí)驗(yàn)室測(cè)試環(huán)境中,運(yùn)用開源的接口測(cè)試工具SoapUI對(duì)家客收單接口進(jìn)行模擬真實(shí)使用環(huán)境的壓力負(fù)載,并監(jiān)控服務(wù)器資源利用率,最終判斷系統(tǒng)是否可以承受大量并發(fā)收單的壓力。生產(chǎn)環(huán)境的配置比實(shí)驗(yàn)室測(cè)試環(huán)境更高,如果測(cè)試環(huán)境性能達(dá)標(biāo),生產(chǎn)環(huán)境的性能會(huì)更優(yōu)。
1.2" 測(cè)試準(zhǔn)備
1.2.1" 硬件配置
硬件配置如表1所示。測(cè)試所用機(jī)器并不是全部為壓力測(cè)試服務(wù),受條件所致,數(shù)據(jù)庫服務(wù)器和中間件服務(wù)器同時(shí)跑著多個(gè)服務(wù)。
1.2.2" 測(cè)試工具(SoapUI)
SoapUI的主要特點(diǎn)有:
1)屬于開源工具,功能好用且強(qiáng)大、界面簡(jiǎn)單易用。
2)支持功能測(cè)試、接口測(cè)試、負(fù)載測(cè)試、回歸測(cè)試等多種測(cè)試。
3)既支持基于簡(jiǎn)單對(duì)象訪問協(xié)議(Simple Object Access Protocol, SOAP)的Web服務(wù),還支持REST風(fēng)格的Web服務(wù)。
SoapUI將測(cè)試分為三個(gè)級(jí)別,即TestSuite、TestCase和TestStep:
1)測(cè)試集(TestSuite):測(cè)試用例的集合,可以在項(xiàng)目中創(chuàng)建任意數(shù)量的測(cè)試集,用于支撐大量的測(cè)試用例。
2)測(cè)試用例(TestCase):測(cè)試某個(gè)特定功能或接口API,可以組合不同的測(cè)試步驟完成該功能測(cè)試流程。
3)測(cè)試步驟(TestStep):最基礎(chǔ)的單位,適用于控制、執(zhí)行測(cè)試步驟,以及驗(yàn)證被測(cè)試服務(wù)返回。測(cè)試步驟是SoapUI的核心部分,靈活使用測(cè)試步驟,不僅可以提高測(cè)試的工作效率,還能節(jié)約腳本維護(hù)成本。
SoapUI支持使用自定義屬性(Property)在項(xiàng)目中存儲(chǔ)和共享數(shù)據(jù)。Property可以被 Groovy Script腳本、Property Transfer等引用,所有的屬性都被處理為字符串。
SoapUl允許在項(xiàng)目的各個(gè)層次中定義屬性,常用的層次包括:Project、TestSuite、TestCase、Property。
Project級(jí)別的屬性適用于整個(gè)項(xiàng)目,使用語法$。TestSuite級(jí)別的屬性適用于整個(gè)測(cè)試集,使用語法$。TestCase級(jí)別的屬性適用于整個(gè)測(cè)試用例,使用語法$。Property級(jí)別的屬性適用于測(cè)試步驟,使用語法$(Property 級(jí)別的語法有些特別,Properties 是測(cè)試步驟的名稱,可以修改)。屬性的變量引用如圖1所示。
要使用SoapUI進(jìn)行測(cè)試,首先要準(zhǔn)備好工作空間,用來后續(xù)存放文件。其次,創(chuàng)建項(xiàng)目,項(xiàng)目可以存在多個(gè)測(cè)試集,而測(cè)試集包含多個(gè)測(cè)試用例,比如不同的接口或API。在測(cè)試用例中的測(cè)試步驟中,包括如請(qǐng)求、變量設(shè)置、數(shù)據(jù)源、Groovy腳本等。最終項(xiàng)目可以導(dǎo)出為xml格式存儲(chǔ),測(cè)試流程如圖2所示。
1.2.3" 監(jiān)控工具(Nmon)
Nmon(Network Monitor)是一個(gè)性能監(jiān)視工具。它主要用于在Unix和Linux系統(tǒng)上實(shí)時(shí)監(jiān)視系統(tǒng)性能和資源利用率。Nmon可以提供有關(guān)CPU使用率、內(nèi)存使用情況、磁盤活動(dòng)、網(wǎng)絡(luò)流量等系統(tǒng)性能指標(biāo)的詳細(xì)信息。
如圖3所示,Nmon以交互式的方式運(yùn)行,用戶可以通過終端界面顯示實(shí)時(shí)數(shù)據(jù),同時(shí)也支持將數(shù)據(jù)寫入文件中,以供后續(xù)分析。該工具可以協(xié)助系統(tǒng)管理員、性能分析師和其他用戶深入了解系統(tǒng)的運(yùn)行狀況,從而更好地優(yōu)化和調(diào)整系統(tǒng)性能。
如圖4所示,執(zhí)行收集指令后,查詢后能看到生成的.nmon結(jié)尾的結(jié)果文件,該文件將記錄時(shí)間段內(nèi)的系統(tǒng)性能指標(biāo),從而可以發(fā)現(xiàn)在壓測(cè)過程中,程序?qū)Ψ?wù)器的資源占用情況,有沒有引起異常,壓測(cè)后指標(biāo)有沒有下降等。
若要查看和使用所收集到的數(shù)據(jù),就要引入分析工具Nmon Analyser,Nmon Analyser是一個(gè)專門用于分析和可視化Nmon監(jiān)控?cái)?shù)據(jù)的工具,提供了一個(gè)圖形用戶界面,可以加載Nmon數(shù)據(jù)文件并以圖表和表格的形式顯示性能指標(biāo)。用戶可以通過直觀的圖形化界面輕松地查看系統(tǒng)的CPU使用率、內(nèi)存使用情況、磁盤I/O、網(wǎng)絡(luò)流量等信息,以及在不同時(shí)間段內(nèi)這些指標(biāo)的變化趨勢(shì)。Nmon Analyser工具的界面如圖5所示。
點(diǎn)擊Analyze nmon data按鈕后,會(huì)彈出一個(gè)文件選擇對(duì)話框,我們選中之前記錄的Nmon文件即可。如圖6所示,生成數(shù)據(jù)圖表,可以更直觀的查看服務(wù)器性能變化。
1.2.4" 測(cè)試場(chǎng)景與用例設(shè)計(jì)
根據(jù)某省家客工單的實(shí)際使用的場(chǎng)景,該省下面有11個(gè)地市,每個(gè)地市有多個(gè)營(yíng)業(yè)廳,營(yíng)業(yè)廳下面有不同的終端,并且在不同的工作時(shí)間段內(nèi)進(jìn)行不同并發(fā)派單,派單間隔的時(shí)長(zhǎng)等不同場(chǎng)景,設(shè)計(jì)如表2所示的測(cè)試用例。
2" 性能遇到的問題和解決方法
2.1" 資源爭(zhēng)用問題
在負(fù)載測(cè)試的過程中,發(fā)現(xiàn)了一個(gè)問題:對(duì)同一個(gè)客戶的開通動(dòng)作會(huì)出現(xiàn)資源繁忙的情況,導(dǎo)致收單失敗。后來通過與用戶、需求、開發(fā)多方溝通發(fā)現(xiàn),在實(shí)際使用場(chǎng)景中,同一個(gè)客戶不會(huì)存在多并發(fā)的情況。通過對(duì)工具研究發(fā)現(xiàn),優(yōu)化壓測(cè)腳本,在接口發(fā)送請(qǐng)求時(shí),讓客戶對(duì)象使用隨機(jī)數(shù)生成,如圖7所示,最后順利地解決了這個(gè)問題:
Random rand = new Random()
result = \"20240528\" + rand.nextInt(10000) +rand.nextInt(10000)
2.2" 隊(duì)列收單和狀態(tài)機(jī)改造
在家客業(yè)務(wù)上線一段時(shí)間之后,發(fā)現(xiàn)工單數(shù)量比之前預(yù)計(jì)的有增多,之前預(yù)計(jì)全省1天約有22 000張工單,后來發(fā)展比較快,約1天有50 000張工單。這對(duì)當(dāng)時(shí)的軟件架構(gòu)和流程引擎是有一定的沖擊。為了大力支持和保障家客業(yè)務(wù)的順利運(yùn)行,通過開發(fā)的家客接口架構(gòu)調(diào)整,使用隊(duì)列收單代替之前的實(shí)時(shí)收單,使用狀態(tài)機(jī)代替流程引擎。隊(duì)列收單是通過一個(gè)中間表,將第三方系統(tǒng)送過來的接口請(qǐng)求緩存到中間表,并設(shè)置最大緩存工單的數(shù)目,如500,然后通過隊(duì)列中的線程,設(shè)置最大線程數(shù)為10,則有10個(gè)線程對(duì)中間表的記錄進(jìn)行收單到系統(tǒng)。通過壓測(cè)結(jié)果表明,實(shí)時(shí)收單與隊(duì)列收單的響應(yīng)時(shí)間相比,從秒級(jí)上升到毫秒級(jí),收單速度實(shí)現(xiàn)了質(zhì)的飛越。
2.3" 回歸壓測(cè)發(fā)現(xiàn)的問題
2.3.1" 缺索引導(dǎo)致的壓測(cè)變慢
在回歸測(cè)試中,發(fā)現(xiàn)響應(yīng)時(shí)間比以往的慢了接近2倍。之前平均時(shí)間在0.28 s,最近一次壓測(cè)竟然達(dá)到0.79 s,速度慢了接近3倍。通過在數(shù)據(jù)庫的報(bào)告,發(fā)現(xiàn)壓測(cè)過程中有1條查詢SQL有問題,執(zhí)行計(jì)劃顯示了這條SQL對(duì)家客的E表做了全表掃描。于是馬上通知開發(fā)和數(shù)據(jù)庫管理員,通過壓測(cè)提供的日志和數(shù)據(jù)庫報(bào)告及SQL語句,開發(fā)調(diào)查最近代碼方面是否做了邏輯改造,數(shù)據(jù)庫管理員查詢SQL語句是否有問題或是否缺少索引等方面展開排查。最后通過各方人員的努力,找到了問題的根源:家客E表的userid字段沒有索引。加上索引之后,重新進(jìn)行壓力測(cè)試,響應(yīng)時(shí)間提升到0.1 s,與以往相比,是平均收單響應(yīng)最快的一次。在軟件研發(fā)平時(shí)的工作中,需要考慮數(shù)據(jù)庫字段索引的問題。
2.3.2" 收單隊(duì)列失效
在一次家客壓測(cè)回歸測(cè)試中,通過以往的壓測(cè)經(jīng)驗(yàn),發(fā)現(xiàn)了一個(gè)非常嚴(yán)重的缺陷。因?yàn)橹凹铱偷墓瓮ㄟ^隊(duì)列來收單,單子緩存到一個(gè)中間表,然后同過后臺(tái)進(jìn)程并發(fā)處理,但是回歸壓測(cè)的時(shí)候,發(fā)現(xiàn)速度非常慢,而且中間表的數(shù)據(jù)并沒有生成,根據(jù)之前多次的壓測(cè)經(jīng)驗(yàn),立即定位到問題為緩存的功能失效了。第一時(shí)間與開發(fā)人員溝通,開發(fā)檢查了代碼后,發(fā)現(xiàn)是不小心修改了一處代碼引起,開發(fā)人員提供補(bǔ)丁之后,重新進(jìn)行壓測(cè),功能正常。如果沒有壓測(cè)回歸,單次收單發(fā)現(xiàn)不了該問題,一旦現(xiàn)場(chǎng)上線該版本,后果不堪設(shè)想。所以這次的壓測(cè)回歸,成功地避免了一次生產(chǎn)上的大事故。
3" 性能測(cè)試結(jié)果及分析
3.1" 測(cè)試結(jié)果指標(biāo)解釋
測(cè)試結(jié)果指標(biāo)的詳細(xì)說明如表3所示,由于測(cè)試工具問題,請(qǐng)求數(shù)不是特別精確,只作參考,具體以接口數(shù)和實(shí)際工單數(shù)為準(zhǔn)。
3.2" 隊(duì)列改造前測(cè)試執(zhí)行結(jié)果
通過表4的數(shù)據(jù),可以看出,在隊(duì)列改造之前,實(shí)際工單數(shù)比接口數(shù)偏低,說明有丟單的情況,需要進(jìn)行改造。
3.3" 收單隊(duì)列測(cè)試結(jié)果
如表5所示,系統(tǒng)進(jìn)行改造后,即家客收單接口改造成通過隊(duì)列來收單,性能跟之前相比,有很大的提升,以下是最近一次家客收單壓力測(cè)試數(shù)據(jù),結(jié)果表明,沒有丟單情況,響應(yīng)時(shí)間0.1 s,相比之下,性能提示非常明顯。
3.4" 結(jié)果分析
在家客場(chǎng)景1中,10并發(fā),持續(xù)30分鐘,接口數(shù)31 501,工單數(shù)31 501,平均響應(yīng)時(shí)間0.1 s,沒有出現(xiàn)丟單情況。
家客場(chǎng)景1中的服務(wù)器資源利用率正常,在壓測(cè)結(jié)束后,服務(wù)器回落到正常的水平。
中間件服務(wù)器的CPU和IO使用情況如圖8所示,數(shù)據(jù)庫服務(wù)器的CPU和IO使用情況如圖9所示。
具體而言,從家客場(chǎng)景1可以看出,并發(fā)數(shù)10,持續(xù)30分鐘,沒有出現(xiàn)丟單情況。另外,從服務(wù)器資源利用情況可以看出:在前30分鐘的不斷請(qǐng)求中,中間件的CPU使用率相對(duì)比較高,IO中間有3次較高;但在場(chǎng)景結(jié)束后,CPU和IO恢復(fù)至較低水平。數(shù)據(jù)庫服務(wù)的CPU資源利用率在前30分鐘比較高,在工單請(qǐng)求結(jié)束后,利用率下降,由于緩存收單,后續(xù)在后臺(tái)還需要處理工單和產(chǎn)品,需要占用一定的資源,在這個(gè)區(qū)間,CPU使用相對(duì)平穩(wěn)。IO在前30分鐘的請(qǐng)求中比較平穩(wěn),之后恢復(fù)到較低水平。該功能點(diǎn)在并發(fā)場(chǎng)景下,不存在性能問題。
4" 結(jié)" 論
本文通過在通信運(yùn)營(yíng)商項(xiàng)目中對(duì)家客收單的性能測(cè)試,得出性能測(cè)試和性能回歸在軟件生命周期和質(zhì)量保證中起著重要的作用。隨著移動(dòng)通信技術(shù)的飛速發(fā)展,通信行業(yè)產(chǎn)品在各個(gè)領(lǐng)域中廣泛應(yīng)用,用戶量的增加,系統(tǒng)承擔(dān)的負(fù)荷也會(huì)隨著增加,系統(tǒng)軟件的質(zhì)量和性能的好壞將嚴(yán)重影響企業(yè)的自身利益。因此,在軟件企業(yè)中,特別是業(yè)務(wù)量龐大的生產(chǎn)系統(tǒng),性能測(cè)試的推廣和優(yōu)化必須重視。
參考文獻(xiàn):
[1] 馬振蕓.API接口測(cè)試方法總結(jié)與綜述 [J].數(shù)字技術(shù)與應(yīng)用,2024,42(1):10-13.
[2] 高靜.接口管理與自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì) [J].廣播電視網(wǎng)絡(luò),2024,31(1):85-88.
[3] 王順順.基于Selenium的Web應(yīng)用系統(tǒng)自動(dòng)化測(cè)試軟件的設(shè)計(jì)與實(shí)現(xiàn) [D].西安:西安石油大學(xué),2023.
[4] 孫立哲.異步接口性能測(cè)試方案中關(guān)鍵技術(shù)設(shè)計(jì)優(yōu)化與實(shí)踐 [J].計(jì)算機(jī)應(yīng)用與軟件,2023,40(8):13-16+103.
[5] 黃志輝,蔡杰峰,蔡漢釣.接口自動(dòng)化測(cè)試的應(yīng)用實(shí)踐 [J].廣播電視網(wǎng)絡(luò),2023,30(7):103-105.
[6] 高文輝.軟件測(cè)試中接口測(cè)試概述與實(shí)踐 [J].數(shù)字技術(shù)與應(yīng)用,2020,38(3):112+114.
[7] 代曉倩,高賽軍,張風(fēng)玲,等.軟件接口測(cè)試的典型缺陷分析與測(cè)試設(shè)計(jì)優(yōu)化 [J].工業(yè)控制計(jì)算機(jī),2024,37(9):25-27.
[8] 羅作民,朱燕,程明.Web服務(wù)測(cè)試工具SOAPUI及其分析 [J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(5):155-157.
[9] 陳霽.性能測(cè)試進(jìn)階指南 [M].北京:電子工業(yè)出版社,2013.
[10] MYERS G J,BADGETT T,SANDLER C,等.軟件測(cè)試的藝術(shù):第3版 [M].張曉明,黃琳,譯.北京:機(jī)械工業(yè)出版社,2012.
作者簡(jiǎn)介:戴桂瓊(1985—),女,漢族,廣東茂名人,中級(jí)工程師,本科,研究方向:計(jì)算機(jī)科學(xué)與技術(shù)。