[0038]根据本公开的一个实施例,其中所述性能对比测试装置包括:用于输入性能测试数据的装置,以及用于在预定的第一时间内,执行与所述版本标识相关的代码,并且生成与所述版本标识相关的性能评价数据的装置。
[0039]根据本公开的一个实施例,其中性能对比测试装置还包括:用于将与所述版本标识相关的所述性能评价数据和与先前版本标识相关的性能评价数据进行比较的装置,以及用于生成与所述版本标识相关的性能评价数据和与先前版本标识相关的性能评价数据之间的差异的装置。
[0040]根据本公开的一个实施例,其中性能对比测试装置还包括:用于将所述差异与预定的性能评价阈值进行比较的装置,并且用于当所述差异超过所述性能评价阈值时,生成报警消息的装置。
[0041]根据本公开的一个实施例,其中所述性能测试数据的数据量大于所述数据源的数据量;和/或所述性能评价数据至少包括以下一项或多项:策略计算时间、CPU相关指标和内存相关指标。
[0042]根据本公开的一个实施例,其中所述测试装置还包括:压力对比测试装置,被配置用于对所述代码进行压力对比测试。
[0043]根据本公开的一个实施例,其中所述压力对比测试装置包括:用于输入压力测试数据的装置,以及用于在预定的第二时间内,执行与所述版本标识相关的代码,并且生成与所述版本标识相关的压力评价数据的装置。
[0044]根据本公开的一个实施例,其中所述压力对比测试装置还包括:用于将与所述版本标识相关的压力评价数据和与先前版本标识相关的压力评价数据进行比较的装置,以及用于生成与所述版本标识相关的所述压力评价数据和与先前版本标识相关的压力评价数据的差异的装置。
[0045]根据本公开的一个实施例,其中所述压力对比测试装置还包括:用于将所述差异与预定的压力评价阈值进行比较的装置,以及用于当所述差异超过所述压力评价阈值时,生成报警消息的装置。
[0046]根据本公开的一个实施例,其中所述压力测试数据中包括异常测试数据,和/或所述压力评价数据至少包括以下一项或多项:进程数、程序运行稳定性数据和系统异常数据。
[0047]本公开的各实施方式的方法能够在新的程序代码提交之后,自动触发针对代码的编译、代码对比、测试环境部署、功能对比测试、性能对比测试、压力对比测试,流水线执行,无需人工介入。针对每一项对比测试,均自动生成测试报告和结果,供测试人员查看,可以用于判断本次被测程序是否通过测试。对于测试任务失败或者不符合预期,自动发送报警邮件或提示消息给测试人员,显著提高测试效率,避免人工疏漏。
【附图说明】
[0048]结合附图并参考以下详细说明,本公开各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施方式。其中:
[0049]图1示例性地示出了根据本公开实施方式的测试软件的方法的流程图;以及
[0050]图2示例性地示出了根据本公开实施方式的测试软件的设备的示意图。
【具体实施方式】
[0051]以下参考附图详细描述本公开的各个示例性实施方式。附图中的流程图和框图示出了根据本公开的各种实施方式的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施方式中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
[0052]应当理解,给出这些示例性实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
[0053]本公开实施方式的用于测试软件的方法,可用于打车软件及其订单分配系统软件的自动化测试,也可用于其他通用软件的自动化测试,有利于自动化地对比不同版本的软件代码,生成关于软件代码差异的报告,对比不同版本的软件功能,生成关于软件功能差异的报告,以及其他测试目标。
[0054]具体他,打车软件的订单分配系统包含多种业务场景和策略计算逻辑,为了保证订单分配系统功能稳定,设计了订单分配自动化测试系统。以下仅以该订单分配自动化测试系统的应用场景为例,对本公开的实施方式的测试软件的方法进行详细描述。
[0055]参考图1,示例性地示出了根据本公开的实施方式的用于测试软件的方法的流程图。
[0056]在步骤SllO中,监视软件的代码。具体地,每间隔一段时间,例如为I或5分钟,监视软件代码的变化。当测试系统中有新的代码提交时,将监视到代码发生改变,并且自动触发代码编译。当代码编译出现异常,生成提示和报警信息,并向操作人员输出提示和报警信息。
[0057]在步骤S120中,当监视到代码发生改变时,生成与所述代码相关的版本标识,例如为版本ID号。该版本标识与所述代码具有唯一对应性。与版本标识相关的代码被称为该版本的代码。每次监视到代码发生改变,并且代码编译已经通过时,都生成唯一地与该代码相关的版本标识。
[0058]在一个实施例中,在步骤S130中,执行代码对比,将与所述版本标识相关的代码和与先前版本标识相关的代码进行比较。在一个实例中,在步骤S135中,生成与所述版本标识相关的代码和与先前版本标识相关的代码之间的差异。所生成的两个版本的代码之间的差异,也就是代码对比测试的结果报告,发送至相关的测试人员进行审核。与现有技术相比,本公开实施例的方法能够实现自动化的版本代码对比和报告展示。
[0059]在一个实施例中,在步骤S140中,对所述代码部署测试环境。其中对所述代码部署测试环境包括:输入数据源,以及部署与所述版本标识相关的测试环境。根据一个实施例,同时部署两套测试环境,分别针对与本次版本标识相关的代码输入数据源,和针对与先前版本标识相关的代码输入相同的数据源。可替换地,也可以是部署测试人员指定的任何两个版本标识相关联的代码测试环境。这样,能够保证这两套测试环境中的数据源完全一致。其中,在打车软件订单分配系统这一具体场景中,数据源的数据例如可以包括:订单的种类;订单的数目;针对每个订单的司机的当前位置坐标、起始位置坐标、目的地位置坐标、司机的状态、行使时间;针对每个订单的乘客的当前位置坐标、起始位置坐标、目的地位置坐标、乘客状态;预约订单的接收时间、预定出发时间、起始位置坐标、目的地位置坐标等。根据本公开的一个实施例,其中对所述代码部署测试环境还包括:当部署所述测试环境成功时,生成成功信息,和/或当部署所述测试环境失败时,生成失败信息。当部署测试环境出现异常情况,自动发送提示和报警信息,例如通过电子邮件或者消息窗口等其他方式向测试人员发送提示和报警信息。与现有技术相比,本公开实施例的方法能够使得测试环境的部署过程自动化,无需人工介入进行手动部署。
[0060]测试环境部署成功之后,在步骤S150中,对所述代码进行功能对比测试。根据本公开的一个实施例,其中对所述代码进行功能对比测试包括:执行与所述版本标识相关的代码,以及生成与所述版本标识相关的代码执行结果。根据本公开的一个实施例,其中对所述代码进行功能对比测试还包括:将与所述版本标识相关的代码执行结果和与先前版本标识相关的代码执行结果进行比较,以及生成与所述版本标识相关的代码执行结果和与先前版本标识相关的代码执行结果之间的差异。
[0061]具体地,将所述数据源的数据输入到缓存中,分别运行与本次版本标识相关的代码和与上一次版本标识相关的代码,获得与所述版本标识相关的代码执行结果和与先前版本标识相关的代码执行结果,将这两次代码执行结果进行比较,生成这两次代码执行结果之间的差异,高亮显示这一差异,从而可以向测试人员直观地显示代码执行结果的差异。可选地,也可以使用不同的颜色来区分不同部分的差异。例如,针对测试人员感兴趣的