測(cè)試的底層邏輯
作者:京東零售 張強(qiáng)
寫(xiě)這篇文章,是希望把我的一些我認(rèn)為是非常有價(jià)值的經(jīng)驗(yàn)總結(jié)出來(lái),能夠幫助剛做測(cè)試不久的新同事,或者是測(cè)試經(jīng)驗(yàn)豐富的老同事以共享。希望我們可愛(ài)的新同事,準(zhǔn)備要在測(cè)試領(lǐng)域耕耘的伙伴,能夠通過(guò)我的文章了解到測(cè)試的底層邏輯,也就是我們測(cè)試工作中可能看不到隱藏較深的點(diǎn),而不只是日常所見(jiàn)的寫(xiě)用例、提bug、開(kāi)發(fā)自動(dòng)化、做平臺(tái);俗話(huà)說(shuō)外行看熱鬧,內(nèi)行看門(mén)道。

我認(rèn)為測(cè)試人員不應(yīng)該成為PRD的搬運(yùn)工,高級(jí)測(cè)試工程師也不應(yīng)該只是測(cè)試工具得開(kāi)發(fā)者;
測(cè)試人員,最基本的測(cè)試基礎(chǔ)理論一定要掌握,當(dāng)然研發(fā)編碼技術(shù)也必不可少;如果這兩樣缺少一樣,都無(wú)法成為一個(gè)優(yōu)秀的測(cè)試人員;之前有很多測(cè)試人員都是不喜歡寫(xiě)代碼,然后做了測(cè)試;但在未來(lái)或者現(xiàn)在,一個(gè)不懂代碼的測(cè)試人員,很難成為一個(gè)優(yōu)秀的測(cè)試人員;但只懂代碼,不了解測(cè)試?yán)碚摶A(chǔ)的人(不懂得測(cè)試分析、用例設(shè)計(jì)、測(cè)試策略的人,或者即使了解一些 ,但實(shí)際工作中不怎么使用的人),一定也不是一個(gè)合格的測(cè)試人員。
下面帶大家了解一些測(cè)試的底層邏輯,測(cè)試的門(mén)道。
一、優(yōu)秀測(cè)試人員應(yīng)該具備的核心能力
根據(jù)Testerhome《2021年度測(cè)試行業(yè)問(wèn)卷調(diào)查報(bào)告》-【優(yōu)秀測(cè)試人員應(yīng)具備的技術(shù)/能力】分析,
1、“編程/腳本/自動(dòng)化、溝通表達(dá)、測(cè)試基礎(chǔ)理論” 被認(rèn)為是優(yōu)秀測(cè)試人員的三大核心能力,繼續(xù)領(lǐng)先其他項(xiàng);
2、數(shù)據(jù)庫(kù)、性能測(cè)試、安全測(cè)試、大數(shù)據(jù)算法等技術(shù)要求,從2020年開(kāi)始大幅增長(zhǎng);
三大核心能力基本是大家公認(rèn)的,也是穩(wěn)定不變的;但新的技術(shù)要求近幾年開(kāi)始都有了大量需求;從分析數(shù)據(jù)可以看到,市場(chǎng)對(duì)測(cè)試人員的要求會(huì)隨著新技術(shù)的出現(xiàn)而不斷變化;但三大核心能力是測(cè)試人員的必修課,變化不會(huì)太大,會(huì)一直占據(jù)核心位置。
自從10幾年前的QTP開(kāi)始,自動(dòng)化測(cè)試就是測(cè)試人員追求的目標(biāo);直至今日,各種自動(dòng)化技術(shù)、框架已經(jīng)琳瑯滿(mǎn)目;市場(chǎng)對(duì)測(cè)試人員的要求也越來(lái)越高,測(cè)試人員不僅要會(huì)寫(xiě)自動(dòng)化用例,還需要具備開(kāi)發(fā)維護(hù)自動(dòng)化框架平臺(tái)的能力;純黑盒的測(cè)試人員要么已經(jīng)完成了能力升級(jí),要么在升級(jí)的路上;完全依賴(lài)黑盒測(cè)試完成工作的已經(jīng)越來(lái)越少,如果不會(huì)編寫(xiě)自動(dòng)化用例或不了解編程語(yǔ)言,估計(jì)找工作簡(jiǎn)歷都很難通過(guò)。
但往往物極必反,測(cè)試人員的代碼能力越來(lái)越強(qiáng),測(cè)試基礎(chǔ)能力卻被忽視,測(cè)試領(lǐng)域的專(zhuān)業(yè)能力逐步被淡化;正如逆水行周,不進(jìn)則退;三大核心能力應(yīng)該是齊頭并進(jìn),不應(yīng)該顧此失彼。
這些年參與了部門(mén)很多的招聘面試,我的感受就是很多測(cè)試人員雖然工作多年,但對(duì)測(cè)試用例的設(shè)計(jì)方法、策略等掌握并不好;至少有60%的人在用例設(shè)計(jì)中不會(huì)用什么用例設(shè)計(jì)方法,也不會(huì)思考怎么進(jìn)行測(cè)試分析和設(shè)計(jì),他們大部分只是功能測(cè)試的執(zhí)行者,測(cè)試設(shè)計(jì)方面思考很少,測(cè)試計(jì)劃更是很少有人寫(xiě),測(cè)試用例也只是PRD的拆分;總之,測(cè)試人員一不小心就會(huì)成為PRD的搬運(yùn)工。
作為一個(gè)測(cè)試?yán)先?,還是希望測(cè)試行業(yè)能夠健康發(fā)展,在新技能提升的情況下,測(cè)試的專(zhuān)業(yè)性也能與時(shí)俱進(jìn),畢竟質(zhì)量保障是測(cè)試人員的根本。
二、黑盒測(cè)試的底層邏輯
什么是黑盒測(cè)試?
它是把程序看作一個(gè)黑盒子,在不考慮程序內(nèi)部結(jié)構(gòu)的情況下,檢查程序功能是否按照PRD的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù),產(chǎn)生正確的輸出。
這,其實(shí)就是黑盒測(cè)試的定義,也是黑盒測(cè)試的底層邏輯;一般人不會(huì)重視定義,但往往就是定義會(huì)告訴你真理。
工作中有很多人在習(xí)慣了一種類(lèi)型的系統(tǒng)測(cè)試,然后換一個(gè)新的業(yè)務(wù)類(lèi)型,忽然就不知如何下手了;也許是新的總要有一個(gè)適應(yīng)的時(shí)間;其實(shí)萬(wàn)變不離其宗,只要掌握了黑盒測(cè)試的底層邏輯,就能夠讓你很快上手不再需要適應(yīng)調(diào)整;
我們大部分做的都是黑盒測(cè)試,所以無(wú)論什么類(lèi)型的系統(tǒng),我們的測(cè)試方案都是“?檢查程序功能是否按照PRD的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù),產(chǎn)生正確的輸出?!?/strong>?。
我們的測(cè)試依據(jù)是PRD,首先必須對(duì)PRD了如執(zhí)掌,然后分析他的輸入有哪些,輸出有哪些;這些都覆蓋到了,你基本就可以做到80分了,也就是你拿下這個(gè)項(xiàng)目已不成問(wèn)題。
最后,我還是想再啰嗦強(qiáng)調(diào)一下,?就怕我講的大家還是沒(méi)有看懂,因?yàn)樯厦嬷v的大家都懂,第一天了解測(cè)試,就知道什么時(shí)候黑盒測(cè)試,什么輸入輸出了;但是往往真理就藏在平凡之間,記住他的定義?。?!
當(dāng)你遇到項(xiàng)目不知如何下手測(cè)試時(shí),把定義拿出來(lái)認(rèn)真讀三遍,一定會(huì)找到答案?。?!
強(qiáng)調(diào):?實(shí)際當(dāng)中純黑盒的其實(shí)并不多,除了了解輸入、輸出,中間的處理邏輯也一定要清楚,這樣對(duì)測(cè)試更有幫助;另外更重要的就是:必須熟讀PRD,必須對(duì)PRD里的內(nèi)容分析透徹,不放過(guò)任何一段文字,一個(gè)詞。其實(shí)PRD里和設(shè)計(jì)文檔里也會(huì)有很多的漏洞等你挖掘。

