軟件測(cè)試7大原則
原則(Principles ),是每個(gè)人在行事中所遵循的準(zhǔn)則。每個(gè)人都有自己的原則,或成人,或尚處襁褓。軟件測(cè)試也有一套原則讓每位軟件測(cè)試從業(yè)人員去遵循,這些原則是前輩們前仆后繼在無(wú)數(shù)的坑坑洼洼中總結(jié)出來(lái)的。
軟件測(cè)試的原則是指幫助測(cè)試團(tuán)隊(duì)有效地利用他們的時(shí)間和精力來(lái)發(fā)現(xiàn)測(cè)試項(xiàng)目的隱藏bug的指導(dǎo)方針。從實(shí)際的實(shí)踐和研究中,研究了以下 7 條軟件測(cè)試的基本原則,以便測(cè)試人員在軟件測(cè)試領(lǐng)域廣泛應(yīng)用。
原則一:測(cè)試證明軟件存在缺陷
Testing shows presence of defects
時(shí)至今日,依然有不少人容易犯錯(cuò):沒(méi)有發(fā)現(xiàn)錯(cuò)誤的測(cè)試說(shuō)明軟件沒(méi)有缺陷。
這個(gè)原則可以用另一種方式來(lái)描述: 測(cè)試的本質(zhì)是證明軟件存在缺陷,而不是軟件沒(méi)有任何缺陷。
測(cè)試只能證明軟件是存在缺陷的(證偽),而不是證明軟件是沒(méi)有缺陷的(證實(shí))。
軟件測(cè)試只能找出應(yīng)用程序或軟件中存在的缺陷,測(cè)試是為了輔助開(kāi)發(fā),降低缺陷存在的可能性而開(kāi)展的活動(dòng),即便對(duì)產(chǎn)品或者應(yīng)用程序進(jìn)行了多次的、比較徹底的測(cè)試都沒(méi)有發(fā)現(xiàn)任何缺陷,也不能證明軟件是100%完美的。
原則二:窮盡測(cè)試是不可能的
Exhaustive testing is impossible
測(cè)試數(shù)據(jù)、輸入和測(cè)試場(chǎng)景的所有組合是不可能的,因?yàn)樗枰罅康臅r(shí)間。相反,測(cè)試團(tuán)隊(duì)只能專注于一些重要的指標(biāo),例如:設(shè)置測(cè)試策略的風(fēng)險(xiǎn)和優(yōu)先級(jí)。一般來(lái)說(shuō),項(xiàng)目周期里永遠(yuǎn)不可能允許測(cè)試團(tuán)隊(duì)在項(xiàng)目中進(jìn)行大量有效的組合測(cè)試。
比如測(cè)試一個(gè)簡(jiǎn)單的計(jì)算器,你可以嘗試1+1,1+2,1+3,1+n……,但是時(shí)間上允許你把所有的數(shù)字都考慮進(jìn)去做詳盡測(cè)試嗎?顯然是不可能的,從功能本身出發(fā)也算是多余操作。
隨著系統(tǒng)承載業(yè)務(wù)多,代碼規(guī)模也越龐大,算法邏輯復(fù)雜度也越高。要讓測(cè)試完全覆蓋是不可能的。那難道不測(cè)?非也!我們可以采取以下策略:
1、精準(zhǔn)測(cè)試:改動(dòng)什么測(cè)什么;
2、二八原則:只測(cè)重點(diǎn);
3、等價(jià)劃分;
等等
原則三:盡早介入測(cè)試
Testing Early
這條很重要,但是對(duì)測(cè)試的要求也會(huì)更高。
“早期的鳥(niǎo)兒有蟲(chóng)吃”或者是“早起的蟲(chóng)子被鳥(niǎo)吃”,對(duì),說(shuō)的就是這個(gè)理兒,早,是我們解決問(wèn)題的有效辦法。
必須盡早介入測(cè)試活動(dòng),為軟件開(kāi)發(fā)的下一階段做好準(zhǔn)備。只要生成產(chǎn)品需求或文檔,測(cè)試人員甚至就可以開(kāi)始測(cè)試。
據(jù)調(diào)查,缺陷的修復(fù)成本與其發(fā)現(xiàn)時(shí)間成反比,且越晚修復(fù)其修復(fù)成本將會(huì)成指數(shù)級(jí)增長(zhǎng)。
顯然,從一開(kāi)始就解決問(wèn)題總是更容易、更便宜,而不是如果發(fā)現(xiàn)錯(cuò)誤太晚就改變整個(gè)系統(tǒng)。因此,通過(guò)早期測(cè)試,測(cè)試人員可以檢測(cè)到錯(cuò)誤,并幫助開(kāi)發(fā)團(tuán)隊(duì)以更少的成本和精力解決問(wèn)題。
另外,盡早介入測(cè)試,測(cè)試人員能夠更全面的了解需求和項(xiàng)目整體進(jìn)度,知己知彼百戰(zhàn)不殆,說(shuō)的就是這個(gè)理兒。
盡早介入測(cè)試原則與測(cè)試左移和測(cè)試前移具有異曲同工之妙。
原則四:缺陷具有集群性
Defect Clustering
之前聽(tīng)過(guò)一種理論,二八原則,即:80%的錯(cuò)誤是由20%的模塊引起的。
缺陷聚類指的是在幾個(gè)模塊中發(fā)現(xiàn)了大部分缺陷。這一原則要求測(cè)試團(tuán)隊(duì)利用自己的知識(shí)和經(jīng)驗(yàn),確定要測(cè)試的潛在模塊。這一預(yù)測(cè)有助于節(jié)省時(shí)間和精力,因?yàn)閳F(tuán)隊(duì)只需要關(guān)注那些 “敏感” 領(lǐng)域。
然而,這種方法也有缺點(diǎn): 一旦測(cè)試人員只專注于所有團(tuán)隊(duì)的一小塊區(qū)域,他們可能會(huì)錯(cuò)過(guò)其他區(qū)域的錯(cuò)誤。
原則五:殺蟲(chóng)劑悖論
Pesticide Paradox
當(dāng)我們反復(fù)使用相同的殺蟲(chóng)劑的時(shí)候,會(huì)有少量害蟲(chóng)產(chǎn)生免疫而存活下來(lái),使得殺蟲(chóng)劑失去藥效。
殺蟲(chóng)劑悖論是指測(cè)試人員一直使用相同的方法或手段去重復(fù)測(cè)試,這些測(cè)試只適用于一些有限的模塊,而不是整個(gè)系統(tǒng)。這種測(cè)試可能很難發(fā)現(xiàn)bug,甚至無(wú)法發(fā)現(xiàn)bug。因此,為了涵蓋項(xiàng)目的各個(gè)部分,它要求測(cè)試團(tuán)隊(duì)經(jīng)常審查和更新測(cè)試用例。
原則六:測(cè)試是上下文相關(guān)的
Testing is context dependent
各種產(chǎn)品或項(xiàng)目包含不同的元素、特征和要求。因此,測(cè)試人員不能對(duì)不同的項(xiàng)目應(yīng)用相同的測(cè)試方法。例如,銀行行業(yè)的應(yīng)用程序應(yīng)該比娛樂(lè)軟件需要做更多的測(cè)試。
原則七:無(wú)錯(cuò)誤謬論
Absence of error - Fallacy
在 原則一:測(cè)試顯示軟件存在缺陷 中說(shuō)明,測(cè)試是為了降低缺陷存在的可能性而開(kāi)展的活動(dòng),即便多次測(cè)試都沒(méi)有發(fā)現(xiàn)任何缺陷,也不能證明軟件是完美的。
軟件測(cè)試不僅僅是為了找出Bug而存在的活動(dòng),而是還需要確認(rèn)軟件是否滿足用戶的期望和需求,如果產(chǎn)品不能滿足用戶的需求,即使沒(méi)有出現(xiàn)任何缺陷,這個(gè)產(chǎn)品也是失敗的。
“沒(méi)有錯(cuò)誤” 并不是我們的追求,在互聯(lián)網(wǎng)時(shí)代,始終快速給用戶創(chuàng)造最大的價(jià)值才是我們孜孜不倦的追求。
上述原則是由 Rex Black 、 Erick Van Veenendaal 和 Dorothy Graham 的研究 “軟件測(cè)試基礎(chǔ)” (ISTQB 認(rèn)證) 總結(jié)的。這些原則可以作為大多數(shù)測(cè)試項(xiàng)目的核心指南。然而,如上所述,每個(gè)產(chǎn)品或項(xiàng)目都包含非常不同的因素和需求,需要各種測(cè)試方法。測(cè)試人員應(yīng)該利用他們的經(jīng)驗(yàn)和知識(shí)來(lái)決定和平衡這些方法。