序言
很多人第一印象會(huì)覺得做測(cè)試比做開發(fā)簡(jiǎn)單很多,但是我想說沾谓,在這個(gè)世界上茬故,你想把任何一件事做好、做到極致都沒那么容易盟榴,都需要付出比別人更多的努力。不管是一萬(wàn)小時(shí)定律還是厚積薄發(fā)婴噩,當(dāng)你把知識(shí)積累到一定程度的時(shí)候就會(huì)發(fā)現(xiàn)擎场,原來(lái)軟件測(cè)試的世界這么有意思。
面對(duì)勢(shì)不可擋的 ABC(AI + Big Data + Cloud)技術(shù)浪潮几莽,無(wú)論是從被測(cè)對(duì)象本身的復(fù)雜性迅办、多樣性和規(guī)模性來(lái)講,還是從測(cè)試技術(shù)以及測(cè)試基礎(chǔ)架構(gòu)從無(wú)到有的發(fā)展來(lái)講章蚣,都需要測(cè)試工程師的知識(shí)面站欺、測(cè)試設(shè)計(jì)能力、測(cè)試開發(fā)能力和測(cè)試平臺(tái)化抽象能力有質(zhì)的提升。
軟件測(cè)試的進(jìn)化過程
一镊绪、自動(dòng)化測(cè)試在軟件質(zhì)量工程中的地位發(fā)生了質(zhì)的變化匀伏,從原本的“以自動(dòng)化測(cè)試為輔”變成了“以自動(dòng)化測(cè)試為主”。
所以蝴韭,不僅需要從業(yè)務(wù)本身出發(fā)來(lái)對(duì)軟件進(jìn)行手工測(cè)試驗(yàn)證够颠,還需要掌握完整的自動(dòng)化測(cè)試開發(fā)技術(shù)來(lái)設(shè)計(jì)自動(dòng)化測(cè)試用例。
二榄鉴、傳統(tǒng)軟件企業(yè)的產(chǎn)品發(fā)布通常以“月”為單位履磨,因此,測(cè)試執(zhí)行總時(shí)間不會(huì)成為關(guān)鍵問題庆尘。但是剃诅,對(duì)于互聯(lián)網(wǎng)企業(yè),尤其是大型電商網(wǎng)站驶忌,產(chǎn)品上線周期通常都是以“天”甚至是以“小時(shí)”為單位矛辕,留給測(cè)試的時(shí)間非常有限,這也就對(duì)測(cè)試執(zhí)行總時(shí)間提出了極大的挑戰(zhàn)付魔。為了解決這個(gè)難題聊品,你需要一套完善的高并發(fā)測(cè)試執(zhí)行基礎(chǔ)架構(gòu)的支持。
所以几苍,作為測(cè)試工程師翻屈,就必須掌握設(shè)計(jì)開發(fā)測(cè)試基礎(chǔ)架構(gòu)的關(guān)鍵技術(shù)。
三妻坝、隨著自動(dòng)化測(cè)試的規(guī)纳炜簦化,測(cè)試數(shù)據(jù)準(zhǔn)備的各種問題被逐漸暴露并不斷放大刽宪,成為影響自動(dòng)化測(cè)試效率以及穩(wěn)定性的“攔路虎”厘贼。
早期的傳統(tǒng)測(cè)試數(shù)據(jù)準(zhǔn)備方法,無(wú)論是從測(cè)試數(shù)據(jù)準(zhǔn)備的時(shí)間成本纠屋,還是從測(cè)試數(shù)據(jù)的穩(wěn)定性和測(cè)試數(shù)據(jù)創(chuàng)建的便利性上看涂臣,都已經(jīng)很難適應(yīng)大規(guī)模自動(dòng)化測(cè)試的要求盾计。
所以售担,必須系統(tǒng)性地思考如何才能將測(cè)試數(shù)據(jù)的準(zhǔn)備工具化,服務(wù)化署辉,最終實(shí)現(xiàn)平臺(tái)化族铆。
從“小工”到“專家”分三步走
第一步,成為互聯(lián)網(wǎng)時(shí)代合格的測(cè)試工程師哭尝。
如果你是入行不滿 3 年的測(cè)試工程師哥攘,一定對(duì)此有迫切需求。此時(shí),你必須具有快速學(xué)習(xí)的能力逝淹,能迅速掌握被測(cè)軟件的業(yè)務(wù)功能與內(nèi)部架構(gòu)耕姊,并在此基礎(chǔ)上運(yùn)用各種測(cè)試方法,盡可能多地發(fā)現(xiàn)潛在缺陷栅葡,并能夠在已知缺陷的基礎(chǔ)上進(jìn)一步發(fā)現(xiàn)相關(guān)的連帶缺陷茉兰。
從知識(shí)體系上看,你需要有比開發(fā)人員更全面的計(jì)算機(jī)基礎(chǔ)知識(shí)欣簇,還需要了解互聯(lián)網(wǎng)的基礎(chǔ)架構(gòu)规脸、安全攻擊、軟件性能熊咽、用戶體驗(yàn)和常見缺陷等知識(shí)莫鸭。從測(cè)試技術(shù)上看,你需要能夠使用常見的測(cè)試框架或者工具横殴,需要具有一定的自動(dòng)化測(cè)試腳本的開發(fā)能力被因,這可以把你從大量重復(fù)的工作中解放出來(lái),然后你才能有時(shí)間去做更有意思的工作衫仑。
第二步氏身,成為互聯(lián)網(wǎng)時(shí)代優(yōu)秀的測(cè)試工程師。
如果你想從“合格”變?yōu)椤皟?yōu)秀”惑畴,那必須先認(rèn)識(shí)到兩者的差距在哪里蛋欣。
首先,合格的測(cè)試工程師關(guān)注的是純粹的測(cè)試如贷,而優(yōu)秀的測(cè)試工程師關(guān)注更多的是軟件整體的質(zhì)量陷虎,需要根據(jù)業(yè)務(wù)風(fēng)險(xiǎn)以及影響來(lái)制定測(cè)試策略,有效控制測(cè)試的時(shí)間和成本杠袱,并且能夠?qū)y(cè)試框架以及工具做出適合項(xiàng)目需求的選型尚猿。
以新房裝修為例,合格的測(cè)試工程師就是各個(gè)工序的裝修師傅楣富,他們只管按照設(shè)計(jì)要求做好自己的工序凿掂,而優(yōu)秀的測(cè)試工程師更像是個(gè)包工頭,他們關(guān)心的是整體交付的質(zhì)量纹蝴。
其次庄萎,優(yōu)秀的測(cè)試工程師不僅可以嫻熟地運(yùn)用各類測(cè)試工具,還非常清楚這些測(cè)試工具背后的實(shí)現(xiàn)原理塘安,以及多個(gè)同類測(cè)試工具各自的優(yōu)缺點(diǎn)和適用場(chǎng)景糠涛。
在遇到問題時(shí),你還需要能夠通過二次開發(fā)解決工具和框架層面的問題兼犯,對(duì)于沒有合適可用工具的場(chǎng)景忍捡,可以自行設(shè)計(jì)開發(fā)一些小工具來(lái)更好地展開測(cè)試工作集漾。
當(dāng)然這個(gè)階段,你很有可能會(huì)接觸到一些代碼級(jí)的測(cè)試砸脊,這就要求你具有一定的開發(fā)背景具篇,并能夠很好地理解代碼級(jí)的測(cè)試技術(shù)。
最后凌埂,隨著自動(dòng)化測(cè)試用例的不斷增長(zhǎng)栽连,自動(dòng)化測(cè)試的關(guān)注點(diǎn)也從原本的“如何把手工測(cè)試步驟用自動(dòng)化腳本實(shí)現(xiàn)”變成了“如何構(gòu)建低維護(hù)成本,可以靈活組裝的自動(dòng)化腳本”侨舆,這就要求你理解自動(dòng)化腳本的分層設(shè)計(jì)秒紧、頁(yè)面對(duì)象模型以及業(yè)務(wù)流程模型,并且能夠把這些設(shè)計(jì)應(yīng)用到你的測(cè)試框架里挨下。
第三步熔恢,成為互聯(lián)網(wǎng)時(shí)代的測(cè)試架構(gòu)師。
當(dāng)你經(jīng)歷了各種類型的測(cè)試項(xiàng)目臭笆,就會(huì)發(fā)現(xiàn)這些項(xiàng)目本身雖然差異巨大叙淌,但是有很多東西是相通的。
比如愁铺,面對(duì)大量測(cè)試用例的執(zhí)行鹰霍,無(wú)論是 GUI 還是 API,都需要一套高效的能夠支持高并發(fā)的測(cè)試執(zhí)行基礎(chǔ)架構(gòu)茵乱;再比如茂洒,面對(duì)測(cè)試過程中的大量差異性數(shù)據(jù)要求,需要統(tǒng)一的測(cè)試數(shù)據(jù)準(zhǔn)備平臺(tái)瓶竭;再比如督勺,為了可以更方便地和持續(xù)集成與發(fā)布系統(tǒng)(CI/CD)以解耦的形式做集成,需要統(tǒng)一發(fā)起測(cè)試執(zhí)行的接口斤贰。
這樣的例子還有很多智哀,如果你已經(jīng)能夠站在這樣的高度看待軟件測(cè)試,那么恭喜你荧恍,你已經(jīng)具備了測(cè)試架構(gòu)師的視野瓷叫。當(dāng)然,你還必須對(duì)一些前沿的測(cè)試方法和技術(shù)有自己的理解送巡,并能夠在恰當(dāng)?shù)臅r(shí)候摹菠、因地制宜地把它們應(yīng)用到實(shí)際項(xiàng)目中。