三、黑盒測(cè)試底層邏輯詳解:【輸入輸出測(cè)試模型】
【輸入】:?這里的輸入,并不是簡(jiǎn)單的界面輸入框才算是輸入;任何只要能夠觸發(fā)系統(tǒng)運(yùn)行的都是輸入。按照代碼架構(gòu)分層,輸入也可以做到如下分類(lèi):
1、界面操作的輸入:
正向操作:
1)單一操作:
?正常的操作:輸入框、按鈕、單選復(fù)選框、按鈕、下拉框等的規(guī)定操作異常的操作:輸入框的異常值、超長(zhǎng)輸入等、按鈕的多次點(diǎn)擊、快速連續(xù)點(diǎn)擊(很容易就會(huì)發(fā)現(xiàn)數(shù)據(jù)重復(fù)提交,或者系統(tǒng)反應(yīng)緩慢等各種問(wèn)題,說(shuō)不定系統(tǒng)就此而奔潰)
2)復(fù)雜操作:
?組合操作:一般系統(tǒng)的功能都是各種操作的組合;另外一種跟業(yè)務(wù)場(chǎng)景相關(guān),也就是各種業(yè)務(wù)場(chǎng)景同時(shí)組合進(jìn)行操作。
?并行操作:多人對(duì)同一功能點(diǎn)的并發(fā)操作;或者多人對(duì)同一個(gè)數(shù)據(jù)進(jìn)行的操作,比如兩個(gè)人同時(shí)對(duì)一條單價(jià)進(jìn)行修改、刪除等操作。
逆向操作:
3)逆向操作:
?回退操作:通過(guò)瀏覽器或APP進(jìn)行的回退操作取消操作:正常操作突然取消,例如用戶(hù)填寫(xiě)很多表格內(nèi)容,突然操作了取消,是否需要保存或提示呢?刪除操作:通過(guò)系統(tǒng)提供的功能對(duì)數(shù)據(jù)進(jìn)行刪除
下面的輸入是最容易被忽略的:
2、服務(wù)層的輸入:
?接口服務(wù):對(duì)外提供的接口,對(duì)于系統(tǒng)來(lái)說(shuō)也是很常見(jiàn)的一種輸入,這種輸入也是最容易出問(wèn)題的;
?文件上傳:有些系統(tǒng)功能是通過(guò)獲取ftp服務(wù)器上的excel、xml等文件來(lái)觸發(fā)系統(tǒng)運(yùn)行的,所以這時(shí)候的輸入就變成了文件。
?MQ消息:也是京東最常見(jiàn)的一種輸入形式,MQ里也可能會(huì)包含文件地址等,這種輸入就更加靈活了。
強(qiáng)調(diào):
?對(duì)于接口上游的輸入,無(wú)論何種形式,都要分析上游數(shù)據(jù)的每一個(gè)字段,了解上游各種輸入的可能。
?有些字段還必須從業(yè)務(wù)【源頭】了解這個(gè)字段的含義,可能的枚舉值,可能的結(jié)果等;
?另外由于歷史原因,源頭的數(shù)據(jù)就可能存在各種想像不到的數(shù)據(jù);
?對(duì)于輸入的分析非常重要,這時(shí)候你就可以使用【等價(jià)類(lèi)】方法進(jìn)行分析。
3、數(shù)據(jù)層的輸入:
?數(shù)據(jù)的變化:有很多后臺(tái)處理的任務(wù)就是監(jiān)控是否有新數(shù)據(jù)的插入或刪除等數(shù)據(jù)字段的變化:后臺(tái)處理任務(wù)監(jiān)控?cái)?shù)據(jù)狀態(tài)的變化,或組合字段的變化等緩存數(shù)據(jù)的變化:除了數(shù)據(jù)庫(kù)的變化,有的是緩存數(shù)據(jù)的變化時(shí)間的變化:定時(shí)任務(wù)除了數(shù)據(jù)是輸入,時(shí)間也是他的輸入。
【輸出】:輸出分為可見(jiàn)輸出和不可見(jiàn)輸出
看的見(jiàn)的輸出:?就是我們常見(jiàn)的系統(tǒng)操作反饋,用戶(hù)能直接看到的變化;比如彈框、提示、跳轉(zhuǎn)、數(shù)據(jù)的新增、修改、刪除后的變化,圖片、視頻等操作后的變化等等。
看不見(jiàn)的輸出:?看不見(jiàn)的輸出是最容易忽略也是最容易出問(wèn)題的;【看不見(jiàn)的輸出】包括:數(shù)據(jù)庫(kù)的變化、緩存的變化、系統(tǒng)文件的變化、發(fā)送給下游接口的數(shù)據(jù)等
【看的見(jiàn)的輸出】雖然能夠幫我們驗(yàn)證基本90%以上的功能,通過(guò)界面展示的數(shù)據(jù)也能驗(yàn)證我們新增或修改的數(shù)據(jù),是否新增成功了或正確的被修改了;但是我們看到的只是一部分;還有很多字段是沒(méi)有被展示的,有的可能只是給下游或其他系統(tǒng)使用的,也有可能是留給未來(lái)使用的;這些不可見(jiàn)的部分,經(jīng)常就會(huì)引起系統(tǒng)的異常,也是隱藏在系統(tǒng)中最大的坑;
所以測(cè)試,除了站在用戶(hù)的角度去測(cè)試系統(tǒng),還要站在設(shè)計(jì)者的角度去測(cè)試,更應(yīng)該站在整個(gè)產(chǎn)品的角度去思考。
四、測(cè)試分析與設(shè)計(jì)的底層邏輯
說(shuō)到測(cè)試分析與設(shè)計(jì),我認(rèn)為這個(gè)是測(cè)試人員最核心的能力;上面講到的黑盒測(cè)試、輸入輸出模型,只是針對(duì)功能測(cè)試的方法,雖然一般的系統(tǒng)測(cè)試中功能測(cè)試占到80%-90%左右,但并不是全部。而且也只是測(cè)試中的一個(gè)階段一個(gè)類(lèi)型,要想做好測(cè)試,測(cè)試分析和設(shè)計(jì)是必不可少的。
大家可以思考一個(gè)問(wèn)題:拿到一個(gè)項(xiàng)目,你如何來(lái)測(cè)試?如何保障質(zhì)量?
面試中很多人給我的答案是:分析需求,編寫(xiě)用例,然后執(zhí)行測(cè)試,發(fā)報(bào)告;這個(gè)只是測(cè)試的流程,只是告訴了我們測(cè)試的先后順序,但并不能指導(dǎo)一個(gè)測(cè)試人員如何去測(cè)試,如何去做測(cè)試分析,更無(wú)法保障系統(tǒng)的質(zhì)量。
拿到一個(gè)項(xiàng)目,你如何來(lái)測(cè)試?
可以借用5W2H方法來(lái)分析,其實(shí)作為測(cè)試架構(gòu)師,不需要5W也不需要3W,2W+1H 就夠了!
因?yàn)檫@2W+1H 是最重要的,也是最容易被經(jīng)驗(yàn)代替然后就忽略的;日常的測(cè)試工作由于產(chǎn)品的形態(tài)及系統(tǒng)的架構(gòu)基本固定,所以測(cè)試方案思路也基本固定,這樣就導(dǎo)致拿到類(lèi)似的項(xiàng)目就不再有思考,基本很快就按照經(jīng)驗(yàn)開(kāi)始干了;一旦遇到不同類(lèi)型的系統(tǒng),或者遇到新的業(yè)務(wù)就不知如何下手,這時(shí)候2W1H分析法就可以幫助我們解決這個(gè)問(wèn)題。

