軟件測試行業(yè)供需現(xiàn)狀
隨著敏捷、DevOps等開發(fā)模式的引入以及大數(shù)據(jù)治理與應(yīng)用、人工智能機器學(xué)習(xí)與深度學(xué)習(xí)的應(yīng)用的發(fā)展、軟件交付周期逐漸縮短、技術(shù)復(fù)雜度不斷提升對測試人員質(zhì)量保障與效率提升等方面提出了越來越高的要求。因此,對人員的要求也是在不斷提高的,一方面響應(yīng)基礎(chǔ)功能需求的手工測試人員基本飽和,另一方面懂測試的測試開發(fā)面試達標者比例過低。
軟件測試行業(yè)的發(fā)展現(xiàn)狀
通過之前對近幾年《軟件測試行業(yè)現(xiàn)狀報告》的解讀,以及結(jié)合對當下軟件測試左移與右移思考,總結(jié)了以下幾點:
- 測試人員對需求分析的投入在逐漸增大,逐漸注重用戶反饋問題的分析,更關(guān)注用戶體驗。
- 敏捷和類敏捷型項目已經(jīng)占到了已經(jīng)極高的百分比。DevOps模式的使用已經(jīng)持續(xù)數(shù)年穩(wěn)定增長,正在成為軟件交付的最佳模式 。 同時類瀑布開發(fā)模式比重逐漸降低。
- 較去年,自動化測試技術(shù)比例基本保持在一個高占比的狀態(tài)。不了解自動化的越來越少。同時發(fā)現(xiàn)越來越多的測試人員將自動化技術(shù)應(yīng)用于日志和數(shù)據(jù)分析、綜合監(jiān)測。
敏捷及DevOps模式的應(yīng)用,對測試人員提出了不同于以往的要求,以前測試基本上都在開發(fā)階段之后和產(chǎn)品上線之前完成,使得測試人員在開發(fā)階段之前加大了對需求分析等測試分析和設(shè)計、同時不斷提高自動化測試技術(shù)應(yīng)用,促進研發(fā)內(nèi)建質(zhì)量。(測試左移)
隨著業(yè)務(wù)、用戶對產(chǎn)品質(zhì)量提出更高的要求,以及測試開發(fā)技術(shù)發(fā)展與應(yīng)用,促使測試技術(shù)多樣化發(fā)展,如,日志和數(shù)據(jù)分析、質(zhì)量運營、服務(wù)監(jiān)測等。(測試右移)
同時,敏捷一直強調(diào)“團隊為質(zhì)量負責(zé)”,測試不再是測試人員的專屬,這里我們需要重新思考下,測試的價值如何更好的體現(xiàn)——如何提高測試效率。
DevOps模式更是對測試、尤其是自動化測試、編碼能力提出了更高的要求。
功能測試人員發(fā)展的局限性
一方面功能測試的深度廣度的潛在延伸性很強,另一方面想突破傳統(tǒng)功能測試思維的確很難。在軟件測試左移的思想中,測試人員對需求分析的投入在逐漸增大,這里的難點就是如何突破傳統(tǒng)認知的測試設(shè)計深度、廣度問題。
大多數(shù)功能測試人員,半年工作經(jīng)驗可以基本的了解軟件測試相關(guān)流程,但因?qū)W⒂诠δ苄枨蟮姆治?、驗證、容易出現(xiàn)忽略功能需求背后的業(yè)務(wù)需求、用戶需求,對產(chǎn)品整體的質(zhì)量把握不到位,容易出現(xiàn)得此失彼的問題,也難以將功能測試做成閉環(huán)。
功能測試的深度和廣度的延伸性不僅僅體現(xiàn)了功能需求本身,還包括產(chǎn)品架構(gòu)設(shè)計、開發(fā)技術(shù)棧、服務(wù)內(nèi)容與模式、用戶群體等等。
我們清楚的認識到,一個優(yōu)秀的測試工程師,應(yīng)該做到:
- 懂業(yè)務(wù):能夠站在用戶角度理解業(yè)務(wù)、用戶需求,能扎實通過測試設(shè)計的保證業(yè)務(wù)質(zhì)量。
- 懂技術(shù):具備技術(shù)解決方案思維和能力,提升產(chǎn)品質(zhì)量和測試效率。
- 懂架構(gòu):具備產(chǎn)品架構(gòu)的基本認識和識別架構(gòu)設(shè)計中的質(zhì)量、性能風(fēng)險,保證產(chǎn)品需求和實現(xiàn)能夠滿足用戶需求及產(chǎn)品發(fā)展需要。
我們不難得出測試逐漸向測試開發(fā)過渡已經(jīng)是一種顯在的發(fā)展趨勢,無論我們決定將來走技術(shù)路線還是管理路線。
但具備了一定的開發(fā)能力并不等同于能夠做好測試,之所有測試開發(fā)成為一種趨勢,是因為測試人員在具備優(yōu)秀測試設(shè)計等業(yè)務(wù)測試能力的基礎(chǔ)上,若同時具備一定開發(fā)能力和技術(shù)解決思維,能夠更好的從質(zhì)量、效率、風(fēng)險、成本之間尋求一種平衡。
自動化測試方向認知的片面性
談到自動化測試,很多人認為這是測試人員職業(yè)發(fā)展的一個方向,但對這個方向的認識并不都是充分的,比如,當面試的時候問到自己設(shè)計的自動化測試用例的優(yōu)缺點,自動化測試框架選擇的合理性體現(xiàn)在哪里時,很難有清晰的回答。
如何圍繞產(chǎn)品質(zhì)量提高測試效率,不僅僅是將手工用例轉(zhuǎn)變?yōu)樽詣踊美@么片面,其中還包含了自動化測試策略、框架選型,自動化的可維護性、可擴展性、可持續(xù)性等方面的諸多考慮,一個難以維護、擴展的自動化測試實踐,是失敗的。
“圍繞產(chǎn)品質(zhì)量,提升測試效率,通過不斷的技術(shù)創(chuàng)新、應(yīng)用,不斷提高測試整體流程能力(單位時間能夠提供多少服務(wù))。”假如一個測試團隊的人數(shù)相對固定、測試時間充足,他提升效率的目的又是什么呢?
從這種角度來思考,個人認為測試效率提升的根本意義在于:
- 做更多的有價值的測試(測試左移或右移的投入)
- 實現(xiàn)真正的縮減成本(減少人力投入)。
- 擁抱變化,適應(yīng)開發(fā)模式的轉(zhuǎn)變,比如類敏捷、DevOps模式下的頻繁迭代、持續(xù)部署。
測試職業(yè)發(fā)展
測試職業(yè)發(fā)展方向大致分為管理方向及技術(shù)方向。無論我們決定將來走技術(shù)路線還是管理路線。都需要注意測試逐漸向測試開發(fā)過渡已經(jīng)是一種顯在的發(fā)展趨勢,這樣就要求我們需要具備一定的測試開發(fā)能力和技術(shù)解決思維。
雖然測試開發(fā)逐漸成為測試人員的基本能能力要求,但不要進入一味追求開發(fā)能力。具備了一定的開發(fā)能力并不等同于能夠做好測試,之所有測試開發(fā)成為一種趨勢,是因為測試人員在具備優(yōu)秀測試設(shè)計等業(yè)務(wù)測試能力的基礎(chǔ)上,若同時具備一定開發(fā)能力和技術(shù)思維,能夠更好的從質(zhì)量、效率、風(fēng)險、成本之間尋求一種平衡。
培養(yǎng)全面的測試能力
- 懂業(yè)務(wù):能夠站在用戶角度理解業(yè)務(wù)、用戶需求,能扎實通過測試設(shè)計的保證業(yè)務(wù)質(zhì)量。
- 懂技術(shù):具備技術(shù)解決方案思維和能力,提升產(chǎn)品質(zhì)量和測試效率。
- 懂架構(gòu):具備產(chǎn)品架構(gòu)的基本認識和識別架構(gòu)設(shè)計中的質(zhì)量、性能風(fēng)險,保證產(chǎn)品需求和實現(xiàn)能夠滿足用戶需求及產(chǎn)品發(fā)展需要。
建立良好的質(zhì)量意識
我們清楚一切測試活動都是圍繞用戶、業(yè)務(wù)需求保障產(chǎn)品質(zhì)量而開展,而保障產(chǎn)品質(zhì)量的核心是測試設(shè)計,而非測試技術(shù),測試技術(shù)大多僅是解決測試設(shè)計執(zhí)行的可行性、效率問題。
拓展測試廣度與深度
隨著類敏捷、DevOps模式的發(fā)展、軟件交付周期逐漸縮短、技術(shù)復(fù)雜度不斷提升對測試人員質(zhì)量保障與效率提升等方面提出了越來越高的要求。
在敏捷開發(fā)模型的軟件生命周期中,我們通過不斷快速的迭代,以使其最大限度地符合客戶對系統(tǒng)的需求。此時測試的關(guān)注點基本停留在開發(fā)階段,以保證產(chǎn)品達到上線標準。引入DevOps之后,我們不僅要關(guān)注產(chǎn)品的質(zhì)量是否達標,還需要使產(chǎn)品或功能價值預(yù)期得到及時的驗證。
因此,我們不僅要將測試左移,還要進行測試右移,通過監(jiān)控產(chǎn)品在生產(chǎn)環(huán)境的運作情況,來驗證其價值并獲得反饋,從而持續(xù)改進。我們通過以下三個方面來了解一下測試左移與右移。
1.新功能是什么?
在開發(fā)環(huán)境,我們開發(fā)新功能,并且通過測試保證其達到產(chǎn)品驗收標準。
這就要求從產(chǎn)品生命周期開始時,各個角色(測試、開發(fā)、產(chǎn)品負責(zé)人等)對業(yè)務(wù)場景、用戶需求達成一致的認識,從而使其從需求到最后的測試驗證,進行高度的協(xié)作和溝通,最后交付最有價值的功能。同時測試人員能夠根據(jù)用戶需求進行需求分析,發(fā)現(xiàn)產(chǎn)品前期設(shè)計是否存在問題或者補充產(chǎn)品設(shè)計。同時,通過及早引入自動化測試,協(xié)助研發(fā)內(nèi)建質(zhì)量。
這里體現(xiàn)出了測試左移的核心思想。
2.新功能是否價值?
我們將新功能部署到生產(chǎn)環(huán)境以后,接下來就應(yīng)該衡量業(yè)務(wù)價值是否達到預(yù)期。
通過對用戶日志或數(shù)據(jù)進行分析感知用戶的行為變化。比如:比如頁面新增了一個導(dǎo)出功能,發(fā)布上線后,發(fā)現(xiàn)用戶的點擊導(dǎo)出按鈕的次數(shù)幾乎為零,很可能是因為用戶根本不需要這個功能,或者導(dǎo)出按鈕的顏色、位置等易用性(產(chǎn)品質(zhì)量屬性之一)原因?qū)е掠脩魶]有使用。這時候需要思考如何對該功能進行調(diào)整。如果一個功能沒有使用或者沒有給產(chǎn)品帶來顯著的價值,在功能正確性和性能驗證上投入大量精力又有什么意義呢?
這里體現(xiàn)出了測試右移的思想。
3.新功能線上是否是可靠的?
測試大多數(shù)情況只能覆蓋已知的測試場景。產(chǎn)品部署在用戶環(huán)境運行的過程中,可能會由于某些不確定性因素(比如數(shù)據(jù)量突然陡增,用戶訪問突然陡增、網(wǎng)絡(luò)不穩(wěn)定或者數(shù)據(jù)盤損壞等等)導(dǎo)致產(chǎn)品或功能失效,由于其不確定性使得測試人員很難模擬測試場景,因此產(chǎn)品線上質(zhì)量運營需要通過監(jiān)控的手段開展,通常我們需要監(jiān)控兩種特性:可用性、性能。
通過持續(xù)獲取用戶日志或數(shù)據(jù),分析產(chǎn)品性能、程序進程等穩(wěn)定性、產(chǎn)品質(zhì)量健康度進行問題報警、預(yù)警。同時增加用戶溝通反饋渠道,獲取用戶反饋從而及時調(diào)整。除此之外,這一點也充分體現(xiàn)了Dev、 QA、Ops的協(xié)作,像監(jiān)控等原本只能Ops做的事,現(xiàn)在Dev或QA一樣可以做。
這里也體現(xiàn)出了測試右移的思想。
提升測試核心競爭力
個人的核心競爭力與所在行業(yè)發(fā)展的趨勢,以及隨著行業(yè)及相關(guān)行業(yè)的發(fā)展對從業(yè)者提出的要求應(yīng)該是有著直接關(guān)系的。
所以我們需要以發(fā)展的眼光,來看未來測試行業(yè)會對我們提出哪些要求,進而驅(qū)動自己適應(yīng)未來發(fā)展要求。
什么是核心競爭力,我個人認為核心競爭力一定程度可以理解為不可替代性,所做的事情或者所具備的能力是否可以能被大部分人替代,這就是 是否具備核心競爭力的一個重要體現(xiàn)。
相對于測試而言,核心競爭力可以是在某一領(lǐng)域的專業(yè)性深度足夠深。
比如性能測試,曾在一次互聯(lián)網(wǎng)測試開發(fā)大會上,看見過某位前輩講到過的一個案例:在定位某個性能問題時,挖掘到操作系統(tǒng)內(nèi)核的深度,并且發(fā)現(xiàn)是因操作系統(tǒng)內(nèi)核缺陷導(dǎo)致的性能風(fēng)險,這個定位問題的過程及結(jié)果就是測試專業(yè)性深度的體現(xiàn)。
也可以是具備一定的測試廣度,并且能夠根據(jù)不同場景靈活適當?shù)膶⑵淙诤系揭黄?,做到質(zhì)量、成本、效率、風(fēng)險的平衡。
比如產(chǎn)品迭代初期,一方面產(chǎn)品初步成形,需求變更頻繁、功能穩(wěn)定性差,同時受到客戶和市場壓力,往往迭代時間緊張,此時對于測試要解決的就是質(zhì)量與效率平衡問題,自然而然想到自動化測試,然而這個時候自動化是不是合適的呢,顯然自動化初期投入到項目的確能起到效率提升的目的,但隨著迭代發(fā)展,會出現(xiàn)什么情況?需求變更引入的自動化維護成本,如果此時業(yè)務(wù)測試不具備測試開發(fā)能力,那么這個維護成本將變的更高,本來就項目時間緊張,自動化維護工作自然而然就變的力不從心,由此,一兩個版本迭代之后,自動化測試就慢慢淡出了視野之外。一般來講,需求度量一般要從最原始的需求開始,比如迭代初期項目時間緊,考慮到版本穩(wěn)定性,通常不會選擇自動化測試(除非自動化的開展或重構(gòu)成本非常的低),而是從需求優(yōu)先級、質(zhì)量目標、測試覆蓋等角度,對測試廣度、測試深度進行測試策略設(shè)計,優(yōu)先保障核心功能質(zhì)量。這也是很多公司對測試開發(fā)的要求是首先要懂測試、然后懂開發(fā)的原因,能夠?qū)I(yè)務(wù)測試遇到的問題提出適合的技術(shù)解決方案,避免盲目開展自動化、工具開發(fā),導(dǎo)致“藥不對癥”。
雖然我認為核心競爭力一定程度可以理解為不可替代性,但并不意味著封閉,反而要有更加的開放思想,幫助團隊測試人員提升基礎(chǔ)能力水平,提升他們對測試的理解和認識,可以使得遇到更多志同道合的人。進一步思考測試技術(shù)能力的水平賦能和流程化能力建設(shè),這對我們的發(fā)展有著更大的幫助,也是我們價值的重要體現(xiàn)。
同時,需要不斷的了解一下當下比較主流的開發(fā)、測試思想、模式,如DevOps開發(fā)模式、測試左移與右移思想等等;測試應(yīng)用領(lǐng)域,如人工智能測試;測試技術(shù),如數(shù)據(jù)、接口的自動化等等,使得我們對測試的認識具有一定的前瞻性。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。