摘 要:隨著普適計(jì)算技術(shù)的飛速發(fā)展,以智能手機(jī)、PDA、和便攜式媒體中心為代表的嵌入式智能設(shè)備不斷發(fā)展和成熟,這些設(shè)備通常都在各自的硬件平臺上配備有定制的嵌入式操作系統(tǒng),擁有越來越多的應(yīng)用程序。而對于這些應(yīng)用軟件的測試給軟件提供商和設(shè)備制造商提出了嚴(yán)峻的挑戰(zhàn)。本文將基于Agent技術(shù)的測試方法引入到自動化測試平臺中,通過測試控制Agent提高了腳本的通用性,通過目標(biāo)設(shè)備Agent屏蔽了嵌入式設(shè)備的復(fù)雜性,通過網(wǎng)絡(luò)環(huán)境Agent實(shí)現(xiàn)了對設(shè)備所處網(wǎng)絡(luò)環(huán)境的控制,從而能夠較好的輔助測試人員完成對嵌入式智能設(shè)備的測試。
關(guān)鍵詞:普適計(jì)算; 自動化測試; Agent技術(shù); 嵌入式設(shè)備
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是能夠?yàn)橛脩魣?zhí)行特定的任務(wù)、具有一定程度的智能、能夠自主的執(zhí)行部分任務(wù)并以一種合適的方式和環(huán)境相互作用的軟件程序。Agent 有自主性、響應(yīng)性、學(xué)習(xí)能力和社會性等特性。這使得它適合在高度動態(tài)的環(huán)境下做出及時的響應(yīng)。
嵌入式技術(shù)和新一代移動通訊網(wǎng)絡(luò)的發(fā)展使得嵌入式智能設(shè)備大量的涌現(xiàn)。這些設(shè)備的大都具有嵌入式操作系統(tǒng)的支持, 并運(yùn)行著越來越豐富的應(yīng)用程序。如何對這些應(yīng)用程序進(jìn)行測試,就成為一個需要研究的課題。本文將Agent技術(shù)引入嵌入式智能設(shè)備的測試中,使用目標(biāo)設(shè)備Agent, 測試控制Agent, 網(wǎng)絡(luò)環(huán)境Agent分別模擬和處理測試設(shè)備,測試工程師和測試環(huán)境的復(fù)雜性,利用Agent自身具有的特點(diǎn),提出了一種有效的自動化測試的方法。
2 相關(guān)的研究及本文的思路
Agent 所具有的自主性、響應(yīng)性、學(xué)習(xí)能力和社會性等特性,使得它很適合處理復(fù)雜測試系統(tǒng)中的問題。將Agent技術(shù)應(yīng)用于測試領(lǐng)域已經(jīng)有一些相關(guān)的研究,下面是具體的介紹。
Jeongeun Choi 和 Byoungju Choi [1]提出了一個基于Agent技術(shù)的測試工具,它通過使用用戶接口Agent來處理和測試者的交互,使用測試用例選擇Agent來進(jìn)行測試用例的選擇,并使用回歸測試Agent進(jìn)行回歸測試,從而很好的實(shí)現(xiàn)了自動化的軟件測試。但是他們提出的測試用例選擇技術(shù)僅能在大量已有的測試用例中選擇最佳的用例,不能減少編寫測試用例本身的復(fù)雜性。
另外一些研究將Agent 技術(shù)應(yīng)用到了某一領(lǐng)域的測試中。Yu Qi、 David Hung 和 Eric Wong [3] 提出了一個基于Agent 技術(shù)的Web 應(yīng)用程序測試方法。他們使用Agent技術(shù)降低了網(wǎng)絡(luò)應(yīng)用測試的復(fù)雜性。他們的方法不僅僅適用于Web應(yīng)用程序的測試,也適合于嵌入式智能設(shè)備的測試。
在實(shí)際測試過程中,測試人員很大的一項(xiàng)任務(wù)仍然是編寫各種測試用例,要真正的提高測試效率,就要提高測試腳本的通用性,減少測試腳本的變化[2] [4]。常見的嵌入式智能設(shè)備測試工具(比如TestQuest)使用圖像比對來判斷目標(biāo)設(shè)備的狀態(tài), 這種方法雖然實(shí)現(xiàn)了非侵入性的測試,但是存在兩個問題:
● 圖片的抓取和傳送消耗了大量測試資源.
● 不同手機(jī)的用戶界面風(fēng)格變化很大,這使得測試腳本在用來進(jìn)行新設(shè)備的測試時需要對腳本進(jìn)行維護(hù).
然而,實(shí)際的設(shè)備中,當(dāng)重要的事件發(fā)生時,系統(tǒng)會產(chǎn)生敏感事件來激勵相關(guān)模塊進(jìn)行處理.如果能夠在測試過程中捕獲這些敏感事件,就能更加高效的進(jìn)行測試. 并且,只要操作系統(tǒng)相同,敏感事件的捕獲方式也是一樣,測試用例不會因?yàn)榻缑娴淖兓兓?。本文用目?biāo)設(shè)備Agent抽象和捕獲測試過程中的敏感事件,并將敏感事件發(fā)送給測試控制Agent。而測試控制Agent收到敏感事件后,根據(jù)自己的知識,采取相應(yīng)的動作的機(jī)制(如異常處理,重新調(diào)度測試等)加以處理。這正好可以作為Agent的推理規(guī)則,用Agent的智能性來屏蔽測試過程的復(fù)雜性。此外,考慮到目標(biāo)設(shè)備處于復(fù)雜的網(wǎng)絡(luò)環(huán)境中,我們利用網(wǎng)絡(luò)環(huán)境Agent來控制目標(biāo)設(shè)備所處的網(wǎng)絡(luò)信號,從而實(shí)現(xiàn)對設(shè)備所處網(wǎng)絡(luò)環(huán)境的控制。
3 基于Agent的測試系統(tǒng)
3.1 總體結(jié)構(gòu)
測試系統(tǒng)的最終目標(biāo)是實(shí)現(xiàn)一個移動數(shù)字終端的自動化測試平臺,能夠?qū)σ苿訑?shù)字終端上的系統(tǒng)軟件和應(yīng)用層軟件建立模塊化、可重用的測試腳本庫,提高各種黑盒測試的效率,自動化測試結(jié)果的生成,并實(shí)現(xiàn)測試結(jié)果的回放。
[align=center]
圖1. 測試系統(tǒng)的整體架構(gòu)[/align]
如圖1所示,測試平臺分為四層,包括用戶接口層,測試控制層,通訊層和設(shè)備Agent層。 其中,過程監(jiān)控模塊,測試環(huán)境控制模塊和設(shè)備Agent層采用Agent的思想進(jìn)行設(shè)計(jì),以更好的支持嵌入式設(shè)備的測試。
3.2 系統(tǒng)基本執(zhí)行流程
測試過程是對真實(shí)用戶使用手機(jī)時“輸入-反饋”模型的一個模擬。
系統(tǒng)的基本的使用用例如下,首先用戶通過腳本編輯器或者虛擬手機(jī)創(chuàng)建測試腳本并進(jìn)行基本的配置,然后過程監(jiān)控模塊調(diào)度腳本開始執(zhí)行,當(dāng)腳本解釋器解釋執(zhí)行腳本語句時,腳本解釋器通常使用通訊模塊向手機(jī)發(fā)送模擬按鍵,然腳本解釋器進(jìn)入等待狀態(tài),目標(biāo)設(shè)備Agent從通訊模塊得到按鍵,執(zhí)行按鍵動作,截取屏幕并返回給測試控制Agent,或者如果手機(jī)有敏感世事件的發(fā)生(如來電,短信,異常等)也會反饋給測試控制Agent,測試控制Agent接到數(shù)據(jù),再次激勵腳本運(yùn)行,并同時將測試結(jié)果輸入存入測試資源庫。腳本繼續(xù)運(yùn)行下面的語句,直到運(yùn)行結(jié)束。
3.3 目標(biāo)設(shè)備Agent
目標(biāo)設(shè)備Agent駐留在被測試的智能設(shè)備中,實(shí)現(xiàn)對目標(biāo)設(shè)備的建模。本系統(tǒng)中它接收從PC機(jī)中接收到的控制命令,然后在智能設(shè)備中進(jìn)行相應(yīng)的操作,包括模擬鍵盤事件,截取屏幕并返回給PC,以及根據(jù)知識庫中的配置的測試目標(biāo),通過推理,有所選擇的將必需的狀態(tài)信息主動通知測試宿主機(jī)。
3.3.1 設(shè)備Agent 依賴的決策規(guī)則
● 系統(tǒng)事件報告決策規(guī)則(SERD-RULE)
這個決策規(guī)則決定設(shè)備Agent在獲取到狀態(tài)信息時,是否將狀態(tài)信息反饋給上層系統(tǒng)。
● 異常處理規(guī)則(EM-RULE)
這個決策規(guī)則決定了當(dāng)Agent發(fā)現(xiàn)測試中出現(xiàn)異常,要采取的處理方式。
3.3.2 Agent 屬性
目標(biāo)設(shè)備Agent具有下面的屬性。
● 自主性
目標(biāo)設(shè)備Agent使得測試用戶無需關(guān)注設(shè)備的細(xì)節(jié),它是設(shè)備功能和狀態(tài)的一個很好的抽象,通過目標(biāo)代理Agent,上層測試框架只需要執(zhí)行相應(yīng)的虛擬操作,則目標(biāo)設(shè)備Agent會自動將這些虛擬操作映射為對手機(jī)的實(shí)際操作,并且手機(jī)的響應(yīng)和其它狀態(tài)也能夠自動的反饋給客戶,這使得上層測試和底層的設(shè)備具體操作無關(guān)。
● 智能性
當(dāng)目標(biāo)設(shè)備Agent獲取到一個變化的被測系統(tǒng)狀態(tài)或信息時,它會根據(jù)推理規(guī)則,僅僅把和本次目標(biāo)相關(guān)的信息發(fā)送給測試控制Agent。目標(biāo)設(shè)備Agent還能夠根據(jù)異常處理規(guī)則,合理的處理測試中出現(xiàn)的異常。
3.4 測試控制 Agent
測試控制Agent 實(shí)現(xiàn)了對測試過程的建模。它主要實(shí)現(xiàn)三個目標(biāo):
● 在測試過程中,對測試人員感興趣的事件進(jìn)行捕獲,當(dāng)這些敏感事件發(fā)生后,系統(tǒng)立刻執(zhí)行預(yù)定義的動作,并為測試提供準(zhǔn)確和詳盡的日志。
● 通過和腳本解釋器交互,實(shí)現(xiàn)異步的事件通知和交互測試用例的執(zhí)行。
● 處理測試過程中的異常,使得測試過程可以自我修復(fù),進(jìn)而多個腳本能夠按照預(yù)先的調(diào)度正常運(yùn)行。
3.4.1 測試控制Agent的決策規(guī)則
● 事件-條件-行動規(guī)則(ECA-RULE)
這是測試控制Agent所依據(jù)的核心規(guī)則,它定義了某個測試所關(guān)心的事件,并根據(jù)比對條件,采取相應(yīng)的動作。
● 異常處理規(guī)則(EM-RULE)
測試控制Agent也遵守異常處理規(guī)則,它能夠檢測測試過程中發(fā)生的異常事件,并執(zhí)行相應(yīng)的解決方案,使得測試能夠順利的進(jìn)行。
3.4.2 測試控制Agent 的屬性
<1>自主性
自主性使得測試人員無需過分關(guān)注測試的細(xì)節(jié),測試人員僅僅需要選擇測試目標(biāo),測試控制Agent就能根據(jù)知識庫中的信息,自動生成ECA規(guī)則表,并在腳本運(yùn)行時,按照ECA規(guī)則,捕捉敏感的事件并執(zhí)行相應(yīng)的操作。
<2>智能性
測試控制Agent能夠根據(jù)用戶選擇的測試目標(biāo),自動生成ECA規(guī)則表,并根據(jù)ECA規(guī)則,進(jìn)行推理并采取相應(yīng)的動作。測試控制Agent還能根據(jù)異常處理規(guī)則來處理測試過程中發(fā)身的異常,保障測試過程的自動,平穩(wěn)進(jìn)行。
3.5 網(wǎng)絡(luò)環(huán)境Agent
網(wǎng)絡(luò)環(huán)境Agent 實(shí)現(xiàn)了對網(wǎng)絡(luò)環(huán)境的模擬和控制。為了測試手機(jī)的射頻性能,通常使用基站模擬系統(tǒng)來提供設(shè)備所處的無線網(wǎng)絡(luò)環(huán)境,并且利用編程接口,通過軟件對設(shè)備的環(huán)境進(jìn)行控制,使得復(fù)雜網(wǎng)絡(luò)環(huán)境下對目標(biāo)設(shè)備的測試成為可能。
4 系統(tǒng)評估
為了評價本系統(tǒng)的有效性,我們設(shè)計(jì)了一個比較實(shí)驗(yàn)。試驗(yàn)在信息產(chǎn)業(yè)部泰爾實(shí)驗(yàn)室真實(shí)的測試項(xiàng)目中進(jìn)行。我們將測試工程師分為兩組,第一組使用本文的系統(tǒng)MobileTest進(jìn)行測試,第二組使用業(yè)界著名的TestQuest Pro 進(jìn)行測試。測試的依據(jù)是中國通訊行業(yè)標(biāo)準(zhǔn)的數(shù)字移動臺測試部分。測試的內(nèi)容是根據(jù)這兩個系統(tǒng)各自已經(jīng)建立好的回歸測試用例對新的智能手機(jī)進(jìn)行回歸測試,從而比較這兩個測試工具的測試效率和腳本的可維護(hù)性。
實(shí)驗(yàn)度量了兩個工具在測試不同種類的測試用例時,自動化執(zhí)行的用例所占的百分比。從表中可見,雖然TestQuest 在功能測試上有更高的自動化率,在壓力測試,多狀態(tài)測試,多任務(wù)測試,臨界測試和總計(jì)中,MobileTest有更好的測試覆蓋率。這是因?yàn)樵诤笏姆N測試中,測試用例需要不斷追蹤系統(tǒng)的狀態(tài),使用圖片比對機(jī)制的TestQuest 很難完成這些工作,而MobileTest 卻能使用Agent返回的敏感事件來進(jìn)行處理。此外,MobileTest 完成測試任務(wù)的時間時15天,比TestQuest 的測試效率要高。
5 結(jié)論
本文提出了一個基于Agent技術(shù)的嵌入式智能設(shè)備的測試方法,它用Agent技術(shù)對嵌入式智能設(shè)備測試過程中的被測試設(shè)備,測試者和網(wǎng)絡(luò)環(huán)境進(jìn)行模擬和控制,很好的屏蔽了嵌入式智能設(shè)備的復(fù)雜性,提高了測試的效率和腳本的可重用性。將來的研究工作中,我們會進(jìn)一步拓展整個測試系統(tǒng),使之能夠支持整個測試的生命周期。
本文作者的創(chuàng)新點(diǎn):本文將軟件Agent技術(shù)引入到嵌入式智能設(shè)備的自動化測試中,利用Agent的特性,很好的屏蔽了嵌入式智能設(shè)備測試中,測試者,待測設(shè)備,網(wǎng)絡(luò)環(huán)境的復(fù)雜性,提高了自動化測試的效率。
6 參考文獻(xiàn)
[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].微計(jì)算機(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] 古樂,史九林. 軟件測試技術(shù)概論 [M].清華大學(xué)出版社. 2004
作者簡介:
姜博(1981- ),男(漢族),河南新鄉(xiāng)人,北航大學(xué)在讀碩士,主研方向:移動計(jì)算,嵌入式軟件測試。
龍翔(1963- ),男(漢族),教授,博士生導(dǎo)師,北航大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)系主任, 主研方向:嵌入式系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò)安全。
高小鵬(1970-), 男(漢族),北航大學(xué)計(jì)算機(jī)學(xué)院副教授,主研方向:計(jì)算機(jī)體系結(jié)構(gòu)、高性能軟件模擬器、嵌入式系統(tǒng)。