qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          捉蟲(chóng)記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載二)

          1.2  關(guān)于蟲(chóng)子的故事

            在熟悉了公司的結(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)象,即屬于此類。

           3.軟件實(shí)現(xiàn)了說(shuō)明書中沒(méi)有提到的功能

            軟件實(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億美元)。

           1.3  軟件測(cè)試的定義與分類

            前文花費(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)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 鱼台县| 台南县| 临沭县| 军事| 萍乡市| 崇义县| 育儿| 通化市| 桃园县| 电白县| 揭阳市| 平乡县| 西峡县| 始兴县| 札达县| 阿拉善盟| 余姚市| 武功县| 萨嘎县| 乾安县| 托里县| 尉犁县| 合山市| 德清县| 临西县| 建始县| 福建省| 巴林左旗| 象州县| 司法| 夏河县| 德保县| 门源| 奉节县| 金门县| 淳化县| 高雄县| 抚顺县| 通江县| 屯门区| 太湖县|