前沿拓展:
最近團隊內(nèi)部產(chǎn)品在做性能測試中碰到一個問題,不僅僅這次性能測試,其實這在我這近10年工作過程中,經(jīng)常碰到一些類似的事情,今天拿出來一件事說叨說叨。
1、事情經(jīng)過
月中上線了一個功能,該功能會應對峰值流量,測試人員由于種種瑣事,導致性能測試沒有完成。想著功能沒有問題,性能測試相對簡單,運行下性能測試腳本就行,于是把性能測試推到了周末加班測試??墒窃跍y試過程中發(fā)現(xiàn)得到性能指標數(shù)據(jù)只是開發(fā)人員承諾的一半都不到,于是開始找開發(fā)人員,大周末的沒人回復。
周一上班,實事求是的發(fā)了性能測試郵件,說明了實際的性能指標,小編綜合來說下,QPS、錯誤率和時延均不滿足條件,故性能測試不通過。
經(jīng)過排查發(fā)現(xiàn),其中有一個配置錯誤,流量發(fā)到了線上,但是線上配置了單實例限流,直接返回了錯誤碼,因為該服務本身就是對互聯(lián)網(wǎng)開發(fā)的功能,公司的網(wǎng)絡確實可以連,但是經(jīng)過了幾層**,時延高,指標自然無法滿足要求。
最后開會進行了小編綜合來說,基本上說的都是一些「放之四海而皆準」的大道理,加強跨團隊之間的配合;盡量要把測試時間提前,如果不能提前,那么要找到相應開發(fā)人員一起配合完成工作。恕我直言,這個小編綜合來說基本就是推諉扯皮、廢話連篇,一句有用的都沒有。
2、問題復盤
說到軟件測試,有些人并不了解,軟件測試工程師,說的簡單一些,就是明白產(chǎn)品的需求,通過各種方式檢查軟件的質(zhì)量問題,即常說的「找bug」~
上文說的性能測試,表面上來看,測試人員確實找到了bug,這個bug就是性能差,某種程度上,性能上不去,也算是一種軟件缺陷。為什么低?到底需要開發(fā)人員排查,還是測試人員找到根因呢?
第一、性能測試不同于功能測試,功能測試只需要保證串行請求響應正常即可,性能測試則需要在并發(fā)請求下保證輸入和輸出符合預期。如果系統(tǒng)存在一些線程或者鎖使用不當?shù)那闆r,那么系統(tǒng)就會出現(xiàn)一些反常的表現(xiàn),即便應用程序穩(wěn)定,還是會陷入一些環(huán)境問題,性能測試工具選擇錯誤、防火墻導致的網(wǎng)絡不通、跨集群的延時過高等問題。碰到這種問題應該梳理整個核心鏈路,逐個分析問題所在,而不應該直接歸結(jié)到應用程序本身存在性能問題。
第二、在做性能測試過程中,要做根因分析,不能「錯把現(xiàn)象當原因」,比如我們的軟件速度很慢,排除外界因素,可能是數(shù)據(jù)庫慢,但也可能是軟件自身慢;如果是軟件邏輯處理慢,為什么慢,慢在了什么環(huán)節(jié),這就需要我們通過strace、火焰圖等方法去排查和分析慢的根因。如果直接給出相對籠統(tǒng)和模糊的**,把問題甩給相應開發(fā)人員去分析和解決,那么開發(fā)人員又要從頭開始,整個性能測試的效率大打折扣。
第三、在測試過程中要從性能測試端,網(wǎng)絡鏈路、軟件邏輯層,數(shù)據(jù)層等方面去驗證結(jié)果的正確性,遵循性能測試方**,正確的性能測試結(jié)果都是符合現(xiàn)實邏輯的,可復現(xiàn)的,能夠被所有人理解和分析。而不僅僅是通過或者不通過的測試結(jié)果和幾條冰冷的測試數(shù)據(jù)。
上面說的是性能測試,其實對于常見的功能測試、UI測試、接口測試等也是一樣的。你確實找到了bug,但是根因是什么,你清楚么?因為不是自己開發(fā)的東西清楚里面邏輯,所以對于測試人員來說很難,但是這只有熟悉了底層的原理,后面的測試工作才會輕車熟路。
3、測試人員現(xiàn)狀
目前應用軟件開發(fā)主要存在如下兩種架構(gòu)。在實際執(zhí)行中,很多公司把這兩種架構(gòu)進行了混合調(diào)整,常見的是把前端和測試資源化,整個公司共享。
圖一
如上圖一,這種多存在于大型互聯(lián)網(wǎng)公司,以產(chǎn)品線劃分團隊,當然一個產(chǎn)品線會存在多個服務或者應用程序。團隊人員對自己的產(chǎn)品熟悉度更高,團隊內(nèi)部配合默契高,同時更專業(yè)。這種模式缺點也很明顯,不能做到資源共享,比如團隊內(nèi)部前端頁面已經(jīng)開發(fā)完成,但是其它團隊也不能共享該團隊的前端開發(fā)人員。
圖二
如上圖二,這種多存在于中小型軟件公司,比如我們熟知的外包,基本就是缺少什么外派什么,完成后繼續(xù)進行下一個項目。這種方式一大優(yōu)勢就是人員利用率優(yōu)勢更高,因為經(jīng)常馬不停蹄的連軸轉(zhuǎn),所以各個團隊成員很難得到技術(shù)上的積累。
說到這里,接著回到正題,說說測試在其中的地位。
一般測試周期基本占開發(fā)周期(人/天)的1/3左右,因為相對開發(fā)還有后續(xù)線上問題解決和性能優(yōu)化等工作,所以測試人員基本測試完了就沒有后續(xù)了。
如果按照圖一產(chǎn)品線劃分的話,這種情況會好一點,基本會專注某一類應用軟件或者客戶端的測試,但是因為測試周期相對較短,所以實際情況下還會繼續(xù)進行團隊內(nèi)部下一個應用軟件的測試。
如果按照上圖二的技術(shù)工種劃分的話,組內(nèi)的測試人員分配到相應的產(chǎn)品開發(fā)團隊,開發(fā)完了就把測試人員收回來,第二分配到另外一個團隊繼續(xù)類似的工作。
這就導致了很多公司都有「測試人員資源化的趨勢」,其實前端也是如此。之前我跟一個阿里的朋友聊天,他也給我聊到了這個現(xiàn)象。這就導致一個問題,每當公司進行晉級答辯的時候,就會非常尷尬,我們知道,一般答辯只會看功勞,很少看苦勞。前端和測試做了很多項目,但是深究一下,好像什么都沒有做。
某種程度上來說,得到的成長有限。為了破解這個難題,只能在內(nèi)部發(fā)起一些公司或者開源級別的項目,雖然大家在多個產(chǎn)品線各自忙碌,但是也有一些拿得出手的東西。那么這些事情就是加分項,比如很多互聯(lián)網(wǎng)公司都有自動化測試平臺、運維平臺、前端框架等輪子。
有些測試團隊的領導碰到代碼開發(fā)的工作總是拋給開發(fā)團隊,理由是我們沒有這么充足的時間完成自動化測試用例的開發(fā),不相信自己的團隊能夠完成開發(fā)工作。要我說這種領導「不是傻就是蠢」這種成長和練手的機會都不愿意抓住。還有一些工作中就是不停的點點點,如果你想延長自己的職業(yè)生涯,那么你要警覺了,盡快脫離這種環(huán)境。
事實上,這種現(xiàn)象是符合我國軟件測試發(fā)展的,軟件產(chǎn)業(yè)的興起和發(fā)展只有短短的十幾年,在這興起和發(fā)展的階段,開發(fā)軟件追求「短平快,追求快速發(fā)展,追求利益,忽視質(zhì)量」,在公司里,絕大多數(shù)人都在做開發(fā),覺得只要能做出來,能用就行,也正因為如此,產(chǎn)品沒有競爭力,這樣的企業(yè)生存環(huán)境也是比較困難的。但是隨著時間的推移,對應用軟件的要求會越來越高,軟件測試的質(zhì)量越來越受到企業(yè)的關(guān)注。比如一些電商系統(tǒng)因為應用程序漏洞損失幾千萬,如果經(jīng)過完善的軟件測試,那么則會避免此類問題的出現(xiàn)。所以測試行業(yè)依然是當前不可缺少的一個崗位。
4、后續(xù)發(fā)展方向
對軟件測試行業(yè)有了解的同學不難發(fā)現(xiàn),現(xiàn)在功能測試找工作越來越困難了,歸根結(jié)底還是技術(shù)原因。對這個行業(yè)不了解的人可能覺得,測試不就是找bug嗎,有什么難的,簡單的項目也許還能夠應對,但是測試的核心就是質(zhì)量保證,在產(chǎn)品更新速度越來越快的當下,單靠功能測試工程師是沒有辦法保證產(chǎn)品質(zhì)量的。
近年來,由于多數(shù)測試人員沒有太多的積累,行業(yè)內(nèi)大量技術(shù)根基薄弱的測試工程師面臨淘汰的現(xiàn)狀(就目前這種裁員的趨勢,很多開發(fā)人員直接轉(zhuǎn)行測試開發(fā),都沒有太大的問題。)雖然這句話聽起來比較殘酷,但是你必須要看到這種變化。我私下跟一些測試人員溝通,也都是認為現(xiàn)在很多的測試工程師都不及格,要么是會點點點,要么是會一點自動化,高水平的測試工程師少之又少,這也就是為什么很多公司都要招聘測試開發(fā)工程師原因。
測試這個行業(yè)的女生偏多,很多就是為了不想寫代碼才要進入測試這個行業(yè),但是依照現(xiàn)在的發(fā)展狀況來看,若想長期在這個行業(yè)發(fā)展,不會代碼是絕對不行的!會寫代碼將會讓你在這個行業(yè)超越90%以上的測試人員。
整個行業(yè)的趨勢及前景就是:
純手工測試逐漸淘汰,更多的純開發(fā)工程師進入測試領域;有語言基礎是測試崗位基本的招聘需求,會性能或者自動化測試是普遍要求;大廠更多傾向于直接招測試開發(fā),測試開發(fā)工程師的薪資會不斷提高,這兩種測試人員薪資差距會逐漸拉大。
拓展知識:
產(chǎn)品測試工程師
測試工程師,軟件質(zhì)量的把關(guān)者,工作起點高,發(fā)展空間大。我國的軟件測試職業(yè)還處于一個發(fā)展的階段,所以測試工程師具有較大發(fā)展前景。
傳統(tǒng)的軟件行業(yè)還是以軟件測試工程師為主,但是在新興的互聯(lián)網(wǎng)行業(yè)大多還是以QA來命名這個職位,也就是質(zhì)量保證。
測試人員
1、編寫測試計劃、規(guī)劃詳細的測試方案、編寫測試用例。
2、根據(jù)測試計劃搭建和維護測試環(huán)境;
3、執(zhí)行測試工作,提交測試報告。包括編寫用于測試的自動測試腳本,完整地記錄測試結(jié)果,編寫完整的測試報告等相關(guān)的技術(shù)文檔;
4、對測試中發(fā)現(xiàn)的問題進行詳細分析和準確**,與開發(fā)人員討論缺陷解決方案。
5、提出對產(chǎn)品的進一步改進的建議,并評估改進方案是否合理;對測試結(jié)果進行小編綜合來說與統(tǒng)計分析,對測試進行跟蹤,并提出反饋意見。
6、為業(yè)務部門提供相應技術(shù)支持,確保軟件質(zhì)量指標。
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http:///75147.html