三年多黑盒測試經驗對嵌入式軟體測試的理解

嘎嘎板正的測試工程師 發佈 2022-05-16T11:10:02.973225+00:00

文章內容為本人這三年來在嵌入式軟體測試上的一些積累吧,說起來也挺快的,畢業三年的時間就這樣過去了,在兩家公司工作過,這幾年的測試項目基本都是圍繞著嵌入式軟體,同時需要兼顧測試APP端,WEB端功能,web後端接口,只是測試業務重心還是在嵌入式軟體上。

前言

文章內容為本人這三年來在嵌入式軟體測試(黑盒)上的一些積累吧,說起來也挺快的,畢業三年的時間就這樣過去了,在兩家公司工作過(現在這家是第二家),這幾年的測試項目基本都是圍繞著嵌入式軟體,同時需要兼顧測試APP端,WEB端功能,web後端接口(postman),只是測試業務重心還是在嵌入式軟體上。

為什麼測試的這麼雜呢,其實這些全部加起來只是一個產品,只是因為目前就只有我一個測試,所以整套系統都是由我一個人來測,就拿我現在這家公司做的一個視頻會議系統來說吧,整套系統包含有硬終端(linux端),app端,web端(用於後台帳戶/會議管理等),PC端組成。接觸過嵌入式軟體測試的同學應該都明白這些事,下面我就來說說自己這幾年對嵌入式軟體測試的理解和看法吧,歡迎留言補充或討論,勿噴喔~~

什麼是嵌入式系統?

  • 嵌入式系統是一種"完全嵌入受控器件內部,為特定應用而設計的專用計算機系統"。
  • 嵌入式系統是「用於控制,監視或輔助操作機器和設備的裝置」。
  • 嵌入式系統還可以定義為「以應用為中心,以計算機技術為基礎,軟硬體可裁剪,功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統。」
  • 嵌入式系統由嵌入式硬體和嵌入式軟體兩部分組成,硬體是支撐,軟體是靈魂。
  • 嵌入式系統按實時性分類,可分為非實時性,軟實時性和硬實時性。其中硬實時性是指系統對響應時間有嚴格要求,如果響應時間不能滿足,就要引起系統崩潰或致命錯誤;軟實時性是指系統對響應時間有要求,但是如果系統響應時間不能滿足,不會導致系統出現致命的錯誤或崩潰。

什麼是嵌入式軟體?

嵌入式軟體是基於嵌入式系統設計的軟體,它是計算機軟體的一種,同樣由程序及其文檔組成,可分為作業系統,支撐軟體,應用軟體三大類,是嵌入式系統的重要組成部分。

說的通俗易懂一點就是一套安裝在帶有linux系統的PCB板子上的軟體。像這樣:

嵌入式軟體的特徵:

  • 系統內核小
  • 專用性強
  • 系統精簡
  • 高實時性作業系統
  • 基與硬體和軟體的相輔相成

嵌入式軟體測試與商用軟體測試相同點和不同點(單從黑盒測試的角度來講)

相同點:

嵌入式軟體測試和商用軟體測試的目的和原則是相同的,都是為了找bug,跟蹤bug,驗證bug,使產品實現需求文檔上功能,滿足用戶需求。

不同點:

  • 需要的測試環境不同。

測試嵌入式軟體的時候,你需要準備的環境是一整套設備,裡面可能包含電源,網線,高清線(各種視頻傳輸線),交換機,攝像頭,麥克風,U盤,路由器等等…。

測試商用軟體可能就是一個安裝包,或者是一個測試URL,你需要準備的可能就是一個電腦或者一部手機。

  • 測試的思維不同。(要做到出現問題先自檢)

這裡的測試思維並不是說設計測試用例時需要的思維方式,而是在定位bug的時候,思維不一樣。

在測試嵌入式軟體的時候,如果出現某個功能無法實現,有可能是確實是功能實現問題,有可能是內存問題,有可能是硬體支持問題,有可能是驅動問題,有可能是網絡問題,有可能是硬體物理接口問題。

