做了三年黑盒測試,我終於對它有了這些理解

新夢想IT發表於2022-05-17


前言

文章內容為本人這三年來在嵌入式軟體測試(黑盒)上的一些積累。

說起來也挺快的,畢業三年的時間就這樣過去了,在兩家公司工作過(現在這家是第二家),這幾年的測試專案基本都是圍繞著嵌入式軟體,同時需要兼顧測試 APP端、Web端功能、Web後端介面(Postman),只是測試業務重心還是在嵌入式軟體上。

為什麼測試的這麼雜呢,其實這些全部加起來只是一個產品,只是因為目前就只有我一個測試,所以整套系統都是由我一個人來測。

就拿我現在這家公司做的一個視訊會議系統來說吧,整套系統包含有硬終端( Linux端)、APP端、Web端(用於後臺賬戶/會議管理等)、PC端組成。

接觸過嵌入式軟體測試的同學應該都明白這些事,下面我就來說說自己這幾年對嵌入式軟體測試的理解和看法吧,歡迎留言補充或討論,勿噴喔 ~

 

什麼是嵌入式系統?

嵌入式系統是一種完全嵌入受控器件內部,為特定應用而設計的專用計算機系統 ,也 是用於控制,監視或輔助操作機器和裝置的裝置。

 

嵌入式系統還可以定義為以應用為中心,以計算機技術為基礎,軟硬體可裁剪,功能、可靠性、成本、體積、功耗要求嚴格的專用計算機系統。

嵌入式系統由嵌入式硬體和嵌入式軟體兩部分組成,硬體是支撐,軟體是靈魂。

嵌入式系統按實時性分類,可分為非實時性,軟實時性和硬實時性。

其中:

硬實時性是指系統對響應時間有嚴格要求,如果響應時間不能滿足,就要引起系統崩潰或致命錯誤;

軟實時性是指系統對響應時間有要求,但是如果系統響應時間不能滿足,不會導致系統出現致命的錯誤或崩潰。

 

 

什麼是嵌入式軟體?

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

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

嵌入式軟體的特徵:

系統核心小

專用性強

 

系統精簡

高實時性作業系統

硬體和軟體的相輔相成

 

同商用軟體比較

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

 

相同點

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

 

不同點

1、需要的測試環境不同

測試嵌入式軟體的時候,你需要準備的環境是一整套裝置,裡面可能包含電源、網線、高畫質線(各種影片傳輸線)、交換機、攝像頭、麥克風、 隨身碟、路由器等等。

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

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

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

在測試嵌入式軟體的時候,如果出現某個功能無法實現,有可能是確實是功能實現問題,有可能是記憶體問題,有可能是硬體支援問題,有可能是驅動問題,有可能是網路問題,有可能是硬體物理介面問題。

雖然看似這些問題與我無關,但是如果是硬體支援的問題,你丟擲 Bug,開發排查完之後發現是你自己沒有按照規格接入所能支援的硬體,到時候尷尬的是不是你?

再比如 POE網口如果沒有接入支援POE的網線,造成問題是不是你的不專業了等等,我們既然是測試工程師,那就應該要有工程師的專業程度來完成工作。

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

3、需要的技能點不同

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

在測試嵌入式軟體的時候,你要接入網線,進行網路配置、接入交換機、瞭解網路通訊,資料傳輸等等。也就是說嵌入式軟體測試你需要的是(紮實的軟體測試理論和測試方法 +計算機網路相關基礎知識)。

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

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

目前系統資源有限

與硬體系統緊密關聯

執行平臺多樣化

交叉式的測試模式

系統的安全性、可靠性、系統執行結果的正確性等等

嵌入式軟體的測試策略與一般的商用軟體有很大的區別

 

難易程度

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

我感覺在黑盒測試中,嵌入式軟體測試是要比商用軟體測試難度高的,我只站在嵌入式軟體的黑盒測試角度來發言。

為什麼這麼說呢,我暫時只想到以下幾點:

1、硬體平臺不同導致測試難度增大

由於嵌入式軟體是跟硬體平臺緊密關聯的,也就是說同一套軟體,如果移植到另一個平臺上,就要重頭到尾的測試一遍,在工作量上就比商用軟體大,出錯機率也會提升,相應的測試難度也會提高一點。我就遇到一個專案需要跑在兩個平臺的情況。

2、測試環境導致測試難度增大

我可以很肯定的說,同一套裝置在 A環境操作正常,我只要換一個交換機,搭建一個B環境,就很有可能會出現Bug。

所以有經驗的嵌入式軟體測試同學在遇到客訴的 Bug時第一時間都是問當時的環境是什麼,裝置有哪些,操作步驟是什麼,必要時採取將裝置全部寄回來複現。

3、硬體平臺效能導致測試難度增大

硬體平臺的晶片效能是肯定沒有電腦上的 CPU這麼厲害的,所以在測試的時候,我們往往會出現一些硬體效能上的問題導致一些Bug偶現,這對我們測試人員來說,想要找到一個偶現的Bug是非常的難,需要採取工具來跟蹤操作步驟列印log。

4、外接裝置導致測試難度增大

生活中基本上的嵌入式軟體都是需要外接其他的裝置的,比如接入 隨身碟、攝像頭、麥克風等等,在測試時如果發現某個工作無法實現,我們需要從三個方面去考慮:

是不是軟體的功能 Bug;

是不是硬體物理介面損壞問題;

是不是接入的外設與軟體協議有問題或者驅動有問題等等原因增加了測試難度。

5、嵌入式軟體測試相對來說比較獨立於軟體測試

相關的資料也是比較少的,並不像商用軟體測試一樣,只要一搜尋,就能找到測試方法和一些測試文章。嵌入式軟體測試更多的是一個實戰,每一個應用場所的嵌入式軟體測試的思維方式不一樣。

總結

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

 

祝各位同學在測試的道路上越來越好,一起加油哈!

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2894777/,如需轉載,請註明出處,否則將追究法律責任。

相關文章