一种软件测试方法、装置及电子设备与流程

文档序号:16930579发布日期:2019-02-22 20:14阅读:161来源:国知局
一种软件测试方法、装置及电子设备与流程

本发明涉及软件测试技术领域,特别是涉及一种软件测试方法、装置及电子设备。



背景技术:

软件自动化测试的方法可以分为两种,一种是原生工具测试方法,另一种是第三方测试框架测试方法。其中,原生工具测试方法是在已知待测软件源代码的基础上,实现对待测软件自动化测试方法,采用这种方法测试效率高,测试速度快,流程性好;第三方测试框架测试方法可以不依赖所测试软件的源代码,实现对待测软件自动化测试的方法。

在软件的自动化测试过程中,原生工具测试方法由于其过分依赖待测软件的源代码,往往只适用于对自主研发的软件进行测试。第三方测试框架测试方法在测试前期需要充分了解待测软件的层级结构,并根据软件的层级结构配置测试框架。整个过程中测试框架配置较为复杂,并且测试框架的运行需要依赖于特定的运行环境,测试成本相对较高。



技术实现要素:

本发明实施例的目的在于提供一种软件测试方法、装置及电子设备,可以不依赖待测软件的源代码,完成软件测试过程,降低测试成本。具体技术方案如下:

本发明实施例提供了一种软件测试方法,所述方法,包括:

在预设ios(iphoneos,苹果操作系统)动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件;

编译所述测试文件,得到编译后的测试文件;

将编译后的测试文件导入所述待测软件的ipa(iphoneapplication,苹果应用程序)中,得到新的ipa文件;

通过运行所述新的ipa文件,测试所述待测软件。

进一步的,所述编译所述测试文件,得到编译后的测试文件,包括:

基于底层虚拟机llvm(lowlevelvirtualmachine,底层虚拟机)编译器,将测试文件编译为dylib(动态链接库)类型的动态库文件,作为编译后的测试文件。

进一步的,所述ipa文件包括动态库文件集合和可执行文件;

所述将编译后的测试文件导入所述待测软件的苹果应用程序ipa文件中,得到新的ipa文件,包括:

将编译后的测试文件导入所述待测软件的ipa文件的动态库文件集合中,得到新的动态库文件集合;

在所述可执行文件的加载指令列表中,添加编译后的测试文件的加载路径,得到新的可执行文件;

生成包含所述新的动态库文件集合和所述新的可执行文件的新的ipa文件。

进一步的,所述可执行文件为mach-o文件;

所述在所述可执行文件的加载指令列表中,添加编译后的测试文件的加载路径,得到新的可执行文件,包括:

按照编译后的测试文件在所述新的动态库文件集合中的位置,在所述mach-o文件的加载指令列表中,添加所述测试文件的加载路径,得到新的mach-o文件,作为新的可执行文件。

本发明实施例提供了一种软件测试装置,所述装置,包括:

测试文件生成模块,用于在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件;

测试文件编译模块,用于编译所述测试文件,得到编译后的测试文件;

ipa文件确定模块,用于将编译后的测试文件导入所述待测软件的ipa文件中,得到新的ipa文件;

软件测试模块,用于通过运行所述新的ipa文件,测试所述待测软件。

进一步的,所述测试文件编译模块,具体用于基于llvm编译器,将所述测试文件编译为dylib类型的动态库文件,作为编译后的测试文件。

进一步的,所述ipa文件包括动态库文件集合和可执行文件;

所述ipa文件确定模块,包括:

动态库文件集合确定子模块,用于将编译后的测试文件导入所述待测软件的ipa文件的动态库文件集合中,得到新的动态库文件集合;

可执行文件确定子模块,用于在所述可执行文件的加载指令列表中,添加编译后的测试文件的加载路径,得到新的可执行文件;

ipa文件生成子模块,用于生成包含所述新的动态库文件集合和所述新的可执行文件的新的ipa文件。

进一步的,所述可执行文件为mach-o文件;

