本發(fā)明涉及軟件開發(fā)工具包測試技術領域,特別是涉及一種軟件開發(fā)工具包測試方法及其裝置、測試系統(tǒng)。
背景技術:
目前,sdk(softwaredevelopmentkit,軟件開發(fā)工具包)通常是指軟件工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應用軟件時的開發(fā)工具的集合。sdk廣泛應用于當前的電子裝置,例如,智能手機、平板電腦、游戲機、可穿戴設備等。舉例來說,可穿戴設備加載sdk時,由于可穿戴設備的計算能力以及存儲能力有限,并且很多可穿戴設備(例如,智能手環(huán))不具有輸入界面(例如,顯示屏幕、鍵盤等),這樣講很難對其上的sdk應用進行測試。
另外,現(xiàn)有技術通常采用編程語言(例如,c語言)構建sdk測試案例,要求資深的軟件工程師來確保測試案例的質量。但由于成本考量,很難擴充或新增測試人員,導致測試案例的維護和修改的成本很高。
技術實現(xiàn)要素:
本發(fā)明主要解決的技術問題是提供一種軟件開發(fā)工具包測試方法及其裝置、測試系統(tǒng),以有效地解決上述問題。
為解決上述技術問題,本發(fā)明采用的一個技術方案是:提供一種軟件開發(fā)工具包的測試方法,其包括:接收使用標記語言描述的軟件開發(fā)工具包的測試案例,測試案例由至少一個功能塊組成;獲取測試案例所包括的至少一個功能塊,并將至少一個功能塊發(fā)送至被測裝置。
為解決上述技術問題,本發(fā)明采用的另一個技術方案是:提供一種測試裝置,其包括:測試處理模塊,用于接收使用標記語言描述的軟件 開發(fā)工具包的測試案例,其中測試案例由至少一個功能塊組成;以及第一通信模塊,與測試處理模塊連接,用于將測試案例所包括的至少一個功能塊發(fā)送至被測裝置。
為解決上述技術問題,本發(fā)明采用的另一個技術方案是:提供一種軟件開發(fā)工具包測試方法,其包括:接收測試案例所包括的至少一個功能塊;根據(jù)測試案例所包括的至少一個功能塊的調度序列測試測試案例;獲取測試案例的測試結果,并將測試結果發(fā)送至測試裝置。
為解決上述技術問題,本發(fā)明采用的另一個技術方案是:提供一種被測裝置,其包括:第二通信模塊,用于接收測試案例所包括的至少一個功能塊;測試固件模塊,與第二通信模塊連接,用于獲取測試案例所包括的至少一個功能塊的調度序列;測試模塊,與測試固件模塊連接,用于根據(jù)調度序列測試測試案例,獲取測試案例的測試結果,并通過第二通信模塊將測試結果發(fā)送至測試裝置。
為解決上述技術問題,本發(fā)明采用的另一個技術方案是:提供一種測試系統(tǒng),其包括上述的測試裝置和上述的被測裝置。
本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術的情況,本發(fā)明通過接收使用標記語言描述的軟件開發(fā)工具包的測試案例,測試案例由至少一個功能塊組成;獲取測試案例所包括的至少一個功能塊,并將至少一個功能塊發(fā)送至被測裝置,其中該測試案例采用標記語言描述,無需編程語言,測試語言簡單,容易維護和修改,成本低。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。其中:
圖1是本發(fā)明第一實施例的sdk的測試方法的流程圖;
圖2是圖1中測試方法所基于的測試系統(tǒng)的結構示意圖;
圖3是本發(fā)明第一實施例的測試系統(tǒng)的結構示意圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性的勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參見圖1-2,圖1是本發(fā)明第一實施例的sdk的測試方法的流程圖;圖2是圖1中測試方法所基于的測試系統(tǒng)的結構示意圖。本實施例所揭示的測試方法基于測試系統(tǒng)20進行測試,如圖2所示,測試系統(tǒng)20包括pc(personalcomputer,計算機)端21和與pc端21連接的設備端22。其中,pc端21通過uart(universalasynchronousreceivertransmitter,通用串行數(shù)據(jù)總線)與設備端22建立連接。在本發(fā)明中,pc端21作為測試裝置,設備端22作為被測裝置。在其他實施例中,本領域的普通技術人員還可以采用其他連接方式將pc端21和設備端22建立連接,例如usb(universalserialbus,通用串行總線)、藍牙、wifi等連接方式。值得注意的是,pc端21可為計算機、平板電腦、服務器、智能手機等;設備端22可為智能手機、可穿戴設備、智能手環(huán)、藍牙耳機等電子裝置。上述描述僅為說明的目的,并不是對本發(fā)明的限制。
如圖1所示,本實施例所揭示的測試方法包括以下步驟:
步驟s11:定義至少一個功能塊,其中至少一個功能塊與測試相關聯(lián);
其中,pc端21可預先設定至少一個功能塊,即pc端21根據(jù)測試人員的需求預先設定至少一個功能塊,其中上述至少一個功能塊是用標記語言描述的。
步驟s12:接收使用標記語言描述的sdk的測試案例(testcase);
其中,pc端21接收到使用標記語言描述的sdk的測試案例,測試案例由至少兩個功能塊組成。測試人員在pc端21輸入使用標記語言 描述的測試案例,測試人員還能夠通過標記語言自定義測試案例,標記語言優(yōu)選為xml(extensiblemarkuplanguage,可擴展標記語言)。值得注意的是,上述接收測試案例的步驟可為接收上述預先設定的至少一個功能塊,或者由開發(fā)者向測試裝置(例如,pc端21)輸入包含上述至少一個功能塊的sdk的測試案例。
在其他實施例中,本領域的普通技術人員還可以采用其他標記語言,例如標記語言包括html(hypertextmarkuplanguage,超文本標記語言)、xhtml(theextensiblehypertextmarkuplanguage,可擴展超文本標識語言)、wml(wirelessmarkuplanguage,無線標記語言)、smil(synchronizedmultimediaintegrationlanguage,同步多媒體集成語言)、sgml(standardgeneralizedmarkuplanguage,標準通用標記語言)、mathml(mathematicalmarkuplanguage,數(shù)學標記語言)或xaml(extensibleapplicationmarkuplanguage,可擴展應用程序標記語言)。
步驟s13:獲取測試案例所包括的至少一個功能塊,并將測試案例所包括的至少一個功能塊發(fā)送至設備端22(被測裝置);
其中,pc端21獲取測試案例所包括的至少一個功能塊,并將測試案例所包括的至少一個功能塊發(fā)送至設備端22。
步驟s14:接收到測試案例所包括的至少一個功能塊;
其中,設備端22接收到測試案例所包括的至少一個功能塊。
步驟s15:根據(jù)測試案例所包括的至少一個功能塊的調度序列測試上述測試案例;
其中,設備端22獲取測試案例所包括的至少一個功能塊的調度序列,并根據(jù)至少一個功能塊的調度序列測試上述測試案例。
步驟s16:獲取測試案例的測試結果,并將測試結果發(fā)送至pc端21(測試裝置);
其中,設備端22在測試完一個測試案例后獲取測試案例的測試結果,并將測試結果發(fā)送至pc端21。
區(qū)別于現(xiàn)有技術的情況,本實施例的測試人員在pc端21輸入使用標記語言描述的測試案例或者直接將pc端21預先定義的至少一個功能 塊進行組合加載,由于使用標記語言,無需熟知編程語言,因此測試語言簡單,容易維護和修改,成本低;另外,測試人員可以自定義測試案例,提升測試質量。
本發(fā)明還提供第二實施例的sdk的測試方法,其在第一實施例所揭示的測試方法的基礎上進行描述。其中上述至少一個功能塊的每一個更包含多個基本功能模塊。pc端21獲取測試案例所包括的至少一個功能塊的每一個的至少一個基本功能模塊,并將測試案例所包括的至少一個基本功能模塊發(fā)送至設備端22。
在步驟s14中,設備端22接收到測試案例所包括的至少一個基本功能模塊。
在步驟s15中,設備端22重建在測試案例中多個基本功能模塊的調度序列,根據(jù)重建后的調度序列測試測試案例。優(yōu)選地,設備端22通過圖算法重建測試案例中多個基本功能模塊的調度序列,即設備端22通過圖算法重建測試案例中api(applicationprogramminginterface,應用程序編程接口)的調度序列,以精確控制sdkapi運行,進而實現(xiàn)測試測試案例。
本實施例所揭示的測試方法能夠支持功能測試案例、交互測試案例、中斷或搶占測試案例、并發(fā)測試案例、壓力測試案例以及性能測試案例,并且在測試案例中設定sdkapi循環(huán)執(zhí)行,能夠實現(xiàn)多線程并發(fā)執(zhí)行、條件執(zhí)行、同步或異步執(zhí)行;支持不同的sdkapi調用共享sdk返回值和參數(shù)。
以下詳細描述如何通過上述測試方法實現(xiàn)一個并發(fā)測試案例。該并發(fā)測試案例具體為測試人員測試sp(smartphone,智能手機)一邊通過藍牙耳機進行聽歌,一邊進行wifi掃描,以實現(xiàn)在通過藍牙耳機進行聽歌的同時連接wifi。
測試人員在pc端21輸入使用xml描述的測試案例包括以下步驟:
步驟1:初始化藍牙耳機(測試目標)的協(xié)議,其中藍牙耳機的協(xié)議優(yōu)選為a2dp(advancedaudiodistributionprofile,藍牙音頻傳輸模型協(xié)定)協(xié)議,并且該協(xié)議用于在藍牙耳機和sp之間傳輸音樂數(shù)據(jù);
步驟2:發(fā)起a2dp協(xié)議連線,用于在藍牙耳機和sp直接建立好傳輸連線;
步驟3:sp通過藍牙耳機播放音樂,pc端21提示用戶在sp播放音樂;
步驟4:sp發(fā)起一個wifi連接。其中,步驟4和步驟3可同時并行發(fā)生。
pc端21獲取并發(fā)測試案例所包括的功能塊,其中步驟1至步驟4為該并發(fā)測試案例所包括的功能塊,即一個步驟代表一個功能塊,例如步驟1為功能塊1,步驟2為功能塊2,步驟3為功能塊3,步驟4為功能塊4。
每個功能塊包括多個基本功能模塊,基本功能模塊用于具體執(zhí)行并發(fā)測試案例的步驟1、步驟2、步驟3以及步驟4,基本功能模塊可以在不同測試案例中進行多次調用。pc端21將并發(fā)測試案例所包括的基本功能模塊發(fā)送至設備端22。
在功能塊1中,初始化藍牙耳機的協(xié)議,相應的基本功能模塊用于初始化藍牙耳機的協(xié)議,例如基本功能模塊bt_a2dp_init用于初始化a2dp協(xié)議。設備端22存儲與基本功能模塊所對應的函數(shù),根據(jù)基本功能模塊bt_a2dp_init調用所對應的函數(shù),實現(xiàn)初始化藍牙耳機的協(xié)議。
在功能模塊2中,發(fā)起a2dp協(xié)議連線,相應的基本功能模塊用于發(fā)起一個連接,例如基本功能模塊bt_a2dp_connect,基本功能模塊bt_a2dp_connect具體為:
子步驟1:設備端22調用bt_a2dp_connect_request函數(shù),發(fā)起一個a2dp協(xié)議連線請求;
子步驟2:設備端22調用bt_a2dp_connect_state函數(shù),發(fā)起一個查詢a2dp協(xié)議狀態(tài)的函數(shù),確認藍牙耳機和sp的連線狀態(tài)是否為正在連接;
子步驟3:設備端22調用bt_a2dp_connect_cnf函數(shù)時,返回a2dp協(xié)議連線結果;
子步驟4:設備端22調用bt_a2dp_connect_state函數(shù),發(fā)起一個查 詢a2dp協(xié)議狀態(tài)的函數(shù),確認藍牙耳機和sp的連線狀態(tài)是否為已經連接;
子步驟5:設備端22調用bt_a2dp_device_get_role函數(shù),發(fā)起一個查詢a2dp協(xié)議狀態(tài)的函數(shù),確認藍牙耳機和sp連線后的設備端角色是否正確。
在功能塊3中,sp通過藍牙耳機播放音樂,基本功能模塊為bt_a2dp_accept_play_remote_music用于在藍牙耳機播放從sp發(fā)送的音頻數(shù)據(jù)流,基本功能模塊bt_a2dp_accept_play_remote_music具體為:
子步驟1:設備端22調用bt_a2dp_start_streaming_ind函數(shù),用于確定streaming音頻數(shù)據(jù)流是否到達藍牙耳機;
子步驟2:設備端22調用bt_a2dp_start_streaming_response函數(shù),藍牙耳機開始播放streaming音頻數(shù)據(jù)流。
在功能塊4中,sp發(fā)起一個wifi連接,基本功能模塊為wifi_connect用于發(fā)起掃描一個wifi熱點,并且發(fā)送連線;基本功能模塊wifi_connect具體為:
子步驟1:設備端22調用wifi_init函數(shù),用于發(fā)起一個wifiinit;
子步驟2:設備端22調用wifi_scan函數(shù),用于掃描一個wifi熱點;
子步驟3:設備端22調用wifi_check_status函數(shù),用于檢查當前狀態(tài)是否未連線;
子步驟4:設備端22調用wifi_connect函數(shù),用于發(fā)起wifi連接;
子步驟5:設備端22調用wifi_check_status函數(shù),用于再次確認當前狀態(tài)是否已連線。
設備端22測試完上述并發(fā)測試案例,獲取測試結果,并將測試結果發(fā)送至pc端21。
以下詳細描述如何通過上述測試方法實現(xiàn)中斷測試案例。該中斷測試案例具體為測試人員測試在sp(輔助測試設備)通過藍牙耳機(測試目標)進行音樂播放時,電話呼入,藍牙耳機的音樂中斷,輸出振鈴音樂,然后通過藍牙耳機接聽電話。
測試人員在pc端21輸入使用xml描述的測試案例包括以下步驟:
步驟1:初始化藍牙耳機的hfp(hands-freeprofile,藍牙設備可以控制電話)協(xié)議,用于在藍牙耳機和sp之間電話業(yè)務,電話業(yè)務包括撥打或接聽電話、電話語音。
步驟2:初始化藍牙耳機的a2dp協(xié)議,用于在藍牙耳機和sp之間傳輸音樂數(shù)據(jù);
步驟3:發(fā)起a2dp協(xié)議連線,用于在藍牙耳機和sp之間直接建立好a2dp協(xié)議傳輸連線;
步驟4:發(fā)起hfp協(xié)議連線,用于在在藍牙耳機和sp直接建立好hfp協(xié)議傳輸連線,其中,步驟3和步驟4可同時并行發(fā)生;
步驟5:藍牙耳機播放音樂,pc端21提示用戶在sp播放音樂;
步驟6:電話呼入,藍牙耳機播放振鈴音樂,然后接聽電話,pc端21提示用戶發(fā)起一個電話到sp。
其中,本實施例所揭示的步驟1-步驟5與上述的并發(fā)測試案例的步驟1-步驟4相同,在此不再贅述。
在步驟6中,其相應的基本功能模塊為bt_hfp_accept_call,用于接聽電話呼入,藍牙耳機先播放音樂,然后發(fā)起接聽電話的動作?;竟δ苣Kbt_hfp_accept_call具體為:
子步驟1:設備端22調用bt_hfp_ciev_setup_ind函數(shù),用于確定cievsetup的狀態(tài);
子步驟2:設備端22調用bt_hfp_audio_connect_ind函數(shù),用于確定sp的audio連線到藍牙耳機;
子步驟3:設備端22調用bt_hfp_ring_ind函數(shù),用于確定sp的振鈴指示開始,該函數(shù)的實現(xiàn)里面會停掉藍牙耳機的音樂播放,藍牙耳機開始播放振鈴;
子步驟4:設備端22調用bt_hfp_answer_call函數(shù),用于發(fā)起接聽電話動作;
子步驟5:設備端22調用bt_hfp_answer_call_cfm函數(shù),用于確定接聽動作發(fā)起成功;
子步驟6:設備端22調用bt_hfp_ciev_call_ind函數(shù),用于確定接 聽電話;
子步驟7:設備端22調用bt_hfp_ciev_setup_ind函數(shù),用于確定cievsetup的狀態(tài)切為接聽。
設備端22測試完中斷并發(fā)測試案例,獲取測試結果,并將測試結果發(fā)送至pc端21。
本實施例所揭示的測試方法每次運行一個測試案例,能夠降低資源消耗,并且測試案例能夠實現(xiàn)自動化。
本發(fā)明還提供一種測試系統(tǒng),其在第一實施例所揭示的測試方法的基礎上進行描述。請參見圖3所示,本實施例所揭示的測試系統(tǒng)30包括pc端31和與pc端31連接的設備端32。
pc端31包括測試存儲模塊311、測試處理模塊312以及第一通信模塊313,測試處理模塊312與測試存儲模塊311連接,第一通信模塊313與測試處理模塊312連接。
設備端32包括第二通信模塊321、測試固件模塊322以及測試模塊323,第二通信模塊321與第一通信模塊313建立連接,優(yōu)選地,第二通信模塊321與第一通信模塊313通過uart建立連接;測試固件模塊322與第二通信模塊321連接,測試模塊323分別與測試固件模塊322以及第二通信模塊321建立連接。
其中,測試存儲模塊311用于存儲預先設定的至少一個功能塊,其中至少一個功能塊與sdk測試相關;測試處理模塊312用于接收測試案例所包括的至少一個功能塊,其中上述至少一個功能塊可來自于測試存儲模塊311或者開發(fā)者的輸入;第一通信模塊313用于將測試案例所包括的至少一個功能塊發(fā)送至第二通信模塊321。
第二通信模塊321用于接收到測試案例所包括的至少一個功能塊;測試固件模塊322用于獲取測試案例所包括的至少一個功能塊的調度序列;測試模塊323用于根據(jù)調度序列測試測試案例,獲取測試案例的測試結果,并通過第二通信模塊321將測試結果發(fā)送至第一通信模塊313,即測試模塊323將測試結果通過第二通信模塊321發(fā)送至第一通信模塊313。
其中,標記語言優(yōu)選為xml。在其他實施例中,本領域的普通技術人員還可以采用其他標記語言,例如標記語言包括html、xhtml、wml、smil、sgml、mathml或xaml。另外,值得注意的是,由于上述至少一個功能塊的每一個可包含至少一個基本功能模塊,因此上述調度序列可細化為每個基本功能模塊的調度序列,由于前面已經對其進行介紹,這里不再贅述。
區(qū)別于現(xiàn)有技術的情況,本實施例的測試人員在pc端21輸入通過標記語言描述的測試案例,無需熟知編程語言,語言簡單,容易維護和修改,成本低;另外,測試人員可以自定義測試案例,提升測試質量。
本實施例所揭示的測試系統(tǒng)能夠支持功能測試案例、交互測試案例、中斷或搶占測試案例、并發(fā)測試案例、壓力測試案例以及性能測試案例,并且在測試案例中設定sdkapi循環(huán)執(zhí)行,能夠實現(xiàn)多線程并發(fā)執(zhí)行、條件執(zhí)行、同步或異步執(zhí)行;支持不同的sdkapi調用共享sdk返回值和參數(shù)。
綜上所述,本發(fā)明的測試人員在pc端輸入使用標記語言描述的測試案例,無需熟知編程語言,測試語言簡單,容易維護和修改,成本低;此外,測試人員可以自定義測試案例或者對預先設定的功能塊進行組合以形成測試案例,提升測試質量;另外,每次運行一個測試案例,能夠降低資源消耗,并且測試案例能夠實現(xiàn)自動化。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。