捉蟲(chóng)記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載二)
在熟悉了公司的結(jié)構(gòu)、開(kāi)發(fā)流程,參與了部門例會(huì)之后,小白要開(kāi)始從事具體的軟件測(cè)試工作了,對(duì)于他來(lái)說(shuō),這一領(lǐng)域陌生而令人興奮。
在剛上班的一周內(nèi),小白不斷地聽(tīng)到周圍的測(cè)試工程師高興得喊道:“又發(fā)現(xiàn)Bug了!”,看著他們那興奮的樣子,小白也有點(diǎn)躍躍欲試,想趕緊在捉蟲(chóng)的戰(zhàn)場(chǎng)上大展身手。那么,什么是Bug呢,它為什么這么重要,發(fā)現(xiàn)Bug為什么這樣興奮?
1.2.1 蟲(chóng)子的來(lái)世今生
在本章的序幕部分,我們已經(jīng)了解了很多由于軟件代碼的問(wèn)題使得事情失敗的案例了。它們有的后果真的很嚴(yán)重,甚至能夠造成對(duì)生命的威脅。這肯定不是軟件設(shè)計(jì)者和開(kāi)發(fā)者想要達(dá)到的目標(biāo),因此,出現(xiàn)這樣的情況可以說(shuō)是軟件的錯(cuò)誤。
細(xì)細(xì)的分起來(lái),軟件的錯(cuò)誤有如下幾個(gè)詞語(yǔ)來(lái)描述:
缺陷、偏差、錯(cuò)誤、問(wèn)題、事故、異常。在這一堆詞語(yǔ)當(dāng)中,除了偏差之外,其他的詞語(yǔ)所造成的后果給人的感覺(jué)都相當(dāng)嚴(yán)重。所謂偏差,就是軟件在使用過(guò)程中,和軟件設(shè)計(jì)說(shuō)明(product specification)所不一致的行為。
那么為什么將這樣的軟件問(wèn)題稱為Bug呢?這里面還有一個(gè)故事。
【史上第一個(gè)軟件Bug】
該詞的原意是“臭蟲(chóng)”或“蟲(chóng)子”。1947年9月9日,正值計(jì)算機(jī)剛剛被發(fā)明的時(shí)候,哈佛大學(xué)的某個(gè)計(jì)算機(jī)實(shí)驗(yàn)室正在做實(shí)驗(yàn)。由于當(dāng)時(shí)的原始計(jì)算機(jī)由很 多龐大且昂貴的真空管組成,運(yùn)行時(shí)會(huì)產(chǎn)生光和熱,在下午15點(diǎn)45分的時(shí)候,一個(gè)飛蛾(英文是Moth)鉆入了真空管內(nèi),導(dǎo)致整個(gè)計(jì)算機(jī)無(wú)法工作。當(dāng)把這 只小蟲(chóng)子從真空管中取出后,計(jì)算機(jī)又恢復(fù)正常。后來(lái),蟲(chóng)子的泛稱Bug這個(gè)名詞就沿用下來(lái),而那個(gè)被拍死的飛蛾也成為了歷史上發(fā)現(xiàn)的第一個(gè)Bug。
【Bug滲透到日常生活中】
一般來(lái)說(shuō),擁有一定知識(shí)產(chǎn)權(quán)的產(chǎn)品的錯(cuò)誤都能稱之為Bug。這方面有一個(gè)我們比較熟悉的例子就是電影。影迷們經(jīng)常議論某熱門電影中出現(xiàn)了所謂的“穿幫” 鏡頭,比如在描述古代武俠的影片中天空掠過(guò)一架飛機(jī),主角剛才是右臉有傷痕,過(guò)一會(huì)變成左臉等。這樣的鏡頭也可以說(shuō)是Bug,甚至還有專門的網(wǎng)站來(lái)記錄這 些影迷的細(xì)心發(fā)現(xiàn),比如http://www.chinabug.net。
1.2.2 軟件Bug的5個(gè)要素
前文籠統(tǒng)解釋了軟件Bug是軟件的錯(cuò)誤或者偏差。那么在具體的工作中,小白如何判斷軟件的行為是Bug呢?說(shuō)來(lái)簡(jiǎn)單,根據(jù)軟件設(shè)計(jì)階段形成的功能說(shuō)明 書,英文為Specification Document,一般簡(jiǎn)稱Spec。對(duì)于具體的判斷標(biāo)準(zhǔn),經(jīng)理介紹了如下5個(gè)要素:
軟件沒(méi)有實(shí)現(xiàn)說(shuō)明書中所列出的功能。
軟件出現(xiàn)了說(shuō)明書中提到不應(yīng)出現(xiàn)的事情。
軟件實(shí)現(xiàn)了說(shuō)明書中沒(méi)有提到的功能。
軟件沒(méi)有實(shí)現(xiàn)說(shuō)明書中沒(méi)有提到但應(yīng)該實(shí)現(xiàn)的功能。
軟件非常難于學(xué)習(xí)、使用,運(yùn)轉(zhuǎn)速度很慢,用戶認(rèn)為無(wú)法達(dá)到預(yù)期。
為了充分理解上述5個(gè)要素,小白自己打開(kāi)了Windows系統(tǒng)中最簡(jiǎn)單的一款軟件Notepad,也就是我們平時(shí)“不屑于”用到的記事本程序,開(kāi)始了自己的思考。
1.軟件沒(méi)有實(shí)現(xiàn)說(shuō)明書中所列出的功能
對(duì)于“軟件沒(méi)有實(shí)現(xiàn)說(shuō)明書中所列出的功能是Bug”這一點(diǎn)是比較好理解的。如果打開(kāi)記事本軟件,卻無(wú)法在其中輸入漢字,或者輸入了文本,無(wú)法保存成文件,那么肯定是一個(gè)很重要的Bug。
2.軟件出現(xiàn)了說(shuō)明書中提到不應(yīng)出現(xiàn)的事情
對(duì)于第2點(diǎn),“軟件出現(xiàn)了說(shuō)明書中提到不應(yīng)出現(xiàn)的事情也是Bug”,這一點(diǎn)和小白的性能測(cè)試工作有相對(duì)更緊密的關(guān)系。小白要測(cè)試的是公司的網(wǎng)站,它要求用戶在瀏覽網(wǎng)站時(shí)顯示頁(yè)面盡可能地快,如果超出5秒鐘則認(rèn)為是不可接受的。這個(gè)“超出5秒鐘”就是說(shuō)明書中提到不應(yīng)該出現(xiàn)的事情,實(shí)際出現(xiàn)后肯定是一個(gè)Bug,需要開(kāi)發(fā)人員找出哪里耗費(fèi)了頁(yè)面顯示時(shí)間。
在記事本程序中,如果程序保存文件時(shí)出現(xiàn)了程序崩潰(Crash)現(xiàn)象,即屬于此類。
軟件實(shí)現(xiàn)了說(shuō)明書中沒(méi)有提到的功能也是Bug這一點(diǎn)可能有點(diǎn)難于理解。一個(gè)軟件,功能難道不是越多越強(qiáng)大嗎?其實(shí)不盡然,實(shí)現(xiàn)額外的功能有如下幾個(gè)缺點(diǎn),如表1-3所示。
表1-3 軟件實(shí)現(xiàn)說(shuō)明書中未提到功能所帶來(lái)的問(wèn)題
缺 點(diǎn) | 說(shuō) 明 |
代碼量增大 | 由于代碼可能相互影響,因此這部分額外 的功能可能對(duì)其他功能的實(shí)現(xiàn)造成影響, 帶入新的Bug |
增加額外的開(kāi)發(fā)、測(cè)試時(shí)間 | 在軟件項(xiàng)目時(shí)間固定的情況下,導(dǎo)致投入 到其他必備功能的開(kāi)發(fā)測(cè)試時(shí)間減少, 可能影響它們的完成質(zhì)量 |
增加了成本, 與軟件的宣傳不完全符合 | 雖然用戶對(duì)于增加功能一般不會(huì)有意見(jiàn), 但可能影響了公司的銷售策略和市場(chǎng)定位 |
4.軟件沒(méi)有實(shí)現(xiàn)說(shuō)明書中沒(méi)有提到但應(yīng)該實(shí)現(xiàn)的功能
小白一般是將網(wǎng)上找到的有用文檔保存在隨身攜帶的U盤中。這一次,他在測(cè)試記事本程序的時(shí)候,同樣打算將文件保存在 U盤上,可是由于連日來(lái)的文檔太多了,優(yōu)盤已經(jīng)沒(méi)有空間,記事本提示無(wú)法保存,同時(shí)系統(tǒng)托盤有提示說(shuō)磁盤空間已滿。在這種情況下記事本的行為,就屬于實(shí)現(xiàn) 了說(shuō)明書中沒(méi)有提到卻應(yīng)該實(shí)現(xiàn)的功能(在磁盤滿的情況下,給用戶以提示)。如果沒(méi)有提示,不符合絕大部分用戶的使用習(xí)慣,也是一個(gè)Bug。
5.軟件難于使用、性能差
軟件是拿來(lái)用的,再好的界面使用不方便也不會(huì)產(chǎn)生多大效果。一個(gè)網(wǎng)站如果半天都打不開(kāi),很難想象還會(huì)有多少用戶會(huì)訪問(wèn)它。因此這樣的問(wèn)題也是Bug,而且對(duì)于性能測(cè)試來(lái)說(shuō),這一個(gè)規(guī)則很重要。
1.2.3 發(fā)現(xiàn)蟲(chóng)子的危害
既然軟件Bug對(duì)產(chǎn)品造成了這么多的影響,那么發(fā)現(xiàn)它就顯得非常重要了。業(yè)內(nèi)人士都認(rèn)為,在軟件生命周期內(nèi)的不同階段發(fā)現(xiàn)Bug,所節(jié)省的成本是不同的,如圖1-5所示。
圖1-5 軟件生命周期內(nèi)各階段發(fā)現(xiàn)與改正Bug所需成本示意圖
從圖中可以看出,在產(chǎn)品設(shè)計(jì)階段發(fā)現(xiàn)Bug要比在產(chǎn)品維護(hù)階段發(fā)現(xiàn)好得多,這是很好理解的。
在需求分析階段,對(duì)于用戶需求的理解停留在需求文檔中,對(duì)其中理解不正確的部分只需要修改文檔即可以,基本不會(huì)產(chǎn)生什么成本。
在軟件設(shè)計(jì)階段,發(fā)現(xiàn)的Bug很多都是設(shè)計(jì)思想的缺陷。由于尚未開(kāi)始編碼,這樣的Bug一般需要進(jìn)行深入的討論最終獲得一種正確的結(jié)論,因此改正成本也不高。
在軟件編碼階段和測(cè)試階段,代碼通過(guò)開(kāi)發(fā)人員和測(cè)試人員的努力在進(jìn)行不斷的完善,有關(guān)Bug的成本主要花費(fèi)在項(xiàng)目?jī)?nèi)部的溝通與時(shí)間成本方面。
但是一旦產(chǎn)品發(fā)布,在軟件維護(hù)階段發(fā)現(xiàn)的Bug,其修改成本會(huì)非常高昂:一是因?yàn)檐浖蔀榱讼到y(tǒng),與開(kāi)發(fā)階段重點(diǎn)檢 查各模塊功能相比更為復(fù)雜,尋找代碼上的產(chǎn)生Bug根源更加困難。特別是,如果前期工作沒(méi)有做好的話,甚至軟件產(chǎn)品的結(jié)構(gòu)都需要進(jìn)行大修改;二是因?yàn)闋砍?的部門明顯增加,比如客戶服務(wù)部門、產(chǎn)品部署部門、銷售部門等都要參與,導(dǎo)致公司內(nèi)部、公司與客戶之間的溝通成本急劇增加;第三點(diǎn)則是影響產(chǎn)品質(zhì)量與公司 的信譽(yù)、未來(lái)產(chǎn)品的銷售。
【千年蟲(chóng)的問(wèn)題】
在前幾年,有一個(gè)著名的蟲(chóng)子把業(yè)內(nèi)攪得不可開(kāi)交,那就是千年蟲(chóng)問(wèn)題,也叫做2000年問(wèn)題。它是指在某些使用了計(jì)算 機(jī)程序的智能系統(tǒng)(比如一般的計(jì)算機(jī)系統(tǒng)以及自動(dòng)控制芯片等)中,由于其中的年份沿用早期的設(shè)計(jì),只使用2位十進(jìn)制數(shù)來(lái)表示,比如用80代表1980年, 因此當(dāng)系統(tǒng)進(jìn)行(或者涉及到)跨世紀(jì)的日期處理運(yùn)算(比如計(jì)算1980年到2080年之間的日期)時(shí),就會(huì)出現(xiàn)錯(cuò)誤的結(jié)果,從而引發(fā)各種各樣的系統(tǒng)功能紊 亂甚至系統(tǒng)崩潰。
從千年蟲(chóng)的實(shí)際例子中也可以看出,不考慮硬件上的限制,如果當(dāng)初在設(shè)計(jì)日期表示格式的時(shí)候能夠想得更長(zhǎng)遠(yuǎn)一些,就完 全可以避免這個(gè)蟲(chóng)子的發(fā)作,從而節(jié)省一大筆修改更新軟件等的費(fèi)用(據(jù)未經(jīng)證實(shí)的來(lái)自美國(guó)國(guó)際資料公司調(diào)查報(bào)告表明,光是1995年到1998年,全球捉" 千年蟲(chóng)"的開(kāi)銷就已經(jīng)達(dá)到驚人的1840億美元)。
前文花費(fèi)了不少文字來(lái)講述Bug的定義、危害和判斷原則,本節(jié)將在更廣的范圍內(nèi)介紹軟件測(cè)試的定義與分類。
1.3.1 軟件測(cè)試的定義
軟件測(cè)試就是利用一定的方法對(duì)軟件的質(zhì)量或者使用性進(jìn)行判斷和評(píng)估的過(guò)程。這一定義獲得了較廣泛的認(rèn)同。
1.3.2 軟件測(cè)試工程師的工作內(nèi)容
軟件測(cè)試是由軟件測(cè)試工程師來(lái)完成的,他們的主要工作內(nèi)容則是:
尋找軟件中的Bug,并且是越早發(fā)現(xiàn)越好(原因見(jiàn)1.2節(jié))。
確認(rèn)Bug的可重復(fù)性(Repro)以及Bug產(chǎn)生的步驟。
確認(rèn)Bug是否被解決(Fixed)。
測(cè)試方法、測(cè)試計(jì)劃、測(cè)試平臺(tái)、測(cè)試代碼、測(cè)試用例、測(cè)試文檔、測(cè)試報(bào)告的確定、編寫和執(zhí)行。
對(duì)于小白這樣剛?cè)肼毜男氯藖?lái)說(shuō),主要工作就是前3項(xiàng)以及測(cè)試用例的編寫了。在1.4節(jié)將講述測(cè)試用例的知識(shí)。
1.3.3 軟件測(cè)試的分類
軟件測(cè)試可以有很多種分類,常見(jiàn)的有如下一些:
黑盒測(cè)試(Black box testing);
白盒測(cè)試(White box testing);
功能性測(cè)試(Functional testing);
兼容性測(cè)試(Compatibility testing);
性能測(cè)試(Performance testing);
安全測(cè)試(Security testing);
壓力測(cè)試(Stress testing)。
雖然看起來(lái)很多很復(fù)雜,但是目前,小白所要做的工作就是先熟悉這些名詞,這樣在閱讀眾多的技術(shù)文檔時(shí),了解這些名詞屬于軟件測(cè)試的范疇就可以了。
對(duì)于軟件測(cè)試的兩個(gè)核心,則有必要在第1章詳細(xì)的介紹。這兩個(gè)核心分別是測(cè)試用例和測(cè)試工程師,分別代表了軟件測(cè)試的兩個(gè)方面:工具和人。
(未完待續(xù))
相關(guān)鏈接:
捉蟲(chóng)記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載一)
posted on 2013-05-22 10:32 順其自然EVO 閱讀(268) 評(píng)論(0) 編輯 收藏