在芯片公司做SQA是一種什麼樣的體驗?


今天,隨着集成電路的大力發展,沒有誰會懷疑芯片在經濟和社會發展過程中的重要性吧。沒錯,芯片確實很重要,而最近它又多了一個政治屬性。大多數人對芯片的第一反應是神祕,高端,是一個集成度很高的集成電路或者硬件。不爲人知的,芯片除了那些硬邦邦的屬性外,也會涉及到軟件層面(驅動層),我們今天能在手機上看視頻,圖片和電影,全都要依賴這些軟件驅動層支持的庫來實現。接下來,我以一名曾經在芯片設計公司擔任芯片驅動測試工程師(SQA,下同)的身份爲大家講解芯片驅動層測試中小祕密。

1 芯片驅動層是什麼?

芯片中的驅動層,介於底層硬件與上層應用之間,這層主要負責與硬件層通信,同時把硬件層的結果經過處理後傳遞到上層應用。這一層主要是用於對於各種庫的支持,比如GPU芯片中常用的OpenCL、OpenCV、OpenGL,OpenVG,OpenGLES,WebGL等等,編程語言主要是C或C++寫成的源碼經編譯後形成二進制文件。

2 芯片驅動層測什麼及怎麼測?

那麼,芯片驅動層測試什麼呢?答案很明顯,就是要確保對第1節提到的這些庫的支持。測試類型包括單元測試,壓力測試,性能測試和迴歸測試。

  • 對於單元測試而言,主要是針對每個庫中所包含的函數進行各種全遍歷測試。比如對於OpenCL庫來說,它裏面包含諸如printf,math等庫函數,針對printf函數,要測試int,string,char,double,uint類型等進行全面測試。只有當這些庫函數的測試用例全部通過,才能確保這款芯片支持該庫。
  • 對於壓力測試,主要是在每款芯片的後臺同時運行幾個庫函數的二進制文件保持24小時或者36小時,保證每個測試用例在規定時間內都能正常運行,這纔算通過了壓力測試;
  • 對於性能測試,主要是針對OpenGL,OpenGLES和OpenVG等庫函數,測試每個用例性能參數,如fps,響應時間等參數。我們平常使用安兔兔測試手機GPU或CPU等性能,會出來一些性能參數,這些參數的值就代表了芯片的性能。
  • 對於迴歸測試來說,由於這些庫函數一般不怎麼變化,所以特別適合做迴歸測試,一般是通過自動化腳本去每天夜間跑遍所有用例,第二天過來查看測試結果。

3 芯片驅動層測試工程師的日常工作?

芯片測試工程師的日常工作主要包括以下幾個部分:

  • 1 準備測試環境,按照文檔製備嵌入式操作系統;
  • 2 在1中的環境上執行測試用例,如sh case01.sh, 查看測試結果;
  • 3 每日下班前,執行迴歸測試,查看測試結果;
  • 4 每次release前,進行全面測試,包括性能測試,壓力測試,冒煙測試和迴歸測試;
  • 5 查看2,3和4的結果,根據結果提交bug,與開發定位合作解決問題;

以上就是SQA的日常工作流程。從以上流程可以看出,SQA主要集中於測試執行與缺陷處理環節,不涉及用例設計。事實上這正是大部分芯片公司SQA的日常工作狀態。那麼測試用例的設計誰來完成呢?答案是芯片軟件開發工程師來完成。對於SQA來說,這對我們地職業發展很不利,接下來在第4節,我們將詳細地介紹芯片驅動測試共工的侷限性。

4 芯片驅動層測試的侷限性?

第3節的最後談到了SQA日常工作的侷限性,接下來我們詳細講解一下侷限性:

  • 1 芯片驅動測試中,不涉及用例設計,只需執行用例。而測試人員最能體現價值之一的用例設計部分,完全是個空白。長此以往,不利於軟件測試用例的設計能力。
  • 2 芯片驅動測試中,測試技術求穩,基本最新的測試技術脫節,編程語言以shell爲主,python爲輻。經常在這種工作環境下工作,SQA不容易追求業界最新技術。而對於互聯網或IT企業來說,對於測試開發人員需求很大,要求也很高,即要求會用例設計,還要掌握一門語言(Python/Java/C++),對於SQA們來說,以後跳槽時難度不小。
  • 3 測試人員歷來在公司中處於弱勢地位,這種情況在芯片設計企業中更爲嚴重,筆者曾經親眼見過開發人員在未檢查代碼語法錯誤下就提交代碼,導致測試阻塞。而且這種低級錯誤經常發生,即使測試人員指出這種問題,開發人員依然我行我素。歸根到底,是企業自然而上對測試不夠重視。筆者曾經提出要做一個專門檢測這種語法錯誤的程序,也被測試組長直接拒絕。所以芯片測試公司的管理有很大的問題。

5 芯片驅動層測試的未來?

第4節談了芯片驅動測試的侷限性,只講侷限會讓人詛喪,接下來談一談芯片驅動層測試人員的未來。我一直很欣賞一句話叫:個人的命運,即要努力奮鬥,也要考慮時代背景。這句話其實已經間接地告訴我們該怎麼做,即在時代背景下努力奮鬥。具體怎麼做呢?如果你是一個對芯片測試特別感興趣的人,那麼我建議你去深入研究測試用例的設計思路,重新撿起C語言,做到知其然知其所以然;如果你想去外面的世界看看,鑽研更先進的測試技術,以後有志於做一名測試架構師,那麼進入IT/雲計算/互聯網企業歷練歷練,不僅學習測試用例的設計,而且還要學習最先進的測試技術及應用場景。如果你只想安安靜靜地做芯片驅動測試,也不想鑽研底層用例地設計思路。那麼努力積累測試管理經驗,以後往產品經理方面轉型,也是一個不錯的選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章