摘 要:隨著普適計算技術的飛速發展,以智能手機、PDA、和便攜式媒體中心為代表的嵌入式智能設備不斷發展和成熟,這些設備通常都在各自的硬件平臺上配備有定制的嵌入式操作系統,擁有越來越多的應用程序。而對于這些應用軟件的測試給軟件提供商和設備制造商提出了嚴峻的挑戰。本文將基于Agent技術的測試方法引入到自動化測試平臺中,通過測試控制Agent提高了腳本的通用性,通過目標設備Agent屏蔽了嵌入式設備的復雜性,通過網絡環境Agent實現了對設備所處網絡環境的控制,從而能夠較好的輔助測試人員完成對嵌入式智能設備的測試。
關鍵詞:普適計算; 自動化測試; Agent技術; 嵌入式設備
The Research on the Testing Method for Embedded Smart Devices
Jiang Bo,Gao Xiaopeng,Long Xiang
Abstract: With the rapid development of the pervasive computing, the embedded smart devices gradually evolve and mature. These devices include smart phones, PDA and portable multimedia center, etc. And they typically have a customized embedded OS on their own hardware platform with rich applications. But the testing of these applications poses great challenges for third-party software venders and phone manufacturers. This paper introduces Agent-based testing technology to the automated testing platform. The test control Agent improves the reusability of the testing scripts. The device Agent reduces the complexity introduced by the embedded devices. And the network environment Agent can help control the network environment of the smart devices. These can help the testers to fulfill their tests on the embedded devices more efficiently.
Key words: pervasive computing; automated testing; agent technology; embedded device
1 前言
智能軟件Agent是能夠為用戶執行特定的任務、具有一定程度的智能、能夠自主的執行部分任務并以一種合適的方式和環境相互作用的軟件程序。Agent 有自主性、響應性、學習能力和社會性等特性。這使得它適合在高度動態的環境下做出及時的響應。
嵌入式技術和新一代移動通訊網絡的發展使得嵌入式智能設備大量的涌現。這些設備的大都具有嵌入式操作系統的支持, 并運行著越來越豐富的應用程序。如何對這些應用程序進行測試,就成為一個需要研究的課題。本文將Agent技術引入嵌入式智能設備的測試中,使用目標設備Agent, 測試控制Agent, 網絡環境Agent分別模擬和處理測試設備,測試工程師和測試環境的復雜性,利用Agent自身具有的特點,提出了一種有效的自動化測試的方法。
2 相關的研究及本文的思路
Agent 所具有的自主性、響應性、學習能力和社會性等特性,使得它很適合處理復雜測試系統中的問題。將Agent技術應用于測試領域已經有一些相關的研究,下面是具體的介紹。
Jeongeun Choi 和 Byoungju Choi [1]提出了一個基于Agent技術的測試工具,它通過使用用戶接口Agent來處理和測試者的交互,使用測試用例選擇Agent來進行測試用例的選擇,并使用回歸測試Agent進行回歸測試,從而很好的實現了自動化的軟件測試。但是他們提出的測試用例選擇技術僅能在大量已有的測試用例中選擇最佳的用例,不能減少編寫測試用例本身的復雜性。
另外一些研究將Agent 技術應用到了某一領域的測試中。Yu Qi、 David Hung 和 Eric Wong [3] 提出了一個基于Agent 技術的Web 應用程序測試方法。他們使用Agent技術降低了網絡應用測試的復雜性。他們的方法不僅僅適用于Web應用程序的測試,也適合于嵌入式智能設備的測試。
在實際測試過程中,測試人員很大的一項任務仍然是編寫各種測試用例,要真正的提高測試效率,就要提高測試腳本的通用性,減少測試腳本的變化[2] [4]。常見的嵌入式智能設備測試工具(比如TestQuest)使用圖像比對來判斷目標設備的狀態, 這種方法雖然實現了非侵入性的測試,但是存在兩個問題:
● 圖片的抓取和傳送消耗了大量測試資源.
● 不同手機的用戶界面風格變化很大,這使得測試腳本在用來進行新設備的測試時需要對腳本進行維護.
然而,實際的設備中,當重要的事件發生時,系統會產生敏感事件來激勵相關模塊進行處理.如果能夠在測試過程中捕獲這些敏感事件,就能更加高效的進行測試. 并且,只要操作系統相同,敏感事件的捕獲方式也是一樣,測試用例不會因為界面的變化而變化。本文用目標設備Agent抽象和捕獲測試過程中的敏感事件,并將敏感事件發送給測試控制Agent。而測試控制Agent收到敏感事件后,根據自己的知識,采取相應的動作的機制(如異常處理,重新調度測試等)加以處理。這正好可以作為Agent的推理規則,用Agent的智能性來屏蔽測試過程的復雜性。此外,考慮到目標設備處于復雜的網絡環境中,我們利用網絡環境Agent來控制目標設備所處的網絡信號,從而實現對設備所處網絡環境的控制。
3 基于Agent的測試系統
3.1 總體結構
測試系統的最終目標是實現一個移動數字終端的自動化測試平臺,能夠對移動數字終端上的系統軟件和應用層軟件建立模塊化、可重用的測試腳本庫,提高各種黑盒測試的效率,自動化測試結果的生成,并實現測試結果的回放。
[align=center]