所述可执行文件子确定模块,具体用于按照编译后的测试文件在所述新的动态库文件集合中的位置,在所述mach-o文件的加载指令列表中,添加所述测试文件的加载路径,得到新的mach-o文件,作为新的可执行文件。

本发明实施例还提供了一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一软件测试方法步骤。

本发明实施还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一软件测试方法的步骤。

本发明实施例提供的一种软件测试方法、装置及电子设备,可以在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件;编译该测试文件,得到编译后的测试文件;将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件;通过运行新的ipa文件,测试待测软件。采用本发明实施例提供的方法,可以不依赖待测软件的源代码,完成软件测试过程,降低了测试成本。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例提供的一种软件测试的方法流程图;

图2-a为本发明实施例提供的采用xcode创建ios动态库的软件界面示意图之一;

图2-b为本发明实施例提供的采用xcode创建ios动态库的软件界面示意图之二;

图3为本发明实施例提供的mach-o文件的结构示意图;

图4为本发明实施例提供的一种软件测试装置的结构示意图;

图5为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

本发明实施例提供的一种软件测试方法、装置及电子设备,在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件;编译该测试文件,得到编译后的测试文件;将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件;通过运行新的ipa文件,测试待测软件。采用本发明实施例提供的方法,可以不依赖待测软件的源代码,完成软件测试过程,降低了测试成本。

本发明实施例提供了一种软件测试方法,如图1所示,可以包括以下步骤:

步骤s101,在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件。

在本步骤中,在预设ios动态库中,可以通过预设加载入口,将针对待测软件进行测试所需的测试用例代码加载到预设ios动态库中,生成测试文件。

具体的,以开发工具xcode为例进行说明,如图2所示,在xcode中为用户提供了多种应用程序模板,如图2-a中的游戏应用程序、即时聊天应用程序等。在本发明实施例中,由于仅仅需要创建一个ios框架的动态库,因此,只要选在图2-a中的ios的框架和库中选择创建一个cocoatouch动态库,其中cocoatouch是ios中的一套框架集合。并根据如图2-b所示的界面在mach-o文件类型选项中选择动态库,从而完成对预设ios动态库的创建。当然在创建过程中,还会涉及动态库名称等的设置,在此就不作具体说明了。基于预设ios动态库,可以从预设加载入口,将针对待测软件进行测试所需的测试用例代码加载到预设ios动态库中,生成测试文件。此时,预设ios动态库中针对待测软件测试所需的测试用例代码的测试文件是.m类型或者.h类型的文件。

在本发明实施例中,上述测试文件的生成,除了通过加载入口加载到预设ios动态库中,生成测试文件,还可以在预设ios动态库中直接编写上述测试用例代码,生成对应的.m类型或者.h类型的文件,得到测试文件。

步骤s102,编译测试文件,得到编译后的测试文件。

在本步骤中,对上述步骤s101得到的.m类型或者.h类型的测试文件进行编译,得到编译后的测试文件。

进一步的,可以基于llvm编译器,将上述测试文件编译为dylib类型的动态库文件,作为编译后的测试文件。

具体的,可以采用llvm编译器将上述.m类型或者.h类型的测试文件编译为动态库文件,作为编译后的测试文件,编译后的测试文件将为.dylib类型的动态库文件。

在本发明实施例中,上述编译过程主要是将.m类型或者.h类型的文件编译为.dylib类型文件。但是实际运用过程中,还需要运行编译后的测试文件,对生成的.dylib类型文件进行调试。因此,在xcode中,测试文件的编译方法可以是设备编译,也可以是模拟器编译。所谓设备编译表示在得到编译后的测试文件后,采用真实的设备对编译后的测试文件进行调试,所谓模拟器编制则是在xcode中有调试所需的模拟器,可以选择模拟器对编译后的测试文件进行调试。关于编译的具体步骤,可以参考现有技术,在此就不作具体说明了。

在本发明实施例中,编译时所使用的编译器除了上述的llvm编译器以外,还可以采用clang编译器,gcc(gnucompilercollection,gnu编译器套件)等,对上述测试文件进行编译,得到编译后的测试文件。

