如何理解什么是完美的測(cè)試?然后又如何把測(cè)試工作做得完美?于是在微博上發(fā)出帖子,問大家如何理解什么是完美測(cè)試,但得到的答案也是不一樣的。

  @張定勇_darren:值得思考的問題。我的理解,軟件測(cè)試是建立對(duì)產(chǎn)品信心的過程,將產(chǎn)品引發(fā)終用戶損失的風(fēng)險(xiǎn)降低到一個(gè)“可接受”的程度。因此,“完美”只能是相對(duì)的,或者說測(cè)試永達(dá)不到完美的程度(這也是測(cè)試的魅力所在)。比如我們都知道的一個(gè)基本事實(shí)是,產(chǎn)品的缺陷是不可能100%消除的。

  @小馬老矣:簡(jiǎn)單地講,滿足用戶需要可以了。從實(shí)踐來看,重在測(cè)試需求分析。根據(jù)軟件需求,先從功能角度,分析所有的功能點(diǎn)及非功能需求,并根據(jù)實(shí)際應(yīng)用分級(jí);其次是從技術(shù)角度,分析可能對(duì)功能產(chǎn)生影響的因素,根據(jù)風(fēng)險(xiǎn)高低分級(jí)。以此產(chǎn)生測(cè)試用例,并妥善安排測(cè)試計(jì)劃。

  @Eagle_Yu:我心中“完美測(cè)試”的結(jié)果是產(chǎn)品推出之后,所有使用該產(chǎn)品的客戶都認(rèn)為它是一款設(shè)計(jì)合理、性能穩(wěn)定并且沒有什么Bug被發(fā)現(xiàn)的產(chǎn)品。(從實(shí)現(xiàn)完美測(cè)試角度看)我們測(cè)試人員希望產(chǎn)品初期PM、RD、QA、UED能通力合作:即產(chǎn)品經(jīng)理能明確規(guī)劃出用戶的需求,用戶體驗(yàn)設(shè)計(jì)能設(shè)計(jì)出符合用戶操作習(xí)慣的用戶界面和性能,開發(fā)人員能分析出將要做的產(chǎn)品技術(shù)上是否可行、減少正式開發(fā)過程中因?yàn)榧夹g(shù)達(dá)不到而做的返工,品質(zhì)保證能明確測(cè)試范圍。而且,測(cè)試計(jì)劃達(dá)到測(cè)試范圍明確、階段目標(biāo)清楚、風(fēng)險(xiǎn)分析準(zhǔn)確、可執(zhí)行性高。測(cè)試案例達(dá)到覆蓋面廣、優(yōu)先級(jí)權(quán)重準(zhǔn)確、可維護(hù)性強(qiáng)。測(cè)試人員經(jīng)驗(yàn)豐富、時(shí)間充裕。同時(shí),開發(fā)部門開發(fā)能力強(qiáng)、產(chǎn)品高內(nèi)聚、松耦合。

  @狂奔的小溪流:要做到完美測(cè)試,是在規(guī)定的時(shí)間內(nèi)通過各種測(cè)試方法把軟件各個(gè)方面(如功能、性能……)的質(zhì)量狀態(tài)全面地體現(xiàn)出來。

  @趙枚:一個(gè)自證明的系統(tǒng)!當(dāng)這個(gè)系統(tǒng)交付的時(shí)侯,已經(jīng)完成了其各部分的功能驗(yàn)證。

  那我個(gè)人的理解又是如何呢?

  我認(rèn)為“完美測(cè)試”是通過有效的手段(包括方法、技術(shù)和工具)完成所有必要的測(cè)試,達(dá)到事先所要求的功能需求和非功能需求的測(cè)試覆蓋率、代碼的測(cè)試覆蓋率, 終能準(zhǔn)確地給出軟件產(chǎn)品一個(gè)完整的質(zhì)量評(píng)估。因此,有效的手段、必要的測(cè)試、測(cè)試覆蓋率、準(zhǔn)確又完整的質(zhì)量評(píng)估是構(gòu)成“完美測(cè)試”的關(guān)鍵要素。

  1)有效的手段:即以短的時(shí)間或少的資源來有效地完成給定的測(cè)試任務(wù)。自動(dòng)化測(cè)試方法是一種有效的方法,但不一定是有效的,需要具體問題具體分析。自動(dòng)化測(cè)試方法的投入產(chǎn)出比(ROI)在某些測(cè)試場(chǎng)合低于手工測(cè)試的ROI,例如一次性的軟件項(xiàng)目(而不是產(chǎn)品的系列開發(fā)),這時(shí)自動(dòng)化測(cè)試方法往往沒有手工測(cè)試效率高。適合用自動(dòng)化測(cè)試方法一定要用自動(dòng)化測(cè)試,該用手工測(cè)試的(如軟件產(chǎn)品的易用性測(cè)試等)一定用手工測(cè)試。

  2)必要的測(cè)試:沒有執(zhí)行多余的測(cè)試任務(wù),也沒有漏掉該執(zhí)行的測(cè)試任務(wù)。不需要的測(cè)試功能模塊、不需要測(cè)試的特性、不需要測(cè)試的代碼等能被隔離出來,它們會(huì)被排除在測(cè)試范圍之外;而且能確定代碼改動(dòng)的影響范圍,能夠確定測(cè)試任務(wù)的優(yōu)先級(jí),從而根據(jù)有限的資源和時(shí)間,完成所需要執(zhí)行的測(cè)試任務(wù)。如果時(shí)間非常有限,完成優(yōu)先級(jí)高的那部分測(cè)試;如果時(shí)間稍微寬松些,完成更多的測(cè)試任務(wù),包括優(yōu)先級(jí)較高的那部分。如果有足夠的時(shí)間,那完成所有任務(wù)的測(cè)試。

  3)測(cè)試覆蓋率:沒有覆蓋率的衡量,不能確定測(cè)試的效果、不能確定完成了多少應(yīng)有的測(cè)試任務(wù);沒有覆蓋率的衡量,很難知道測(cè)試什么時(shí)候可以結(jié)束;沒有覆蓋率的衡量,難以對(duì)測(cè)試工作進(jìn)行評(píng)估,甚至難以控制測(cè)試的進(jìn)度。測(cè)試覆蓋率包括兩方面:實(shí)際用戶需求驗(yàn)證的覆蓋度和被測(cè)試代碼的覆蓋度。

  4)準(zhǔn)確又完整的質(zhì)量評(píng)估:在完成必要的測(cè)試之后,并有能力發(fā)現(xiàn)測(cè)試范圍中的軟件缺陷,然后根據(jù)所發(fā)現(xiàn)的缺陷,以及前面所參與的需求評(píng)審、設(shè)計(jì)評(píng)審和代碼評(píng)審的結(jié)果,針對(duì)待發(fā)布軟件的各種質(zhì)量特性做出準(zhǔn)確的評(píng)估,從而能夠全面地、準(zhǔn)確地了解軟件產(chǎn)品的質(zhì)量,從而能快速地對(duì)軟件產(chǎn)品能否發(fā)布做出正確的判斷,對(duì)如何持續(xù)改進(jìn)軟件質(zhì)量也能提出明確的舉措。

  那么,又如何將測(cè)試工作做到完美的程度呢?不外乎從人、流程、技術(shù)等方面去考慮。人是決定的因素,又是不夠穩(wěn)定的因素,把每個(gè)測(cè)試工程師都打造成的測(cè)試工程師,幾乎不可能。但是,我們打造一支的測(cè)試團(tuán)隊(duì)是完全可能的。即團(tuán)隊(duì)的每個(gè)成員都有特長(zhǎng),在某個(gè)方面有很強(qiáng)的能力、形成互補(bǔ),這樣,從團(tuán)隊(duì)來看沒有弱項(xiàng);谝恢У臏y(cè)試團(tuán)隊(duì),我們能建立或引入良好的測(cè)試流程,擁有良好的測(cè)試方法、技能,終交出一份滿意的答卷。

  談到測(cè)試流程,首先還得考慮整個(gè)組織的研發(fā)流程,測(cè)試流程也只能算研發(fā)流程的一部分,需要和產(chǎn)品開發(fā)、項(xiàng)目管理流程和諧共處。如果開發(fā)采用IBM的統(tǒng)一過程模型(RUP),測(cè)試流程可以采用迭代的W模型;如果開發(fā)采用敏捷開發(fā),測(cè)試也得采用敏捷測(cè)試的流程。即使選用W模型或敏捷測(cè)試模型,如何細(xì)化流程、如何引入佳實(shí)踐等問題還是需要仔細(xì)考量的,針對(duì)不同的團(tuán)隊(duì)、不同的項(xiàng)目類型需要定制、剪裁軟件測(cè)試流程。例如,互聯(lián)網(wǎng)創(chuàng)新產(chǎn)品的開發(fā),對(duì)軟件缺陷有一定的容忍度,軟件測(cè)試強(qiáng)調(diào)協(xié)作、靈活和效率,比如某些對(duì)于缺陷零容忍度的關(guān)鍵系統(tǒng)(如金融系統(tǒng)、交通自動(dòng)控制系統(tǒng)等)對(duì)缺陷是零容忍度,在測(cè)試流程上要嚴(yán)格、規(guī)范得多。

  從技術(shù)上看,構(gòu)建覆蓋整個(gè)測(cè)試流程的自動(dòng)化測(cè)試框架是重中之重。總體上看,基于自動(dòng)化測(cè)試的方法能夠提高測(cè)試的效率,也能更好地衡量測(cè)試覆蓋率,但是自動(dòng)化測(cè)試工具只是工具,很難進(jìn)行測(cè)試需求的分析和設(shè)計(jì),測(cè)試人員自身的智慧、技術(shù)能力依舊是重要的。他們需要理解軟件系統(tǒng)架構(gòu)的設(shè)計(jì)、深刻了解軟件實(shí)現(xiàn)的技術(shù)環(huán)節(jié),包括如何讓開發(fā)人員保證軟件的可測(cè)試性,從而找到有效的測(cè)試方法,并能在技術(shù)上保證測(cè)試的順利進(jìn)行,獲得高效的生產(chǎn)力。