生科轉資工3:入職趨勢一週年1

回顧生科轉資工的我,入職趨勢科技一週年QA的大小事。時差問題如何克服?多團隊專案到底能多雷?能多心累?利用科學方法除錯?與infra團隊合作所遇到的問題與改善?員工旅遊去考潛水證照?第一次潛水就掛彩?

文章連結

  1. 生科轉資工3:入職趨勢一週年1
  2. 生科轉資工3:入職趨勢一週年2


一、一週年貢獻

我自己是在趨勢科技的終端 (endpoint)團隊當任測試(QA)工程師,所謂的終端就是客戶實際上會看到的軟體,而我們負責的終端軟體是Windows Deep Security Agent (DSA),關於DSA每版更新紀錄可以在這邊的官方文件找到。以下是我在趨勢一週年的主要貢獻:

  1. 2023-03-01:Onboard
  2. 2023-05-29:Self-protection enhancement
  3. 2023-07-01:Automation pipeline account migration
  4. 2023-10-26:Process Memory Scan
  5. 2023-11-15:L integration project
  6. 2023-12-12:Widows11 23H2
  7. 2024-02-15:Automation pipeline migration
  8. 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人員是位於加拿大的團隊,因此我跟他溝通時,會遇到時差問題。不過幸好他是台灣人,所以沒有語言問題。那我如何克服時差問題?

  1. 如果要語音溝通,我會選擇台灣時間早上9-10點,加拿大時間約晚上6-7點。
  2. 如果要文字溝通,我會先留言給對方,明天工作時就會拿到訊息,所以會有一天的時間差。
  3. 如果我不想要等時間差,我就會晚上11點打開teams即時回覆他的訊息,跟對方尬聊。

2. 專案學習

  1. QA要和RD密切合作:如果可以,QA最好從最初的開發會議就要加入參與,不然就會像我在這專案是沒參與到任何設計討論,結果我就只能事後望文生意以及和RD不斷詢問。
  2. 除錯資訊:對方沒有在設計文件中附上除錯資訊,但這部分是QA可以先要求RD附上。不然我後續要除錯時,只能try and error,這樣除錯成本會很大。
  3. 學習QA的完整流程:寫測試文件 -> 手動測試 -> 自動化測試
  4. 測試文件我會附上:功能背景與簡介、測試方法、測試案例、除錯資訊、參考資料
  5. 完整的測試案例:測試案例非常重要,所以我會召集所有人,一起審查案例夠不夠完整?自動化案例要選哪些情境?案例可以分成:功能測試、開關測試、安裝卸載測試、輸入測試、壓力測試

(二)第一個與團內合作專案: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樣事物要檢查:

  1. A團隊(模組團隊1)
    1. A模組版本
    2. 串接的程式碼W
  2. B團隊(模組團隊2)
    1. E模組版本
    2. U驅動程式版本
    3. U使用的pattern版本
    4. U所支援的作業系統版本
    5. 樣本不能是白名單

這個專案到我手中的時候,已經是最後的驗證階段,所以我並沒有參與任何開發階段。因此我一開始就矇矇懂懂的照著別人設計好的測試方法驗證,然後更悲慘的是要檢查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. 專案問題與改善:

    1. 不了解整合時所涉及到的模組與版本:
      1. 瘋狂求助於同事:由於我太菜,對於產品架構不是很懂,這部分只能多問。
      2. 把所有關係人拉到群組討論:這點我到中後期才把九成人找齊,也因為集思廣益,才能找出問題。
      3. 檢查版本問題:此專案,我在版本問題吃了很多虧,但這明明是一件只要有檢查,就可以解決的事情,所以隨時做好版本檢查,是良好習慣。
    2. 串接的程式碼沒寫好:這部分讓我學到,我們應該要做好自己應做的檢查,並且善用工具指出問題點。

    相關文章


    參考資料

    1. TrendMicro (2024) What's new in Deep Security Agent? Windows. Deep Security Help Center [Accessed by 2024 March]
    2. TrendMicro (2024) Behavior Monitoring exception failure in Deep Security Agent (DSA). Business Success [Accessed by 2024 March]

    留言