的字符串至少包括測試用例的函數(shù)名,還可以包括測試用 例函數(shù)參數(shù);對于測試用例的函數(shù)名可以明確測試用例的,可只發(fā)送測試用例的函數(shù)名; 對于測試用例的函數(shù)名仍然不能明確具體的測試用例的,可以發(fā)送測試用例函數(shù)名和測試 用例函數(shù)參數(shù);其中,測試用例函數(shù)參數(shù)又可以包括多個不同的參數(shù);具體的,函數(shù)名和參 數(shù)之間用空格隔開,函數(shù)參數(shù)與參數(shù)之間用逗號隔開,最后一個參數(shù)后不添加任何字符。
[0102] 監(jiān)測模塊在接收到測試指示數(shù)據(jù)時,對該測試指示數(shù)據(jù)進(jìn)行解析,得到數(shù)據(jù)內(nèi)容 (具體包括測試用例函數(shù)名和/或測試用例函數(shù)參數(shù)),然后將解析得到的數(shù)據(jù)內(nèi)容發(fā)送給 被測試模塊,以使得被測試模塊根據(jù)該數(shù)據(jù)內(nèi)容從其自身所在的預(yù)設(shè)操作系統(tǒng)中調(diào)用數(shù)據(jù) 內(nèi)容對應(yīng)的測試用例,并執(zhí)行該調(diào)用的測試用例,并將執(zhí)行結(jié)果反饋給監(jiān)測模塊;此時,監(jiān) 測模塊則可以根據(jù)上述執(zhí)行結(jié)果生成具有第一固定格式的字符串并反饋給測試工具。
[0103] 104、接收監(jiān)測模塊發(fā)送的具有第一固定格式的字符串,字符串?dāng)y帶有標(biāo)識測試用 例的執(zhí)行是否成功的數(shù)據(jù)值。
[0104] 具體的,監(jiān)測模塊在監(jiān)測到被測試模塊執(zhí)行其調(diào)用的測試用例完成后,根據(jù)執(zhí)行 結(jié)果生成具有第一固定格式的字符串,并將該字符串發(fā)送至測試工具;該字符串中攜帶有 表示測試用例是否通過的字段。
[0105] 105、根據(jù)具有第一固定格式的字符串,判斷測試用例是否通過。
[0106] 本實施例中,測試工具接收到該具有第一固定格式的字符串,獲取該字符串中的 數(shù)據(jù)值,并判斷該數(shù)據(jù)值是否與預(yù)設(shè)數(shù)據(jù)值相匹配,若匹配,則判定測試用例測試通過;若 不匹配,則判定測試用例未通過。
[0107] 為了更好的判斷測試用例是否執(zhí)行通過,本實施例中的步驟105優(yōu)選采用下列方 法實現(xiàn),包括:
[0108] 在字符串中查找第一預(yù)設(shè)標(biāo)識字段,獲取第一預(yù)設(shè)標(biāo)識字段上的第一數(shù)據(jù)值,并 判斷第一數(shù)據(jù)值與第一預(yù)設(shè)數(shù)據(jù)值是否相匹配;
[0109] 在檢測到第一數(shù)據(jù)值與第一預(yù)設(shè)數(shù)據(jù)值相匹配時,判定測試用例執(zhí)行成功;以及, 在檢測到第一數(shù)據(jù)值與第一預(yù)設(shè)數(shù)據(jù)值不匹配時,判定測試用例執(zhí)行失敗。
[0110] 具體的,該測試工具的功能還包括判斷測試用例是否通過,單板側(cè)的監(jiān)測模塊獲 取到被測試模塊(即驅(qū)動程序)執(zhí)行測試用例的執(zhí)行結(jié)果之后,通過串口將表示測試用例 是否成功的字符串發(fā)給PC側(cè)的測試工具;其中,監(jiān)測模塊發(fā)送的測試用例的執(zhí)行結(jié)果采用 與測試工具約定好的格式;而測試工具在接收到字符串后,根據(jù)雙方約定的規(guī)則查找到表 示測試用例是否通過的字段,并根據(jù)該字段中的內(nèi)容作出判斷;例如該字段中的數(shù)據(jù)值為 零的話,表示測試用例通過,如果該字段中的值為非零,表示測試用例執(zhí)行失敗。
[0111] 具體的,監(jiān)測模塊發(fā)送第一固定格式的字符串與測試工具解析該第一固定格式的 字符串之間約定的通信協(xié)議即測試工具和預(yù)設(shè)操作系統(tǒng)(或者說監(jiān)測模塊)之間的第二個 協(xié)議,具體如下:
[0112] 為了讓PC側(cè)的測試工具能夠判斷出測試用例是否執(zhí)行成功,我們在實現(xiàn)測試用 例時,在測試用例返回之前,向串口發(fā)送表示用例執(zhí)行是否成功的字符串,該字符串為固定 格式,該格式為雙方約定的規(guī)則。例如,將字符串的某領(lǐng)域設(shè)置為零表示用例執(zhí)行成功,設(shè) 置為非零表示用例執(zhí)行失敗。
[0113] 測試工具發(fā)送完測試用例的字符串之后,等待預(yù)設(shè)操作系統(tǒng)返回用例執(zhí)行結(jié)果, 接收到結(jié)果后對測試結(jié)果進(jìn)行分析,并將分析結(jié)果結(jié)果在測試工具的界面上顯示出來,之 后測試工具接著向串口發(fā)送下一個測試用例。
[0114] 另外,現(xiàn)有技術(shù)中的VTS自動化測試過程較難控制,且測試用例的選擇很不方便, 并且一旦將測試用例加入VTS環(huán)境,該測試用例必須執(zhí)行;此外,在VTS環(huán)境下,一旦有測試 用例出現(xiàn)異常,例如測試用例被阻塞無法返回,將導(dǎo)致后續(xù)的測試用例均不能夠執(zhí)行,進(jìn)而 導(dǎo)致整個測試過程失敗。
[0115] 為了解決上述問題,如圖2所示,本發(fā)明提供的基帶軟件的自動化測試方法還包 括:
[0116] 201、獲取發(fā)送測試指示數(shù)據(jù)到接收該測試指示數(shù)據(jù)對應(yīng)的反饋?zhàn)址畷r所用的 測試時間。
[0117] 202、判斷測試時間是否與第一預(yù)設(shè)時間相匹配,在檢測到測試時間小于或等于第 一預(yù)設(shè)時間時,執(zhí)行步驟203 ;否則執(zhí)行步驟204。
[0118] 203、判定測試用例執(zhí)行正常,并根據(jù)具有第一固定格式的字符串判斷測試用例是 否通過。
[0119] 204、判定測試用例執(zhí)行異常,并繼續(xù)向監(jiān)測模塊發(fā)送下一個測試指示數(shù)據(jù)。
[0120] 具體的,通過該方法可以保證整個測試過程順利進(jìn)行,避免了由于當(dāng)前測試用例 執(zhí)行異常(如測試用例被阻塞)而導(dǎo)致后續(xù)的測試無法測試的問題。
[0121] 進(jìn)一步的,如圖3所示,步驟103中具體包括:
[0122] 1031、向監(jiān)測模塊發(fā)送詢問被測試模塊是否正常啟動的請求命令。
[0123] 1032、在接收到監(jiān)測模塊發(fā)送的攜帶被測試模塊正常啟動的反饋信息時,向監(jiān)測 模塊發(fā)送測試指示數(shù)據(jù)。
[0124] 具體的,測試工具和預(yù)設(shè)操作系統(tǒng)(或者說監(jiān)測模塊)制定了多種通信協(xié)議,其 中,第一個協(xié)議,包括預(yù)設(shè)操作系統(tǒng)測試環(huán)境是否準(zhǔn)備完備的協(xié)議。協(xié)議實現(xiàn)如下,單板側(cè) 的預(yù)設(shè)操作系統(tǒng)啟動正常后,會執(zhí)行一個接收PC側(cè)測試工具命令的任務(wù)(即監(jiān)測模塊執(zhí)行 該任務(wù)),該任務(wù)處于阻塞狀態(tài),一直在等待測試工具發(fā)出詢問系統(tǒng)是否正常啟動的命令, 一旦該任務(wù)接收到命令,系統(tǒng)會向測試工具發(fā)送系統(tǒng)已經(jīng)正常啟動的回復(fù),測試工具在接 收到該回復(fù)后,開始向預(yù)設(shè)操作系統(tǒng)發(fā)送測試指示數(shù)據(jù)。
[0125] 如圖4所示,為了保證測試的正常運(yùn)行,本發(fā)明提供的基帶軟件的自動化測試方 法還包括:
[0126] 301、每隔第二預(yù)設(shè)時間接收監(jiān)測模塊發(fā)送的具有第二預(yù)設(shè)格式的心跳包;其中, 第二預(yù)設(shè)格式與第一預(yù)設(shè)格式不同。
[0127]302、在心跳包中查找第二預(yù)設(shè)標(biāo)識字段。
[0128] 303、獲取第二預(yù)設(shè)標(biāo)識字段上的第二數(shù)據(jù)值。
[0129] 304、判斷第二數(shù)據(jù)值與第二預(yù)設(shè)數(shù)據(jù)值是否相匹配,在檢測到第二數(shù)據(jù)值與第二 預(yù)設(shè)數(shù)據(jù)值相匹配時,執(zhí)行步驟305 ;否則,執(zhí)行步驟306 ;
[0130] 305、在檢測到第二數(shù)據(jù)值與第二預(yù)設(shè)數(shù)據(jù)值相匹配時,向監(jiān)測模塊發(fā)送測試指示 數(shù)據(jù)。
[0131] 306、在檢測到第二數(shù)據(jù)值與第二預(yù)設(shè)數(shù)據(jù)值不匹配時,停止測試。
[0132] 具體的,該方法即測試工具和預(yù)設(shè)操作系統(tǒng)(或者說監(jiān)測模塊)制定的第三個協(xié) 議,即為了保證在測試期間,被測試的預(yù)設(shè)操作系統(tǒng)一直處于正常運(yùn)行狀態(tài),該預(yù)設(shè)操作系 統(tǒng)實現(xiàn)了心跳包功能;具體的,監(jiān)測模塊每隔一段時間(即第二預(yù)設(shè)時間),按照雙方越好 的固定格式向測試工具發(fā)送字符串,表示系統(tǒng)運(yùn)行正常,測試工具接收到該字符串后,獲知 系統(tǒng)運(yùn)行正常,可以正常下發(fā)測試用例,否則,測試工具停止測試。
[0133] 需要說明的是,此處的心跳包具有第二預(yù)設(shè)格式,該第二預(yù)定格式與第一預(yù)定格 式不同。另外,此處的第一預(yù)設(shè)時間是根據(jù)預(yù)設(shè)操作系統(tǒng)自身設(shè)置決定的,具體數(shù)值可以任 意設(shè)置,而第一預(yù)設(shè)時間必須能夠保證,在被測試模塊執(zhí)行測試用例正常時,從測試工具發(fā) 送測試指示數(shù)據(jù)直至接收到監(jiān)測模塊發(fā)送的該測試指示數(shù)據(jù)對應(yīng)的字符串的過程正常進(jìn) 行即可,在滿足上述條件,第一預(yù)設(shè)時間同樣可以任意設(shè)置,并且第二預(yù)設(shè)時間可以與第一 預(yù)設(shè)時間相同,也可以不同,本實施例中是不同的。
[0134] 具體的,本實施例中的第二預(yù)設(shè)時間,即預(yù)設(shè)操作系統(tǒng)每經(jīng)過300個tick(即時鐘 的滴答聲),監(jiān)測模塊向測試工具發(fā)送具有第二預(yù)設(shè)格式的心跳包;其中,一個tick就是一 個固定的時間長度;一個tick具體的時間長度,由操作系統(tǒng)的設(shè)置決定。tick為預(yù)設(shè)操作 系統(tǒng)的相對時間單位,也被稱為系統(tǒng)的時基,來源于定時器的周期性中斷(輸出脈沖),一 次中斷表示一個tick,即一個"時鐘滴答"或者時標(biāo)。一個tick與具體時間的對應(yīng)關(guān)系可 在初始化定時器時設(shè)定,也就是說,tick所對應(yīng)的具體時間長度是可以調(diào)整的。
[0135] 一般來說,實時內(nèi)核都提供相應(yīng)的調(diào)整機(jī)制,應(yīng)用可以根據(jù)特定情況改變tick對 應(yīng)的時間長度。例如,可以使系統(tǒng)5毫秒產(chǎn)生一個tick,也可以是10毫秒產(chǎn)生一個tick。 tick的大小決定了整個系統(tǒng)的時間粒度。
[0136] 為了使用戶能夠更好的了解使用本發(fā)明提供自動化測試方法,本發(fā)明中的測試工 具還能夠?qū)崟r顯示測試過程中用戶選擇的所有測試用例的測試進(jìn)度以及已完成測試的所 述測試用例所占的比例。
[0137] 并且,PC側(cè)的測試工具還具備統(tǒng)計功能,分別統(tǒng)計當(dāng)前測試完成后的測試成功的 測試用例數(shù)量、測試失敗的測試用例數(shù)量以及測試異常的測試用例數(shù)量,并根據(jù)統(tǒng)計結(jié)果 分別計算測試成功、測試失敗以及測試異常的測試用例數(shù)量所自占據(jù)的比例,并實時顯示 測試成功、測試失敗以及測試異常的測試用例數(shù)量所占據(jù)的比例。
[0138] 此外,該測試工具還具備記錄Log(即日志)的功能,將預(yù)設(shè)操作系統(tǒng)中被測試模 塊執(zhí)行測試用例的運(yùn)行過程中的Log記錄下來,并保存到文件中,這樣當(dāng)測試用例失敗時, 可以根據(jù)該Log查找用例失敗的具體地點(diǎn)。