圖1. 測試系統的整體架構[/align]
如圖1所示,測試平臺分為四層,包括用戶接口層,測試控制層,通訊層和設備Agent層。 其中,過程監控模塊,測試環境控制模塊和設備Agent層采用Agent的思想進行設計,以更好的支持嵌入式設備的測試。
3.2 系統基本執行流程
測試過程是對真實用戶使用手機時“輸入-反饋”模型的一個模擬。
系統的基本的使用用例如下,首先用戶通過腳本編輯器或者虛擬手機創建測試腳本并進行基本的配置,然后過程監控模塊調度腳本開始執行,當腳本解釋器解釋執行腳本語句時,腳本解釋器通常使用通訊模塊向手機發送模擬按鍵,然腳本解釋器進入等待狀態,目標設備Agent從通訊模塊得到按鍵,執行按鍵動作,截取屏幕并返回給測試控制Agent,或者如果手機有敏感世事件的發生(如來電,短信,異常等)也會反饋給測試控制Agent,測試控制Agent接到數據,再次激勵腳本運行,并同時將測試結果輸入存入測試資源庫。腳本繼續運行下面的語句,直到運行結束。
3.3 目標設備Agent
目標設備Agent駐留在被測試的智能設備中,實現對目標設備的建模。本系統中它接收從PC機中接收到的控制命令,然后在智能設備中進行相應的操作,包括模擬鍵盤事件,截取屏幕并返回給PC,以及根據知識庫中的配置的測試目標,通過推理,有所選擇的將必需的狀態信息主動通知測試宿主機。
3.3.1 設備Agent 依賴的決策規則
● 系統事件報告決策規則(SERD-RULE)
這個決策規則決定設備Agent在獲取到狀態信息時,是否將狀態信息反饋給上層系統。

● 異常處理規則(EM-RULE)
這個決策規則決定了當Agent發現測試中出現異常,要采取的處理方式。

3.3.2 Agent 屬性
目標設備Agent具有下面的屬性。
● 自主性
目標設備Agent使得測試用戶無需關注設備的細節,它是設備功能和狀態的一個很好的抽象,通過目標代理Agent,上層測試框架只需要執行相應的虛擬操作,則目標設備Agent會自動將這些虛擬操作映射為對手機的實際操作,并且手機的響應和其它狀態也能夠自動的反饋給客戶,這使得上層測試和底層的設備具體操作無關。
● 智能性
當目標設備Agent獲取到一個變化的被測系統狀態或信息時,它會根據推理規則,僅僅把和本次目標相關的信息發送給測試控制Agent。目標設備Agent還能夠根據異常處理規則,合理的處理測試中出現的異常。
3.4 測試控制 Agent
測試控制Agent 實現了對測試過程的建模。它主要實現三個目標:
● 在測試過程中,對測試人員感興趣的事件進行捕獲,當這些敏感事件發生后,系統立刻執行預定義的動作,并為測試提供準確和詳盡的日志。
● 通過和腳本解釋器交互,實現異步的事件通知和交互測試用例的執行。
● 處理測試過程中的異常,使得測試過程可以自我修復,進而多個腳本能夠按照預先的調度正常運行。
3.4.1 測試控制Agent的決策規則
● 事件-條件-行動規則(ECA-RULE)
這是測試控制Agent所依據的核心規則,它定義了某個測試所關心的事件,并根據比對條件,采取相應的動作。

