如何理解完美測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/4/9 9:42:41 ] 推薦標(biāo)簽:
如何理解什么是完美的測試?然后又如何把測試工作做得完美?于是在微博上發(fā)出帖子,問大家如何理解什么是完美測試,但得到的答案也是不一樣的。
@張定勇_darren:值得思考的問題。我的理解,軟件測試是建立對產(chǎn)品信心的過程,將產(chǎn)品引發(fā)終用戶損失的風(fēng)險降低到一個“可接受”的程度。因此,“完美”只能是相對的,或者說測試永達不到完美的程度(這也是測試的魅力所在)。比如我們都知道的一個基本事實是,產(chǎn)品的缺陷是不可能100%消除的。
@小馬老矣:簡單地講,滿足用戶需要可以了。從實踐來看,重在測試需求分析。根據(jù)軟件需求,先從功能角度,分析所有的功能點及非功能需求,并根據(jù)實際應(yīng)用分級;其次是從技術(shù)角度,分析可能對功能產(chǎn)生影響的因素,根據(jù)風(fēng)險高低分級。以此產(chǎn)生測試用例,并妥善安排測試計劃。
@Eagle_Yu:我心中“完美測試”的結(jié)果是產(chǎn)品推出之后,所有使用該產(chǎn)品的客戶都認(rèn)為它是一款設(shè)計合理、性能穩(wěn)定并且沒有什么Bug被發(fā)現(xiàn)的產(chǎn)品。(從實現(xiàn)完美測試角度看)我們測試人員希望產(chǎn)品初期PM、RD、QA、UED能通力合作:即產(chǎn)品經(jīng)理能明確規(guī)劃出用戶的需求,用戶體驗設(shè)計能設(shè)計出符合用戶操作習(xí)慣的用戶界面和性能,開發(fā)人員能分析出將要做的產(chǎn)品技術(shù)上是否可行、減少正式開發(fā)過程中因為技術(shù)達不到而做的返工,品質(zhì)保證能明確測試范圍。而且,測試計劃達到測試范圍明確、階段目標(biāo)清楚、風(fēng)險分析準(zhǔn)確、可執(zhí)行性高。測試案例達到覆蓋面廣、優(yōu)先級權(quán)重準(zhǔn)確、可維護性強。測試人員經(jīng)驗豐富、時間充裕。同時,開發(fā)部門開發(fā)能力強、產(chǎn)品高內(nèi)聚、松耦合。
@狂奔的小溪流:要做到完美測試,是在規(guī)定的時間內(nèi)通過各種測試方法把軟件各個方面(如功能、性能……)的質(zhì)量狀態(tài)全面地體現(xiàn)出來。
@趙枚:一個自證明的系統(tǒng)!當(dāng)這個系統(tǒng)交付的時侯,已經(jīng)完成了其各部分的功能驗證。
那我個人的理解又是如何呢?
我認(rèn)為“完美測試”是通過有效的手段(包括方法、技術(shù)和工具)完成所有必要的測試,達到事先所要求的功能需求和非功能需求的測試覆蓋率、代碼的測試覆蓋率, 終能準(zhǔn)確地給出軟件產(chǎn)品一個完整的質(zhì)量評估。因此,有效的手段、必要的測試、測試覆蓋率、準(zhǔn)確又完整的質(zhì)量評估是構(gòu)成“完美測試”的關(guān)鍵要素。
1)有效的手段:即以短的時間或少的資源來有效地完成給定的測試任務(wù)。自動化測試方法是一種有效的方法,但不一定是有效的,需要具體問題具體分析。自動化測試方法的投入產(chǎn)出比(ROI)在某些測試場合低于手工測試的ROI,例如一次性的軟件項目(而不是產(chǎn)品的系列開發(fā)),這時自動化測試方法往往沒有手工測試效率高。適合用自動化測試方法一定要用自動化測試,該用手工測試的(如軟件產(chǎn)品的易用性測試等)一定用手工測試。
2)必要的測試:沒有執(zhí)行多余的測試任務(wù),也沒有漏掉該執(zhí)行的測試任務(wù)。不需要的測試功能模塊、不需要測試的特性、不需要測試的代碼等能被隔離出來,它們會被排除在測試范圍之外;而且能確定代碼改動的影響范圍,能夠確定測試任務(wù)的優(yōu)先級,從而根據(jù)有限的資源和時間,完成所需要執(zhí)行的測試任務(wù)。如果時間非常有限,完成優(yōu)先級高的那部分測試;如果時間稍微寬松些,完成更多的測試任務(wù),包括優(yōu)先級較高的那部分。如果有足夠的時間,那完成所有任務(wù)的測試。
3)測試覆蓋率:沒有覆蓋率的衡量,不能確定測試的效果、不能確定完成了多少應(yīng)有的測試任務(wù);沒有覆蓋率的衡量,很難知道測試什么時候可以結(jié)束;沒有覆蓋率的衡量,難以對測試工作進行評估,甚至難以控制測試的進度。測試覆蓋率包括兩方面:實際用戶需求驗證的覆蓋度和被測試代碼的覆蓋度。
4)準(zhǔn)確又完整的質(zhì)量評估:在完成必要的測試之后,并有能力發(fā)現(xiàn)測試范圍中的軟件缺陷,然后根據(jù)所發(fā)現(xiàn)的缺陷,以及前面所參與的需求評審、設(shè)計評審和代碼評審的結(jié)果,針對待發(fā)布軟件的各種質(zhì)量特性做出準(zhǔn)確的評估,從而能夠全面地、準(zhǔn)確地了解軟件產(chǎn)品的質(zhì)量,從而能快速地對軟件產(chǎn)品能否發(fā)布做出正確的判斷,對如何持續(xù)改進軟件質(zhì)量也能提出明確的舉措。
那么,又如何將測試工作做到完美的程度呢?不外乎從人、流程、技術(shù)等方面去考慮。人是決定的因素,又是不夠穩(wěn)定的因素,把每個測試工程師都打造成的測試工程師,幾乎不可能。但是,我們打造一支的測試團隊是完全可能的。即團隊的每個成員都有特長,在某個方面有很強的能力、形成互補,這樣,從團隊來看沒有弱項;谝恢У臏y試團隊,我們能建立或引入良好的測試流程,擁有良好的測試方法、技能,終交出一份滿意的答卷。
談到測試流程,首先還得考慮整個組織的研發(fā)流程,測試流程也只能算研發(fā)流程的一部分,需要和產(chǎn)品開發(fā)、項目管理流程和諧共處。如果開發(fā)采用IBM的統(tǒng)一過程模型(RUP),測試流程可以采用迭代的W模型;如果開發(fā)采用敏捷開發(fā),測試也得采用敏捷測試的流程。即使選用W模型或敏捷測試模型,如何細(xì)化流程、如何引入佳實踐等問題還是需要仔細(xì)考量的,針對不同的團隊、不同的項目類型需要定制、剪裁軟件測試流程。例如,互聯(lián)網(wǎng)創(chuàng)新產(chǎn)品的開發(fā),對軟件缺陷有一定的容忍度,軟件測試強調(diào)協(xié)作、靈活和效率,比如某些對于缺陷零容忍度的關(guān)鍵系統(tǒng)(如金融系統(tǒng)、交通自動控制系統(tǒng)等)對缺陷是零容忍度,在測試流程上要嚴(yán)格、規(guī)范得多。
從技術(shù)上看,構(gòu)建覆蓋整個測試流程的自動化測試框架是重中之重。總體上看,基于自動化測試的方法能夠提高測試的效率,也能更好地衡量測試覆蓋率,但是自動化測試工具只是工具,很難進行測試需求的分析和設(shè)計,測試人員自身的智慧、技術(shù)能力依舊是重要的。他們需要理解軟件系統(tǒng)架構(gòu)的設(shè)計、深刻了解軟件實現(xiàn)的技術(shù)環(huán)節(jié),包括如何讓開發(fā)人員保證軟件的可測試性,從而找到有效的測試方法,并能在技術(shù)上保證測試的順利進行,獲得高效的生產(chǎn)力。
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10