一種基于命令行接口的機器人測試系統(tǒng)及測試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及機器人測試領(lǐng)域,具體是一種基于命令行接口的機器人測試系統(tǒng)。
【背景技術(shù)】
[0002]近年來,智能機器人技術(shù)飛速發(fā)展,其構(gòu)造及軟件越來越復(fù)雜,多學(xué)科交叉的特點也越來越明顯。為了保證智能機器人的質(zhì)量,需要對機器人進行測試。傳統(tǒng)主要是由人工測試,人工測試勞動強度大、效率也比較低,并且成本也比較高,因此使用計算機程序來測試智能機器人已成為一種發(fā)展趨勢。傳統(tǒng)機器人測試,是采用測試裝置對機器人進行測試,例如中國專利申請CN 102939592A公開的一種測試裝置,但是沒有提供一個通用的測試系統(tǒng),可擴展性低,成本高。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的問題是提供一種基于命令行接口的機器人測試系統(tǒng),該測試系統(tǒng)具有可擴展性,可動態(tài)添加自動化測試腳本,實現(xiàn)對機器人的自動化測試,穩(wěn)步地保證了機器人的質(zhì)量,有效地提高效率和準確度,降低成本。
[0004]本發(fā)明公開的一種基于命令行接口的機器人測試系統(tǒng),包括操作系統(tǒng)、通信模塊、命令解析及執(zhí)行模塊、測試腳本的語言、測試腳本語言的環(huán)境和命令行接口,所述命令行接口用于為機器人新增的功能添加命令。
[0005]作為上述技術(shù)方案的進一步改進,所述通信模塊提供一種通信方式,該通信方式用于測試機和被測試機器人之間的通信。
[0006]進一步改進,所述通信方式adb、SSH或telnet。
[0007]另一種改進,所述環(huán)境用于執(zhí)行所述測試腳本。
[0008]利用上述技術(shù)方案所述的測試系統(tǒng)進行測試的方法,包括以下步驟:
1)連接測試機與被測試機器人;
2)在測試機登錄被測試機器人的運行環(huán)境;
3)在被測機器人的運行環(huán)境上運行機器人命令行接口的的命令;
4)機器人接收到被測機器人的命令后,查詢并調(diào)用該命令注冊的執(zhí)行函數(shù),該執(zhí)行函數(shù)與機器人內(nèi)部系統(tǒng)模塊通信,輸出被測機器人的狀態(tài)及各子系統(tǒng)狀態(tài),供測試腳本分析;
5)測試腳本分析被測機器人的狀態(tài)及各子系統(tǒng)狀態(tài),輸出測試報告。
[0009]利用上述技術(shù)方案所述的測試系統(tǒng)增加新的測試功能的方法,包括以下步驟:
1)利用被測機器人子系統(tǒng)實現(xiàn)新功能;
2)定義新功能命令格式;
3)調(diào)用由子系統(tǒng)實現(xiàn)的新功能接口,實現(xiàn)新功能的命令;
4)添加新功能的命令到被測機器人命令接口系統(tǒng)。
[0010]進一步的,在所述步驟4)添加新功能的命令到被測機器人命令接口系統(tǒng)后,利用上述技術(shù)方案所述的測試方法驗證新功能的命令是否添加成功。
[0011]本發(fā)明的一種基于命令行接口的機器人測試系統(tǒng)及測試方法,提供了一個通用的測試系統(tǒng)及配套的測試、增加新功能測試的方法,可擴展性強,大大提高了測試效率和測試系統(tǒng)的適用范圍,降低了測試成本。
【附圖說明】
[0012]圖1是本發(fā)明的機器人測試系統(tǒng)的框圖;
圖2是新增功能加入測試系統(tǒng)的流程圖。
【具體實施方式】
[0013]下面結(jié)合附圖,對本發(fā)明提出的一種基于命令行接口的機器人測試系統(tǒng)進行詳細說明。
[0014]如圖1所示,為實現(xiàn)本發(fā)明所述的機器人測試系統(tǒng),使用一臺測試機I和一臺被測機器人2。所述測試機I優(yōu)選具有命令行接口、通信模塊、測試腳本、測試腳本語言的環(huán)境的一臺計算機,該計算機可以安裝Windows或者Linux。通過命令行接口開發(fā)人員可以為機器人新增的功能添加命令,測試人員可以通過在命令行終端輸入命令,對機器人進行測試。通信模塊提供一種通信方式(比如:adb,telnet等),使得運行在測試機I上測試腳本可以向被測機器人2發(fā)送命令,并且該命令的執(zhí)行結(jié)果可以通過這種通信方式返回給測試機上的測試腳本。提供一個書寫這些測試腳本的語言(比如:dos/bat, tcl/expect, Python等),通過這些腳本語言根據(jù)測試用例書寫自動化測試腳本程序。提供運行這些腳本語言運行的環(huán)境,執(zhí)行這些自動化測試腳本,完成對機器人一些功能的自動化測試。通信模塊包括,測試機I和被測試機器人2通過通信模塊客戶端5和服務(wù)端6進行通信。啟動測試機I和被測試機器人2之后,機器人2開啟通信服務(wù)監(jiān)聽測試機I測試腳本發(fā)送過來的連接。在測試機I運行一些測試腳本3,這些測試腳本3將通過通信模塊5發(fā)送命令到機器人2端。機器人2通過通信模塊6接收到命令后,交由命令解析及執(zhí)行模塊4對命令進行解析,匹配到相應(yīng)的命令并調(diào)用相應(yīng)命令執(zhí)行函數(shù),該執(zhí)行函數(shù)與機器人內(nèi)部各系統(tǒng)通信,對機器人進行操作,并將操作結(jié)果通過通信模塊返回給測試機I端。測試機I通過通信模塊5接收到來自機器人2執(zhí)行的結(jié)果,并交由測試腳本3對其分析,如果機器人如期望的在執(zhí)行命令,就說明測試是通過的,否則測試失敗。最終的測試結(jié)果以報告的形式打印出來。
[0015]為了更加清晰地描述圖1的過程,以自動測試機器人是否進入工作狀態(tài)為例,具體如下:
1.一臺安裝了 Windows系統(tǒng)的計算機,默認提供DOS BAT腳本語言及運行環(huán)境,通信方式采用ADB (調(diào)試橋),準備好ADB客戶端程序,如adb.exe。
[0016]2.機器人系統(tǒng)是基于Android系統(tǒng),默認提供Linux Shell運行環(huán)境及ADB通信服務(wù)。對于基于其他移動操作系統(tǒng)的機器人也可適用。
[0017]3.讓測試機計算機與被測機器人連接到同一局域網(wǎng)內(nèi)(使用廣域網(wǎng),比如國際互聯(lián)網(wǎng)Internet,也可實現(xiàn),并可以實現(xiàn)遠程測試,本實施例優(yōu)選局域網(wǎng)),并且可以互相連通,測試機運行adb connect〈host〉與被測機器人建立連接,通過ADB devices列出連接設(shè)備,再使用adb shell登錄到被測機器人shell運行環(huán)境上,或者直接在adb shell后加機器人命令執(zhí)行,格式為:adb shell〈機器人命令〉。
[0018]4.在被測機器人shell運行環(huán)境上運行機器人命令行接口的查詢機器人的狀態(tài)的命令 robot—cli show—system—status 或 DOS 環(huán)境下直接 adb shell robot—cli show—system—status。
[0019]機器人命令有兩種模式,一種是SHELL模式,一種是交互模式。SHELL模式運行robot—cli〈機器人命令〉。交互模式只運行robot—cli進入交互界面“>”,再輸入〈機器人命令>。
[0020]機器人命令之查詢機器人的狀態(tài)的命令robot—cli show—system—status。
[0021]命令格式:show—system—status [search string]
命令描述:show whole system and all of sub-systems status 實例:顯示系統(tǒng)狀態(tài)
>show—system—status State
[State] Work [SubState] Busy [State] Work [SubState] Idle [State] Work [SubState] Busy [State] Work [SubState] Busy [State] Work [SubState] Idle [State] Work [SubState] Idle
>
機器人接收到機器人的狀態(tài)查詢命令后,在所有機器人命令數(shù)組中查詢,如果找到,調(diào)用該命令注冊的執(zhí)行函數(shù),該執(zhí)行函數(shù)與機器人內(nèi)部系統(tǒng)模塊通信,并將機器人的狀態(tài)及各子系統(tǒng)狀態(tài)打印出來,供測試腳本分析。
[0022]機器人命令接口數(shù)據(jù)結(jié)構(gòu): struct robot_cli_cmd {
const char ^c