● 異常處理規則(EM-RULE)
測試控制Agent也遵守異常處理規則,它能夠檢測測試過程中發生的異常事件,并執行相應的解決方案,使得測試能夠順利的進行。

3.4.2 測試控制Agent 的屬性
<1>自主性
自主性使得測試人員無需過分關注測試的細節,測試人員僅僅需要選擇測試目標,測試控制Agent就能根據知識庫中的信息,自動生成ECA規則表,并在腳本運行時,按照ECA規則,捕捉敏感的事件并執行相應的操作。
<2>智能性
測試控制Agent能夠根據用戶選擇的測試目標,自動生成ECA規則表,并根據ECA規則,進行推理并采取相應的動作。測試控制Agent還能根據異常處理規則來處理測試過程中發身的異常,保障測試過程的自動,平穩進行。
3.5 網絡環境Agent
網絡環境Agent 實現了對網絡環境的模擬和控制。為了測試手機的射頻性能,通常使用基站模擬系統來提供設備所處的無線網絡環境,并且利用編程接口,通過軟件對設備的環境進行控制,使得復雜網絡環境下對目標設備的測試成為可能。
4 系統評估
為了評價本系統的有效性,我們設計了一個比較實驗。試驗在信息產業部泰爾實驗室真實的測試項目中進行。我們將測試工程師分為兩組,第一組使用本文的系統MobileTest進行測試,第二組使用業界著名的TestQuest Pro 進行測試。測試的依據是中國通訊行業標準的數字移動臺測試部分。測試的內容是根據這兩個系統各自已經建立好的回歸測試用例對新的智能手機進行回歸測試,從而比較這兩個測試工具的測試效率和腳本的可維護性。
實驗度量了兩個工具在測試不同種類的測試用例時,自動化執行的用例所占的百分比。從表中可見,雖然TestQuest 在功能測試上有更高的自動化率,在壓力測試,多狀態測試,多任務測試,臨界測試和總計中,MobileTest有更好的測試覆蓋率。這是因為在后四種測試中,測試用例需要不斷追蹤系統的狀態,使用圖片比對機制的TestQuest 很難完成這些工作,而MobileTest 卻能使用Agent返回的敏感事件來進行處理。此外,MobileTest 完成測試任務的時間時15天,比TestQuest 的測試效率要高。
5 結論
本文提出了一個基于Agent技術的嵌入式智能設備的測試方法,它用Agent技術對嵌入式智能設備測試過程中的被測試設備,測試者和網絡環境進行模擬和控制,很好的屏蔽了嵌入式智能設備的復雜性,提高了測試的效率和腳本的可重用性。將來的研究工作中,我們會進一步拓展整個測試系統,使之能夠支持整個測試的生命周期。
本文作者的創新點:本文將軟件Agent技術引入到嵌入式智能設備的自動化測試中,利用Agent的特性,很好的屏蔽了嵌入式智能設備測試中,測試者,待測設備,網絡環境的復雜性,提高了自動化測試的效率。
6 參考文獻
[1] Jeongeun Choi, Byoundju Choi: Test Agent System Design [A]. Ewha Womans University, Proceedings of 1999 IEEE International Fuzzy System Conference Proceedings, pp326-327, 1999.
[2] 何友全:軟件測試方法與技巧[J].微計算機信息,2000
[3] Yu Qi, David Kung, Eric Wong: An Agent-based Testing Approach for Web Applications [A]. Proceedings of the 29th Annual International Computer Software and Application Conference, pp1-3, 2005.
[4] 古樂,史九林. 軟件測試技術概論 [M].清華大學出版社. 2004
作者簡介:
姜博(1981- ),男(漢族),河南新鄉人,北航大學在讀碩士,主研方向:移動計算,嵌入式軟件測試。
龍翔(1963- ),男(漢族),教授,博士生導師,北航大學計算機學院計算機科學系主任, 主研方向:嵌入式系統,計算機網絡安全。
高小鵬(1970-), 男(漢族),北航大學計算機學院副教授,主研方向:計算機體系結構、高性能軟件模擬器、嵌入式系統。