步骤s103,将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件。

在本步骤中,可以通过解压待测软件的ipa文件,在该ipa文件中导入编译后的测试文件,并进行压缩得到新的ipa文件。

进一步的,ipa文件可以包括动态库文件集合和可执行文件。

针对上述步骤s103,将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件,可以包括以下步骤:

步骤s1031,将编译后的测试文件导入待测软件的ipa文件的动态库文件集合中,得到新的动态库文件集合。

在本步骤中,针对待测软件解压后的ipa文件,可以将编译后的测试文件导入该ipa文件的动态库文件集合中,得到新的动态库文件集合。

针对上述ipa文件的动态库文件集合可以为framework(架构)文件夹。

可以在待测软件的ipa文件的framework文件夹中,导入编译后的测试文件,得到新的framework文件夹,作为新的动态库文件集合。

具体的,在待测软件的ipa文件的framework文件夹中,导入上述.dylib类型的编译后的测试文件,得到新的framework文件夹,作为新的动态库文件集合。

步骤s1032,在可执行文件的加载指令列表中,添加编译后的测试文件的加载路径,得到新的可执行文件。

在本步骤中,可以在上述可执行文件的加载指令列表中,根据编译后的测试文件在新的动态库文件集合中的位置,添加编译后的测试文件的加载路径,得到新的可执行文件。

进一步的,上述可执行文件可以为mach-o文件。

按照编译后的测试文件在新的动态库文件集合中的位置,在mach-o文件的加载指令列表中,添加测试文件的加载路径,得到新的mach-o文件,作为新的可执行文件。例如,假设上述测试文件的名称为test.dylib,其具体位置表示为:/system/library/framework/test.dylib,在mach-o文件的loadcommands中,可以用“/system/library/framework/test.dylib”表示上述测试文件的加载路径。

在本发明实施例中,根据上述可知,可执行文件可以是mach-o类型的文件。关于mach-o文件的具体结构,可以参见图3。在mach-o文件中,主要可以包括header(头部)、loadcommands和data(数据),其中,header为图3中的头文件部分,loadcommands为图3中的加载指令列表部分,data为图3中的数据部分。header中包括mach-o文件基本信息,如,库的类型,加载命令的数量,加载命令所占内存的大小,相应的标记等信息;loadcommands则是对mach-o文件中的加载的具体限定,如,加载地址,加载方式等,data是mach-o文件的原始编译数据,并与loadcommands中的加载指令关联,如,图3中的段指令1与第一段数据中的第一区域数据、第二区域数据以及第三区域数据都存在关联。因此,对于上述新的可执行文件的生成,在mach-o文件中,不但需要在loadcommands中新增了编译后的测试文件的加载路径,还需要适应性对header以及data进行调整。

步骤s1033,生成包含新的动态库文件集合和新的可执行文件的新的ipa文件。

在本步骤中,利用新的动态库文件集合更新待测软件ipa文件中的动态库文件集合,以及利用新的可执行文件更新待测软件ipa文件的可执行文件,得到更新后的ipa文件,并对更新后的ipa文件进行压缩,得到新的ipa文件。

在本发明实施例中,上述ipa文件为待测软件对应的程序包,可以包括静态库、动态库、资源库以及可执行文件等。一般来说,静态库中的文件类型是.a类型或者.framework,动态库中的文件类型是.dylib类型或者.framework类型,可执行文件是mach-o类型文件,而上述framework文件夹表示上述ipa文件的动态库文件集合,在该动态库文件集合中包含有.dylib类型或者.framework类型的文件。因此,可以将编译后的测试文件导入该动态库文件集合中,并对待测软件的ipa文件进行更新,得到新的ipa文件。

步骤s104,通过运行新的ipa文件,测试待测软件。

在本步骤中,运行上述新的ipa文件,该新的ipa文件中新的可执行文件将被加载,根据新的可执行文件的loadcommands列表,通过上述编译后的测试文件对应的加载路径,加载测试文件,对待测软件进行测试。

