8.1白盒測試之代碼審查—提高測試效率必會
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?破索式—測試技術(shù)深化
8.1.1代碼審查的范圍
? ? ? ? ?合格的代碼應(yīng)具備正確性谤专、清晰性肛跌、規(guī)范性、一致性和高效性掠归。
概括起來芹啥,代碼審查的工作涵蓋下列方面:
①業(yè)務(wù)邏輯的審查。
②算法的效率欢顷。
③代碼風格槽棍。
④編程規(guī)則。
8.1.2代碼審查的方法
①互查:就是在相同模塊或相近模塊的編程人員之間相互檢查對方的代碼抬驴。
②走查:從頭到尾將寫好的程序檢查一遍炼七。
③代碼審查。
8.1.2.1代碼審查的規(guī)則
(1)Java最基本語句的使用布持。
(2)重載函數(shù)的審查豌拙。
(3)內(nèi)存分配和管理:當進行內(nèi)存分配和管理時,很重要一點就是確保內(nèi)存的及時釋放和避免緩沖區(qū)溢出题暖。
(4)程序性能的審查:
①減少創(chuàng)建對象按傅。
②減少循環(huán)體的執(zhí)行代碼,能放在循環(huán)體外的代碼要盡量放在循環(huán)體外胧卤。
③提高處理異常出錯的效率唯绍。
④減少I/O操作時間。
8.2白盒測試之邏輯覆蓋—測試更全面
8.2.1關(guān)于微信紅包的測試需求分析
測試需求分析是測試工作的第一步:
①了解紅包需求實現(xiàn)的背景灌侣。
②分析測試紅包需求合理性推捐。
③確定測試范圍和優(yōu)先級。
④查缺補漏侧啼。
8.2.2從單元測試說起
定義:
? ? ? 單元測試是軟件測試中最基礎(chǔ)的測試,集成測試堪簿、功能測試和 系統(tǒng)測試都建立在單元測試之上痊乾。單元測試的對象是構(gòu)成軟件產(chǎn)品或系統(tǒng)的最小的獨立單元,如封裝的類或?qū)ο笸指ⅹ毩⒌暮瘮?shù)哪审、進程、子過程虑瀑、組件或模塊等湿滓。
8.2.3單元測試用例設(shè)計
? ? ? ?對于單元測試用例的設(shè)計和進程的實現(xiàn)過程滴须,主要集中在白盒測試方法之上,并力求達到下列測試要求:
1叽奥、對程序模塊所有獨立的執(zhí)行路徑至少要執(zhí)行一次扔水。
2、對所有邏輯判定朝氓,其結(jié)果為真魔市、假兩種情況至少要測試一次。
3赵哲、對程序進行邊界檢查(常見的如數(shù)據(jù)越界檢驗)待德。
4、檢驗內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性枫夺。
8.2.4白盒測試方法之邏輯覆蓋法
? ? ? ? 邏輯覆蓋法是白盒測試中最主要的測試方法将宪。
? ? ? ?邏輯覆蓋分為語句覆蓋、判定覆蓋橡庞、條件覆蓋涧偷、判定-條件覆蓋、條件組合覆蓋毙死,其基本思想不同燎潮,產(chǎn)生的測試用例不同,覆蓋范圍也有所不同扼倘。
eg:以代碼為例分別介紹集中邏輯覆蓋方法:
步驟:
將代碼邏輯用現(xiàn)況流程圖轉(zhuǎn)化下:
(1)語句覆蓋:
基本思想:設(shè)計若干測試用例确封,運行被測程序,使程序中的每個可執(zhí)行語句至少被執(zhí)行一次再菊。
根據(jù)程序流程/路徑圖可以看出爪喘,該程序模塊有4條不同的路徑:
P1:(M-K-N-J-P)對應(yīng)M=.T. and N= .T.
P2:(M-K-N-P)對應(yīng)M=.T. and N= .F.
P3:(M-N-J-P)對應(yīng)M=.F. and N= .T.
P4:(M-N-P)對應(yīng)M=.F. and N=.F.
通過觀察,我們發(fā)現(xiàn):P1包含了所有可執(zhí)行語句纠拔,按照語句覆蓋的測試用例設(shè)計原則秉剑,只要設(shè)計一組測試用例覆蓋P1路徑,就可達到要求:如輸入數(shù)據(jù):a=2,b=1,c=6
語句覆蓋的不足:
? ? ? ?在使用語句覆蓋進行測試用例設(shè)計時稠诲,能夠使得所有的執(zhí)行語句都被測試侦鹏,但是不能準確判斷運算中的邏輯關(guān)系錯誤。在這個例子中臀叙,如果程序?qū)的條件“(a>0 AND b>0)”寫成“(a>0 OR b>0)”,這時的測試用例仍然可以覆蓋所有可執(zhí)行語句略水,但不能發(fā)現(xiàn)其中的邏輯錯誤。
(2)判定覆蓋:
基本思想:是使每個判斷的取真值和取假值都至少經(jīng)歷一次劝萤。
判定覆蓋的限制:
? ? ? 例如:在上面的例子中渊涝,如果條件N中是“c<1”而不是“c>1”,則組合1的測試結(jié)果沒有差別。
(3)條件覆蓋:
基本思想:是使每個條件的取真值和取假值都至少經(jīng)歷一次跨释。
那么:對于第一個判定條件M胸私,可以進一步分為以下兩種:
? ? ? ?①條件a>0:取真時為T1,取假時為F1
? ? ? ②條件b>0:取真時為T2鳖谈,取假時為F2
對于第二個判定條件N岁疼,可進一步分為以下兩種:
? ? ?①條件a>1:取真時為T3,取假時為F3
? ? ?②條件c>1:取真時為T4蚯姆,取假時為F4
? ? ? ?保證每個條件至少有一次取真五续、取假(T1/F1,T2/F2龄恋,T3/E3疙驾,T4/F4),滿足條件覆蓋郭毕,但是覆蓋了相同的路徑P3它碎。說明,即使做到條件覆蓋显押,也不能保證覆蓋所有路徑(P1扳肛、P2、P3和P4)乘碑。
? ? ? ?只是滿足一種覆蓋條件挖息,還會遺漏程序邏輯路徑或判斷錯誤,依舊存在較大風險兽肤。所以套腹,白盒測試要求同時滿足兩種以上的測試覆蓋要求,測試的覆蓋率才能滿足質(zhì)量要求资铡,將風險降到最低电禀。
(4)判定-條件覆蓋:
基本思想:確保設(shè)計足夠或精巧的測試用例,可使得判斷條件中所有條件的可能取值至少被執(zhí)行一次笤休,同時尖飞,所有判斷的可能結(jié)果也至少被執(zhí)行一次。
(5)條件組合覆蓋:
基本思想:設(shè)計足夠的測試用例店雅,使判斷中每個條件的所有可能至少出現(xiàn)一次政基,并且每個判斷本身的判定結(jié)果也至少出現(xiàn)一次。與判定-條件覆蓋的差別是底洗,條件組合覆蓋不是簡單地要求每個條件都出現(xiàn)“真”與”假“兩種結(jié)果腋么,而是要求讓這些結(jié)果的所有可能組合都至少出現(xiàn)一次。
8.4自動化測試工具的介紹—工欲善其事必先利其器
8.4.1常用的WEB自動化測試工具
①SIKULI
②QTP
③UFT
④SELENIUM
⑤RFT
⑥WINRUNNER
(1)主流自動化測試工具—QTP:
? ? ? ?QTP是一個側(cè)重于功能的回歸自動化測試工具亥揖;提供了很多插件。QTP支持的腳本語言是VBScript,這對于測試人員來說费变,感覺要“舒服”得多摧扇。VBScript畢竟是一種松散的、非嚴格的挚歧、普及面很廣的語言扛稽。
QTP的高可用性:
①支持錄制與回放。
②支持lower level模式滑负。
③QTP的編輯器支持兩種視圖:Keyword模式和Expert模式在张。
(2)Selenium(WebDriver):
用與QTP比較的方式來了解二者的特征和優(yōu)勢。
①價格:selenium是開源的自動化測試工具矮慕,但是QTP是商業(yè)版的帮匾,而且價格不菲。
②應(yīng)用領(lǐng)域:Selenium僅支持web頁面的測試痴鳄,而QTP不光支持web界面的測試瘟斜,而且還支持Client方面的測試。
③功能方面:錄制功能QTP支持的好痪寻。QTP的錄制回放成功率很高螺句;seleniun的錄制回放成功率非常的低。腳本的編輯功能橡类。熟悉java蛇尚、python等的人喜歡selenium,熟悉的是VBScript可能就會喜歡QTP.
④框架處理的能力:在數(shù)據(jù)驅(qū)動方面顾画,QTP支持很靈活取劫。可以通過簡單的設(shè)置就可以完成數(shù)據(jù)驅(qū)動的自動化腳本selenium要用編程來實現(xiàn)才可以亲雪。
(3)UFT:
UFT是QTP的新名字勇凭,叫統(tǒng)一功能測試架構(gòu)。新的功能如下:
①Insight智能識別:圖像識別一直是我們做自動化測試的阻礙之一义辕。包含游戲自動化虾标、flash動態(tài)的一些自動化。
②多腳本調(diào)試灌砖。
③PDF文本驗證點:現(xiàn)在UFT可以識別PDF文件并對他們直接進行比較璧函,甚至可以插入文本驗證點。
④支持開源CI基显。
⑤支持移動設(shè)備蘸吓。
(4)RFT:
? ? ? ? IBM的一款適合于功能測試、回歸測試的自動化測試工具撩幽。針對于java库继、.NET的對象技術(shù)和基于Web應(yīng)用程序的錄制與回放箩艺。
? ? ? ?因為錄制與回放功能對于程序運行的環(huán)境依賴性太大。因此更多使用該工具的測試團隊采用了自己手動寫腳本的方式來提高腳本的易讀性以及可維護性宪萄。
框架結(jié)構(gòu):
①RFT的腳本可以分別被歸類為AppPbjects艺谆、Tasks和Testcases。
②AppObjects:定義頁面上的元素拜英。
③Tasks:定義可以單元化静汤,課重用的任務(wù),調(diào)用在AppObjects中定義的元素居凶。
④Testcases:一個case攜程一個腳本虫给,每個測試場景,可以寫成一個或多個腳本侠碧,每個腳本只調(diào)用在Tasks中定義的可重寫的任務(wù)抹估。
為什么RFT的喜歡博和使用范圍不大?
①幫助文檔和教程很少舆床,很不系統(tǒng)棋蚌。而提供的API接口只有說明文檔,未提供如何使用該文檔挨队;提供的例子很少谷暮。
②環(huán)境要求比較高,至少得1G內(nèi)存才能比較順暢使用盛垦,512M內(nèi)存時比較卡湿弦,速度慢。
③參數(shù)化只支持使用Xml格式文件來存儲測試數(shù)據(jù)腾夯。
④回放速度極慢颊埃。
(5)WINRUNNER:
? ? ? ?老一代的自動化測試框架,是較早可以錄制-回放-修改的自動化測試模式蝶俱。與QTP類似班利,也會使用資源庫方式存儲空間,在06年以前榨呆,是測試行業(yè)使用最廣的自動化測試工具罗标。
? ? ? ?2006年Mercury公司被HP全權(quán)收購,如今Winrunner已從HP產(chǎn)品家族中消失积蜻。除了HP自身推行QYP的原因外闯割,它支持C語言的模式既成就了它在當時的盛行,也阻礙了它自身的擴展性竿拆。
(6)新型思路的自動化測試工具—Sikuli:
創(chuàng)新的圖形化編程技術(shù):
? ? ? ? Sikuli是由MIT的研究團隊發(fā)布的新型圖形化編程技術(shù)宙拉。它以圖像檢索技術(shù)為基礎(chǔ),提供了一套基于Jyphon(python語言在java中的完整實現(xiàn))的腳本語言以及集成開發(fā)環(huán)境丙笋。使用者可利用屏幕截圖直接引進GUI元素進行編程谢澈,完成交互操作煌贴。
Sikuli腳本:
Sikuli的腳本編寫遵循Python語法規(guī)范,其本身提供了多種自定義類及方法澳化。Sikuli基于Jython,其核心代碼由Java編寫崔步。通過一個自動打開Firefox瀏覽器稳吮,并登錄Gmail的簡單實例來快速一覽Sikuli腳本的獨特之處缎谷。
4.8.2自動化測試工具選擇
①來源免費。
②使用靈活灶似、簡單列林。
③后期用例易于維護。
④支持多種語言酪惭。
⑤容易與單元測試框架結(jié)合希痴。
⑥可支持多瀏覽器同時,支持遠程啟動其他服務(wù)器春感。
⑦高度復用性砌创。
⑧代碼可自主掌控,對于框架搭建鲫懒、平臺等有不可替代的優(yōu)勢嫩实。
8.5Selenium初窺—自動化必會的工具
8.5.1初識WebDriver
1、JDK安裝
(1)官方下載(64/32位):http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(2)配置JDK環(huán)境變量:
①打開控制面板->系統(tǒng)->高級系統(tǒng)設(shè)置->環(huán)境變量
新建環(huán)境變量:JAVA _HOME
?變量值設(shè)置:JAVA安裝路徑
②新建(或更改)變量:PATH
變量值設(shè)置:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
③新建變量:CLASSPATH
變量值設(shè)置: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
④驗證安裝成功:Windows系統(tǒng)輸入cmd->輸入java -version
2窥岩、Eclipse安裝
(1)官方下載:http://www.eclipse.org/
在啟動之前,將eclipse.ini文件中java版本修改成當前系統(tǒng)版本。
3告丢、Eclipse啟動
新建workspase->啟動eclipse剥槐。
4、TestNG集成
①在eclipse中選擇Help->Install New Software朦乏。
②在Work with輸入 http://beust.com/eclipse球及。
③搜索出TestNG,勾選后繼續(xù)安裝。
④安裝成功后呻疹,進入Configure Build Path,查看存在TesrNG吃引。
8.5.2主流瀏覽器調(diào)用方式
1、IE瀏覽器
? ? ? ? 需要將IEDriverServer.exe在本機的位置引入代碼诲宇。
2际歼、FireFox瀏覽器
? ? ? ?最新的Selenium3.0需要將geckodriver的位置引入代碼。
3姑蓝、Chrome瀏覽器
? ? ? ?需要將chromedriver.exe在本機的位置引入代碼鹅心。
? 注:由于chromedriver.exe有版本之分,它的版本與chrome瀏覽器版本保持一致纺荧,需要在驅(qū)動下載的頁面找到對應(yīng)的版本進行下載使用旭愧。
驅(qū)動下載網(wǎng)址:http://chromedriver.storage.googleapis.com/index.html
8.6安全測試概述—可以裝逼黑客
8.6.1Web安全測試介紹
1颅筋、Web應(yīng)用的概念
①Web應(yīng)用是由動態(tài)腳本、編譯過的代碼等組合而成输枯。
②通常架設(shè)在Web服務(wù)器上议泵,用戶在Web瀏覽器上發(fā)送請求。
③這些請求使用HTTP協(xié)議桃熄,由Web應(yīng)用和企業(yè)后臺的數(shù)據(jù)庫及其他動態(tài)內(nèi)容通信先口。
2、Web應(yīng)用三層架構(gòu)
典型的Web應(yīng)用通常是標準的三成架構(gòu)模型瞳收。
8.6.2日常生活中的“安全”
日常網(wǎng)絡(luò)行為與安全時時相關(guān):
①為什么我們登錄的時候經(jīng)常要求我們輸入一個驗證碼碉京?
②在一個網(wǎng)站上長時間沒有操作,為什么會session失效螟深?
③為什么支付寶之類的支付接口都是https?? ? ? ?https在傳輸過程中是加密的谐宙,系統(tǒng)仍然是不安全的
8.6.3從WASC和OWASP談漏洞分類
1、WASC(Web Application Security Consortium)
(1)定義:
? ? ? ?是一個由安全專家界弧、行業(yè)顧問和諸多組織的代表組成的國際團體凡蜻。他們負責為WWW制定被廣為接受的應(yīng)用安全標準。
(2)WAEC將Web應(yīng)用安全威脅分為六大類:
①Authentication(驗證):用來確認某用戶垢箕、服務(wù)或是應(yīng)用身份的攻擊手段划栓。
②Authrization(授權(quán)):用來決定是否某用戶、服務(wù)或是應(yīng)用具有執(zhí)行請求動作必要權(quán)限的攻擊手段舰讹。
③Client-Side Attacks(客戶端攻擊):用來擾亂或是探測Web站點用戶的攻擊手段茅姜。
④Command Execution(命令執(zhí)行):在Web站點上執(zhí)行遠程命令的攻擊手段。
⑤Infoemation Disclosure(信息暴露):用來獲取Web站點具體系統(tǒng)信息的攻擊手段月匣。
⑥Logical Attacks(邏輯性攻擊):用來擾亂或是探測Web應(yīng)用邏輯流程的攻擊手段钻洒。
2、OWASP(Open Web Application Aecurity Project)
定義:
? ? ? ? ? ?致力于發(fā)現(xiàn)和解決不安全Web應(yīng)用的根本問題锄开。
8.6.4Web安全測試流程
測試先后順序:
? ? ? ? 功能測試->自動化測試->安全測試->性能測試
8.7安全審計—安全測試必會
8.7.1自動化審計工具
? ? ? ?隨著安全測試的開展和深入素标,越來越多的公司開始采用安全測試的手段,由于測試人員的能力和時間等因素萍悴,更多的采取注入AppScan头遭、WebInspect等安全審計工具。
? ? ? ?安全審計工具的使用的確給安全測試的開展節(jié)省了大量的時間癣诱,但同時也帶來了各種各樣的問題计维。(一個錯報一個漏報)
8.7.2AppScan在項目團隊長的協(xié)作
①測試人員:開發(fā)人員在開發(fā)過程中可以使用AppScan或者專用插件,隨時開發(fā)隨時測試撕予,最大化的保證個人開發(fā)程序的安全性鲫惶。越早發(fā)現(xiàn)問題,解決問題的成本就越低实抡,這為Web應(yīng)用的安全提供了最為堅實的基礎(chǔ)保障欠母。
②測試人員:系統(tǒng)測試時測試人員用AppScan對應(yīng)用做全面的測試欢策,一旦發(fā)現(xiàn)問題,可以快速的生成defect赏淌,通過CQ集成可以實現(xiàn)defect電子化跟蹤踩寇,再傳遞到開發(fā)人員手中,指導開發(fā)人員迅速解決問題六水。
③審核人員:這是系統(tǒng)上線前的安全質(zhì)量關(guān)卡俺孙。任何系統(tǒng)上線都應(yīng)該經(jīng)過嚴格的上線測試,這也最大化的減少了上線后問題的出現(xiàn)缩擂,避免生產(chǎn)系統(tǒng)上線后給企業(yè)帶來的巨額損失鼠冕。
④上線后審計、監(jiān)控人員:上線的系統(tǒng)應(yīng)該定期檢測胯盯,一旦出現(xiàn)問題更應(yīng)該及時檢測,越快速的定位發(fā)現(xiàn)問題计露,損失就會越小博脑。
8.7.3AppScan掃描范圍
8.7.4掃描原理—探測階段
? ? ? ?探測過程中,所采用的測試策略可以選擇默認的或自定義的票罐,可采用不同的測試策略叉趣,測試策略庫是AppScan內(nèi)置的,它可以定義為你想要的組合该押,去檢測你最想檢測的可能存在的安全隱患疗杉。
? ? ? ?模仿一個用戶對被訪問的Web應(yīng)用服務(wù)站點進行探測訪問,通過發(fā)送請求對站點內(nèi)的連接與表單域進行訪問或填寫蚕礼,以獲取相應(yīng)的站點信息(Application Tree)烟具。
? ? ? ? AppScan分析器將會對自己發(fā)送的每一個請求后的相應(yīng)做出判斷,查找出任何可能潛在風險的地方奠蹬,并針對這些可能會隱含風險的相應(yīng)朝聋,確定將要自動化生成的測試用例。
? ? ? ?探測階段完成后囤躁,這些高危區(qū)域是否真的隱含著安全 缺陷或應(yīng)做更好的改良冀痕,以及這些隱含的風險是處于什么程度的,是需要在測試執(zhí)行完成后狸演,才能最終得出決論言蛇。
8.7.4掃描原理—測試階段
? ? ? ? 測試階段后,AppScan已經(jīng)分析出可能潛在安全風險的站點模型宵距。
? ? ? ? AppScan也已經(jīng)知道需要生成多少的測試用例腊尚,以便檢測這些區(qū)域的安全隱患。這個時候的工作消玄,主要就是生成這些已經(jīng)計劃好的測試用例跟伏。
? ? ? ? AppScan是通過測試策略庫中相應(yīng)安全隱患的檢測規(guī)則而生成對應(yīng)的足夠全面而且復雜的測試輸入丢胚。
8.7.4掃描原理—掃描階段
? ? ? ?掃描階段,AppScan才是真正的工作起來受扳,他將會把上個階段的測試用例產(chǎn)生的服務(wù)請求陸續(xù)的發(fā)送出去携龟。
? ? ? ?然后再檢測分析服務(wù)的響應(yīng)結(jié)果,從而判斷出該測試用例的輸入勘高,是否造成了安全隱患或安全問題峡蟋。
? ? ? ? 然后再通過測試用例生成的策略,找出該安全問題的描述华望,以及該問題的解決方案蕊蝗,同時還報告相關(guān)參數(shù)的請求發(fā)送以及響應(yīng)結(jié)果。
8.7.5AppScan工作過程
①探測:選擇測試模板赖舟、輸入入口URL蓬戚、發(fā)現(xiàn)應(yīng)用結(jié)構(gòu)。
②分析:基于規(guī)則進行測試宾抓、實時產(chǎn)生測試結(jié)果子漩。
③報告(詳細的、可操作的指導信息):根據(jù)安全規(guī)范報表石洗、根據(jù)業(yè)務(wù)規(guī)范報表幢泼。
創(chuàng)建新的掃描:
選擇預定義模板:
選擇執(zhí)行的掃描類型:
輸入起始URL:
錄制登錄:
啟動掃描:
掃描結(jié)果查看:
8.8性能測試概述—加薪升職必會
8.8.1性能測試簡介
? 為什么要進行性能測試?
多個客戶端同時訪問造成壓力:Web應(yīng)用服務(wù)器讲衫、應(yīng)用服務(wù)器缕棵、數(shù)據(jù)庫、網(wǎng)絡(luò)涉兽。
8.8.2性能測試的概念
? ①軟件系統(tǒng)的性能測試是一個很大的概念招驴,覆蓋面非常廣泛:
? ? ? ?對軟件系統(tǒng)而言,包括執(zhí)行效率花椭、資源占用忽匈、系統(tǒng)穩(wěn)定性、安全性矿辽、兼容性丹允、可靠性、可擴展性等袋倔。
②性能測試是掃描測試對象與性能相關(guān)的特征并對其進行評價而實施和執(zhí)行的一類測試:
? ? ? ?主要通過自動化的測試工具模擬多種正常雕蔽、峰值以及異常負載條件下來對系統(tǒng)的各項性能指標進行測試。
8.8.3性能測試介紹
性能測試通常包含一下方面的內(nèi)容:
①評估生產(chǎn)準備狀態(tài)宾娜。
②評估性能判定標準批狐。
③比較多個不同系統(tǒng)或同意系統(tǒng)不同配置之間的性能特征。
④找出導致性能問題的源頭。
⑤幫助進行系統(tǒng)性能調(diào)優(yōu)嚣艇。
⑥確定吞吐量水平承冰。
8.8.4性能測試的核心活動
①確定測試環(huán)境:物理環(huán)境、生產(chǎn)環(huán)境食零、測試團隊可利用的工具和資源困乒。
②確定性能驗收標準:確定響應(yīng)時間、吞吐量贰谣、資料利用總目標和限制娜搂。
③計劃和設(shè)計測試:確定關(guān)鍵場景;確定典型用戶的可變性吱抚,以及如何模擬這些變化百宇;確定測試數(shù)據(jù);確定需要收集的度量值秘豹。
④配置測試環(huán)境:隨著需要測試的功能和組件的完善携御,逐步為每個策略準備執(zhí)行所需的測試環(huán)境、工具以及資源憋肖。
⑤實現(xiàn)測試設(shè)計:根據(jù)測試設(shè)計逐步開展性能測試因痛。
⑥執(zhí)行測試:執(zhí)行和監(jiān)控測試。
⑦分析結(jié)果岸更、報告以及重復測試:整合并共享結(jié)果數(shù)據(jù)。
8.8.5性能測試目標
評估軟件發(fā)布準備:
①預測或者估計應(yīng)用軟件在實際生產(chǎn)方面的特性特征膊升,并且基于這些預測來評估是否需要強調(diào)性能因素怎炊。
②提供相關(guān)數(shù)據(jù),反應(yīng)用戶可能會對系統(tǒng)性能特征產(chǎn)生哪些不滿意廓译。
③提供數(shù)據(jù)幫助預測评肆,由于可伸縮原因和穩(wěn)定性問題,或者由于用戶不滿意應(yīng)用軟件的相應(yīng)時間所導致的收入損失或者品牌可信度降低非区。
8.8.6性能測試介紹
1瓜挽、評估基礎(chǔ)結(jié)構(gòu)是否恰當:
①評估當前容量是否足夠。
②確定穩(wěn)定性的可接受范圍征绸。
③確定應(yīng)用軟件基礎(chǔ)結(jié)構(gòu)的容量久橙。
④比較不同的系統(tǒng)配置,確定哪些配置可以在實際應(yīng)用和商業(yè)需求之間達到最佳效果管怠。
⑤確定應(yīng)用軟件在預計的資源使用限制范圍內(nèi)已經(jīng)顯示出來最佳性能特征淆衷。
2、評估已開發(fā)軟件的性能是否滿足要求:
①在對應(yīng)軟件進行修改以前和以后渤弛,都需要確定應(yīng)用軟件已經(jīng)獲得了滿意的性能特征祝拯。
②提供應(yīng)用軟件當前所具有的性能特征與所能達到的最佳性能特征之間的比較。
3她肯、提高性能調(diào)整效率:
①分析應(yīng)用軟件的各種不同負載水平下的運行狀態(tài)佳头。
②確定應(yīng)用軟件的瓶頸鹰贵。
③在進行生產(chǎn)發(fā)布之前,提供與產(chǎn)品的運行速度康嘉、可伸縮性和穩(wěn)定性相關(guān)的信息碉输,這樣可以使得相關(guān)利益方能夠?qū)κ欠窕蛘吆螘r調(diào)整系統(tǒng)作出更加明智的決定。
8.8.7性能測試的種類
? ? ? ? 性能測試是確定或者有效驗證了系統(tǒng)或者應(yīng)用軟件在測試環(huán)境下的速度凄鼻、可伸縮性以及(或者)穩(wěn)定性等各種特性腊瑟。
? ? ?性能是指足以滿足項目或者產(chǎn)品的性能目標的相應(yīng)時間、吞吐量以及資源利用率块蚌。
? ? 性能測試是一個總體的概念闰非,其他的性格相關(guān)的測試都是性能測試的子范疇
1、負載測試
?①側(cè)重于確定當前測試中的系統(tǒng)或者應(yīng)用軟件在工作負載條件下峭范,或者在實際運行階段加載預期的容量時财松,系統(tǒng)或者應(yīng)用軟件所具備的相關(guān)性能特性。
?②通過逐步證據(jù)系統(tǒng)負載纱控,測試系統(tǒng)性能的變化辆毡,并最終確定在滿足性能指標下,系統(tǒng)所能夠承受的最大負載量甜害。
③ 負載測試是通過逐步加壓的方式來確定系統(tǒng)的處理能力舶掖,確定系統(tǒng)能夠承受的各項閥值。
2尔店、壓力測試
①確定當系統(tǒng)或者應(yīng)用軟件在某些超過實際運行階段所預期的條件下時所具備的性能特性眨攘。
②通過逐步增加系統(tǒng)負載,測試系統(tǒng)性能的變化嚣州,并最終確定在什么負載條件下系統(tǒng)性能處于失效狀態(tài)鲫售,并獲得系統(tǒng)性能提供最大的服務(wù)基本。
③壓力測試是逐步增加負載该肴,使系統(tǒng)某些資源達到飽和甚至失效的測試情竹。
3、容量測試
①在滿足性能目標的前提下匀哄,系統(tǒng)能夠最大處理的最大會話能力秦效,確定系統(tǒng)可處理同時在線的最大用戶數(shù)。
②容量測試確定了服務(wù)器的極限失效點拱雏,同時監(jiān)控在各種不同負載和流量模式水平下的性能結(jié)果棉安。
4、配置測試
? ? ? 通過對被測試軟件的軟硬件配置的測試铸抑,找到系統(tǒng)各項資源的最優(yōu)分配原則贡耽。
5、并發(fā)測試
? ? ? ?測試多個用戶同時訪問同一個應(yīng)用、同一個模塊或者數(shù)據(jù)記錄時是否存在死鎖或者其他性能問題蒲赂,幾乎所有的性能測試都會涉及到一些并發(fā)測試阱冶。
6、可靠性測試
? ? ? ?通過給系統(tǒng)加載一定的業(yè)務(wù)壓力的情況下滥嘴,運行一段時間木蹬,檢查系統(tǒng)是否穩(wěn)定。通過可以測試出系統(tǒng)是否有內(nèi)存泄露等問題若皱。
7镊叁、穩(wěn)定性測試
? ? ? ?在復雜多變的環(huán)境下系統(tǒng)所能提供的總可靠性、健壯性走触、功能和數(shù)據(jù)完整性晦譬、有效性以及響應(yīng)的連續(xù)性。
8.8.8核心性能測試活動
活動1:確定測試環(huán)境:
①確定物理環(huán)境互广、生產(chǎn)環(huán)境以及測試團隊可利用的工具和資源敛腌。
②物理環(huán)境包括:硬件、軟件以及網(wǎng)絡(luò)配置惫皱。
③在測試開發(fā)時就對整個測試環(huán)境有一個全面的了解像樊,可以使得測試設(shè)計和計劃更加有效,并且有利于在項目初期就確定測試中的復雜問題旅敷。
活動2:確定性能測試驗收標準:
①確定響應(yīng)時間生棍、吞吐量、資源利用中目標以及限制媳谁。
②一般來說足绅,響應(yīng)時間是用戶關(guān)系的焦點,吞吐量是業(yè)務(wù)關(guān)系的焦點韩脑,資源利用則是系統(tǒng)關(guān)系的焦點。
③確定項目成功的標準粹污,這個標準可能并不包含在上面所確定的總目標和限制之中段多;例如:利用性能測試來評估,怎樣組合相關(guān)的配置才可以帶來最佳性能特征壮吩。
活動3:計劃和設(shè)計測試:
①確定關(guān)鍵場景进苍。
②確定典型用戶的可變性,以及如何模擬這種可變性鸭叙。
③確定測試數(shù)據(jù)觉啊。
④將這些信息整合到一個或者多個系統(tǒng)使用情況模型中,以進行實現(xiàn)沈贝、執(zhí)行和分析杠人。
活動4:配置測試環(huán)境
①隨著需要測試的功能和組件的完善,逐步為每個策略準備執(zhí)行所需要的測試環(huán)境、工具以及資源嗡善。
②確保測試環(huán)境已經(jīng)配置妥當辑莫,可以進行資源監(jiān)控。
活動5 :實現(xiàn)測試設(shè)計
根據(jù)測試設(shè)計逐步展開性能測試
活動6:執(zhí)行測試
①執(zhí)行和監(jiān)控測試罩引。
②保證測試各吨、測試數(shù)據(jù)以及結(jié)果收集有效。
③監(jiān)控測試和測試環(huán)境袁铐,確保進行有效的測試以保障結(jié)果分析的正確性揭蜒。
活動7:分析結(jié)果、報告以及重復測試
①整合并且共享結(jié)果數(shù)據(jù)剔桨,不僅要對單個數(shù)據(jù)進行分析屉更,還要從一個功能交叉的測試團隊角度來分析數(shù)據(jù)。
②如果所有度量都在可接受的范圍內(nèi)领炫,沒有違反任何預設(shè)閥值偶垮,并且收集到了所有需要的信息,就完成了基于特定配置的特定場下的測試帝洪。
8.9LoadRunner使用—必會的性能測試工具
8.9.1LoadRunner介紹
定義:
? ? ? ?LoadRunner是mercury公司著名的性能測試產(chǎn)品似舵。2006年被HP收購后,LoadRunner就已經(jīng)成為HP重要的產(chǎn)品之一葱峡。
? ? ? ?LoadRunner通過模擬一個多用戶并行工作的環(huán)境來對應(yīng)程序進行負載測試砚哗。通過使用最少的硬件資源,這些虛擬用戶提供一致的砰奕、可重復并可度量的負載蛛芥,像實際用戶一樣使用所要測試的應(yīng)用程序。LoadRunner深入的報告和圖提供了評估應(yīng)用程序性能所需的信息军援。
? ? ? ?LoadRunner是一種適用于各種體系架構(gòu)的負載測試工具仅淑,它能預測系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測試對象是整個企業(yè)的系統(tǒng)胸哥,它通過模擬實際用戶的操作行為和實行實時性能監(jiān)測涯竟,來幫助您更快地查找和發(fā)現(xiàn)問題。LoadRunner能支持廣泛的協(xié)議和技術(shù)空厌,為您的特殊環(huán)境提供特殊的解決方案庐船。
8.9.2LoadRunner主要特點
①廣泛支持業(yè)界標準協(xié)議。
②支持多種平臺開發(fā)的腳本嘲更。
③創(chuàng)建真實的系統(tǒng)負載筐钟。
④強大的實時監(jiān)控與數(shù)據(jù)采集功能。
⑤精確分析結(jié)果赋朦,定位問題所在篓冲。