本申请公开了一种静态库测试方法及装置,其通过将待测试的静态库编译为具有预设接口的动态库,获取具有与所述预设接口一一对应的调用接口的框架文件,执行所述框架文件,以通过调用接口实现对预设接口的调用,使得动态库中相应的代码或数据被执行,由于框架文件的实际执行结果可以反映待测试的静态库的实际执行结果,故通过分析框架文件的实际执行结果即可得到静态库的性能信息。由于实现动态库调用的预设接口是统一的,使得对应的框架文件中的调用接口也是固定的,所以框架文件可以被任一待测试的静态库所复用,不需要针对每个静态库设置对应的框架文件,可以降低测试过程的复杂度,提高测试效率。
【技术实现步骤摘要】
本专利技术涉及计算机
,特别是涉及一种静态库测试方法及装置。
技术介绍
编程过程中,同一段代码或数据可能会应用于不同的程序中,或者在同一程序中被多次调用;为提高编程效率,通常将这些被反复应用的代码及数据编译为公共的函数库,方便程序调用。上述函数库包括静态库和动态库两种。为了保证代码的正确性,需要对函数库进行测试。对于静态库,由于其文件只是一些目标程序的组合,无法直接运行,因此常用的静态库测试方法为:编写一段代码调用静态库,生成可执行文件,运行该可执行文件,通过分析运行结果来判断静态库的相关性能是否正常。通过上述方法对静态库测试,需要针对每个静态库编写一段完整的测试代码,并生成相应的可执行文件,以实现对该静态库的调用,且静态库升级后,即使静态库本身的变化很少,原可执行文件也不再适用,还需要编写新的测试代码、调用升级后的静态库并生成新的可执行文件,才能实现对升级后的静态库的测试。可见,上述静态库测试方法中用于测试的可执行文件不可复用,进而导致测试过程繁琐、测试效率低。
技术实现思路
本申请实施例中提供了一种静态库测试方法及装置,以解决现有静态库测试方法中用于测试的可执行文件不可复用、测试过程繁琐、效率低的问题。为了解决上述技术问题,本申请公开了如下技术方案:本申请第一方面,公开了一种静态库测试方法;所述静态库测试方法包括:将待测试的静态库编译为具有预设接口的动态库;获取具有与所述预设接口对应的调用接口的框架文件;执行所述框架文件,以通过所述调用接口和对应的预设接口调用所述动态库;以及根据所述框架文件的实际执行结果分析所述静态库的性能。结合第一方面,在第一方面第一种可能的实现方式中,所述预设接口包括:用于实现资源初始化的主线程初始化函数、用于实现资源释放的主线程销毁函数、用于实现资源创建的子线程初始化函数、用于实现资源销毁的子线程销毁函数、子线程运行函数和结果输出函数。结合第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,执行所述框架文件,以通过所述调用接口和对应的预设接口调用所述动态库,包括:依次调用并执行所述主线程初始化函数和子线程初始化函数;获取有效输入值;调用并执行所述子线程运行函数,得到与所述有效输入值对应的子线程运行结果;调用并执行所述结果输出函数,以将所述子线程运行结果编辑为符合预设格式的实际执行结果,并输出所述实际执行结果;以及依次调用并执行所述子线程销毁函数和主线程销毁函数。结合第一方面第二种可能的实现方式,在第一方面第三种可能的实现方式中,所述获取有效输入值,包括:判断是否接收到输入值;如果接收到输入值,则判断接收到的输入值是否满足预设测试条件;如果所述接收到的输入值满足预设测试条件,则判定所述接收到的输入值为有效输入值;以及如果所述接收到的输入值不满足预设测试条件,或者没有接收到输入值,则直接执行所述依次调用所述子线程销毁函数和主线程销毁函数的步骤。结合第一方面第二种可能的实现方式,在第一方面第四种可能的实现方式中,所述根据所述框架文件的实际执行结果分析所述静态库的性能,包括:将所述实际执行结果与所述有效输入值对应的预设输出值进行比较;如果所述实际执行结果与所述预设输出值之间的误差在预设范围内,则判定所述静态库的相关性能正常,否则判定所述静态库的相关性能异常。本申请第二方面,公开了一种静态库测试装置;所述静态库测试装置包括:编译单元,用于将待测试的静态库编译为具有预设接口的动态库;获取单元,用于获取具有与所述预设接口对应的调用接口的框架文件;执行单元,用于执行所述框架文件,以通过所述调用接口和对应的预设接口调用所述动态库;以及分析单元,用于根据所述框架文件的实际执行结果分析所述静态库的性能。结合第二方面,在第二方面第一种可能的实现方式中,所述预设接口包括:用于实现资源初始化的主线程初始化函数、用于实现资源释放的主线程销毁函数、用于实现资源创建的子线程初始化函数、用于实现资源销毁的子线程销毁函数、子线程运行函数和结果输出函数。结合第二方面第一种可能的实现方式,在第二方面第二种可能的实现方式中,所述执行单元包括:第一执行子单元、第二执行子单元、第三执行子单元、第四执行子单元、第五执行子单元、第六执行子单元和接收子单元;所述第一执行子单元,用于调用并执行所述主线程初始化函数,并触发所述第二执行子单元;所述第二执行子单元,用于调用并执行所述子线程初始化函数,并触发所述接收子单元;所述接收子单元,用于获取有效输入值,并在获取到有效输入值后,触发所述第三执行子单元;所述第三执行子单元,用于调用并执行所述子线程运行函数,得到与所述有效输入值对应的子线程运行结果,并触发所述第四执行子单元;所述第四执行子单元,用于调用并执行所述结果输出函数,以将所述子线程运行结果编辑为符合预设格式的实际执行结果,并输出所述实际执行结果,并触发所述第五执行子单元;所述第五执行子单元,用于调用并执行所述子线程销毁函数,并触发所述第六执行子单元;以及所述第六执行子单元,用于调用并执行所述主线程销毁函数。结合第二方面第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述接收子单元包括:第一判断单元,用于判断是否接收到输入值;第二判断单元,用于在接收到输入值时,判断接收到的输入值是否满足预设测试条件,如果所述接收到的输入值满足预设测试条件,则判定所述接收到的输入值为有效输入值,并触发所述第三执行子单元;以及跳转触发单元,用于在所述接收到的输入值不满足预设测试条件,或者没有接收到输入值时,触发所述第五执行子单元。结合第二方面第二种可能的实现方式,在第二方面第四种可能的实现方式中,所述分析单元包括:比较单元,用于将所述实际执行结果与所述有效输入值对应的预设输出值进行比较,如果所述实际执行结果与所述预设输出值之间的误差在预设范围内,则判定所述静态库的相关性能正常,否则判定所述静态库的相关性能异常。由以上技术方案可见,本申请实施例通过将待测试的静态库编译为具有预设接口的动态库,同时设计具有与所述预设接口一一对应的调用接口的框架文件,进而在执行所述框架文件的过程中,通过调用接口实现对预设接口的调用,使得动态库中相应的代码或数据被执行,当框架文件执行完毕时,预设接口也被调用完毕,从而实现了对该动态库的完整调用,也即实现了对相应的静态库的完整调用;因此,框架文件的实际执行结果即反映了待测试的静态库的实际执行结果,通过分析框架文件的实际执行结果即可得到静态库的性能信息。本申请实施例中,由于实现动态库调用的预设接口是统一的,使得对应的框架文件中的调用接口也是固定的,所以框架文件可以被任一待测试的静态库所复用,不需要针对每个静态库设置对应的当前第1页1 2 3 4 本文档来自技高网...
【技术保护点】
一种静态库测试方法,其特征在于,包括:将待测试的静态库编译为具有预设接口的动态库;获取具有与所述预设接口对应的调用接口的框架文件;执行所述框架文件,以通过所述调用接口和对应的预设接口调用所述动态库;以及根据所述框架文件的实际执行结果分析所述静态库的性能。
【技术特征摘要】
【专利技术属性】
技术研发人员:刘晶,匡波,丁世远,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。