作者曾經(jīng)有幸在國內最大的電信設備供應商工作過(guò)一段時(shí)間,其間聽(tīng)一些資深老員工講過(guò)-個(gè)故事。這個(gè)故事可以被當做笑話(huà)來(lái)聽(tīng),不過(guò)笑笑之后卻總也忘不掉。話(huà)說(shuō)20 世紀90年代初的某一天,國內第一臺自主研發(fā)的大型固話(huà)交換機,終于千呼萬(wàn)喚地“閃亮”登場(chǎng)了。于是乎,這家公司馬上向用戶(hù)大力推銷(xiāo)這款設備,但是用戶(hù)提出了一個(gè)很實(shí)際的問(wèn)題,徹底難住了這家公司。問(wèn)題很簡(jiǎn)單,就是需要一份性能測試報告來(lái)證明這臺設備真能支持宣稱(chēng)的話(huà)務(wù)容量。那時(shí)候還沒(méi)有成熟的電信領(lǐng)域性能測試工具,該怎么辦呢﹖幸好有聰明的領(lǐng)導想出了一個(gè)中國式的解決辦法。
某天下午,全公司的員工都放下了手頭的工作,每人懷抱一部老式電話(huà)機(還要靠轉盤(pán)來(lái)?yè)芴?,等領(lǐng)導倒數“三、二、一”后集體打電話(huà)。據說(shuō)當時(shí)人數不夠,達不到用戶(hù)要求的通話(huà)量,甚至出現了一個(gè)人操作兩部電話(huà)機的情況。作者沒(méi)能一睹當時(shí)的盛況,一直深感遺憾。
幸好科學(xué)技術(shù)發(fā)展到今天,已經(jīng)有了多款成熟的性能測試工具,否則測試人員一定會(huì )發(fā)瘋。試想當前的電信交換機話(huà)務(wù)容量早已翻了不知多少倍,如果還要靠人海戰術(shù)去測試,即使全公司的員工雙手雙腳去操作電話(huà)機,也肯定是忙不過(guò)來(lái)的。測試人員應該為測試技術(shù)的飛速發(fā)展而感到歡心鼓舞。那么現在是否就可以高枕無(wú)憂(yōu)了﹖答案是否定的。當前測試人員面臨的問(wèn)題不再是有沒(méi)有性能測試工具,而是有沒(méi)有合適的性能測試工具。

性能測試是通過(guò)自動(dòng)化的測試工具模擬多種正常峰值及異常負載條件來(lái)對系統的各項性能指標進(jìn)行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進(jìn)行。通過(guò)負載測試,確定在各種工作負載下系統的性能,目標是當負載逐漸增加時(shí),測試系統各項性能指標的變化情況。壓力測試是通過(guò)確定一個(gè)系統的瓶頸或者不能接受的性能點(diǎn),來(lái)獲得系統能提供的最大服務(wù)級別的測試。如圖1-1所示為一個(gè)典型的性能測試曲線(xiàn)。
Apache JMeter是100%的Java桌面應用程序,用于對軟件做壓力測試。它最初被設計用于Web應用測試,但后來(lái)擴展到其他測試領(lǐng)域。另外,JMeter能夠對應用程序做功能/回歸測試,通過(guò)創(chuàng )建帶有斷言的腳本來(lái)驗證被測程序返回了期望的結果。為了保證最大限度的靈活性,JMeter 允許使用正則表達式創(chuàng )建斷言。
Apache JMeter可以用于對靜態(tài)和動(dòng)態(tài)資源〔文件、Servlet、Perl腳本、Java對象、數據庫和查詢(xún)、FTP服務(wù)器等)的性能進(jìn)行測試。它可以用于對服務(wù)器、網(wǎng)絡(luò )或對象模擬繁重的負載來(lái)測試它們的強度或分析不同壓力類(lèi)型下的整體性能。測試人員可以使用它做性能圖形分析或者測試服務(wù)器/腳本/對象在大并發(fā)負載下的表現。

測試計劃描述了JMeter運行時(shí)將會(huì )執行的--系列步驟。一個(gè)完整的測試計劃會(huì )包含一個(gè)或多個(gè)線(xiàn)程組、邏輯控制器、采樣器、監聽(tīng)器、定時(shí)器、斷言和配置元件。

