框架文件的實際執(zhí)行結(jié)果就可以得到靜態(tài)庫測試結(jié)果。因此,相對于現(xiàn)有靜態(tài)庫測試方法,本申請實施例可以降低測試過程的復(fù)雜度,提高測試效率。
[0078]在本申請一個可行的實施例中,上述實施例中的獲取有效輸入值(步驟S24),可以包括:
[0079]判斷是否接收到輸入值,如果接收到輸入值,則判斷接收到的輸入值是否滿足預(yù)設(shè)測試條件,如果滿足預(yù)設(shè)測試條件,則判定所述接收到的輸入值為有效輸入值;否則,如果所述接收到的輸入值不滿足預(yù)設(shè)測試條件,或者沒有接收到輸入值,則直接上述執(zhí)行步驟S27,即依次調(diào)用所述子線程銷毀函數(shù)和主線程銷毀函數(shù)。
[0080]實際應(yīng)用中,可能需要子線程運(yùn)行函數(shù)的輸入值滿足一定條件,例如必須為包含5個字符的字符串;如果輸入值不滿足該條件,可能導(dǎo)致子線程無法運(yùn)行,或運(yùn)行錯誤,影響對靜態(tài)庫的性能分析。因此,本申請實施例通過上述方法對輸入值進(jìn)行過濾,只有滿足預(yù)設(shè)測試條件的輸入值才可以作為有效輸入值輸入子線程運(yùn)行函數(shù),從而可以保證最終得到的實際執(zhí)行結(jié)果中不存在干擾數(shù)據(jù),提高測試效率。
[0081]圖3為本申請實施例提供的一種靜態(tài)庫測試裝置的結(jié)構(gòu)框圖。
[0082]參照圖3,該靜態(tài)庫測試裝置300包括:編譯單元310、獲取單元320、執(zhí)行單元330和分析單兀340。
[0083]其中,該編譯單元310被配置為,將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動態(tài)庫;
[0084]獲取單元320被配置為,獲取具有與所述預(yù)設(shè)接口對應(yīng)的調(diào)用接口的框架文件;
[0085]執(zhí)行單元330被配置為,執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動態(tài)庫;
[0086]分析單元340被配置為,根據(jù)所述框架文件的實際執(zhí)行結(jié)果分析所述靜態(tài)庫的性倉泛。
[0087]由以上技術(shù)方案可知,本申請實施例提供的靜態(tài)庫測試方法,通過將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動態(tài)庫,同時設(shè)計具有與所述預(yù)設(shè)接口一一對應(yīng)的調(diào)用接口的框架文件,進(jìn)而在執(zhí)行所述框架文件的過程中,通過調(diào)用接口實現(xiàn)對預(yù)設(shè)接口的調(diào)用并得到相應(yīng)的實際執(zhí)行結(jié)果,通過分析該實際執(zhí)行結(jié)果即可得到靜態(tài)庫的性能信息。本申請實施例中,由靜態(tài)庫編譯得到的動態(tài)庫的對外接口是統(tǒng)一的,使得框架文件可以被任一待測試的靜態(tài)庫所復(fù)用,不需要針對每個靜態(tài)庫編寫對應(yīng)的測試代碼,可以降低測試過程的復(fù)雜度,提高測試效率。
[0088]圖4為本申請實施例提供的一種靜態(tài)庫測試裝置的結(jié)構(gòu)框圖。
[0089]參照圖4,該靜態(tài)庫測試裝置400包括:編譯單元410、獲取單元420、執(zhí)行單元430和分析單元440。其中,執(zhí)行單元430包括:第一執(zhí)行子單元431、第二執(zhí)行子單元432、第三執(zhí)行子單元433、第四執(zhí)行子單元434、第五執(zhí)行子單元435、第六執(zhí)行子單元436和接收子單元437。
[0090]該編譯單元410被配置為,將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動態(tài)庫;
[0091]獲取單元420被配置為,獲取具有與所述預(yù)設(shè)接口對應(yīng)的調(diào)用接口的框架文件;
[0092]該第一執(zhí)行子單元431被配置為,調(diào)用并執(zhí)行所述主線程初始化函數(shù),并觸發(fā)所述第二執(zhí)行子單元;
[0093]該第二執(zhí)行子單元432被配置為,調(diào)用并執(zhí)行所述子線程初始化函數(shù),并觸發(fā)接收子單元437 ;
[0094]接收子單元437被配置為,獲取有效輸入值,并在獲取到有效輸入值后,觸發(fā)第三執(zhí)行子單元433 ;
[0095]第三執(zhí)行子單元433被配置為,調(diào)用并執(zhí)行所述子線程運(yùn)行函數(shù),得到與所述有效輸入值對應(yīng)的子線程運(yùn)行結(jié)果,并觸發(fā)第四執(zhí)行子單元434 ;
[0096]第四執(zhí)行子單元434被配置為,調(diào)用并執(zhí)行所述結(jié)果輸出函數(shù),以將所述子線程運(yùn)行結(jié)果編輯為符合預(yù)設(shè)格式的實際執(zhí)行結(jié)果,并輸出所述實際執(zhí)行結(jié)果,并觸發(fā)第五執(zhí)行子單元435 ;
[0097]第五執(zhí)行子單元435被配置為,調(diào)用并執(zhí)行所述子線程銷毀函數(shù),并觸發(fā)第六執(zhí)行子單兀436 ;
[0098]第六執(zhí)行子單元436被配置為,調(diào)用并執(zhí)行所述主線程銷毀函數(shù)。
[0099]分析單元440被配置為,根據(jù)所述實際執(zhí)行結(jié)果分析所述靜態(tài)庫的性能。
[0100]由以上技術(shù)方案可知,本申請實施例提供的靜態(tài)庫測試方法,不需要針對每個待測試的靜態(tài)庫編寫對應(yīng)的測試代碼,只需將其編譯為具有上述主線程初始化函數(shù)等六個預(yù)設(shè)接口的動態(tài)庫,通過執(zhí)行框架文件依次調(diào)用該預(yù)設(shè)接口,實現(xiàn)對該動態(tài)庫的調(diào)用,也即實現(xiàn)對待測試的靜態(tài)庫的調(diào)用,進(jìn)而通過分析框架文件的實際執(zhí)行結(jié)果就可以得到靜態(tài)庫測試結(jié)果。因此,相對于現(xiàn)有靜態(tài)庫測試方法,本申請實施例可以降低測試過程的復(fù)雜度,提高測試效率。
[0101]在本申請一個可行的實施例中,上述分析單元440可以包括:比較單元。該比較單元被配置為:將所述實際執(zhí)行結(jié)果與所述有效輸入值對應(yīng)的預(yù)設(shè)輸出值進(jìn)行比較,如果所述實際執(zhí)行結(jié)果與所述預(yù)設(shè)輸出值之間的誤差在預(yù)設(shè)范圍內(nèi),則判定所述靜態(tài)庫的相關(guān)性能正常,否則判定所述靜態(tài)庫的相關(guān)性能異常。
[0102]在本申請一個可行的實施例中,上述接收子單元437可以包括:第一判斷單元、第二判斷單元和跳轉(zhuǎn)觸發(fā)單元。
[0103]其中,第一判斷單元被配置為,判斷是否接收到輸入值;
[0104]第二判斷單元,用于在接收到輸入值時,判斷接收到的輸入值是否滿足預(yù)設(shè)測試條件,如果所述接收到的輸入值滿足預(yù)設(shè)測試條件,則判定所述接收到的輸入值為有效輸入值,并觸發(fā)上述第三執(zhí)行子單元433 ;
[0105]跳轉(zhuǎn)單元,用于在所述接收到的輸入值不滿足預(yù)設(shè)測試條件,或者沒有接收到輸入值時,觸發(fā)上述第五執(zhí)行子單元435。
[0106]通過上述接收子單元對輸入值進(jìn)行接收并篩選,只有滿足預(yù)設(shè)測試條件的輸入值才可以作為有效輸入值輸入子線程運(yùn)行函數(shù),從而可以保證最終得到的實際執(zhí)行結(jié)果中不存在干擾數(shù)據(jù),提高測試效率。
[0107]關(guān)于上述實施例中的裝置,其中各個單元執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0108]圖5為本申請實施例提供的又一種靜態(tài)庫測試裝置的結(jié)構(gòu)框圖。
[0109]參照圖5,該靜態(tài)庫測試裝置500包括處理器510、存儲器520、輸入輸出接口 530和電源組件540。其中,存儲器520中存儲有處理器510可執(zhí)行的指令,處理器510執(zhí)行該指令使得靜態(tài)庫測試裝置500實現(xiàn)以下功能:
[0110]將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動態(tài)庫;
[0111]獲取具有與所述預(yù)設(shè)接口對應(yīng)的調(diào)用接口的框架文件;
[0112]執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動態(tài)庫;
[0113]根據(jù)所述框架文件的實際執(zhí)行結(jié)果分析所述靜態(tài)庫的性能。
[0114]在本申請一個可行的實施例中,所述預(yù)設(shè)接口包括:用于實現(xiàn)資源初始化的主線程初始化函數(shù)、用于實現(xiàn)資源釋放的主線程銷毀函數(shù)、用于實現(xiàn)資源創(chuàng)建的子線程初始化函數(shù)、用于實現(xiàn)資源銷毀的子線程銷毀函數(shù)、子線程運(yùn)行函數(shù)和結(jié)果輸出函數(shù)。
[0115]在本申請另一個可行的實施例中,執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動態(tài)庫,包括:
[0116]依次調(diào)用并執(zhí)行所述主線程初始化函數(shù)和子線程初始化函數(shù);
[0117]獲取有效輸入值;
[0118]調(diào)用并執(zhí)行所述子線程運(yùn)行函數(shù),得到與所述有效輸入值對應(yīng)的子線程運(yùn)行結(jié)果;
[0119]調(diào)用并執(zhí)行所述結(jié)果輸出函數(shù),以將所述子線程運(yùn)行結(jié)果編輯為符合預(yù)設(shè)格式的實際執(zhí)行結(jié)果,并輸出所述實