高宇航
(91404部隊,河北 秦皇島 066000)
聯調測試中,反應時間的測試項目需多次重復測試,且測試流程相對固定,因此以反應時間的測試項目為例,進行需求分析。
反應時間測試中設有一個指揮部位和多個監測部位。指揮部位負責測試的組織指揮和被測試設備的操作;各監測部位負責觀察相應反應現象并記錄時間。單次測試的流程具體為:(1)指揮部位依次詢問各監測部位準備情況;(2)各監測部位分別確認檢測設備初始化正常并上報準備完畢;(3)指揮部位進行倒計時,倒計時結束后操作被測試設備開始工作;(4)各監測部位記錄反應現象出現時間;(5)指揮部位依次詢問各監測部位測試結果;(6)各監測部位分別上報測試結果。
根據測試流程分析,需要協調軟件能夠由指揮部位向監測部位發送準備情況詢問、測試開始指令及測試結果詢問;各監測部位能夠上報準備情況、記錄反應現象時間及上報測試結果。
為確保測試結果準確,避免網絡延遲的影響,各部位間要保持時間同步。
根據需求分析,軟件采用C/S結構,分為指揮部位軟件(服務端)和監測部位軟件(客戶端),拓撲關系采用以服務端為中心的星狀拓撲。
對于穩定、持續的點對點通信,一般應采用TCP協議,但由于部分監測部位未架設有線網絡,只能通過無線傳輸設備達成通信。由于通信鏈路不穩定,采用TCP連接常出現頻繁的斷開現象和重聯現象,故采用UDP協議。在應用層建立重發機制和應答機制,以確保指令傳輸的可靠性[1]。
為確保各客戶端與服務端時間同步,各客戶端包含NTP校時模塊。以服務端為NTP服務器進行校時,NTP協議在局域網內校時精度可達0.1 ms,廣域網內可達1~50 ms,可滿足大多數測試的時統需求。
客戶端和服務端相互發送4種數據包,分別為心跳數據包、心跳應答數據包、指令數據包及指令應答數據包。
心跳數據包為軟件運行時自動周期性發送,用于檢測通信質量;心跳應答數據包為接收到心跳數據包后自動應答。通過心跳數據包和應答數據包的配合可檢測出通信信道的通斷、傳輸延遲及服務端與客戶端的時統偏差值。心跳周期一般設置為1 s。心跳數據包和心跳應答數據包的數據格式如表1和表2所示。
實際軟件中采用客戶端發送心跳數據包、服務端返回應答數據的模式,可減少軟件配置的復雜度,使軟件部署更靈活。
利用心跳應答數據包的接收時間和心跳應答數據包中的orig_time字段、send_time字段包含的時間信息,即可計算出往返的傳輸延遲和時統偏差值,公式為:

其中,ping為雙向傳輸的延遲時間;Δ為服務端與客戶端的時統偏差值;tr為客戶端接收心跳應答數據包的時刻;to為心跳應答數據包中orig_time字段的時刻,即心跳數據包的發送時刻;ts為心跳應答數據包中send_time字段的時刻,即心跳數據包的接收時刻,也是心跳應答數據包的發送時刻。
指令數據包為服務端下發指令或客戶端上報結果時發送的數據包,指令應答數據包為接收到指令數據包后自動進行應答。指令數據包和指令應答數據包的數據格式如表3和表4所示。
建立應答機制和重發機制:建立一個發送隊列,當有指令需發送時先放入發送隊列,隨后進行首次發送,在用戶界面上標注該指令狀態為“發送中”;接收到指令應答數據包后,遍歷發送隊列查找該序列號指令,將其移出發送隊列,并在用戶界面上標注該指令狀態為“已送達”;周期性檢查發送隊列,重發隊列中的所有指令,當某條指令的重發次數超限或時間超時,將該指令移出發送隊列,并在用戶界面上標注該指令狀態為“發送失敗”。

表1 心跳數據包數據格式

表2 心跳應答數據包數據格式

表3 指令數據包數據格式

表4 指令應答數據包數據格式
各部位軟件實現效果如圖1和圖2所示。
實際應用證明,軟件可大幅提高測試效率。軟件充分應用了色彩和音效等提示手段,有效降低了測試人員的值守強度。同時,軟件可將測試結果存入數據庫,大幅簡化后期測試數據的梳理工作和統計工作。軟件還具有一定擴展性,根據測試流程進行簡單修改即可滿足多種測試項目的需求,適用于測試流程相對固定、測試重復次數較多的測試項目。

圖1 指揮部位軟件效果圖

圖2 檢測部位軟件效果圖