本節主要介紹如何創(chuàng )建一個(gè)簡(jiǎn)單的測試計劃用于測試數據庫服務(wù)器。在本節中測試人員會(huì )創(chuàng )建10個(gè)并發(fā)用戶(hù),而每個(gè)并發(fā)用戶(hù)會(huì )發(fā)送兩個(gè)SQL請求到數據庫服務(wù)器。另外,每個(gè)用戶(hù)都會(huì )運行測試3遍。因此,總共發(fā)送的測試數目是(10 并發(fā)用戶(hù))×(2 請求)×(重復3遍)=60 JDBC 請求。要構建這一測試計劃,測試人員需要使用到的測試元件包括:線(xiàn)程組(ThreadGroup)、JDBC請求(JDBC Request)、圖形結果(Graph Results)。
FTP是 File Transfer Protocol(文件傳輸協(xié)議)的英文簡(jiǎn)稱(chēng),而中文簡(jiǎn)稱(chēng)為“文傳協(xié)議”,用于在Internet 上控制文件的雙向傳輸。同時(shí),它也是一個(gè)應用程序(Application)。用戶(hù)可以通過(guò)它把自己的PC與世界各地所有運行FTP協(xié)議的服務(wù)器相連,訪(fǎng)問(wèn)服務(wù)器上的大量程序和信息.FTP的主要作用就是讓用戶(hù)連接一個(gè)遠程計算機(這些計算機上運行著(zhù)FTP服務(wù)器程序),查看遠程計算機上有哪些文件,然后把文件從遠程計算機上復制到本地計算機,或把本地計算機的文件傳送到遠程計算機上去。

本節將主要介紹LDAP的基本概念、適用范圍及LDAP相對于關(guān)系數據庫的優(yōu)勢和劣勢。另外還將介紹一些LDAP的簡(jiǎn)單實(shí)例,幫助讀者建立對LDAP的感性認識,為后續掌握LDAP性能測試的方法打下基礎。LDAP是輕量目錄訪(fǎng)問(wèn)協(xié)議,英文全稱(chēng)是Lightweight Directory Access Protocol,一般都簡(jiǎn)稱(chēng)為L(cháng)DAP。它是基于X.500標準的,但更簡(jiǎn)單并且可以根據需要定制。與X.500不同,LDAP支持TCP/P協(xié)議,這對訪(fǎng)問(wèn)Internet來(lái)說(shuō)是必需的。LDAP的核心規范在RFC中都有定義,所有與LDAP相關(guān)的RFC都可以在LDAPman RFC網(wǎng)頁(yè)中找到。一個(gè)簡(jiǎn)單的LDAP組件配置案例,如圖6-1所示。

Web Service是由企業(yè)發(fā)布的完成其特定商務(wù)需求的在線(xiàn)應用服務(wù),其他公司或應用軟件能過(guò)Internet 來(lái)訪(fǎng)問(wèn)并使用這項在線(xiàn)服務(wù)。它是一種構建應用程序的普遍模型,可以在任何支絡(luò )通信的操作系統中實(shí)施運行;它是一種新的Web應用程序分支,是自包含、自描述、模約應用,可以發(fā)布、定位、通過(guò)Web調用。Web Service是一個(gè)應用組件,它邏輯性地為應用程序提供數據與服務(wù)。各應用程序通過(guò)網(wǎng)絡(luò )協(xié)議和規定的一些標準數據格式(Http、、Soap)來(lái)訪(fǎng)問(wèn)web Service,通過(guò)Web Service內部執行得到所需結果。Web Service可以從簡(jiǎn)單請求到復雜商務(wù)處理的任何功能。一旦部署以后,其他Web Service應用程序可以發(fā)調用它部署的服務(wù)。如圖7-1所示是一個(gè) Web Service的典型例子。

JMS即Java消息服務(wù)(Java Message Service),應用程序接口是一個(gè)Java平臺中關(guān)于面向消息中間件(MOM)的API,用于在兩個(gè)應用程序之間或分布式系統中發(fā)送消息,進(jìn)行異步通信。Java消息服務(wù)是一個(gè)與具體平臺無(wú)關(guān)的API,絕大多數MOM提供商都對JMS提供支持。



在本節中,作者將會(huì )介紹如何創(chuàng )建一個(gè)測試計劃來(lái)監控Web服務(wù)器。服務(wù)器監控功能對于壓力測試和系統管理都非常有用。在壓力測試工作中,服務(wù)器監控功能可以提供關(guān)于服務(wù)器性能的額外信息,這能幫助JMeter用戶(hù)直觀(guān)地看到服務(wù)器性能與系統響應時(shí)長(cháng)之間的關(guān)系。作為一個(gè)系統管理工具,服務(wù)器監控功能可以通過(guò)一個(gè)控制臺監控多個(gè)服務(wù)器。JMeter服務(wù)器監控功能是專(zhuān)門(mén)針對Tomcat 5 的 status servlet設計的。從理論上來(lái)說(shuō),任何支持JMX (JavaManagement Extension)的servlet容器都能部署該servlet,以提供同樣的監控信息。

聯(lián)系客服