qileilove

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

          軟件測(cè)試

            最近在讀《軟件測(cè)試》 一書,對(duì)叫這個(gè)名字的書多,我讀的是Ron Patton 寫的那本,對(duì)!2002年的中文版,已經(jīng)十年了,雖然沒《軟件測(cè)試的藝術(shù)》那么經(jīng)典,那么有深度,但絕對(duì)也是一本不錯(cuò)的好書。讀到第三章“軟件的實(shí)質(zhì)”,覺得確實(shí)不錯(cuò),這里摘錄分享與大家分享。

            實(shí)質(zhì),哲學(xué)中把本質(zhì),又稱為“實(shí)質(zhì)”是指某一對(duì)象或事物本身所必然固有的。說(shuō)的通俗點(diǎn)也就是說(shuō)軟件測(cè)試的本來(lái)的面目。

            軟件缺陷的定義

            來(lái)看一下Ron Patton 為我們的軟件缺陷所下的定義。

            1、軟件沒有實(shí)現(xiàn)產(chǎn)品的說(shuō)明書所描述的功能。(個(gè)人覺得“描述”比“宣稱”更貼切)

            2、軟件實(shí)現(xiàn)了產(chǎn)品說(shuō)明書描述不應(yīng)有的功能。

            3、軟件執(zhí)行了產(chǎn)品說(shuō)明書沒講的操作

            4、軟件沒有實(shí)現(xiàn)產(chǎn)品說(shuō)明書沒講但應(yīng)該實(shí)現(xiàn)的功能。

            5、從軟件測(cè)試員的角度來(lái)看,軟件難以理解、不易使用、運(yùn)行緩慢,或者最終用戶認(rèn)為不對(duì)。

            為什么一個(gè)定義要這么多條來(lái)描述?這個(gè)“缺陷”的定義有這么復(fù)雜么?不,它其實(shí)并不復(fù)雜,作者只是想更加全面的來(lái)給缺陷下定義。下面我們來(lái)以建一棟房子為例,來(lái)說(shuō)明一下每一條定義的意思。需要說(shuō)明的是沒有十分完美而且一成不變的產(chǎn)品說(shuō)明說(shuō),而且在實(shí)際項(xiàng)目中,它可能非常簡(jiǎn)陋,模棱兩可,甚至經(jīng)常變動(dòng)。

            1、軟件沒有實(shí)現(xiàn)產(chǎn)品說(shuō)明書的描述的功能。房子的主要希望有一個(gè)落地的大窗戶,讓陽(yáng)光更好的照進(jìn)屋子里,而且他特意在房子的設(shè)計(jì)圖紙中畫出來(lái),并且還加以說(shuō)明。結(jié)果,他看到的是四面全是墻壁,只有一個(gè)小門的房子。那么對(duì)于測(cè)試人員來(lái)說(shuō),他就是一個(gè)缺陷。

            2、軟件實(shí)現(xiàn)了產(chǎn)品說(shuō)明書中描述的不應(yīng)有的功能。由于房子的主人生活在南方,天氣溫暖,而請(qǐng)來(lái)的泥瓦匠是北方的,結(jié)果給主人建造的房子具然有一個(gè)大大的取暖的煙筒,而且主要主要特意在房子的設(shè)計(jì)圖紙中說(shuō)明,自己的房子不要煙筒。那么對(duì)于測(cè)試人員來(lái)說(shuō),這也是個(gè)缺陷。

            3、軟件執(zhí)行了產(chǎn)品說(shuō)明書沒講的操作。與第二條類似,不同的是第二條是主人已經(jīng)明確說(shuō)了自己不要煙筒,而這一條強(qiáng)調(diào)的是在主人沒說(shuō)的情況下。泥瓦匠自作聰明的加了一個(gè)煙筒上去。對(duì)于測(cè)試人員來(lái)說(shuō),畫蛇添足的功能同樣被視為缺陷。

            4、軟件沒有實(shí)現(xiàn)產(chǎn)品說(shuō)明書沒講但應(yīng)該實(shí)現(xiàn)的功能。房子的主要對(duì)屋子的高度、格局,材料,顏色描述的非常清楚。泥瓦匠在建造房子的時(shí)候發(fā)現(xiàn),主人沒有提地基這回事,為了使房子牢固,所以,所有的房子都是必須要先打地基的,雖然主人沒有說(shuō),但地基的功能必須要做。如果因?yàn)闆]有描述沒有去做,但這又一件必須去做的事。對(duì)于測(cè)試人員來(lái)說(shuō),也可以視其這缺陷。

            6、從軟件測(cè)試員的角度看,軟件難以理解、不易使用、運(yùn)行緩慢,或者最終用戶認(rèn)為不對(duì)。軟件測(cè)試員是軟件除了測(cè)試軟件運(yùn)行的缺陷,同樣是作為一個(gè)用戶在再對(duì)軟件進(jìn)行使用。如果感覺自己都很難使用,或軟件效率非常低且界面丑陋等情況,也可以認(rèn)為其存在缺陷。或者是最終用戶拿到產(chǎn)品時(shí)發(fā)現(xiàn)這根本不是自己想要的東西,也可以現(xiàn)其為缺陷。當(dāng)然,用戶說(shuō)不是自己想要的東西,也不能憑借一面之詞,可以拿合約,產(chǎn)品說(shuō)明書來(lái)評(píng)估。

            Ok ,上面分析一下缺陷的定義,如何去判定一個(gè)缺陷。下面來(lái)看一下測(cè)試的原側(cè),我們可以視其為軟件測(cè)試過(guò)程中的“交通規(guī)則”。它會(huì)有助于我們更好的進(jìn)行軟件測(cè)試的工作

            全完測(cè)試程序的可能性

            初做軟件測(cè)試者可能認(rèn)為拿到軟件后就可以進(jìn)行完全測(cè)試了,找出所有軟件缺陷,并使軟件完美。遺憾的是這是不可能的,我們無(wú)法對(duì)一個(gè)軟件進(jìn)行完全測(cè)試,即使最簡(jiǎn)單的程序也不行。主要原因如下:

            ● 輸入量太大

            ● 輸出結(jié)果太多

            ● 軟件實(shí)現(xiàn)的途徑太多

            ● 軟件說(shuō)明書沒有客觀標(biāo)準(zhǔn)。從不同的角度看,軟件缺陷的標(biāo)準(zhǔn)不同。

           這樣說(shuō)有些聳人聽聞,又不能全部測(cè)試,不測(cè)試又會(huì)漏掉軟件缺陷。軟件終歸要分布的,此時(shí)測(cè)試就要停止,但是如果這么快停止下來(lái),還有測(cè)試沒做。怎么辦?

            如上圖所示,縱軸是表示缺陷的數(shù)量,橫軸表示測(cè)試工作量。缺陷的數(shù)量隨著測(cè)試工作的進(jìn)展在不段減少;但測(cè)試有費(fèi)用也隨著工作量在不段提高。

            也就是說(shuō)要想發(fā)現(xiàn)更多的缺陷就必須投入更多費(fèi)用(這個(gè)費(fèi)用包括時(shí)間、人才,物力), 對(duì)一個(gè)新項(xiàng)目,我們前提可能1天發(fā)現(xiàn)10個(gè)缺陷。到后面可能10天發(fā)現(xiàn)1個(gè)缺陷,或者發(fā)現(xiàn)一個(gè)缺陷所需要的時(shí)間更長(zhǎng),我們有必要是去為發(fā)現(xiàn)一個(gè)缺陷而繼續(xù)增加費(fèi)用么?本來(lái)就不存在完美的產(chǎn)品,我們的目標(biāo)是找到最合適的測(cè)試量,使投入(測(cè)試費(fèi)用)與回報(bào)(修復(fù)缺陷數(shù))達(dá)到最優(yōu)。

            測(cè)試無(wú)法顯示潛在的軟件缺陷

            仔細(xì)理解一下這個(gè)標(biāo)題。當(dāng)測(cè)試人員對(duì)一個(gè)軟件進(jìn)行測(cè)試時(shí),他發(fā)現(xiàn)了很多缺陷,功能的,界面的,兼容性能。然后,測(cè)試人員可以好不憂郁的說(shuō),這個(gè)軟件存在缺陷。

            當(dāng)又測(cè)試人員又對(duì)另一個(gè)軟件進(jìn)行測(cè)試時(shí),他用盡各種測(cè)試方法,測(cè)遍所有功能(當(dāng)然,這是不可能,上面已經(jīng)說(shuō)了無(wú)法完全測(cè)試),他投入了大量的時(shí)間和精力卻最終沒有發(fā)現(xiàn)一個(gè)缺陷。那么測(cè)試人員不能保證這個(gè)軟件是沒缺陷的,當(dāng)然,他更無(wú)法去報(bào)告這些潛伏的缺陷。也就是說(shuō)測(cè)試人員只能報(bào)告已經(jīng)發(fā)現(xiàn)的缺陷,對(duì)于未知的誰(shuí)也不能肯定。

            (這也是測(cè)試人員遭受質(zhì)疑的地方,你既然不能保證軟件的質(zhì)量,要你何用。測(cè)試人員可以提高軟件的質(zhì)量,至于能提高多少,全憑測(cè)試人員的能力決定了。不像開發(fā)人員對(duì)于一個(gè)功能的實(shí)現(xiàn),能或不能是很明確的兩個(gè)答案。)

            找到的軟件缺陷越多,就說(shuō)明軟件的缺陷越多

            我們先來(lái)體會(huì)下面兩句話。

            “找到的軟件缺陷越多,說(shuō)明軟件遺留的缺陷越少”

            “找到的軟件缺陷越少,說(shuō)明軟件遺留的缺陷越少”

            不管是開發(fā)還是測(cè)試,我們期望軟件遺留的缺陷少。但是上面的兩句話都不成產(chǎn)。我們發(fā)現(xiàn)缺陷的多少和最終軟件遺留的缺陷多少毫無(wú)關(guān)系。那么為什么會(huì)有上面兩種推斷呢?

            “找到的軟件缺陷越多,說(shuō)明軟件遺留的缺陷越少”這種情況,假設(shè)缺陷在一定數(shù)量的情況下,測(cè)試人員業(yè)務(wù)非常精通,測(cè)試極其認(rèn)真,發(fā)現(xiàn)越多的缺陷 ,說(shuō)明還遺留的缺陷就越少。那么,我也可以假設(shè)隨便這么一測(cè),就發(fā)現(xiàn)這么多缺陷,那這個(gè)軟件應(yīng)該還有很多。

            “找到的軟件缺陷越少,說(shuō)明軟件遺留的缺陷越少”這種情況,假設(shè)經(jīng)驗(yàn)非常豐富,而且工作非常認(rèn)少,測(cè)試人員花費(fèi)了很大的時(shí)間和精力都不能找到缺陷,說(shuō)明軟件本身的質(zhì)量很少,也就是說(shuō)其本身遺留的缺陷越少。那么,我也可以假設(shè)為,是不是我對(duì)業(yè)務(wù)不夠熟悉,經(jīng)驗(yàn)不夠豐富,為什么發(fā)現(xiàn)不了缺陷。那么可能軟件遺留的缺陷還有很多,只是我沒有發(fā)現(xiàn)。

            更嚴(yán)謹(jǐn)說(shuō)法,或者更準(zhǔn)確的說(shuō)法是“找到的軟件缺陷越多,就說(shuō)明軟件的缺陷越多。”我們發(fā)現(xiàn)有缺陷越多,只能說(shuō)明軟件的缺陷多。并無(wú)法正明軟件還遺留的缺陷的多少。

            當(dāng)然,也并不是無(wú)法評(píng)估軟件遺留缺陷的多少,我們可以根據(jù)開人員的工作經(jīng)驗(yàn)與技術(shù)能力,測(cè)試人員的工作經(jīng)驗(yàn),測(cè)試技能,對(duì)業(yè)務(wù)的熟悉程度以及后以往完的成項(xiàng)目質(zhì)量進(jìn)行評(píng)估。

            并非所有軟件缺陷都能修復(fù)

            “每一個(gè)測(cè)試人員都一顆追求完美的心”,當(dāng)我們發(fā)現(xiàn)了一個(gè)缺陷時(shí),我們希望它能夠被修復(fù),我們不能容忍被發(fā)現(xiàn)的缺陷眼睜睜的存在著而無(wú)法得到修復(fù)。在軟件測(cè)試中,令人沮喪的現(xiàn)實(shí)是,即使拼盡全力,也不是所有的軟件缺陷都能修復(fù)。

            這并不意味著軟件測(cè)試員未達(dá)到目的,或者項(xiàng)目小組將發(fā)布質(zhì)量有缺陷的產(chǎn)品。其真正的含義是要軟件測(cè)試員具備本文開頭(缺陷的定義)中所描述的測(cè)試的素質(zhì)---進(jìn)行良好的判斷,搞清楚在什么情況下不能追求完美。項(xiàng)目小組需要每對(duì)一個(gè)軟件缺陷進(jìn)行取舍,根據(jù)風(fēng)險(xiǎn)決定哪些要修復(fù),哪些不要。

            不需要修復(fù)軟件缺陷的原因:

            * 沒有足夠的時(shí)間。在任何一個(gè)項(xiàng)目中,通常是軟件功能較多,而代碼編寫人員和軟件測(cè)試人員較少,而且在項(xiàng)目進(jìn)度中沒有編制和測(cè)試留出足夠的空間。

            * 不算真正的缺陷。或者有人說(shuō),這不算缺陷,而是一項(xiàng)新的功能。在某些特殊場(chǎng)合,錯(cuò)誤理解、測(cè)試錯(cuò)誤或說(shuō)明書變更會(huì)把軟件缺陷當(dāng)作附加功能來(lái)對(duì)待。

            * 目前技術(shù)無(wú)法解決。你不會(huì)相信,人類有豐富的想象力,很多時(shí)候是受制于技術(shù)上無(wú)法實(shí)現(xiàn)。

            * 修復(fù)的風(fēng)險(xiǎn)太大。這種情況非常常見。軟件本身是脆弱的、難以理清頭緒。修復(fù)一個(gè)軟件缺陷可能導(dǎo)致其它軟件缺陷出現(xiàn)。在緊迫的產(chǎn)品發(fā)布進(jìn)度壓力之后,修復(fù)軟件將冒引入更多缺陷的情況下。我們只能不去理睬現(xiàn)有的缺陷。

            * 修復(fù)成本太高,當(dāng)我們使用一種技術(shù)去完成一項(xiàng)工作,當(dāng)技術(shù)將要完成的時(shí)候發(fā)現(xiàn)一個(gè)缺陷無(wú)法解決,需要換用另一個(gè)技術(shù)才能有效規(guī)避這個(gè)缺陷。那這個(gè)修復(fù)成本將非常高。迫于時(shí)間與成本的壓力。我們需要暫時(shí)不去理會(huì)。

            * 不值得修復(fù)。雖然有些不中聽,但這是真的。不常出現(xiàn)的軟件缺陷和在不常用的功能中出現(xiàn)的缺陷,或都出現(xiàn)也不會(huì)造成什么影響,那么就不值得去修復(fù)。這些都要?dú)w結(jié)為商業(yè)風(fēng)決策。

            軟件說(shuō)明書不斷變化

            軟件開發(fā)者面臨一個(gè)難題。整個(gè)行業(yè)變化太快,去年還很時(shí)髦的產(chǎn)品今年就過(guò)時(shí)了,同時(shí),軟件變得更龐大、更復(fù)雜,功能越來(lái)越多,導(dǎo)致軟件開發(fā)周期不斷變長(zhǎng)。這兩種反作用力形成了矛盾,結(jié)果是產(chǎn)品說(shuō)明書一變?cè)僮儭?/p>

            除了緊跟變化沒有其他方法。假定我們的產(chǎn)品有一個(gè)不得更改的最終產(chǎn)品說(shuō)明書。經(jīng)過(guò)兩年按部就班的開發(fā)快要完工時(shí),結(jié)果競(jìng)爭(zhēng)對(duì)也手發(fā)布了一個(gè)產(chǎn)品,結(jié)果從功能性能用戶體驗(yàn)都要優(yōu)于我們即將完工的產(chǎn)品。我們是繼續(xù)完成一個(gè)失去競(jìng)爭(zhēng)力的產(chǎn)品,還是重新討論產(chǎn)品功能,重寫產(chǎn)品需求,并開發(fā)修訂產(chǎn)品?明智的選擇是后者。

            軟件測(cè)試員必須要想到產(chǎn)品需求可能改變。未曾計(jì)劃的特性會(huì)增加,經(jīng)過(guò)測(cè)試并報(bào)告軟件缺陷的特性可能發(fā)生變化甚至被刪除。這些者是可能的。

          軟件測(cè)試術(shù)語(yǔ)

            準(zhǔn)確與精確

            關(guān)于軟件準(zhǔn)確與精確之間是存在區(qū)別的。我的理解在保證準(zhǔn)確的基礎(chǔ)上求精確。拿一個(gè)計(jì)算器來(lái)做例子。我最喜歡拿一個(gè)計(jì)算器來(lái)輸入10除以3 ,如查等于3.0(四舍五入)了,那么它就不夠準(zhǔn)確。如果計(jì)算的結(jié)果是3.3 那么要我看他的小數(shù)點(diǎn)后面有幾個(gè)3 ,3越多表示越精確。(個(gè)人認(rèn)為在軟件測(cè)試中,這個(gè)用到的不多)

            驗(yàn)證和合法性檢查

            雖然驗(yàn)證和合法性檢查常常互換使用,但是他們有不同的定義。其中的差別對(duì)軟件測(cè)試很重要。

            驗(yàn)證是保證軟件符合產(chǎn)品需求的過(guò)程。合法性檢查是保證軟件滿足用戶要求的過(guò)程。

            驗(yàn)證更多的是站在產(chǎn)品需求的角度去測(cè)試軟件,合法性(或叫“合理性”合適)是站在用戶的角度是測(cè)試軟件,當(dāng)他們發(fā)生沖突時(shí),就需要對(duì)產(chǎn)品時(shí)行衡量。但我偏向于用戶角度,因?yàn)楫a(chǎn)品的最終目的是給用戶使用,而不是為了符合需求文檔。

            質(zhì)量和可靠性

            質(zhì)量解釋為“優(yōu)秀程度”或者“超越同類的”。如果說(shuō)軟件產(chǎn)品質(zhì)量高,就是指它能夠滿足客戶要求。客戶會(huì)感到該產(chǎn)品性能卓越,優(yōu)于其他產(chǎn)品。

            如果在測(cè)試過(guò)程一直穩(wěn)定、可靠,就會(huì)認(rèn)為這是高質(zhì)量的產(chǎn)品。這樣理解錯(cuò)誤。可靠性只是質(zhì)量的一個(gè)方面。那么產(chǎn)品在各種機(jī)型上是否一樣運(yùn)行穩(wěn)定。是否有技術(shù)支持,是否使用方便且性能優(yōu)秀,這些灰是質(zhì)量的組成部分。

            測(cè)試與QA

            軟件測(cè)試人員的目標(biāo)是找出軟件的缺陷,盡可能早的發(fā)現(xiàn)并確定修復(fù)缺陷。

            QA的主要職責(zé)是創(chuàng)建和加強(qiáng)促進(jìn)軟件開發(fā)并防止軟件缺陷的標(biāo)準(zhǔn)和方法。

          posted on 2012-12-14 10:49 順其自然EVO 閱讀(236) 評(píng)論(0)  編輯  收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄管理方向

          <2012年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 连江县| 麻城市| 大石桥市| 宜章县| 贡觉县| 舒城县| 兰溪市| 南木林县| 理塘县| 嘉兴市| 建宁县| 商南县| 中西区| 新建县| 亚东县| 道孚县| 遵义县| 靖西县| 石屏县| 孝昌县| 济南市| 邵武市| 阳原县| 克什克腾旗| 沐川县| 岳阳县| 化德县| 陇南市| 大余县| 黔南| 霞浦县| 青冈县| 江永县| 巴林左旗| 额敏县| 肇州县| 遂川县| 林周县| 湘潭市| 资源县| 城固县|