回顧生科轉資工的我,入職趨勢科技一週年QA的大小事。時差問題如何克服?多團隊專案到底能多雷?能多心累?利用科學方法除錯?與infra團隊合作所遇到的問題與改善?員工旅遊去考潛水證照?第一次潛水就掛彩?
文章連結
一、一週年貢獻
我自己是在趨勢科技的終端 (endpoint)團隊當任測試(QA)工程師,所謂的終端就是客戶實際上會看到的軟體,而我們負責的終端軟體是Windows Deep Security Agent (DSA),關於DSA每版更新紀錄可以在這邊的官方文件找到。以下是我在趨勢一週年的主要貢獻:
- 2023-03-01:Onboard
- 2023-05-29:Self-protection enhancement
- 2023-07-01:Automation pipeline account migration
- 2023-10-26:Process Memory Scan
- 2023-11-15:L integration project
- 2023-12-12:Widows11 23H2
- 2024-02-15:Automation pipeline migration
- 2024-02-29:Behavior Monitor failure
(一)第一個跨時區專案:Self-protection enhancement
- Deep Security Agent - 20.0.0-7119 (20 LTS Update 2023-05-29)
- Agent self-protection now secures the Advanced TLS inspection process (ds_nuagent), preventing local users with administrator privileges from stopping it.
- Self-protection可以保護某程式被其他程式關掉,所以這可以阻止小壞壞把敝公司產品關掉。
- Self-protection對象要慎選,不能亂設對象,不然有可能程式直接崩潰給你看。
1. 時差問題
這個專案是我入職的第一個主要專案,跟我合作的RD人員是位於加拿大的團隊,因此我跟他溝通時,會遇到時差問題。不過幸好他是台灣人,所以沒有語言問題。那我如何克服時差問題?
- 如果要語音溝通,我會選擇台灣時間早上9-10點,加拿大時間約晚上6-7點。
- 如果要文字溝通,我會先留言給對方,明天工作時就會拿到訊息,所以會有一天的時間差。
- 如果我不想要等時間差,我就會晚上11點打開teams即時回覆他的訊息,跟對方尬聊。
2. 專案學習
- QA要和RD密切合作:如果可以,QA最好從最初的開發會議就要加入參與,不然就會像我在這專案是沒參與到任何設計討論,結果我就只能事後望文生意以及和RD不斷詢問。
- 除錯資訊:對方沒有在設計文件中附上除錯資訊,但這部分是QA可以先要求RD附上。不然我後續要除錯時,只能try and error,這樣除錯成本會很大。
- 學習QA的完整流程:寫測試文件 -> 手動測試 -> 自動化測試
- 測試文件我會附上:功能背景與簡介、測試方法、測試案例、除錯資訊、參考資料
- 完整的測試案例:測試案例非常重要,所以我會召集所有人,一起審查案例夠不夠完整?自動化案例要選哪些情境?案例可以分成:功能測試、開關測試、安裝卸載測試、輸入測試、壓力測試
(二)第一個與團內合作專案:Process Memory Scan
- Deep Security Agent - 20.0.0-8137 (20 LTS Update 2023-10-26)
- Process Memory Scan: Anti-Malware manual and scheduled scans now support the process memory scan which scans the memory of running processes.
- Process Memory Scan可以去掃描執行中程式的記憶體,看它有沒有在壞壞。
這專案的合作,我從最初期到測試階段我都有參與到,而且合作的RD是自己團隊的資深工程師,所以合作上非常流暢。設計文件的資訊也非常豐富,除錯上也算順利,RD 都會給予即時的回饋。
(三)第一個跨多團隊專案:L integration project
這專案涉及到三個團隊(我們與兩個模組團隊),我們這邊負責把兩模組團隊開發的插件串連起來,而我負責驗證串接是否成功?這邊涉及到有7樣事物要檢查:
- A團隊(模組團隊1)
- A模組版本
- 串接的程式碼W
- B團隊(模組團隊2)
- E模組版本
- U驅動程式版本
- U使用的pattern版本
- U所支援的作業系統版本
- 樣本不能是白名單
這個專案到我手中的時候,已經是最後的驗證階段,所以我並沒有參與任何開發階段。因此我一開始就矇矇懂懂的照著別人設計好的測試方法驗證,然後更悲慘的是要檢查7樣事物,其中我只知道要檢查E模組與串接的程式碼W,其他都是我詢問不同人才拼湊出來的,然後這就是一切痛苦的濫觴QQ。
1. 心累階段ㄧ:AB輪流雷
我一開始把E模組與程式碼W整合到產品中去做驗證,結果沒通過,我就找設計測試方法的人,結果A團隊告知我要再整合A模組。接下來又沒通過,我就把三團隊的人聚集成一個群組,原本5人,後來倍增到11人。
接下來B團隊發現我所使用的樣本名字是白名單,所以樣本名要先改名才可以進行驗證,否則驗證永遠不會通過。接下來得知到要注意U驅動程式版本與其pattern版本,一開始B團隊說沒問題,後來發現pattern版本不對,換了pattern就通過驗證。
2. 心累階段二:RD雷
當我開心的以為要結束時,沒想到程式碼W在舊平台把DSA搞爛,有多爛呢?直接讓DSA沒辦法安裝A模組。一開始回報給A團隊寫程式碼W的工程師,他看了一下log,覺得可能是B團隊的問題,請我讓B團隊看,結果就是雙方都說沒問題。
所以我就去請教我們團隊的資深RD幫我一起看log,結果發現A模組根本沒有裝好,而且得到err=127 (Failed to load module, ERROR_PROC_NOT_FOUND)。我把這一資訊回報給W工程師,他回我『請救救A模組』,我整個傻爆眼。
最後我把127的資訊問我們團隊中不打不罵童叟無欺aka windows最後的良知工程師,他就回我,這就是dll呼叫到windows舊平台不支援的API,叫我使用Dependency Walker去驗證是哪些不支援的API被呼叫到。結果真的發現在程式碼W中使用到3個Dependency Walker說不支援的API,最後我就拿這些證據請W工程師修他自己的程式碼。
3. 心累階段三:OS雷
正當我覺得一切都該塵埃落定時,我在自己的windows server有通過測驗,卻發現我自己的windows x64和x86一直都沒通過測試,然後我又做了無數多次的實驗與log,甚至連噁心的full dump都收了。後來有一位B團隊工程師說,我們這E模組pattern在你的OS版本不支援此功能,我整個要炸開了!居然是因為windows版本不支援這鳥問題,害我浪費這麼多時間,而且這問題明明可以更早被解決。
B團隊說我使用的OS版本僅出現短短兩天,所以就沒加進去支援。WTF?我就天選之人,選了一個2023年只活兩天就被微軟遺棄掉的版本。然後我主管與最後的良知工程師就和B團隊關切為什麼會有版本限制問題?以及為什麼這事情沒有先提?
4. 心累階段四:效能雷
正以為終於能在截止日期(2023-12底)完成這個專案,沒想到CPU效能出問題,查了一下,發現是B團隊的E模組在搞事。所以又花不少時間在驗證B團隊給的新模組,過程中E模組直接搞爛我們5組效能測試機器,我們花了2天才搶修成功,最後CPU效能問題,直到2024-03才解決,我的心累故事這才劃下句點。
5. 專案問題與改善:
- 不了解整合時所涉及到的模組與版本:
- 瘋狂求助於同事:由於我太菜,對於產品架構不是很懂,這部分只能多問。
- 把所有關係人拉到群組討論:這點我到中後期才把九成人找齊,也因為集思廣益,才能找出問題。
- 檢查版本問題:此專案,我在版本問題吃了很多虧,但這明明是一件只要有檢查,就可以解決的事情,所以隨時做好版本檢查,是良好習慣。
- 串接的程式碼沒寫好:這部分讓我學到,我們應該要做好自己應做的檢查,並且善用工具指出問題點。
留言
張貼留言