上一篇中我們?cè)敿?xì)講述了為什么測(cè)試是一個(gè)技術(shù)崗位,測(cè)試技術(shù)的最高崗位——測(cè)試架構(gòu)師的工作角色、分工以及相關(guān)主要的工作內(nèi)容。想要成為一名合格的測(cè)試工程師并不是一件容易的事情,但是想要?jiǎng)澦娜松鋵?shí)也不難。但是想必來(lái)到這里的同學(xué)一定是不甘于劃水的人生,那么我們繼續(xù)往下看:
軟件測(cè)試的人生從測(cè)試用例開始
說(shuō)到軟件測(cè)試,那么我們不得不從測(cè)試的基本功測(cè)試用例的設(shè)計(jì)開始。那么首先我們應(yīng)該知道測(cè)試用例是什么,這里我們引用 IEEE Standard 610 (1990) 的測(cè)試用例的定義開始:
A set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exercise a particular program path or to verify compliance with a specific requirement.
(IEEE Std 829-1983) Documentation specifying inputs, predicted results, and a set of execution conditions for a test item.為特定目標(biāo)開發(fā)的一組測(cè)試輸入,執(zhí)行條件和預(yù)期結(jié)果,例如執(zhí)行特定程序路徑或驗(yàn)證是否符合特定要求。
(IEEE標(biāo)準(zhǔn)829-1983)指定測(cè)試項(xiàng)目的輸入,預(yù)測(cè)結(jié)果和一組執(zhí)行條件的文檔。
軟件測(cè)試用例的定義描述得非常清楚,測(cè)試用例就是一組有測(cè)試輸入、執(zhí)行條件和預(yù)期結(jié)果的集合。那么如何設(shè)計(jì)這樣的一個(gè)測(cè)試用例呢?
我相信你從任何一個(gè)軟件測(cè)試的大學(xué)教材里面都能看到,例如邊界值法、等價(jià)類法、因果圖法、場(chǎng)景法等待。只要一提到等價(jià)類方法,我相信很多小伙伴都會(huì)想起書本上的三個(gè)整型變量組成三角形的例子。這里我們不會(huì)和你一起來(lái)學(xué)習(xí)這些基本的方法,講這些內(nèi)容的書、文章等太多了。如果你對(duì)這些內(nèi)容不熟悉,那么只能說(shuō)你欠下的技術(shù)棧太多了,需要你自己慢慢還債。
在這本專欄中我想說(shuō)一下所有的書、文章里面都沒(méi)有寫的,那就是這些科學(xué)的方法也不是用來(lái)解決所有測(cè)試用例設(shè)計(jì)問(wèn)題的方法,就如同我們學(xué)習(xí)數(shù)學(xué)的時(shí)候,如果一道題目中有兩個(gè)未知數(shù)那么我們可以通過(guò)二元方程解決,如果有一個(gè)未知數(shù),那么我們就要用一元方程來(lái)解決一樣。
等價(jià)類設(shè)計(jì)測(cè)試用例比較適合解決有很多條件組合的輸入方面的測(cè)試用例的設(shè)計(jì),場(chǎng)景法適合對(duì)批量任務(wù)、定時(shí)任務(wù)等業(yè)務(wù)邏輯進(jìn)行測(cè)試用例設(shè)計(jì),邊界值適合于一個(gè)輸入框的測(cè)試用例設(shè)計(jì),同時(shí)邊界值還可以和正交試驗(yàn)方法進(jìn)行組合使用,因果圖方法比較適合有相互約束的功能的測(cè)試用例設(shè)計(jì)。
無(wú)論你是一個(gè)測(cè)試經(jīng)理還是一個(gè)測(cè)試工程師,甚至你是一個(gè)測(cè)試開發(fā)工程師,你也需要知道這些科學(xué)的方法,這些科學(xué)的方式是軟件測(cè)試中輸入項(xiàng)的有效的設(shè)計(jì)方法,在工作中使用這些科學(xué)的方法設(shè)計(jì)測(cè)試用例,可以使你的測(cè)試工作更加得可靠和可信。
選擇技術(shù)還是選擇業(yè)務(wù)
伴隨著工作年限的提供,所有人都在面向于業(yè)務(wù)或者技術(shù)的一個(gè)選擇。
測(cè)試工程師
這上面是完全不同的兩條路,一個(gè)是走純業(yè)務(wù)路線,即測(cè)試工程師。測(cè)試工程師對(duì)自己負(fù)責(zé)業(yè)務(wù)很了解,對(duì)所有細(xì)枝末節(jié)的流程都很清楚。在一個(gè)團(tuán)隊(duì)中,產(chǎn)品經(jīng)理對(duì)每次新 feature 很了解,因?yàn)槭撬O(shè)計(jì)的,他有可能也對(duì)一些和這些新設(shè)計(jì)的 feature 相關(guān)聯(lián)的一些業(yè)務(wù)邏輯也很清楚,但是他對(duì)上上一次乃至更久之前的迭代的 feature 有可能并不了解。
開發(fā)工程師對(duì)本次開發(fā)的功能很熟悉,并且對(duì)和本次迭代的feature有交集的一些內(nèi)容了解,但是對(duì)歷史版本的邏輯并不清楚。這里面唯獨(dú)業(yè)務(wù)測(cè)試工程師對(duì)某一個(gè)被測(cè)試系統(tǒng)所有的 feature 都很了解,這樣他才能更好地評(píng)估一個(gè)系統(tǒng)的質(zhì)量。隨著業(yè)務(wù)測(cè)試工程師的努力,慢慢地會(huì)變成測(cè)試負(fù)責(zé)人或者一個(gè)對(duì)應(yīng)業(yè)務(wù)領(lǐng)域的專家。
測(cè)試開發(fā)工程師
如果要選擇測(cè)試開發(fā)這條路,那么你會(huì)走上一個(gè)半測(cè)試、半開發(fā)的路,在這條職業(yè)生涯的路上,你會(huì)不斷地coding,不斷重新定義測(cè)試。從自動(dòng)化腳本的撰寫到測(cè)試框架的設(shè)計(jì)、開發(fā)和維護(hù),從測(cè)試執(zhí)行到測(cè)試平臺(tái)的研發(fā)和搭建,然后慢慢走向高級(jí)測(cè)試開發(fā)工程師的道路,推進(jìn)項(xiàng)目級(jí)別的持續(xù)集成、持續(xù)交付、持續(xù)部署的進(jìn)程,推進(jìn)工程效率的不斷提高。最后會(huì)走上測(cè)試架構(gòu)師的角色,這個(gè)時(shí)候你有可能更加貼合實(shí)際,更加的底層。在某一項(xiàng)技術(shù)的細(xì)節(jié)上和開發(fā)架構(gòu)師的知識(shí)庫(kù)和技能庫(kù)相差無(wú)幾,但是又多出了很多DevOps相關(guān)的內(nèi)容知識(shí)體系,是真?zhèn)€團(tuán)隊(duì)的自動(dòng)化程度的推進(jìn)者,或者發(fā)展成一個(gè)測(cè)試開發(fā)負(fù)責(zé)人,管理team內(nèi)部的交付周期,推動(dòng)過(guò)程化測(cè)試進(jìn)程。
該選擇那一條路?
隨著測(cè)試自動(dòng)化的發(fā)展,測(cè)試開發(fā)工程師和測(cè)試工程師最終變成一個(gè)矛盾體,測(cè)試開發(fā)工程師在推動(dòng)團(tuán)隊(duì)內(nèi)的自動(dòng)化程度,通過(guò)不斷地開發(fā)、引進(jìn)和探索,釋放大量的業(yè)務(wù)測(cè)試的手工測(cè)試工作量。業(yè)務(wù)測(cè)試工程師的很多工作越來(lái)越多的交由機(jī)器來(lái)完成,業(yè)務(wù)測(cè)試工程師會(huì)逐漸的變成整個(gè)測(cè)試進(jìn)度、測(cè)試進(jìn)程的決策者,輔助測(cè)試工具鏈最終完成測(cè)試,并評(píng)審最終的測(cè)試結(jié)果。
但是如今市場(chǎng)已經(jīng)越來(lái)越多地開始意識(shí)到了自動(dòng)化可以給團(tuán)隊(duì)交付效率帶來(lái)的紅利,因此現(xiàn)在的一個(gè)純業(yè)務(wù)測(cè)試工程師的工作機(jī)會(huì)越來(lái)越少了,因此我還是建議很多人選擇第二條路,無(wú)論你現(xiàn)在是中級(jí)業(yè)務(wù)測(cè)試工程師還是高級(jí)業(yè)務(wù)測(cè)試工程師,都要嘗試著去學(xué)習(xí)測(cè)試開發(fā)的技術(shù),給自己充電。
測(cè)試的技術(shù)棧
在掌握測(cè)試?yán)碚摶A(chǔ)之上你還需要知道如下的知識(shí)內(nèi)容:
- HTTP協(xié)議等一些相關(guān)的通信協(xié)議,掌握各種各樣的協(xié)議截獲方法;
- 開發(fā)的專業(yè)術(shù)語(yǔ):序列化、MVC、NIO等內(nèi)容;
- 自動(dòng)化測(cè)試框架(這里面包含了WebUI、AppUI和API相關(guān)的自動(dòng)化測(cè)試框架);
- 性能測(cè)試工具;
- Linux操作系統(tǒng)相關(guān)操作方法;
- 數(shù)據(jù)庫(kù)的一些查詢方法語(yǔ)句;
- 各種消息、協(xié)議的模擬手段;
- 理解持續(xù)集成、持續(xù)交付、持續(xù)集成和DevOps;
- 了解敏捷,懂得精益,會(huì)用看板;
- 懂得容器化以及容器編排;
- 會(huì)一種coding的技術(shù)(有基礎(chǔ)的你會(huì)什么就深入學(xué)習(xí)一下對(duì)應(yīng)的,要是都沒(méi)有建議學(xué)習(xí)python)。
上面都是很多星星點(diǎn)點(diǎn)的一些知識(shí)點(diǎn),最后要通過(guò) DevOps 類的平臺(tái)可以流程化你的技術(shù)體系,達(dá)到一種可以通過(guò)端到端交付效果的過(guò)程。
總結(jié)
今天我們從軟件測(cè)試工程師基本功測(cè)試用例設(shè)計(jì)開始,討論了測(cè)試職業(yè)生涯的兩條路,但是就與當(dāng)今招聘市場(chǎng)的需求,建議大家都多少走到第二條路上。最后介紹了要走上第二條路需要逐漸學(xué)習(xí)的一些內(nèi)容,以及對(duì)大家的一些建議。