“我們公司的測試好多都轉(zhuǎn)業(yè)務(wù)或開發(fā)了,還有的轉(zhuǎn)管理了叹阔,測試做不長久...”
“現(xiàn)在好多公司已經(jīng)不招測試人員了挠轴,感覺測試沒有什么前途...”
“ThoughtWorks技術(shù)雷達上都是開發(fā)相關(guān)的內(nèi)容,測試相關(guān)的內(nèi)容越來越少...”
軟件測試總是被看做沒有技術(shù)含量耳幢、沒有前途的工作岸晦,很多做軟件測試的朋友也比較迷茫,表示發(fā)展受限睛藻。在這個技術(shù)飛速發(fā)展的時代启上,各行各業(yè)都在實行數(shù)字化轉(zhuǎn)型,各種高新技術(shù)似乎離測試人員越來越遙遠...
那么店印,測試人員真的是前途渺茫嗎冈在?本文將根據(jù)ThoughtWorks最新發(fā)布的第20期技術(shù)雷達來分析當(dāng)前流行的技術(shù)給軟件測試人員帶來的影響是什么,有哪些機遇與挑戰(zhàn)吱窝。
技術(shù)雷達條目不完全總結(jié)
技術(shù)雷達上的內(nèi)容涵蓋有技術(shù)讥邻、平臺、工具和語言四個維度院峡,我觀察到其中跟測試人員關(guān)系比較緊密的主要有以下幾個方面:
1. 支持快速兴使、持續(xù)交付的基礎(chǔ)設(shè)施與DevOps實踐
質(zhì)量和速度是最關(guān)鍵需求,為了適應(yīng)各行各業(yè)對速度的要求照激,配套的支持快速发魄、持續(xù)交付的基礎(chǔ)設(shè)施與DevOps實踐是成功之必備。技術(shù)雷達上與之相關(guān)的條目有很多俩垃,比如:Terraform生態(tài)系統(tǒng)和四個關(guān)鍵指標(biāo)等励幼。
Terraform生態(tài)系統(tǒng)
Terraform是一種安全有效地構(gòu)建、更改和版本化基礎(chǔ)架構(gòu)的工具口柳,可以管理現(xiàn)有和流行的服務(wù)提供商以及定制的內(nèi)部解決方案苹粟,正在迅速成為通過聲明式定義來創(chuàng)建和管理云基礎(chǔ)設(shè)施的首選工具。本期雷達Terraform相關(guān)的內(nèi)容重點包括Terratest(用于測試基礎(chǔ)設(shè)施代碼)跃闹,以及GoCD的新提供商(可以使用Terraform配置GoCD)嵌削。
基礎(chǔ)設(shè)施不僅是Ops或者開發(fā)人員需要關(guān)注的領(lǐng)域毛好,作為測試人員,同樣需要加強這項知識的掌握:
了解了基礎(chǔ)設(shè)施知識苛秕,結(jié)合已有的測試sense肌访,測試人員可以和開發(fā)或Ops一起測試基礎(chǔ)設(shè)施;
了解基礎(chǔ)設(shè)施特點艇劫,可以指導(dǎo)測試的設(shè)計吼驶,在測試的時候更有針對性的關(guān)注比較脆弱的節(jié)點、環(huán)節(jié)店煞,規(guī)避風(fēng)險蟹演,增強系統(tǒng)的反脆弱性;
利用基礎(chǔ)設(shè)施知識顷蟀,可以指導(dǎo)測試環(huán)境的搭建和維護轨帜、自動化測試數(shù)據(jù)的準(zhǔn)備和管理等。
四個關(guān)鍵指標(biāo)
埃森哲發(fā)布的DevOps報告指出組織績效跟軟件交付性能關(guān)系緊密衩椒,而衡量組織績效的四個關(guān)鍵指標(biāo)分別是前置時間、部署頻率哮兰、平均修復(fù)時間(MTTR)和變化失敗率毛萌。本期技術(shù)雷達采納了這項技術(shù)。
作為測試人員喝滞,我們需要了解每個指標(biāo)的真正含義阁将,并且思考我們測試策略是否需要做某些調(diào)整來提供對應(yīng)的指標(biāo)值。比如說為了提高部署頻率右遭,可能不需要那么高的E2E自動化測試覆蓋率做盅,而是達到覆蓋效果和執(zhí)行效率最佳平衡的一個狀態(tài)即可。
2. 支持業(yè)務(wù)靈活擴展的微服務(wù)架構(gòu)
引入微服務(wù)令我們受益匪淺窘哈,使用微服務(wù)吹榴,團隊可以擴展那些獨立部署和維護的服務(wù)的交付,從而方便業(yè)務(wù)的靈活擴展滚婉。微服務(wù)架構(gòu)正在逐漸被越來越多的企業(yè)采用图筹。我們看到技術(shù)雷達上應(yīng)對微服務(wù)的相關(guān)條目有服務(wù)網(wǎng)格、混沌工程让腹、API測試框架Karate等远剩。
服務(wù)網(wǎng)格(Service Mesh)
服務(wù)網(wǎng)格是一種安全、快速骇窍、可靠的運行微服務(wù)生態(tài)系統(tǒng)的方式瓜晤。這種方式為輕松地大規(guī)模采納微服務(wù)奠定了基礎(chǔ)。它提供了檢測腹纳、保障痢掠、跟蹤驱犹、監(jiān)控和故障處理功能。它提供的這些跨功能能力無需共享API網(wǎng)關(guān)等資產(chǎn)或?qū)⒑芏嘁蕾噹旒{入到每個服務(wù)中志群。
混沌工程(Chaos Engineering)
混沌工程是對系統(tǒng)進行試驗的一門學(xué)科着绷,旨在建立對系統(tǒng)抵抗生產(chǎn)環(huán)境中不確定條件的能力的信心。在去年锌云,我們看到混沌工程從一個備受關(guān)注的 荠医、想法,轉(zhuǎn)變成公認的主流方法桑涎,來改善并保證分布式系統(tǒng)的彈性彬向。主要用于以下幾類故障時增強系統(tǒng)的彈性:基礎(chǔ)設(shè)施故障、網(wǎng)絡(luò)故障和應(yīng)用程序失敗攻冷,對應(yīng)的工具有Gremlin和Chaos Toolkit等娃胆。
Karate
Karate是一款A(yù)PI測試框架,其特色在于等曼,直接使用Gherkin來編寫測試里烦,無需依賴常用編程語言來實現(xiàn)測試行為。Karate是一個領(lǐng)域特定語言禁谦,用來描述基于HTTP的API測試胁黑。雖然該方法很有趣,可以為簡單的測試創(chuàng)建非常易讀的規(guī)范州泊,但用于匹配和驗證負載的專用語言可能會變得語法晦澀丧蘸、難以理解。從長遠來看遥皂,使用此風(fēng)格編寫的復(fù)雜測試是否將可讀且可維護力喷,仍有待觀察。
微服務(wù)帶來靈活性的同時演训,也帶來很多的復(fù)雜性和不確定因素弟孟,尤其是對質(zhì)量保障帶來了挑戰(zhàn),因此微服務(wù)系統(tǒng)的測試也備受關(guān)注仇祭。作為測試人員披蕉,只有了解了微服務(wù)架構(gòu)與服務(wù)網(wǎng)格的特點及其對測試的影響、混沌工程對質(zhì)量保障的幫助乌奇、API測試的框架選擇與測試優(yōu)化等没讲,才能更好的做好微服務(wù)系統(tǒng)的測試。
3. 多樣化數(shù)據(jù)形態(tài)的支持
圖片來自網(wǎng)絡(luò)
隨著數(shù)據(jù)源的增加礁苗、數(shù)據(jù)規(guī)模的擴大爬凑、數(shù)據(jù)種類越來越多,相應(yīng)的數(shù)據(jù)形態(tài)也呈現(xiàn)出多樣性试伙,包括NoSQL嘁信、時間序列于样、像CockRoachDB和Spanner這樣提供全局一致性的SQL存儲,以及提供聚合日志文件查詢功能的事件流潘靖。不再是關(guān)系型數(shù)據(jù)庫解決一切存儲的時代了穿剖,要考慮真實需求,采用合適的策略和工具卦溢。
數(shù)據(jù)形態(tài)的變化糊余,必然對測試也提出不同的要求。作為測試人員单寂,需要了解不同的數(shù)據(jù)規(guī)模贬芥、不同的存儲形態(tài)、不同的數(shù)據(jù)類型分別該如何驗證宣决、測試該如何設(shè)計蘸劈、測試數(shù)據(jù)該如何準(zhǔn)備,還有數(shù)據(jù)安全尊沸、數(shù)據(jù)匿名化威沫、數(shù)據(jù)分析等數(shù)據(jù)相關(guān)技術(shù)對測試的支持等。比如洼专,對于大量數(shù)據(jù)處理的項目壹甥,測試人員需要了解數(shù)據(jù)處理的技術(shù)與處理邏輯,分別從功能層面驗證處理邏輯的正確性壶熏,以及從非功能方面考慮大量數(shù)據(jù)處理的性能、數(shù)據(jù)處理的安全規(guī)約等浦译。
4. 網(wǎng)絡(luò)安全始終是重中之重
網(wǎng)絡(luò)給我們生活帶來便利性的同時棒假,其安全性也是備受關(guān)注。2018年歐盟頒布了GDPR法令精盅,使得眾多企業(yè)不得不緊急調(diào)整系統(tǒng)功能做好個人身份信息的保護工作帽哑。網(wǎng)絡(luò)安全始終是質(zhì)量保障的重中之重,絕對不容忽視叹俏。本期技術(shù)雷達推薦的安全相關(guān)條目有密碼即服務(wù)妻枕、容器安全掃描、密鑰銷毀技術(shù)等粘驰。
密碼即服務(wù)(Secrets as a service)
在構(gòu)建和運維軟件的價值流中屡谐,密碼憑據(jù)在多個場合都需要使用:構(gòu)建流水線需要使用密碼來與容器注冊中心等安全基礎(chǔ)設(shè)施進行交互,應(yīng)用程序需要使用API密鑰作為密碼憑據(jù)來獲得業(yè)務(wù)功能訪問權(quán)限蝌数,而服務(wù)間通信則需要以證書和密鑰作為密碼憑據(jù)來保護其安全愕掏,這些密碼憑據(jù)不建議通過源代碼的方式管理,而是采用密碼即服務(wù)的技術(shù)來存儲和訪問顶伞。利用這種技術(shù)饵撑,可以使用Vault或AWS Key Management Service(KMS)等工具來讀寫HTTPS端點上的密碼憑據(jù)剑梳,同時實現(xiàn)精細的訪問控制。
密鑰銷毀技術(shù)(Crypto shredding)
密鑰銷毀是指主動覆蓋或刪除用于保護敏感數(shù)據(jù)的加密密鑰误阻,以保護敏感數(shù)據(jù)不被讀取试读。對于審計應(yīng)用程序或區(qū)塊鏈這樣不應(yīng)該或不能刪除歷史記錄的系統(tǒng)來說氮兵,密鑰銷毀技術(shù)對于隱私保護和GDPR合規(guī)非常有用。
容器安全掃描(Container security scanning)
圍繞Docker的容器革命顯著減少了應(yīng)用在跨環(huán)境遷移時的阻力追逮,并推動持續(xù)交付和持續(xù)部署的采納。但尤其是后者粱侣,對于傳統(tǒng)的投產(chǎn)控制帶來了相當(dāng)大的漏洞羊壹。容器安全掃描技術(shù)是對該威脅載體的必要響應(yīng)。構(gòu)建流水線中的工具齐婴,會自動檢查流水線中的容器是否存在已知漏洞油猫。
作為測試人員,對于上面的安全相關(guān)技術(shù)可能不需要掌握的很深柠偶,但是需要了解有這樣的一些技術(shù)情妖,以及對應(yīng)的使用場景。這樣诱担,才能對于系統(tǒng)整體的安全質(zhì)量有更好的把握毡证。此外,測試人員需要了解相應(yīng)的安全測試技術(shù)蔫仙,需要關(guān)注業(yè)務(wù)方面的安全需求料睛,了解不同領(lǐng)域的安全規(guī)范和要求,從需求階段做好威脅建模開始摇邦,跟團隊一起在軟件開發(fā)生命周期做到安全內(nèi)建(Build Security in)恤煞。
5. 自動化測試與線上質(zhì)量的關(guān)注
要快速交付,必然離不開自動化測試施籍,而要做好自動化測試居扒,更是離不開相應(yīng)工具的支持。本期技術(shù)雷達上列出的Cypress丑慎、TestCafe和Puppeteer被譽為后Selenium時代的Web UI測試的三駕馬車喜喂,值得關(guān)注。這三個工具不同于WebDriver時代的自動化測試工具竿裂,具有更加輕量級玉吁、更加穩(wěn)定、速度更快的優(yōu)點腻异。
隨著技術(shù)架構(gòu)的演進和業(yè)務(wù)領(lǐng)域的發(fā)展诈茧,軟件系統(tǒng)生態(tài)越來越復(fù)雜。過于重視預(yù)生產(chǎn)環(huán)境的測試捂掰,不僅不能很好的保證生產(chǎn)環(huán)境的質(zhì)量敢会,而且影響交付速度曾沈。因此,我們要把質(zhì)量關(guān)注點拓寬到生產(chǎn)環(huán)境鸥昏,做到測試右移塞俱。本期技術(shù)雷達列出的相關(guān)工具有:日志管理工具Humio,Honeycomb吏垮,以及前面提到的混沌工程相關(guān)條目等障涯。
Humio
在日志管理領(lǐng)域,Humio是一款相對較新的工具膳汪。該工具完全從零開始構(gòu)建唯蝶,通過基于定制設(shè)計的時序數(shù)據(jù)庫的內(nèi)置查詢語言,在日志提取和查詢方面性能非骋潘裕快粘我。從提取、可視化和報警提醒的角度來看痹换,該工具能夠與幾乎所有工具相集成征字。
Honeycomb
Honeycomb是一個可觀測性工具,它從生產(chǎn)環(huán)境中提取出豐富的數(shù)據(jù)娇豫,并通過動態(tài)采樣使其可管理匙姜。開發(fā)人員可以記錄大量豐富的事件,并在之后決定如何劃分和關(guān)聯(lián)它們冯痢,這對于大型分布式系統(tǒng)的問題診斷很有幫助氮昧。
作為測試人員,自動化測試成為了必備技能浦楣,需要關(guān)注自動化測試工具的發(fā)展郭计,了解新工具的特點與適應(yīng)場景,更好的讓自動化測試工作發(fā)揮最大的價值椒振。另外,測試右移的思想也越來越被大家接受梧乘,需要測試人員更多的了解基礎(chǔ)設(shè)施相關(guān)技術(shù)澎迎、線上監(jiān)控技術(shù)等,跟Ops緊密的合作选调,做好QA in production夹供。同時,利用生產(chǎn)環(huán)境的數(shù)據(jù)仁堪,為預(yù)生產(chǎn)環(huán)境的測試設(shè)計和數(shù)據(jù)準(zhǔn)備等提供幫助哮洽,構(gòu)建反脆弱的軟件系統(tǒng)。
6. 新興領(lǐng)域不容忽視
圖片來自網(wǎng)絡(luò)
最火熱的新興領(lǐng)域當(dāng)屬AI弦聂,這也是未來的發(fā)展方向鸟辅。本期技術(shù)雷達上列出的有機器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)訓(xùn)練等內(nèi)容氛什,比如:機器學(xué)習(xí)持續(xù)交付模型、NLP的遷移學(xué)習(xí)和fastai等匪凉。
另一個熱門新技術(shù)是區(qū)塊鏈枪眉,技術(shù)雷達上區(qū)塊鏈相關(guān)技術(shù)條目有智能合約、超越以太坊的EVM和企業(yè)版以太坊Quorum等再层。
技術(shù)雷達上還提到一個新的內(nèi)容贸铜,那就是隨著社會對科技的依賴程度日益增長,建議軟件開發(fā)團隊在制定決策時必須考慮道德問題聂受,思考自己所構(gòu)建的軟件會在未來產(chǎn)生什么影響蒿秦。相應(yīng)的工具有技術(shù)塔羅牌和道德風(fēng)險手冊。
作為測試人員蛋济,這些都是大家可以關(guān)注并深入了解的方向棍鳖。新興領(lǐng)域必然會對測試有不同的要求,比如:關(guān)于AI的測試需要考慮兩個方面瘫俊,一個是對于AI產(chǎn)品的測試鹊杖,另一個是把AI技術(shù)運用于測試中,比如自動化測試的智能化扛芽、生產(chǎn)環(huán)境數(shù)據(jù)的智能分析等骂蓖。另外,對于區(qū)塊鏈川尖,需要考慮它對測試帶來什么挑戰(zhàn)登下、有什么樣不同的測試方法來支持;對于道德風(fēng)險的把控叮喳,我們軟件測試人員又該注意些什么被芳?能夠提供哪些支持呢?
寫在最后
前面列的這幾項馍悟,除了自動化測試工具以外畔濒,其他的內(nèi)容通常被認為跟測試人員沒多大關(guān)系。其實锣咒,軟件測試已經(jīng)不再是那個簡單的通過模擬用戶行為點擊去驗證功能是否滿足的時代了侵状,測試人員的眼光要放更開闊一些,考慮更多的質(zhì)量相關(guān)因素毅整。對于前面總結(jié)的這些項目趣兄,我認為不是跟測試人員沒有關(guān)系,而是給測試人員帶來了新的挑戰(zhàn)悼嫉,提出了新的要求艇潭。同時,機遇跟挑戰(zhàn)并存,這些挑戰(zhàn)同樣也給測試人員帶來了很多新的發(fā)展機會蹋凝。
那么鲁纠,在眾多機會面前,測試人員該如何把握呢仙粱?推薦大家可以根據(jù)T型能力模型去提升自己的能力房交。
圖片來自網(wǎng)絡(luò)
T的橫表示能力廣度,T的豎表示能力深度伐割。前面提到的方方面面都屬于廣度候味,包括不同技術(shù)和不同業(yè)務(wù)領(lǐng)域的擴展,而深度就是對于其中一個領(lǐng)域進行深入的學(xué)習(xí)研究隔心,發(fā)展對應(yīng)的測試技能白群。
廣大的測試朋友們可以結(jié)合自己的興趣特點,找到最適合自己的那個領(lǐng)域硬霍,深入發(fā)展帜慢。了解足夠的相關(guān)知識,通過實踐將知識轉(zhuǎn)換為經(jīng)驗唯卖,然后總結(jié)歸納粱玲、不斷鍛煉,以獲得利用經(jīng)驗解決問題的能力拜轨,擁有一技之長抽减。