惠州建設(shè)網(wǎng)站搜索引擎營銷案例分析
軟件測試人員的工作主要是檢測軟件系統(tǒng)中的存在的BUG,但并不是毫無邏輯的盲目抓瞎。學(xué)會(huì)運(yùn)用測試思維去完成測試工作,會(huì)使你的工作事半功倍。
01 軟件測試的前提假設(shè)
測試人員進(jìn)行軟件測試的基本假設(shè)是“有罪推斷”。即:認(rèn)為被測程序一定是有bug的,而且每個(gè)功能點(diǎn)的實(shí)現(xiàn)都存在bug,而且一定存在嚴(yán)重的bug。請牢記這個(gè)假設(shè)。
在實(shí)際工作中,一旦在日后的工作過程中產(chǎn)生了這樣的認(rèn)識:“這個(gè)功能很簡單,肯定不會(huì)出現(xiàn)問題,就不再測試了?!被蛘摺斑@個(gè)功能上一輪剛測試過,當(dāng)時(shí)就沒有問題,這一輪應(yīng)該也不會(huì)有問題,就不用測試了?!?/p>
等等諸如此類的意識,那么你就有90%的概率導(dǎo)致漏測,造成線上問題。其原因也正是這個(gè)測試工作的基本前提假設(shè)。一旦被違背,就從開端導(dǎo)致了測試工作存在問題,所以真正出現(xiàn)問題的可能性也就很大了。
正因?yàn)檐浖y試的這個(gè)前提假設(shè),在導(dǎo)致了如果我們同開發(fā)人員看待程序的角度和出發(fā)點(diǎn)完全不同。因?yàn)?#xff0c;通常情況下一個(gè)有自信心的開發(fā)人員不會(huì)認(rèn)為自己寫的代碼全部都有問題,他一定是認(rèn)為自己的代碼沒有問題了才交付測試的。
因此,如果要從事軟件測試工作,那么就必須牢記并運(yùn)用該假設(shè)。這個(gè)前提假設(shè)要求我們在實(shí)施測試的過程中不能放過任何一個(gè)細(xì)小問題。
比如,某個(gè)程序運(yùn)行時(shí)在控制臺打印了一些錯(cuò)誤信息,但是實(shí)際上該程序的運(yùn)行和功能都沒有問題,如果我們摒棄有罪推斷的假設(shè),從合理實(shí)現(xiàn)的角度去分析,那么就可以認(rèn)為這是開發(fā)人員對于日志打印的輸出控制沒有做好導(dǎo)致的,屬于微不足道的小問題,不需提出即可。
于是,這就使你有90%的可能性錯(cuò)過了發(fā)現(xiàn)其編碼上的異常分支判斷錯(cuò)誤導(dǎo)致的重大問題。
此類案例更常見與那些小概率問題,即在測試過程中偶爾出現(xiàn),但確實(shí)很難、甚至無法復(fù)現(xiàn)的問題,如果我們同樣摒棄有罪推斷的假設(shè),這些問題也會(huì)從我們手邊溜走,跑到線上由用戶發(fā)現(xiàn)。相信諸如此類的教訓(xùn)在每一個(gè)測試人員那里都不是少數(shù)。所以,請轉(zhuǎn)變思維,牢記這個(gè)假設(shè)。
02 測試工作的開展思路
1)從需求出發(fā)
無論什么樣的軟件產(chǎn)品,其設(shè)計(jì)開發(fā)的目的必然是為了滿足一定的需求,這種需求或者是用戶提出的,或者是某個(gè)關(guān)聯(lián)系統(tǒng)提出的。因此,軟件產(chǎn)品最終是為了交付給用戶使用的,也因此可以滿足需求是對于軟件產(chǎn)品質(zhì)量的基本保證,其它如擴(kuò)展性、維護(hù)性等等其實(shí)也算是更為廣義的需求。所以,我們開展軟件測試工作必須從需求出發(fā)。
首先要全面了解需求,包括其背景、關(guān)聯(lián)性、用戶特點(diǎn)等;其次要深入挖掘隱含的需求和關(guān)聯(lián),包括某個(gè)需求隱含了對于系統(tǒng)現(xiàn)有功能的修改等等。
我們只有在全面、深入了解需求的基礎(chǔ)上,才能設(shè)計(jì)全面、有效的測試用例來進(jìn)行測試,以滿足對于軟件產(chǎn)品滿足需求的基本質(zhì)量保證。
2)測試依據(jù)是測試設(shè)計(jì)?
我們進(jìn)行測試設(shè)計(jì)的依據(jù)是對于軟件產(chǎn)品需求的全面和深入分析,但是需求決不全是軟件測試的依據(jù)。因?yàn)槲覀儾粌H要驗(yàn)證需求,而且要驗(yàn)證設(shè)計(jì)。
比如,程序?qū)崿F(xiàn)的異常(指針越界、字符串copy越界等等)判斷,是保證軟件產(chǎn)品可以正常運(yùn)行的必要實(shí)現(xiàn),但是我們在需求中是無法描述和分析出來的。那么進(jìn)行測試的依據(jù)是軟件產(chǎn)品的設(shè)計(jì)或者是代碼嗎?
當(dāng)然也不是。因?yàn)槿绻罁?jù)開發(fā)人員的設(shè)計(jì)或代碼來進(jìn)行測試的話,設(shè)計(jì)或代碼正確,但是不符合需求邏輯的錯(cuò)誤就無法發(fā)現(xiàn)。而且,如果依據(jù)設(shè)計(jì)或代碼進(jìn)行測試的話,那么也就違背了我們進(jìn)行軟件測試的基本假設(shè)——有罪推斷。
所以,我們進(jìn)行軟件測試的依據(jù)應(yīng)該是:我們根據(jù)對需求的全面深入分析和對設(shè)計(jì)實(shí)現(xiàn)的了解,兩相綜合產(chǎn)生的測試設(shè)計(jì)。正因?yàn)槿绱?#xff0c;測試是否充分和有效的根源也是測試設(shè)計(jì)。所以,我們的工作重點(diǎn)也是測試用例設(shè)計(jì)。
3)測試人員只是驗(yàn)證質(zhì)量?
首先要明確的是,測試人員無法保證軟件產(chǎn)品的質(zhì)量,軟件產(chǎn)品的質(zhì)量是通過參與軟件過程的各方聯(lián)合共同保證的。有兩個(gè)原因:
① 由于軟件測試人員不是產(chǎn)品設(shè)計(jì)人員和開發(fā)人員,所以無法做到比他們更了解產(chǎn)品需求和產(chǎn)品設(shè)計(jì),如果他們都無法保證需求和設(shè)計(jì)沒有問題,那么測試人員就更無法保證了;
② 軟件測試位于軟件開發(fā)生命周期的末端,如果依靠測試人員來發(fā)現(xiàn)所有的bug來保證質(zhì)量的話,那么風(fēng)險(xiǎn)就會(huì)后置,導(dǎo)致問題修復(fù)的成本增加,同時(shí)也增加了修復(fù)問題帶來新問題的風(fēng)險(xiǎn),因?yàn)樵陧?xiàng)目末端是不可能投入過多的成本來進(jìn)行那怕接近全面覆蓋的測試的。
也正因?yàn)槿绱?#xff0c;我們是無法決定一個(gè)軟件產(chǎn)品質(zhì)量的好壞的,只有PM設(shè)計(jì)出產(chǎn)品需求,RD編碼完成,我們才能夠通過我們的工作,促進(jìn)PM、RD改進(jìn)他們的產(chǎn)品、系統(tǒng),從而達(dá)到產(chǎn)品、系統(tǒng)的高質(zhì)量。
所以,我們才要參與需求評審和設(shè)計(jì)評審,大家一起努力,各個(gè)階段由專業(yè)化的人員來保證階段的質(zhì)量,將問題盡量在前期發(fā)現(xiàn)。
測試人員只能根據(jù)前期分析的結(jié)果,設(shè)計(jì)出測試用例,來驗(yàn)證軟件產(chǎn)品在事先設(shè)計(jì)或后續(xù)補(bǔ)充的測試用例上不存在問題。但是“測試人員只是驗(yàn)證質(zhì)量”決不是指我們可以不為產(chǎn)品質(zhì)量負(fù)責(zé)。因?yàn)榇蠹?#xff08;PM、RD、QA、OP等)工作的最終目標(biāo)是產(chǎn)品質(zhì)量保證,這個(gè)目標(biāo)是大家共同的目標(biāo),所以每個(gè)人都必須為這個(gè)目標(biāo)負(fù)責(zé)。
只是由于咱們處于軟件生命周期的最后一個(gè)環(huán)節(jié),所以目前看起來產(chǎn)品質(zhì)量都是由我們來負(fù)責(zé)和把握的,實(shí)際上,如果最終發(fā)布的軟件產(chǎn)品出現(xiàn)了問題,那么無論如何我們肯定是有責(zé)任的。
4)測試的內(nèi)容一定是確定的
軟件測試只能驗(yàn)證質(zhì)量,那么所要驗(yàn)證的內(nèi)容必然是確定的,或者說是概率確定的,否則也就無從驗(yàn)證了。因此,模糊不確定的需求我們無法驗(yàn)證,輸出結(jié)果沒有任何規(guī)律的程序設(shè)計(jì)我們也無法驗(yàn)證,這就是軟件產(chǎn)品的可測性判斷。也因此,我們進(jìn)行需求評審和設(shè)計(jì)評審時(shí)是一定要保證這個(gè)基本點(diǎn)的。
5)測試的目標(biāo)不是沒有bug
綜上所述,進(jìn)行軟件測試的目標(biāo)不是通過測試使得軟件產(chǎn)品不存在bug(這是不可能達(dá)成的),而是我們根據(jù)確定的需求、確定的設(shè)計(jì)和確定的測試用例驗(yàn)證出的結(jié)果不存在bug。
同樣的,測試人員的目標(biāo)也不是在測試執(zhí)行過程中去找bug,而是運(yùn)用測試思維,使用一定的測試方法,盡可能早地在需求階段、設(shè)計(jì)階段將所有的bug找出來,真正測試執(zhí)行階段只是驗(yàn)證不存在用例所描述的那樣的bug,而不是通過用例去發(fā)現(xiàn)bug。
03 測試人員的工作方法
通過前文的分析,我們可以總結(jié)出測試人員的工作方法是:
首先,對需求進(jìn)行全面深入地分析,接著去分析評審程序設(shè)計(jì),假定每個(gè)需求的功能點(diǎn)開發(fā)人員的實(shí)現(xiàn)都是存在問題的;
同時(shí),也假定每一個(gè)程序設(shè)計(jì)的編碼實(shí)現(xiàn)(無論是方式還是代碼寫作)都是存在問題的,
然后,根據(jù)這些假定設(shè)計(jì)測試用例,最后執(zhí)行這些測試用例,驗(yàn)證程序不存在那些問題。
從中不難看出,我們同開發(fā)人員同時(shí)由需求出發(fā),開發(fā)人員產(chǎn)生詳細(xì)設(shè)計(jì)和代碼,我們產(chǎn)生方案和測試用例,然后開發(fā)人員提交被測程序,由測試人員同時(shí)運(yùn)行被測程序和測試用例,來動(dòng)態(tài)驗(yàn)證程序質(zhì)量。
所以,測試方案和測試用例設(shè)計(jì)的過程等價(jià)于開發(fā)人員進(jìn)行詳細(xì)設(shè)計(jì)和代碼開發(fā)的過程,兩相對比可以看出,測試人員最重要也是最核心的工作就是測試設(shè)計(jì)。
因此,測試人員的工作可以重點(diǎn)描述成:是一個(gè)運(yùn)用測試的思維和各種測試?yán)碚摷胺椒?#xff0c;將所測試的軟件產(chǎn)品的每一個(gè)功能都改變成一組特定的輸入和一組特定的輸出一一確定對應(yīng)的形式,形成測試用例,然后待開發(fā)人員提交測試后,在測試環(huán)境部署被測程序,根據(jù)測試用例進(jìn)行主動(dòng)測試的過程。
感謝每一個(gè)認(rèn)真閱讀我文章的人!!!
作為一位過來人也是希望大家少走一些彎路,如果你不想再體驗(yàn)一次學(xué)習(xí)時(shí)找不到資料,沒人解答問題,堅(jiān)持幾天便放棄的感受的話,在這里我給大家分享一些自動(dòng)化測試的學(xué)習(xí)資源,希望能給你前進(jìn)的路上帶來幫助。
軟件測試面試文檔
我們學(xué)習(xí)必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠最新的面試資料,并且有字節(jié)大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。
?
? ? ? ? ? 視頻文檔獲取方式:
這份文檔和視頻資料,對于想從事【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!以上均可以分享,點(diǎn)下方小卡片即可自行領(lǐng)取。