针对上述本发明实施例提供的软件测试方法进行举例说明。假设现有一待测试软件需要进行测试,首先,可以根据上述步骤s101中的方法,基于ios框架类型的动态库,构建一个ios动态库,并在该ios动态库中加载针对待测软件进行测试所需的测试用例代码,生成测试文件,将该测试文件命名为test.m。然后,可以对test.m文件进行编译,得到.dylib类型的文件,将编译后的测试文件命名为test.dylib。接着,可以将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件。例如,待测软件的ipa文件的动态库文件集合为framework文件夹,该动态库文件的地址为/system/library/framework,可以将test.dylib导入framework文件夹中,生成新的framework文件夹;则该test.dylib文件的地址可以是/system/library/framework/test.dylib,并在可执行文件的loadcommands列表中,可以根据test.dylib文件在framework文件夹的地址,添加该test.dylib文件的加载地址,生成新的可执行文件,用新的framework文件夹和新的可执行文件的更新待测软件的ipa文件,并对更新后的ipa文件进行压缩得到新的ipa文件。运行新的ipa文件,测试待测软件。

在本发明实施例中,上述ipa文件类似于windows中的绿色软件一样,不需要安装,只要解压就可以使用。因此,将编译后的包含有针对待测软件进行测试所需测试用例代码的测试文件导入上述ipa文件中,当运行或者在设备中解压ipa文件时,将会执行新的可执行文件,从而通过新的可执行文件中编译后的测试文件的加载路径,调用测试用例代码,对待测软件进行自动化测试。由于待测软件的源代码存储在静态库文件集合中,则在对待测软件进行自动化测试过程中,不会调用待测软件的源代码。

另外,在ipa文件的privateframeworks(私有架构)中包含有ios系统的私有api(applicationprogramminginterface,应用程序编程接口),在对待测软件的进行测试时,可以通过调用上述私有api对待软件进行测试,可以更加方便的完成对待测软件进行测试。例如,对待测软件的界面中的视图进行测试,可以从privateframeworks文件夹中调用上述私有api定位该待测软件的界面视图,并对界面视图进行测试。

综上所述,采用发明实施例提供的一种软件测试方法,可以不依赖待测软件的源代码,完成对待测软件的测试,并且整个测试过程相对简单,降低了测试的成本。

基于同一种发明构思,基于上述本发明实施例提供的一种软件测试方法,本发明实施例还提供了一种软件测试装置,如图4所示,可以包括以下模块:

测试文件生成模块401,用于在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件。

测试文件编译模块402,用于编译测试文件,得到编译后的测试文件。

ipa文件确定模块403,用于将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件。

软件测试模块404,用于通过运行新的ipa文件,测试待测软件。

进一步的,测试文件编译模块402,具体用于基于llvm编译器,将测试文件编译为dylib类型的动态库文件,作为编译后的测试文件。

进一步的,ipa文件包括动态库文件集合和可执行文件;

ipa文件确定模块403,包括:

动态库文件集合确定子模块,用于将编译后的测试文件导入待测软件的ipa文件的动态库文件集合中,得到新的动态库文件集合;

可执行文件确定子模块,用于在可执行文件的加载指令列表中,添加编译后的测试文件的加载路径,得到新的可执行文件;

ipa文件生成子模块,用于生成包含新的动态库文件集合和新的可执行文件的新的ipa文件。

进一步的,可执行文件为mach-o文件。

可执行文件确定子模块,具体用于按照编译后的测试文件在新的动态库文件集合中的位置,在mach-o文件的加载指令列表中,添加测试文件的加载路径,得到新的mach-o文件,作为新的可执行文件。

本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:

在预设ios动态库中,加载针对待测软件进行测试所需的测试用例代码,生成测试文件;

编译测试文件,得到编译后的测试文件;

将编译后的测试文件导入待测软件的ipa文件中,得到新的ipa文件;

通过运行新的ipa文件,测试待测软件。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一软件测试方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一软件测试方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备等实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1