雖然看似這些問題雨我無瓜,但是如果是硬體支持的問題,你拋出bug,開發排查完之後發現是你自己沒有按照規格接入所能支持的硬體,到時候尷尬的是不是你;再比如POE網口如果沒有接入支持POE的網線,造成問題是不是你的不專業了等等,我們既然是測試工程師,那就應該要有工程師的專業程度來完成工作。

在測試商用軟體的時候,遇到功能無法實現,我們大部分情況下就是直接拋出bug給開發,附帶bug截圖,log和操作步驟,通常都好使。

  • 需要的技能點不同

根據這幾年的測試項目經驗,發現嵌入式軟體測試對計算機網絡原理的應用比較頻繁。

在測試嵌入式軟體的時候,你要接入網線,進行網絡配置,接入交換機,了解網絡通信,數據傳輸等等…也就是說嵌入式軟體測試你需要的是(紮實的軟體測試理論和測試方法+計算機網絡相關基礎知識).

而測試商用軟體的時候,由於環境搭建沒有太複雜,涉及到計網相關的知識比較少,需要的往往是紮實的軟體測試理論和測試方法。

嵌入式軟體測試的自身特點和測試困難

  • 目前系統資源有限
  • 與硬體系統緊密關聯
  • 運行平台多樣化
  • 交叉式的測試模式
  • 系統的安全性,可靠性,系統運行結果的正確性等等
  • 嵌入式軟體的測試策略與一般的商用軟體有很大的區別

嵌入式軟體測試難嗎?跟商用軟體測試相比哪個更加難度更高?

我感覺在黑盒測試中,嵌入式軟體測試是要比商用軟體測試難度高的,我只站在嵌入式軟體的黑盒測試角度來發言。為什麼這麼說呢,我暫時只想到以下幾點:

  1. 硬體平台不同導致測試難度增大,由於嵌入式軟體是跟硬體平台緊密關聯的,也就是說同一套軟體,如果移植到另一個平台上,就要重頭到尾的測試一遍,在工作量上就比商用軟體大,出錯機率也會提升,相應的測試難度也會提高一點。我就遇到一個項目需要跑在兩個平台的情況。
  2. 測試環境導致測試難度增大,我可以很肯定的說,同一套設備在A環境操作正常,我只要換一個交換機,搭建一個B環境,就很有可能會出現bug,所以有經驗的嵌入式軟體測試同學在遇到客訴的bug時第一時間都是問當時的環境是什麼,設備有哪些,操作步驟是什麼,必要時採取將設備全部寄回來復現。
  3. 硬體平台性能導致測試難度增大,硬體平台的晶片性能是肯定沒有電腦上的CPU這麼吊的,所以在測試的時候,我們往往會出現一些硬體性能上的問題導致一些bug偶現,這對我們測試人員來說,想要找到一個偶現的bug是非常的難,需要採取工具來跟蹤操作步驟列印log
  4. 外接設備導致測試難度增大,生活中基本上的嵌入式軟體都是需要外接其他的設備的,比如接入U盤,攝像頭,麥克風等等,在測試時如果發現某個工作無法實現,我們需要從三個方面去考慮,①:是不是軟體的功能bug,②:是不是硬體物理接口損壞問題,③:是不是接入的外設與軟體協議有問題或者驅動有問題,等等原因增加了測試難度。
  5. 最後一個導致測試難度大的原因就是嵌入式軟體測試相對來說是比較獨立於軟體測試的,相關的資料也是比較少的,並不像商用軟體測試一樣,只要一搜索,就能找到測試方法和一些測試文章。嵌入式軟體測試更多的是一個實戰,每一個應用場所的嵌入式軟體測試的思維方式不一樣。

結尾:

測試也是一個有技術難度的崗位,需要不斷的積累經驗,老手測試和新手測試最大的不同就是老手測試可以很快的定位和發現bug,老手測試可以有更多的測試方法和測試策略去找到bug,有更好的測試管理經驗和業務能力。

祝各位同學在測試的道路上越來越好,一起加油哈!! 有在廣州的做測試大佬如果覺得我還不錯的,希望可以帶我躺平。哈哈哈哈哈,加油沖!!!

關鍵字: