一種靜態(tài)庫測試方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種靜態(tài)庫測試方法及裝置。
【背景技術(shù)】
[0002]編程過程中,同一段代碼或數(shù)據(jù)可能會(huì)應(yīng)用于不同的程序中,或者在同一程序中被多次調(diào)用;為提高編程效率,通常將這些被反復(fù)應(yīng)用的代碼及數(shù)據(jù)編譯為公共的函數(shù)庫,方便程序調(diào)用。上述函數(shù)庫包括靜態(tài)庫和動(dòng)態(tài)庫兩種。
[0003]為了保證代碼的正確性,需要對函數(shù)庫進(jìn)行測試。對于靜態(tài)庫,由于其文件只是一些目標(biāo)程序的組合,無法直接運(yùn)行,因此常用的靜態(tài)庫測試方法為:編寫一段代碼調(diào)用靜態(tài)庫,生成可執(zhí)行文件,運(yùn)行該可執(zhí)行文件,通過分析運(yùn)行結(jié)果來判斷靜態(tài)庫的相關(guān)性能是否正常。
[0004]通過上述方法對靜態(tài)庫測試,需要針對每個(gè)靜態(tài)庫編寫一段完整的測試代碼,并生成相應(yīng)的可執(zhí)行文件,以實(shí)現(xiàn)對該靜態(tài)庫的調(diào)用,且靜態(tài)庫升級(jí)后,即使靜態(tài)庫本身的變化很少,原可執(zhí)行文件也不再適用,還需要編寫新的測試代碼、調(diào)用升級(jí)后的靜態(tài)庫并生成新的可執(zhí)行文件,才能實(shí)現(xiàn)對升級(jí)后的靜態(tài)庫的測試。可見,上述靜態(tài)庫測試方法中用于測試的可執(zhí)行文件不可復(fù)用,進(jìn)而導(dǎo)致測試過程繁瑣、測試效率低。
【發(fā)明內(nèi)容】
[0005]本申請實(shí)施例中提供了一種靜態(tài)庫測試方法及裝置,以解決現(xiàn)有靜態(tài)庫測試方法中用于測試的可執(zhí)行文件不可復(fù)用、測試過程繁瑣、效率低的問題。
[0006]為了解決上述技術(shù)問題,本申請公開了如下技術(shù)方案:
[0007]本申請第一方面,公開了一種靜態(tài)庫測試方法;所述靜態(tài)庫測試方法包括:
[0008]將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動(dòng)態(tài)庫;
[0009]獲取具有與所述預(yù)設(shè)接口對應(yīng)的調(diào)用接口的框架文件;
[0010]執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動(dòng)態(tài)庫;以及
[0011]根據(jù)所述框架文件的實(shí)際執(zhí)行結(jié)果分析所述靜態(tài)庫的性能。
[0012]結(jié)合第一方面,在第一方面第一種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)接口包括:
[0013]用于實(shí)現(xiàn)資源初始化的主線程初始化函數(shù)、用于實(shí)現(xiàn)資源釋放的主線程銷毀函數(shù)、用于實(shí)現(xiàn)資源創(chuàng)建的子線程初始化函數(shù)、用于實(shí)現(xiàn)資源銷毀的子線程銷毀函數(shù)、子線程運(yùn)行函數(shù)和結(jié)果輸出函數(shù)。
[0014]結(jié)合第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第二種可能的實(shí)現(xiàn)方式中,執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動(dòng)態(tài)庫,包括:
[0015]依次調(diào)用并執(zhí)行所述主線程初始化函數(shù)和子線程初始化函數(shù);
[0016]獲取有效輸入值;
[0017]調(diào)用并執(zhí)行所述子線程運(yùn)行函數(shù),得到與所述有效輸入值對應(yīng)的子線程運(yùn)行結(jié)果;
[0018]調(diào)用并執(zhí)行所述結(jié)果輸出函數(shù),以將所述子線程運(yùn)行結(jié)果編輯為符合預(yù)設(shè)格式的實(shí)際執(zhí)行結(jié)果,并輸出所述實(shí)際執(zhí)行結(jié)果;以及
[0019]依次調(diào)用并執(zhí)行所述子線程銷毀函數(shù)和主線程銷毀函數(shù)。
[0020]結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,所述獲取有效輸入值,包括:
[0021]判斷是否接收到輸入值;如果接收到輸入值,則判斷接收到的輸入值是否滿足預(yù)設(shè)測試條件;
[0022]如果所述接收到的輸入值滿足預(yù)設(shè)測試條件,則判定所述接收到的輸入值為有效輸入值;以及如果所述接收到的輸入值不滿足預(yù)設(shè)測試條件,或者沒有接收到輸入值,則直接執(zhí)行所述依次調(diào)用所述子線程銷毀函數(shù)和主線程銷毀函數(shù)的步驟。
[0023]結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第四種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述框架文件的實(shí)際執(zhí)行結(jié)果分析所述靜態(tài)庫的性能,包括:
[0024]將所述實(shí)際執(zhí)行結(jié)果與所述有效輸入值對應(yīng)的預(yù)設(shè)輸出值進(jìn)行比較;
[0025]如果所述實(shí)際執(zhí)行結(jié)果與所述預(yù)設(shè)輸出值之間的誤差在預(yù)設(shè)范圍內(nèi),則判定所述靜態(tài)庫的相關(guān)性能正常,否則判定所述靜態(tài)庫的相關(guān)性能異常。
[0026]本申請第二方面,公開了一種靜態(tài)庫測試裝置;所述靜態(tài)庫測試裝置包括:
[0027]編譯單元,用于將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動(dòng)態(tài)庫;
[0028]獲取單元,用于獲取具有與所述預(yù)設(shè)接口對應(yīng)的調(diào)用接口的框架文件;
[0029]執(zhí)行單元,用于執(zhí)行所述框架文件,以通過所述調(diào)用接口和對應(yīng)的預(yù)設(shè)接口調(diào)用所述動(dòng)態(tài)庫;以及
[0030]分析單元,用于根據(jù)所述框架文件的實(shí)際執(zhí)行結(jié)果分析所述靜態(tài)庫的性能。
[0031]結(jié)合第二方面,在第二方面第一種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)接口包括:用于實(shí)現(xiàn)資源初始化的主線程初始化函數(shù)、用于實(shí)現(xiàn)資源釋放的主線程銷毀函數(shù)、用于實(shí)現(xiàn)資源創(chuàng)建的子線程初始化函數(shù)、用于實(shí)現(xiàn)資源銷毀的子線程銷毀函數(shù)、子線程運(yùn)行函數(shù)和結(jié)果輸出函數(shù)。
[0032]結(jié)合第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第二種可能的實(shí)現(xiàn)方式中,所述執(zhí)行單元包括:第一執(zhí)行子單元、第二執(zhí)行子單元、第三執(zhí)行子單元、第四執(zhí)行子單元、第五執(zhí)行子單元、第六執(zhí)行子單元和接收子單元;
[0033]所述第一執(zhí)行子單元,用于調(diào)用并執(zhí)行所述主線程初始化函數(shù),并觸發(fā)所述第二執(zhí)行子單元;所述第二執(zhí)行子單元,用于調(diào)用并執(zhí)行所述子線程初始化函數(shù),并觸發(fā)所述接收子單元;所述接收子單元,用于獲取有效輸入值,并在獲取到有效輸入值后,觸發(fā)所述第三執(zhí)行子單元;所述第三執(zhí)行子單元,用于調(diào)用并執(zhí)行所述子線程運(yùn)行函數(shù),得到與所述有效輸入值對應(yīng)的子線程運(yùn)行結(jié)果,并觸發(fā)所述第四執(zhí)行子單元;所述第四執(zhí)行子單元,用于調(diào)用并執(zhí)行所述結(jié)果輸出函數(shù),以將所述子線程運(yùn)行結(jié)果編輯為符合預(yù)設(shè)格式的實(shí)際執(zhí)行結(jié)果,并輸出所述實(shí)際執(zhí)行結(jié)果,并觸發(fā)所述第五執(zhí)行子單元;所述第五執(zhí)行子單元,用于調(diào)用并執(zhí)行所述子線程銷毀函數(shù),并觸發(fā)所述第六執(zhí)行子單元;以及所述第六執(zhí)行子單元,用于調(diào)用并執(zhí)行所述主線程銷毀函數(shù)。
[0034]結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第二方面第三種可能的實(shí)現(xiàn)方式中,所述接收子單元包括:
[0035]第一判斷單元,用于判斷是否接收到輸入值;
[0036]第二判斷單元,用于在接收到輸入值時(shí),判斷接收到的輸入值是否滿足預(yù)設(shè)測試條件,如果所述接收到的輸入值滿足預(yù)設(shè)測試條件,則判定所述接收到的輸入值為有效輸入值,并觸發(fā)所述第三執(zhí)行子單元;以及
[0037]跳轉(zhuǎn)觸發(fā)單元,用于在所述接收到的輸入值不滿足預(yù)設(shè)測試條件,或者沒有接收到輸入值時(shí),觸發(fā)所述第五執(zhí)行子單元。
[0038]結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第二方面第四種可能的實(shí)現(xiàn)方式中,所述分析單元包括:比較單元,用于將所述實(shí)際執(zhí)行結(jié)果與所述有效輸入值對應(yīng)的預(yù)設(shè)輸出值進(jìn)行比較,如果所述實(shí)際執(zhí)行結(jié)果與所述預(yù)設(shè)輸出值之間的誤差在預(yù)設(shè)范圍內(nèi),則判定所述靜態(tài)庫的相關(guān)性能正常,否則判定所述靜態(tài)庫的相關(guān)性能異常。
[0039]由以上技術(shù)方案可見,本申請實(shí)施例通過將待測試的靜態(tài)庫編譯為具有預(yù)設(shè)接口的動(dòng)態(tài)庫,同時(shí)設(shè)計(jì)具有與所述預(yù)設(shè)接口一一對應(yīng)的調(diào)用接口的框架文件,進(jìn)而在執(zhí)行所述框架文件的過程中,通過調(diào)用接口實(shí)現(xiàn)對預(yù)設(shè)接口的調(diào)用,使得動(dòng)態(tài)庫中相應(yīng)的代碼或數(shù)據(jù)被執(zhí)行,當(dāng)框架文件執(zhí)行完畢時(shí),預(yù)設(shè)接口也被調(diào)用完畢,從而實(shí)現(xiàn)了對該動(dòng)態(tài)庫的完整調(diào)用,也即實(shí)現(xiàn)了對相應(yīng)的靜態(tài)庫的完整調(diào)用;因此,框架文件的實(shí)際執(zhí)行結(jié)果即反映了待測試的靜態(tài)庫的實(shí)際執(zhí)行結(jié)果,通過分析框架文件的實(shí)際執(zhí)行結(jié)果即可得到靜態(tài)庫的性能信息。本申請實(shí)施例中,由于實(shí)現(xiàn)動(dòng)態(tài)庫調(diào)用的預(yù)設(shè)接口是統(tǒng)一的,使得對應(yīng)的框架文件中的調(diào)用接口也是固定的,所以框架文件可以被任一待測試的靜態(tài)庫所復(fù)用,不需要針對每個(gè)靜態(tài)庫設(shè)置對應(yīng)的