測試工程師手冊:挑戰(zhàn)與機(jī)遇
原創(chuàng)
隨著測試在軟件開發(fā)周期中越來越受到重視,國內(nèi)測試的缺口一直比較大。一方面測試開發(fā)表明了對工程師有更高的要求,需要在具有測試能力的基礎(chǔ)上兼?zhèn)溟_發(fā)能力;另一方面自動化測試成為趨勢,利用開發(fā)的技巧解決測試中的問題以提高測試效率,降低QA(quality assurance質(zhì)量保證)與RD(Research and Development研發(fā)工程師)的人力比。
雖然測試是APP團(tuán)隊中不可或缺的重要環(huán)節(jié),但目前國內(nèi)的環(huán)境卻顯得有些暗淡,小型團(tuán)隊往往并沒有測試工程師的職位,在APP上線推廣之前,只是在團(tuán)隊內(nèi)部的人員現(xiàn)有的手機(jī)型號上跑一遍APP就算完成了測試環(huán)節(jié)。并不是開發(fā)團(tuán)隊不重視測試環(huán)節(jié),而是成本壓力與APP應(yīng)用市場環(huán)境造成的。與此同時,國內(nèi)也并沒有一個能夠提供測試人員交流學(xué)習(xí)的平臺。如今技術(shù)不再是移動互聯(lián)網(wǎng)的難題,應(yīng)用APP之間搏殺的一個重要環(huán)節(jié)正是APP的自身質(zhì)量,而測試工程師們正在這樣一片戰(zhàn)場上戰(zhàn)斗,可是如何成為一名合格甚至優(yōu)秀的APP質(zhì)量把控人員呢?
1、技術(shù)含量
如果你問及一個測試工程師當(dāng)初為什么選擇測試開發(fā)這個職位時,經(jīng)常聽到以下的回答:
“我覺得自己開發(fā)能力比較弱,但我比較細(xì)心,覺得測試職位比較適合。”
“我在實驗室和實習(xí)公司呆過,做過功能測試和性能測試,我比較喜歡測試.”
“開發(fā)只能了解到項目的局部,但測試需要了解更多,我期望有更好的大局觀”
無論人們內(nèi)心真實的想法是什么,但潛意識里面測試的技術(shù)含量沒有開發(fā)高??陀^地說,在軟件編碼方面測試開發(fā)的技術(shù)含量確實不如純正的開發(fā)職位,更不用說測試職位了。但是,這個職位本身所要求的技術(shù)水平應(yīng)該是需要超過單純的開發(fā)職位的,真正高水平的QA至少需要多年的開發(fā)經(jīng)驗的,否則他無法從軟件產(chǎn)品設(shè)計、架構(gòu)和實現(xiàn)方面提出實質(zhì)性的意見和風(fēng)險評估,充其量只是點出交付到手軟件中的幾個bug。所以基于現(xiàn)階段國內(nèi)行情,個人建議如果希望在測試的職業(yè)生涯上有所發(fā)展的人,先參與幾年的研發(fā)工作,畢竟那才是軟件工程中的主體,然后在開發(fā)過程中培養(yǎng)測試意識,這也是程序員的職業(yè)素養(yǎng)。Google許多工程師都有強烈的質(zhì)量意識,許多代碼自己不經(jīng)過自己的單元測試和功能測試是沒有人review的。對于投測試或者測試開發(fā)職位的目的是為了逃避開發(fā),那么職業(yè)道路要發(fā)展順利是很難的。
2、基本素質(zhì)
測試開發(fā)工程在公司一般有兩種,一種是單純?yōu)闇y試團(tuán)隊開發(fā)測試工具或者系統(tǒng)(由于這部分和單純開發(fā)職位本質(zhì)上區(qū)別不大,討論基于另一種);另一種就是在測試過程中發(fā)揮主觀能動,利用自動化把重復(fù)勞動降至最低,比如開發(fā)適用于特定場景的測試工具(當(dāng)然這種工具具有普遍性也能推廣到整個組或者公司)、測試腳本和測試用例。
測試開發(fā)工程師應(yīng)該具備兩方面的知識:測試知識和開發(fā)知識。之所以把測試排在前面,因為這里的開發(fā)建立在測試實踐基礎(chǔ)之上。其中測試知識又分為兩部分:一是理論知識,軟件行業(yè)發(fā)展至今也就幾十年,測試方面的積淀就更少了,所以要掌握這部分對于一般人來說不是難事;另外一方面是經(jīng)驗知識,主要在項目測試過程中積累,很多系統(tǒng)的測試點、風(fēng)險點都需要有豐富的經(jīng)驗來評估,這也是資深的測試工程師價值所在。開發(fā)知識當(dāng)然和開發(fā)工程師差不多了,不再多說。在軟素質(zhì)方面,測試開發(fā)工程師應(yīng)該具有更好的組織溝通協(xié)作能力?,F(xiàn)在許多公司都在推行全流程保證,QA為了發(fā)揮更大的影響力以及保證項目的質(zhì)量,需要從需求到設(shè)計,測試到上線全方面跟蹤參與,這就涉及到了許多跨部門跨小組的溝通,即便在小組內(nèi)溝通也極其頻繁,工程師需要很好的表達(dá)能力。同時,由于測試在軟件生命周期中處于靠后的位置,所以在將許多工作推行到上游的環(huán)節(jié)中存在較多阻力,這也要求工程師有較好的統(tǒng)籌和協(xié)作能力,最終達(dá)到目的。
3、測試的本質(zhì)
2V(Validation和Verification)是QA的基本職責(zé),即保證兩點:Validation,軟件按照既定的需求開發(fā),沒有偏離產(chǎn)品方向;Verification,軟件在滿足需求的基礎(chǔ)上保證其正確性,從功能、性能、安全等各個方面驗證。傳統(tǒng)意義上,第二點是大部分QA的意識,即找bug,認(rèn)為一個軟件找到的bug越多自己的價值越大,實際上QA的最高境界是軟件在測試的時候找不到bug,因為在軟件的啟動階段你就開始了質(zhì)量保證工作,從需求、設(shè)計、編碼這些前期階段就杜絕了bug產(chǎn)生的可能。當(dāng)然,以上說的有些理想,但本質(zhì)是什么?軟件背后是人,是PM(測試項目經(jīng)理)制定的需求,是RD進(jìn)行開發(fā)的, 那測試背后實際上測的是人而不是軟件。人總是可能存在思維漏洞的,人總是可能犯錯誤的,所以永遠(yuǎn)會有bug,但有些人心細(xì),有些人負(fù)責(zé),自己開發(fā)完后會自己進(jìn)行單測、功能測試,以致后續(xù)能發(fā)現(xiàn)他的bug已經(jīng)很少了。明白了這一層就不要單純從技術(shù)角度來思考測試。
4、走得更遠(yuǎn)
不可否認(rèn),現(xiàn)在許多測試?yán)碚摚瑹o論白盒測試還是黑盒測試,無論單元測試、集成測試還是系統(tǒng)測試,看似屬于測試人員研究的專利,實際上大部分的方法論都是開發(fā)人員提出來的。再一次證明,不參與軟件主體的研發(fā)工作是不可能深入理解測試的,所以開發(fā)人員需要具備的開發(fā)能力和技巧測試人員也是需要具備的。當(dāng)然由于項目的安排和時間等各方面的原因,測試人員能難有較多的開發(fā)機(jī)會,但這不妨礙你不斷地學(xué)習(xí)。另外,測試可以涵蓋的方面很多,但人的精力畢竟有限,測試開發(fā)工程師也必須擁有自己的核心競爭力,選定一個方向是個不錯的做法,致力成為某方面的專家,比如單元測試(不要認(rèn)為是開發(fā)人員做的,很多開發(fā)人員沒有單測意識和技巧)、性能測試、安全測試。最后是測試開發(fā)工程師需要培養(yǎng)自己的全局掌控能力,這個是在職業(yè)過程中有意培養(yǎng)的,公司現(xiàn)階段的任務(wù)是什么?側(cè)重點是什么?在大公司需要順勢而為,QA的本職工作是保證質(zhì)量,需要借助與流程、工具和其他外部資源,所以在工作的時候盡量與大方向契合。
第三方測試服務(wù)平臺:既是挑戰(zhàn),更是機(jī)遇
目前國內(nèi)也有一些第三方的測試服務(wù)平臺,其中最著名的比如Testin云測試最近推出的Testin眾測服務(wù),匯聚了10萬名國內(nèi)移動互聯(lián)網(wǎng)頂尖的測試、QA專家,從服務(wù)對象來看,屬于較大規(guī)模的專注移動App的專業(yè)眾測平臺。也許在測試人員看來,這種垂直型專業(yè)平臺會吸引一些APP團(tuán)隊減少測試人員的使用,但反過來看,如果一個測試人員加入到這種類似的眾測平臺里,既能在不影響本職工作的同時,積累更多的測試經(jīng)驗,獲得更多的勞動回報,又能找到一個與眾多測試人員分享交流的機(jī)會。所以說第三方測試服務(wù)平臺對于測試人員來說是挑戰(zhàn),更是機(jī)遇。
最后想說的是,無論在大公司還是小公司,測試人員想要發(fā)展,壓力肯定不會小,心態(tài)就很重要了,以創(chuàng)業(yè)者而不是打工者的心態(tài)來工作看待很多問題就截然不同了。燕雀安知鴻鵠之志?