做了十年軟件測試,感悟都在這里!
文章鏈接:https://mp.weixin.qq.com/s/syMn2j46p1mdYynxtJPwlg
做了那么久測試,你真的知道測試是做什么的嗎?
測試人員的工作
看到這個問題,你是不是覺得有點傻?事實上,其實有很多與我們合作的同事并不清楚。下面我們以一個完整的項目,來介紹一下測試人員的工作究竟有哪些。
(1)項目立項,需求產出
很多人都在強調要測試前置,可是這是有條件的,如果你不按項目流程來走,都開發完相應的功能了才告訴測試,測試如何前置啊?所以在項目立項后,需求產出階段要進行需求評審,確定好開發人員,測試人員,一起參與需求評審會議,此時三方人員根據各自的經驗和專長,來討論一下需求。開發從技術實現角度,測試從用戶角度來對需求提出自己的意見,力爭通過需求評審達到三方意見一致。一起排出項目周期及各個環節的關鍵日期,交付物等。
(2)需求開發,測試用例編寫
在開發人員開發需求的時候,測試人員必須確定測試方案,編寫相應的測試用例,通過xmind,
excel編寫冒煙測試用例,或者通過編碼來編寫冒煙測試用例,以供開發提測的時候進行自測;同時編寫全面的測試用例,組織三方人員進行用例評審,進行測試必要的前期準備,如測試數據,測試環境等,監控項目周期各個環節執行的情況,如果出現任何風險及時預警。
(3)代碼提測,測試階段
在開發提測后,需要進行測試驗收,驗證冒煙測試用例的執行情況。如果冒煙測試通過,則需要借助于各種測試工具,測試代碼,測試平臺等進行具體的測試工作。如果有特殊的需要,則去開發相應的測試工具,添加自動化測試用例或是測試平臺的新功能等;同時需要了解開發的代碼實現原理,評估出影響范圍,進行必要的回歸測試。評估bug的級別,與相關人員進行交流和跟蹤問題。
(4)上線與交付
在測試環境,仿真或是沙箱下測試完成后,就到了上線與交付階段了。如果公司有完整的測試平臺可以直接上線,或是由運維的同學進行上線的話,就根據流程準備相應的資料,安排上線。上線完成后,在線上回歸相應的功能,以及可能影響到的功能。
職業技能之溝通技能
當然,上面都是按項目工程的流程來進行的工作,其他還有很多軟技能也是非常必要的:
(1)項目立項,需求產出
當你遇到一個bug的時候,如何恰當地提bug?如果你用的是bug管理平臺,那就把bug描述清楚,復現步驟寫詳細點兒。
但是要給開發人面反饋的時候,如果一個開發人員比較活躍開朗,容易交流,就事論事描述清楚即可;如果一個開發人員技術相當牛,但是不愛交流的話,你就應該說:“我發現一個和需求不一樣的地方,是不是我測試有問題,你能不能看一下?”讓他自己發現問題比較容易接受。
(2)總結經驗,指導未來
在平時工作中要善于總結問題,在后面遇到同樣的問題的時候能快速解決。總結與相關部門合作的經驗,比如哪個部門的人比較墨跡,需要提前溝通;哪個人在合并代碼,提交的時候容易出錯,就需要重點關注等等。
測試人員的工作還是比較復雜的,能大能小,大可以包羅萬象,項目經理,公司CTO的職責;小只需要借助于測試手段,驗證一下需求即可。
職業技能之技術技能
其次,測試人員需要具備哪些能力呢?我是這樣認為的,這個行業入門容易,但想要玩轉測試,這就對一個人的綜合素質要求比較高了。
根據招聘崗位描述和個人發展經驗來看,測試的技術是要求越來越高:
1、基本測試技能
最初的功能測試要求基本的測試技能:如需求分析,會通過如邊界值法,條件覆蓋等手段來編寫測試用例,測試環境的部署(有的時候也不需要部署環境),Bug的定位與準確描述,Bug驗證及回歸測試等。加上一些與人溝通和交流的技巧,簡單的測試管理工具如jira的使用,基本就能勝任測試工作。
2、腳本編寫和工具的使用
隨著業務的發展,會有不同場景需要一些重復性的工作,或是大量數據日志的處理,此時就需要通過編寫一些腳本代碼,如python, shell等來處理這些工作。
同時會引入如PostMan, LR, Jemter,
QTP等等的工具來輔助測試,進而達到提高效率和擴大測試覆蓋面的目的。當然我們測試人員就需要具備相應的編碼能力,以及快速學習各種工具,或是可定制化合適的測試計劃的能力;此時如果你有這樣的能力,會很受歡迎的。
3、自動化測試實施與開展
具體不知道是從什么時候開始,招聘測試的崗位要求上都會有這么一條“會自動化測試”,可是進入工作后是否真得進行自動化測試,那就不得而知。
但是要做自動化測試,就需要具備熟練使用測試框架如phpunit,unittest,junit,TestNG,Webdriver,Appium等主流的框架,或是其他公司開源的二次開發的框架,如Macaca,KIF等;而且不管是什么自動化測試(接口自動化測試,Web自動化測試,App自動化測試,Service自動化測試),最終都會做成持續化集成(CI)=測試框架+測試用例+Jenkins+Report。
當然也有對開源框架做二次開發,集成業務邏輯函數,用例管理,測試計劃管理,日志管理,報告生成等功能于一身,形成新的測試框架的。
4、測試平臺的開發
在有一定的技術積累的前提下,秉承互聯網整合資源的傳統,測試行業也開始了整合各種測試資源。如先前公司做的環境管理平臺(整合代碼管理,環境部署,自動化測試,上線流程等),服務化管理平臺(整合服務開發與部署,服務的執行與管理,測試用例與測試計劃管理,業務測試流程管理等)等各種平臺,方便大家通過平臺進行一站式測試,降低測試成本,提高測試質量和效率。
此時就要求測試人員具備通過平時的工作提取平臺需求的能力;網站開發能力通過一門編碼語言如java,
python,php等開發后端服務,前端如Bootstrap+jquery,vue等框架設計前端頁面;前后端聯調與測試的能力;網站部署與運維的能力,如apache,
tomcat, mysql, mongodb, docker等等。
要想做好測試平臺的開發,幾乎要掌握軟件工程涉及的各個環節,雖然不需要精通但是最低也要會使用,集各家所長于一身,才能形成自己的一套拳路,立于不敗之地。
5、測試架構與綜合能力
當你的技術達到一定的能力,在公司工作年限夠久,很受領導重視的時候,就會相應地走到管理崗位。但目前的管理也越來越難做了,不僅要求管理要有套路,還要求技術上要有方向。所以要求你有測試架構能力,你對于目前的測試工作有什么想法?準備引入什么技術或是方案來提高測試效率?投入產出比如何?
還要注意團隊的發展,就算你的架構能力再強,沒有具體的實施人員,也很難實現的。一頭狼帶著一群羊也沒有什么戰斗力的,所以要有計劃的提高團隊的整體能力,最終形成群狼效率,頭狼一聲吼,群狼去沖殺。
在群狼中也要進行詳細的分工,保證核心員工的戰力。誰擅長沖鋒,誰擅長廝殺,誰又擅長斷后?要安排到正確的位置,防止因為安排不當造成整體團隊戰力的下降。同時還要在合適的時機表揚戰將,給其更多的肉,因為戰力強勁的員工如果受委屈了,會隨時離開團隊的,他的發展空間很大,到哪兒都有發揮的機會。
如果一個團隊缺少戰力強勁的戰將,執行力低下,最后只能維持基本的生存,頭狼再好的想法也很難實現。
測試心得
測試是地處中原,輻射八方的一個行業。怎么可能會有瓶頸之說呢?以功能測試為中心,進行引入各種測試工具,測試腳本,自動化測試,測試平臺等等。
同時我們需要了解業務需求的來源,內容;開發人員代碼架構,實現的原理與影響范圍;運維人員的部署,打包發版與相應的問題處理;銷售人員的銷售效果與客戶反饋,以及最終這個需求對公司戰略目標和發展方向的影響。而不僅僅是發現bug,驗證bug的工作?
你目前都關注這些方向了嗎?還是天天在坐井觀天,抱怨連連呢?還是應該靜下心來,好好思考測試究竟應該如何做,相應的方面有沒有做到?這是一個互聯網行業,涉及的內容浩如煙海,具體的技術更新更是日新月異,怎么可能沒有東西可學呢?
只有你具備了相當牛X的能力,再會過的更加自由,今年當一年半載的測試,明年就去做幾個月的開發玩玩,后年可能去做個產品經理,嘗一下鮮也未嘗不可嘛!此時就不用擔心就業機會,薪資待遇,加班等問題了,而且隨著你的能力越來越強,就不會自傲自滿,否則你的能力根本無法提升。
道法自然,沒事多學點東西;選擇你所愛的,愛你所選擇的;使自己和家人過的開心快樂,比什么都強!
——內容引自微信公眾號《隔壁老王說測試》https://mp.weixin.qq.com/s/syMn2j46p1mdYynxtJPwlg