測(cè)試架構(gòu)師只需要思考三個(gè)問(wèn)題(2W+1H)?就夠了:
1、Why??為什么做這個(gè)項(xiàng)目?項(xiàng)目的背景是什么?——只有知道為什么,才知道用戶(hù)想要什么。
2、What??這個(gè)項(xiàng)目我們需要測(cè)什么?我們的測(cè)試范圍有哪些?——只有范圍明確,測(cè)試才不會(huì)遺漏。
3、How??這個(gè)項(xiàng)目我們?cè)趺礈y(cè)?我們應(yīng)該使用哪些測(cè)試策略、測(cè)試方法?——這里告訴我們測(cè)試應(yīng)當(dāng)有策略有方法
測(cè)試負(fù)責(zé)人(也可能是測(cè)試架構(gòu)師)還需確定的兩個(gè)問(wèn)題:
4、When? 項(xiàng)目期望的完成時(shí)間?
5、Who? 可以調(diào)用的資源有哪些?
項(xiàng)目經(jīng)理需要考慮的另外兩個(gè)問(wèn)題:(測(cè)試負(fù)責(zé)人也需要思考的2個(gè)問(wèn)題)
6、Where?是否需要集中封閉,是否需要研發(fā)測(cè)試坐到一起?
測(cè)試人員還可以思考需要在什么環(huán)境下測(cè)試?測(cè)試環(huán)境?預(yù)發(fā)環(huán)境?線(xiàn)上環(huán)境?windows環(huán)境?Linux環(huán)境?ios環(huán)境?Android?什么瀏覽器?什么版本等等
7、How Much? 這個(gè)項(xiàng)目成本是多少?需要多少人日?需要多少服務(wù)器資源?
測(cè)試分析和設(shè)計(jì)的底層邏輯就是如何回答好2W1H這三個(gè)問(wèn)題;Why和What可以指導(dǎo)我們進(jìn)行測(cè)試分析,了解項(xiàng)目的【背景】,確認(rèn)測(cè)試的【范圍】;How可以指導(dǎo)我們?nèi)ミM(jìn)行測(cè)試設(shè)計(jì),根據(jù)項(xiàng)目背景及測(cè)試范圍確定測(cè)試的【策略】。
不過(guò)目前講的還是方法論,具體的操作步驟還沒(méi)有講;由于這一部分內(nèi)容比較多,可以通過(guò)一篇文章具體來(lái)講;大家也可以自己去了解學(xué)習(xí)一下,就是HTSM啟發(fā)式測(cè)試策略模型,這個(gè)模型正好與2W+1H是相對(duì)應(yīng)的。
五、測(cè)試人員的內(nèi)功修煉
作為測(cè)試人員,“溝通表達(dá)等軟技能”被認(rèn)為是優(yōu)秀測(cè)試人員的三大核心能力一,根據(jù)上面的統(tǒng)計(jì)數(shù)據(jù),90%以上的人都是認(rèn)可的。下面把我之前的一些總結(jié)分享一下:
1、主動(dòng)溝通
在電商領(lǐng)域,特點(diǎn)就是快速和變化;有些需求或項(xiàng)目,經(jīng)常要求快速上線(xiàn),由于時(shí)間短,PRD里有些邏輯就可能會(huì)存在漏洞或者根本沒(méi)有考慮到,面對(duì)這樣的情況,我們測(cè)試該怎么辦呢?這時(shí)就需要溝通,與產(chǎn)品隨時(shí)溝通需求,與開(kāi)發(fā)隨時(shí)溝通設(shè)計(jì),與其他系統(tǒng)隨時(shí)溝通聯(lián)調(diào),沒(méi)有溝通,項(xiàng)目里的坑很容易就會(huì)被遺漏。溝通還必需得是主動(dòng)出擊,找產(chǎn)品、找研發(fā)、找其他條線(xiàn)的測(cè)試,把自己當(dāng)成老板,這個(gè)項(xiàng)目的質(zhì)量基本就有保障了;把自己當(dāng)成老板的員工,一定是最讓老板放心的員工。
2、要有自己的標(biāo)準(zhǔn)
系統(tǒng)測(cè)試最基本的依據(jù)就是需求規(guī)格說(shuō)明書(shū);作為測(cè)試人員,我們是最后一道保障;測(cè)試必須有自己的分析,不能輕易就跟著研發(fā)的思路走,因?yàn)樗嬖V你的已經(jīng)是經(jīng)過(guò)他們思考加工過(guò)的,與原始需求可能已經(jīng)存在了偏差;這也正是測(cè)試的價(jià)值所在。即使他們說(shuō)的99%都是對(duì)的,但是也只能作為我們分析的一個(gè)材料;我們必須自己通過(guò)需求去分析。
3、對(duì)一切都要有懷疑的態(tài)度
需求是測(cè)試的依據(jù),但是依據(jù)也有錯(cuò)的時(shí)候;所以對(duì)PRD也要有懷疑的態(tài)度。測(cè)試就是要懷疑一切;?每一個(gè)流程每一個(gè)細(xì)節(jié);我看需求的時(shí)候第一遍基本默認(rèn)他是對(duì)的,等對(duì)整體有了一定的理解,我就開(kāi)始懷疑,流程是否完整? 是否存在漏洞? 模塊功能是否能滿(mǎn)足用戶(hù)的要求? 非正常操作是否會(huì)出現(xiàn)問(wèn)題? 用戶(hù)是否會(huì)用?這個(gè)功能是否真的為客戶(hù)解決了問(wèn)題?等等,這些問(wèn)題可以通過(guò)我們的一些質(zhì)量標(biāo)準(zhǔn)、測(cè)試策略以及測(cè)試經(jīng)驗(yàn)去懷疑,去思考??傊?,測(cè)試每一個(gè)功能都要“三思”。
4、站在公司和用戶(hù)的角度思考
公司越大,部門(mén)越多,系統(tǒng)就會(huì)越復(fù)雜;相互依賴(lài)越多,出問(wèn)題的幾率也會(huì)越大;因?yàn)檫吔缍嗔?,溝通成本也就高了;需要溝通的點(diǎn)多了,只要有些細(xì)節(jié)沒(méi)有溝通到位,或者都沒(méi)有考慮到,或者都認(rèn)為是對(duì)方負(fù)責(zé),那坑就出現(xiàn)了;當(dāng)然這樣的坑大部分會(huì)在聯(lián)調(diào)測(cè)試階段發(fā)現(xiàn),但對(duì)于測(cè)試進(jìn)度影響非常大,經(jīng)常會(huì)造成反工、延期等風(fēng)險(xiǎn);
要想這些坑能夠在測(cè)試階段發(fā)現(xiàn),這時(shí)候就需要有一個(gè)主測(cè)試了;但我覺(jué)得主測(cè)試不應(yīng)該是一個(gè)人,所有測(cè)試人員都應(yīng)該是“主測(cè)試”;作為測(cè)試人員,軟件質(zhì)量的最后把關(guān)者,不能只看到自己負(fù)責(zé)的這一塊,不能局限于自己的部門(mén)、團(tuán)隊(duì),只要對(duì)整個(gè)系統(tǒng)有疑問(wèn),我們都有責(zé)任提出來(lái),去找人解決。測(cè)試不能只看局部,要看全局;要站在公司的位置和用戶(hù)的角度去思考,去測(cè)試。
上面主要是總結(jié)了我得一些經(jīng)驗(yàn),測(cè)試中的一些道,有不足之處或不夠全面的也希望大家多多補(bǔ)充;后續(xù)還會(huì)繼續(xù)分享我認(rèn)為很重要的 HTSM模型,以及我認(rèn)為非常重要的等價(jià)類(lèi)劃分,場(chǎng)景測(cè)試、基因測(cè)試、探索式測(cè)試的一些好的方法等。總之,我想把我的一些有價(jià)值的經(jīng)驗(yàn)都分享出來(lái)以共享。