文/樊茜 何雨昂 黃葵 楊帆 溫力
伺服軟件為了保證時序指令的接收正確,采用了雙重“三取二”時序碼判斷和雙中斷協同處理時序指令的方法。為了考核該軟件在復雜時序下的工作狀態是否能正常運行,本文提出了一種面向復雜時序的伺服軟件測試用例設計方法。結合配置項測試環境,使用黑盒的測試手段不僅可以對軟件的功能、性能、接口等指標進行考核,還能對軟件可靠性進行測試。
黑盒測試是將軟件視作一個完全不能打開的黑盒子。在測試時,完全不忽略程序內部結構和邏輯,僅通過軟件對外接口進行測試,檢查軟件功能是否按照任務書或需求規格說明書的規定正常運行,程序是否能適當地接收輸入數據而產生正確的輸出信息。
黑盒測試的用例設計技術常用的有3種:等價類劃分法、錯誤猜測法、邊界值分析。下面具體地來介紹這3種測試用例設計技術。
等價類劃分是把程序的輸入情況劃分成若干部分,然后從每個部分中選取少數代表性數據當作測試用例,每一類的代表數據在測試中的作用等價于這一類中的其他值。也就是說,我們認為如果某一類中的一個例子發現了錯誤,這一等價類中的其他例子也能出現同樣的錯誤。這樣就可以用少量代表性的測試數據取得較好的測試結果。等價類劃分有兩類:有效等價類和無效等價類。有效等價類指的是符合軟件需求規格說明書的有效輸入;無效等價類指的是其他任何可能的輸入條件(即不正確的輸入值)。設計測試用例時,要同時考慮這兩種等價類。因為軟件不僅要能接收合理的數據,也要能經受意外的考驗,這樣的測試才能確保軟件具有更高的可靠性。
錯誤猜測法就是基于經驗和直覺推測程序中所有可能存在的各種錯誤,有針對性地設計測試用例的方法。錯誤猜測方法的基本思想:列舉出程序中所有可能容易發生錯誤的特殊情況,根據他們設計測試用例。該方法依賴于用例設計者的經驗,如果用例設計者經驗豐富,則使用該方法可以快速的找到存在的問題。該方法一般用于用例補充。
通常大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。使用邊界值分析方法設計測試用例,首先應確定邊界情況。通常輸入和輸出附近的邊界點,就是邊界測試需要著重考慮的測試情況,所以應當選取正好等于、剛剛大于或剛剛小于邊界的值作為測試數據,而不是選取等價類中的典型值或任意值作為測試數據。
伺服軟件功能測試用例設計方法以黑盒測試方式為基礎,根據不同分解出的不同需求,選擇不同黑盒測試的用例設計技術,全方位的考核伺服軟件指標。以伺服軟件的接收時序指令功能為例,講解針對復雜時序的功能測試用例設計方法。
伺服軟件對伺服系統不同工作狀態進行了定義。定義的時序碼定義如表1所示。
根據任務書要求,時序指令共發送n次,每次發送數據為m個相同的字。當伺服軟件收到指令后,實現“三取二”邏輯,得到正確的時序碼。當3次時序指令中要有2次接收到時序碼,即執行相應的時序動作。其中“三取二”操作指,數據中至少兩個數據一致,取其一致的值作為讀取的數據值。
第一步確定輸入條件,然后為輸入條件確定等價類。這些步驟都以表格形式記錄在表2中。
下一個步驟應該是編寫一組測試用例測試用例設計覆蓋了所有有效等價類,方能對該伺服軟件針對接收時序指令功能的進行全面的考核。設計用例如下:
(1)連續發送n條時序指令,m個時序碼均為0x1111。
(2)連續發送n條時序指令,m個時序碼均為0x2222。
(3)連續發送n條時序指令,m個時序碼均為0x1234。
(4)發送n-i條均為0x1111的正確時序指令,i條錯誤時序指令(1<i≤n)。
(5)發送2n條時序指令,其中每n組僅有一條指令為帶有正確時序碼。
(6)發送1條時序指令,m-j個數據為正確時序碼且一致(1<j≤m)。
(7)發送1條時序指令,m+1個數據為正確時序碼且一致。
接口測試需要依賴半實物仿真環境進行,結合半實物仿真環境的目標機、仿真機系統和環境模擬設備,最大程度上還原伺服軟件的實際工作環境。其中目標機包括伺服控制器,用來運行被測軟件;仿真機系統包括接入總線板卡,安裝了測試工具軟件、編譯軟件、仿真測試軟件等軟件的工控機,實現總線及設備的模擬與仿真;環境模擬設備包括高精度可調直流電源、示波器等。
結合伺服軟件接半實物仿真環境,使用硬件故障、數據故障、操作故障等故障注入技術,能夠全面考察伺服軟件的接口性能、容錯機制和異常數據處理的能力。
文本以使用1553B總線的伺服軟件為例,描述基于黑盒測試的伺服軟件接口測試用例設計方法。伺服軟件對需要交互的指令都配置了約定的命令字。定義如表3所示。
根據要求,上級系統只能對RT(N)的站點進行指令下發,且站點內部只有子地址1~4為合法子地址。使用等價類劃分法,設計用例如下:
(1)當命令字消息塊中的RT地址為RT(N),軟件是否響應發送給RT(N)的消息。
(2)當命令字消息塊中的RT地址為非RT(N),軟件是否響應發送給其他RT的消息
(3)伺服軟件是否響應發送到合法子地址1~4的總線命令。
(4)伺服軟件是否響應發送到非法子地址的總線命令。
同時根據測試人員經驗,1553B寄存器自檢異常和1553B總線物理斷連也會導致1553B指令接收失敗,所以使用錯誤猜測法新增用例如下:
(1)1553B總線對自身寄存器自檢正常時,軟件是否能相應合法指令。
(2)1553B總線對自身寄存器自檢異常時,軟件是否能相應合法指令。
(3)1553B總線斷開后再接通是否能正常響應總線消息。
為了提升嵌入式軟件的可靠性,嵌入式配置項測試的測試類型已從過去的6類測試,提升為11類測試,新增的有靜態分析、邊界測試、安全性測試、可靠性測試和強度測試。尤其,在邊界測試時常常能發現軟件的數據處理異常和邏輯異常的情況,所以邊界測試已成為配置項測試的重中之重。
本文以伺服軟件的自檢指令為基礎,選用邊界值分法設計測試用例。按照任務書要求伺服軟件,伺服軟件需在上電后對指定外備進行自檢,以確定伺服系統已進入正常工作狀態。
部分自檢項和判斷依據如表4所示。
第一步確定邊界,確定電機轉速、功率電壓、+5V電源電壓、+12V電源電壓和-12V電源電壓的正常數據的邊界如表3所示。根據邊界值分析法的要求,通過直流可調電源給控制器的輸入接口,選取正常邊界值進行輸入,還應設計超出范圍的測試值,充分驗證所有測試情況。
第二步是編寫充足的測試用例,覆蓋所有邊界,對該伺服軟件自檢功能的邊界處理進行全面考核。設計用例如下:
(1)功率電壓輸入0,+5V電源電壓輸入4.9,+12V電源電壓輸入11.8,-12V電源電壓輸入-12.9。
(2)功率電壓輸入300,+5V電源電壓輸入5.1,+12V電源電壓輸入12.2,-12V電源電壓輸入-11.9。
(3)功率電壓輸入-0.1,+5V電源電壓輸入4.8,+12V電源電壓輸入11.7,-12V電源電壓輸入-13。
(4)功率電壓輸入300.1,+5V電源電壓輸入5.2,+12V電源電壓輸入12.3,-12V電源電壓輸入-11.8。
(5)功率電壓輸入0.1,+5V電源電壓輸入4.91,+12V電源電壓輸入11.81,-12V電源電壓輸入-12.8。
(6)功率電壓輸入299.9,+5V電源電壓輸入5.09,+12V電源電壓輸入12.1,-12V電源電壓輸入-11.91。
通過研究復雜時序下的伺服軟件測試用例設計方法,設計了具有全面檢查性的測試用例,并已在實時性可控性強的測試平臺上進行實際測試驗證。該方法已經在多個軟件項目的測試中得到了成功的應用,發現軟件重大缺陷及漏洞多項,為軟件可靠設計與評價提供理論與技術支持,降低了由于解決軟件缺陷造成的直接經濟成本。

表1:伺服軟件的時序碼定義表

表2:等價類

表4