關(guān)鍵字:性能 軟件測試
性能測試在軟件的質(zhì)量保證中起著(zhù)重要的作用,它包括的測試內容豐富多樣。中國軟件評測中心將性能測試概括為三個(gè)方面:應用在客戶(hù)端性能的測試、應用在網(wǎng)絡(luò )上性能的測試和應用在服務(wù)器端性能測試。通常情況下,三方面有效、合理的結合,可以達到對系統性能全面的分析和瓶頸的預測。 應用在客戶(hù)端性能的測試
應用在客戶(hù)端性能測試的目的是考察客戶(hù)端應用的性能,測試的入口是客戶(hù)端。它主要包括并發(fā)性能測試、疲勞強度測試、大數據量測試和速度測試等,其中并發(fā)性能測試是重點(diǎn)。
◆ 并發(fā)性能測試是重點(diǎn)
并發(fā)性能測試的過(guò)程是一個(gè)負載測試和壓力測試的過(guò)程,即逐漸增加負載,直到系統的瓶頸或者不能接收的性能點(diǎn),通過(guò)綜合分析交易執行指標和資源監控指標來(lái)確定系統并發(fā)性能的過(guò)程。負載測試(Load Testing)是確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時(shí),系統組成部分的相應輸出項,例如通過(guò)量、響應時(shí)間、CPU負載、內存使用等來(lái)決定系統的性能。負載測試是一個(gè)分析軟件應用程序和支撐架構、模擬真實(shí)環(huán)境的使用,從而來(lái)確定能夠接收的性能過(guò)程。壓力測試(Stress Testing)是通過(guò)確定一個(gè)系統的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統能提供的最大服務(wù)級別的測試。
并發(fā)性能測試的目的主要體現在三個(gè)方面:以真實(shí)的業(yè)務(wù)為依據,選擇有代表性的、關(guān)鍵的業(yè)務(wù)操作設計測試案例,以評價(jià)系統的當前性能;當擴展應用程序的功能或者新的應用程序將要被部署時(shí),負載測試會(huì )幫助確定系統是否還能夠處理期望的用戶(hù)負載,以預測系統的未來(lái)性能;通過(guò)模擬成百上千個(gè)用戶(hù),重復執行和運行測試,可以確認性能瓶頸并優(yōu)化和調整應用,目的在于尋找到瓶頸問(wèn)題。
當一家企業(yè)自己組織力量或委托軟件公司代為開(kāi)發(fā)一套應用系統的時(shí)候,尤其是以后在生產(chǎn)環(huán)境中實(shí)際使用起來(lái),用戶(hù)往往會(huì )產(chǎn)生疑問(wèn),這套系統能不能承受大量的并發(fā)用戶(hù)同時(shí)訪(fǎng)問(wèn)? 這類(lèi)問(wèn)題最常見(jiàn)于采用聯(lián)機事務(wù)處理(OLTP)方式數據庫應用、Web瀏覽和視頻點(diǎn)播等系統。這種問(wèn)題的解決要借助于科學(xué)的軟件測試手段和先進(jìn)的測試工具。
◆ 舉例說(shuō)明:電信計費軟件
眾所周知,每月20日左右是市話(huà)交費的高峰期,全市幾千個(gè)收費網(wǎng)點(diǎn)同時(shí)啟動(dòng)。收費過(guò)程一般分為兩步,首先要根據用戶(hù)提出的電話(huà)號碼來(lái)查詢(xún)出其當月產(chǎn)生費用,然后收取現金并將此用戶(hù)修改為已交費狀態(tài)。一個(gè)用戶(hù)看起來(lái)簡(jiǎn)單的兩個(gè)步驟,但當成百上千的終端,同時(shí)執行這樣的操作時(shí),情況就大不一樣了,如此眾多的交易同時(shí)發(fā)生,對應用程序本身、操作系統、中心數據庫服務(wù)器、中間件服務(wù)器、網(wǎng)絡(luò )設備的承受力都是一個(gè)嚴峻的考驗。決策者不可能在發(fā)生問(wèn)題后才考慮系統的承受力, 預見(jiàn)軟件的并發(fā)承受力, 這是在軟件測試階段就應該解決的問(wèn)題。
目前,大多數公司企業(yè)需要支持成百上千名用戶(hù),各類(lèi)應用環(huán)境以及由不同供應商提供的元件組裝起來(lái)的復雜產(chǎn)品,難以預知的用戶(hù)負載和愈來(lái)愈復雜的應用程序,使公司擔憂(yōu)會(huì )發(fā)生投放性能差、用戶(hù)遭受反應慢、系統失靈等問(wèn)題。其結果就是導致公司收益的損失。
如何模擬實(shí)際情況呢? 找若干臺電腦和同樣數目的操作人員在同一時(shí)刻進(jìn)行操作,然后拿秒表記錄下反應時(shí)間? 這樣的手工作坊式的測試方法不切實(shí)際,且無(wú)法捕捉程序內部變化情況,這樣就需要壓力測試工具的輔助。
測試的基本策略是自動(dòng)負載測試,通過(guò)在一臺或幾臺PC機上模擬成百或上千的虛擬用戶(hù)同時(shí)執行業(yè)務(wù)的情景,對應用程序進(jìn)行測試,同時(shí)記錄下每一事務(wù)處理的時(shí)間、中間件服務(wù)器峰值數據、數據庫狀態(tài)等。通過(guò)可重復的、真實(shí)的測試能夠徹底地度量應用的可擴展性和性能,確定問(wèn)題所在以及優(yōu)化系統性能。預先知道了系統的承受力,就為最終用戶(hù)規劃整個(gè)運行環(huán)境的配置提供了有力的依據。
◆ 并發(fā)性能測試前的準備工作
測試環(huán)境:配置測試環(huán)境是測試實(shí)施的一個(gè)重要階段,測試環(huán)境的適合與否會(huì )嚴重影響測試結果的真實(shí)性和正確性。測試環(huán)境包括硬件環(huán)境和軟件環(huán)境,硬件環(huán)境指測試必需的服務(wù)器、客戶(hù)端、網(wǎng)絡(luò )連接設備以及打印機/掃描儀等輔助硬件設備所構成的環(huán)境;軟件環(huán)境指被測軟件運行時(shí)的操作系統、數據庫及其他應用軟件構成的環(huán)境。
一個(gè)充分準備好的測試環(huán)境有三個(gè)優(yōu)點(diǎn):一個(gè)穩定、可重復的測試環(huán)境,能夠保證測試結果的正確;保證達到測試執行的技術(shù)需求;保證得到正確的、可重復的以及易理解的測試結果。
測試工具:并發(fā)性能測試是在客戶(hù)端執行的黑盒測試,一般不采用手工方式,而是利用工具采用自動(dòng)化方式進(jìn)行。目前,成熟的并發(fā)性能測試工具有很多,選擇的依據主要是測試需求和性能價(jià)格比。著(zhù)名的并發(fā)性能測試工具有QALoad、LoadRunner、Benchmark Factory和Webstress等。這些測試工具都是自動(dòng)化負載測試工具,通過(guò)可重復的、真實(shí)的測試,能夠徹底地度量應用的可擴展性和性能,可以在整個(gè)開(kāi)發(fā)生命周期、跨越多種平臺、自動(dòng)執行測試任務(wù),可以模擬成百上千的用戶(hù)并發(fā)執行關(guān)鍵業(yè)務(wù)而完成對應用程序的測試。
測試數據:在初始的測試環(huán)境中需要輸入一些適當的測試數據,目的是識別數據狀態(tài)并且驗證用于測試的測試案例,在正式的測試開(kāi)始以前對測試案例進(jìn)行調試,將正式測試開(kāi)始時(shí)的錯誤降到最低。在測試進(jìn)行到關(guān)鍵過(guò)程環(huán)節時(shí),非常有必要進(jìn)行數據狀態(tài)的備份。制造初始數據意味著(zhù)將合適的數據存儲下來(lái),需要的時(shí)候恢復它,初始數據提供了一個(gè)基線(xiàn)用來(lái)評估測試執行的結果。
在測試正式執行時(shí),還需要準備業(yè)務(wù)測試數據,比如測試并發(fā)查詢(xún)業(yè)務(wù),那么要求對應的數據庫和表中有相當的數據量以及數據的種類(lèi)應能覆蓋全部業(yè)務(wù)。
模擬真實(shí)環(huán)境測試,有些軟件,特別是面向大眾的商品化軟件,在測試時(shí)常常需要考察在真實(shí)環(huán)境中的表現。如測試殺毒軟件的掃描速度時(shí),硬盤(pán)上布置的不同類(lèi)型文件的比例要盡量接近真實(shí)環(huán)境,這樣測試出來(lái)的數據才有實(shí)際意義。
◆ 并發(fā)性能測試的種類(lèi)與指標
并發(fā)性能測試的種類(lèi)取決于并發(fā)性能測試工具監控的對象,以QALoad自動(dòng)化負載測試工具為例。軟件針對各種測試目標提供了DB2、DCOM、ODBC、ORACLE、NETLoad、Corba、QARun、SAP、SQLServer、Sybase、Telnet、TUXEDO、UNIFACE、WinSock、WWW、Java Script等不同的監控對象,支持Windows和UNIX測試環(huán)境。
最關(guān)鍵的仍然是測試過(guò)程中對監控對象的靈活應用,例如目前三層結構的運行模式廣泛使用,對中間件的并發(fā)性能測試作為問(wèn)題被提到議事日程上來(lái),許多系統都采用了國產(chǎn)中間件,選擇Java Script監控對象,手工編寫(xiě)腳本,可以達到測試目的。
采用自動(dòng)化負載測試工具執行的并發(fā)性能測試,基本遵循的測試過(guò)程有:測試需求與測試內容,測試案例制定,測試環(huán)境準備,測試腳本錄制、編寫(xiě)與調試,腳本分配、回放配置與加載策略,測試執行跟蹤,結果分析與定位問(wèn)題所在,測試報告與測試評估。
并發(fā)性能測試監控的對象不同,測試的主要指標也不相同,主要的測試指標包括交易處理性能指標和UNIX資源監控。其中,交易處理性能指標包括交易結果、每分鐘交易數、交易響應時(shí)間(Min:最小服務(wù)器響應時(shí)間;Mean:平均服務(wù)器響應時(shí)間;Max:最大服務(wù)器響應時(shí)間;StdDev:事務(wù)處理服務(wù)器響應的偏差,值越大,偏差越大;Median:中值響應時(shí)間;90%:90%事務(wù)處理的服務(wù)器響應時(shí)間)、虛擬并發(fā)用戶(hù)數。
應用實(shí)例:“新華社多媒體數據庫 V1.0”性能測試
中國軟件評測中心(CSTC)根據新華社技術(shù)局提出的《多媒體數據庫(一期)性能測試需求》和GB/T 17544《軟件包質(zhì)量要求和測試》的國家標準,使用工業(yè)標準級負載測試工具對新華社使用的“新華社多媒體數據庫 V1.0”進(jìn)行了性能測試。
性能測試的目的是模擬多用戶(hù)并發(fā)訪(fǎng)問(wèn)新華社多媒體數據庫,執行關(guān)鍵檢索業(yè)務(wù),分析系統性能。
性能測試的重點(diǎn)是針對系統并發(fā)壓力負載較大的主要檢索業(yè)務(wù),進(jìn)行并發(fā)測試和疲勞測試,系統采用B/S運行模式。并發(fā)測試設計了特定時(shí)間段內分別在中文庫、英文庫、圖片庫中進(jìn)行單檢索詞、多檢索詞以及變檢索式、混合檢索業(yè)務(wù)等并發(fā)測試案例。疲勞測試案例為在中文庫中并發(fā)用戶(hù)數200,進(jìn)行測試周期約8小時(shí)的單檢索詞檢索。在進(jìn)行并發(fā)和疲勞測試的同時(shí),監測的測試指標包括交易處理性能以及UNIX(Linux)、Oracle、Apache資源等。
測試結論:在新華社機房測試環(huán)境和內網(wǎng)測試環(huán)境中,100M帶寬情況下,針對規定的各并發(fā)測試案例,系統能夠承受并發(fā)用戶(hù)數為200的負載壓力,最大交易數/分鐘達到78.73,運行基本穩定,但隨著(zhù)負載壓力增大,系統性能有所衰減。
系統能夠承受200并發(fā)用戶(hù)數持續周期約8小時(shí)的疲勞壓力,基本能夠穩定運行。
通過(guò)對系統UNIX(Linux)、Oracle和Apache資源的監控,系統資源能夠滿(mǎn)足上述并發(fā)和疲勞性能需求,且系統硬件資源尚有較大利用余地。
當并發(fā)用戶(hù)數超過(guò)200時(shí),監控到HTTP 500、connect和超時(shí)錯誤,且Web服務(wù)器報內存溢出錯誤,系統應進(jìn)一步提高性能,以支持更大并發(fā)用戶(hù)數。
建議進(jìn)一步優(yōu)化軟件系統,充分利用硬件資源,縮短交易響應時(shí)間。
◆ 疲勞強度與大數據量測試
疲勞測試是采用系統穩定運行情況下能夠支持的最大并發(fā)用戶(hù)數,持續執行一段時(shí)間業(yè)務(wù),通過(guò)綜合分析交易執行指標和資源監控指標來(lái)確定系統處理最大工作量強度性能的過(guò)程。
疲勞強度測試可以采用工具自動(dòng)化的方式進(jìn)行測試,也可以手工編寫(xiě)程序測試,其中后者占的比例較大。
一般情況下以服務(wù)器能夠正常穩定響應請求的最大并發(fā)用戶(hù)數進(jìn)行一定時(shí)間的疲勞測試,獲取交易執行指標數據和系統資源監控數據。如出現錯誤導致測試不能成功執行,則及時(shí)調整測試指標,例如降低用戶(hù)數、縮短測試周期等。還有一種情況的疲勞測試是對當前系統性能的評估,用系統正常業(yè)務(wù)情況下并發(fā)用戶(hù)數為基礎,進(jìn)行一定時(shí)間的疲勞測試。
大數據量測試可以分為兩種類(lèi)型:針對某些系統存儲、傳輸、統計、查詢(xún)等業(yè)務(wù)進(jìn)行大數據量的獨立數據量測試;與壓力性能測試、負載性能測試、疲勞性能測試相結合的綜合數據量測試方案。大數據量測試的關(guān)鍵是測試數據的準備,可以依靠工具準備測試數據。
速度測試目前主要是針對關(guān)鍵有速度要求的業(yè)務(wù)進(jìn)行手工測速度,可以在多次測試的基礎上求平均值,可以和工具測得的響應時(shí)間等指標做對比分析。
應用在網(wǎng)絡(luò )上性能的測試
應用在網(wǎng)絡(luò )上性能的測試重點(diǎn)是利用成熟先進(jìn)的自動(dòng)化技術(shù)進(jìn)行網(wǎng)絡(luò )應用性能監控、網(wǎng)絡(luò )應用性能分析和網(wǎng)絡(luò )預測。
◆ 網(wǎng)絡(luò )應用性能分析
網(wǎng)絡(luò )應用性能分析的目的是準確展示網(wǎng)絡(luò )帶寬、延遲、負載和TCP端口的變化是如何影響用戶(hù)的響應時(shí)間的。利用網(wǎng)絡(luò )應用性能分析工具,例如Application Expert,能夠發(fā)現應用的瓶頸,我們可知應用在網(wǎng)絡(luò )上運行時(shí)在每個(gè)階段發(fā)生的應用行為,在應用線(xiàn)程級分析應用的問(wèn)題?梢越鉀Q多種問(wèn)題:客戶(hù)端是否對數據庫服務(wù)器運行了不必要的請求?當服務(wù)器從客戶(hù)端接受了一個(gè)查詢(xún),應用服務(wù)器是否花費了不可接受的時(shí)間聯(lián)系數據庫服務(wù)器?在投產(chǎn)前預測應用的響應時(shí)間;利用Application Expert調整應用在廣域網(wǎng)上的性能;Application Expert能夠讓你快速、容易地仿真應用性能,根據最終用戶(hù)在不同網(wǎng)絡(luò )配置環(huán)境下的響應時(shí)間,用戶(hù)可以根據自己的條件決定應用投產(chǎn)的網(wǎng)絡(luò )環(huán)境。
◆ 網(wǎng)絡(luò )應用性能監控
在系統試運行之后,需要及時(shí)準確地了解網(wǎng)絡(luò )上正在發(fā)生什么事情;什么應用在運行,如何運行;多少PC正在訪(fǎng)問(wèn)LAN或WAN;哪些應用程序導致系統瓶頸或資源競爭,這時(shí)網(wǎng)絡(luò )應用性能監控以及網(wǎng)絡(luò )資源管理對系統的正常穩定運行是非常關(guān)鍵的。利用網(wǎng)絡(luò )應用性能監控工具,可以達到事半功倍的效果,在這方面我們可以提供的工具是Network Vantage。通俗地講,它主要用來(lái)分析關(guān)鍵應用程序的性能,定位問(wèn)題的根源是在客戶(hù)端、服務(wù)器、應用程序還是網(wǎng)絡(luò )。在大多數情況下用戶(hù)較關(guān)心的問(wèn)題還有哪些應用程序占用大量帶寬,哪些用戶(hù)產(chǎn)生了最大的網(wǎng)絡(luò )流量,這個(gè)工具同樣能滿(mǎn)足要求。
◆ 網(wǎng)絡(luò )預測
考慮到系統未來(lái)發(fā)展的擴展性,預測網(wǎng)絡(luò )流量的變化、網(wǎng)絡(luò )結構的變化對用戶(hù)系統的影響非常重要。根據規劃數據進(jìn)行預測并及時(shí)提供網(wǎng)絡(luò )性能預測數據。我們利用網(wǎng)絡(luò )預測分析容量規劃工具PREDICTOR可以作到:設置服務(wù)水平、完成日網(wǎng)絡(luò )容量規劃、離線(xiàn)測試網(wǎng)絡(luò )、網(wǎng)絡(luò )失效和容量極限分析、完成日常故障診斷、預測網(wǎng)絡(luò )設備遷移和網(wǎng)絡(luò )設備升級對整個(gè)網(wǎng)絡(luò )的影響。
從網(wǎng)絡(luò )管理軟件獲取網(wǎng)絡(luò )拓撲結構、從現有的流量監控軟件獲取流量信息(若沒(méi)有這類(lèi)軟件可人工生成流量數據),這樣可以得到現有網(wǎng)絡(luò )的基本結構。在基本結構的基礎上,可根據網(wǎng)絡(luò )結構的變化、網(wǎng)絡(luò )流量的變化生成報告和圖表,說(shuō)明這些變化是如何影響網(wǎng)絡(luò )性能的。 PREDICTOR提供如下信息:根據預測的結果幫助用戶(hù)及時(shí)升級網(wǎng)絡(luò ),避免因關(guān)鍵設備超過(guò)利用閥值導致系統性能下降;哪個(gè)網(wǎng)絡(luò )設備需要升級,這樣可減少網(wǎng)絡(luò )延遲、避免網(wǎng)絡(luò )瓶頸;根據預測的結果避免不必要的網(wǎng)絡(luò )升級。
應用在服務(wù)器上性能的測試
對于應用在服務(wù)器上性能的測試,可以采用工具監控,也可以使用系統本身的監控命令,例如Tuxedo中可以使用Top命令監控資源使用情況。實(shí)施測試的目的是實(shí)現服務(wù)器設備、服務(wù)器操作系統、數據庫系統、應用在服務(wù)器上性能的全面監控,測試原理如下圖。
(暫時(shí)略)
圖:應用在服務(wù)器上的性能測試原理圖
UNIX資源監控指標和描述
監控指標 描述
平均負載 系統正常狀態(tài)下,最后60秒同步進(jìn)程的
平均個(gè)數
沖突率 在以太網(wǎng)上監測到的每秒沖突數
進(jìn)程/線(xiàn)程交換率 進(jìn)程和線(xiàn)程之間每秒交換次數
CPU利用率 CPU占用率(%)
磁盤(pán)交換率 磁盤(pán)交換速率
接收包錯誤率 接收以太網(wǎng)數據包時(shí)每秒錯誤數
包輸入率 每秒輸入的以太網(wǎng)數據包數目
中斷速率 CPU每秒處理的中斷數
輸出包錯誤率 發(fā)送以太網(wǎng)數據包時(shí)每秒錯誤數
包輸入率 每秒輸出的以太網(wǎng)數據包數目
讀入內存頁(yè)速率 物理內存中每秒讀入內存頁(yè)的數目
寫(xiě)出內存頁(yè)速率 每秒從物理內存中寫(xiě)到頁(yè)文件中的內存頁(yè)數
目或者從物理內存中刪掉的內存頁(yè)數目
內存頁(yè)交換速率 每秒寫(xiě)入內存頁(yè)和從物理內存中讀出頁(yè)的個(gè)數
進(jìn)程入交換率 交換區輸入的進(jìn)程數目
進(jìn)程出交換率 交換區輸出的進(jìn)程數目
系統CPU利用率 系統的CPU占用率(%)
用戶(hù)CPU利用率 用戶(hù)模式下的CPU占用率(%)
磁盤(pán)阻塞 磁盤(pán)每秒阻塞的字節數
請說(shuō)出你的技術(shù)需求,記下你的實(shí)踐經(jīng)歷,發(fā)至tpj@ccu.com.cn
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/