CN106201878B - 测试程序的执行方法和装置 - Google Patents

测试程序的执行方法和装置 Download PDF

Info

Publication number
CN106201878B
CN106201878B CN201610537223.0A CN201610537223A CN106201878B CN 106201878 B CN106201878 B CN 106201878B CN 201610537223 A CN201610537223 A CN 201610537223A CN 106201878 B CN106201878 B CN 106201878B
Authority
CN
China
Prior art keywords
class
module
interface
component
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610537223.0A
Other languages
English (en)
Other versions
CN106201878A (zh
Inventor
白晓庆
董海炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610537223.0A priority Critical patent/CN106201878B/zh
Publication of CN106201878A publication Critical patent/CN106201878A/zh
Application granted granted Critical
Publication of CN106201878B publication Critical patent/CN106201878B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种测试程序的执行方法和装置。所述方法包括:将与测试环境关联的描述接口配置文件加载于内存中;执行所述测试程序;在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。本发明的技术方案实现了测试工具与环境的解耦合,提高了测试工具的通用性以及可迁移性,大大减少了开发人员重复开发的工作量。

Description

测试程序的执行方法和装置
技术领域
本发明实施例涉及计算机处理技术,尤其涉及一种测试程序的执行方法和装置。
背景技术
随着互联网规模的***性增长,***的规模越来越复杂,***中的模块数量也出现较快增长。因此,面对如此庞大复杂的***,如何进行高效、稳定的***级测试就显得捉襟见肘。
在现有技术中,不同的***有专门的***级测试解决方案,但是方案本身与***耦合太严重,导致通用性不足,可迁移性薄弱;此外,现有的***级测试工具的重复开发现象非常严重,开发效率低下,稳定性也没有保障。因此,如何实现对复杂的大规模***进行高效、稳定的***级测试成了一个难题。
发明内容
有鉴于此,本发明实施例提供了一种测试程序的执行方法和装置,以实现测试工具与环境的解耦合。
在第一方面,本发明实施例提供了一种测试程序的执行方法,包括:
将与测试环境关联的环境描述接口配置文件加载于内存中;其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联;
执行所述测试程序,其中,所述测试程序中包括:至少一个抽象类;
在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
在第二方面,本发明实施例还提供了一种测试程序的执行装置,包括:
配置文件加载模块,用于将与测试程序关联的环境描述接口配置文件加载于内存中;其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联;
程序执行模块,用于执行所述测试程序,其中,所述测试程序中包括:至少一个抽象类;
环境特征值获取模块,用于在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
本发明实施例通过将与测试环境相关联的环境参数的环境特征值在环境描述接口配置文件中进行统一配置,使用所述环境参数构建抽象类,并使用抽象类生成测试程序的方式,可以实现在测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,获取环境描述接口配置文件中与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作的技术效果,实现了测试工具与环境的解耦合,提高了测试工具的通用性以及可迁移性,大大减少了开发人员重复开发的工作量。
附图说明
图1是本发明实施例一提供的一种测试程序的执行方法的流程图;
图2是本发明实施例二提供的一种测试程序的执行方法的流程图;
图3是本发明实施例的一种具体的应用场景的示意图;
图4是本发明实施例三提供的一种测试程序的执行装置的结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
为了后文便于理解,首先将本发明的发明构思进行简单介绍:
如前所述:现有的***级测试工具的主要问题在于:与环境耦合性高,应用迁移性差;流水式开发,没有成熟的框架,导致维护和升级代价高;重复开发现象严重,各个相似测试工具之间没有实现很好的复用。
有鉴于此,发明人创造性的提出了一种结构化的***级测试方法,首先需要定义通用的环境描述接口配置文件。此部分功能是本发明各实施例的基础,其中,该环境描述接口配置文件的特征如下:
1)格式要固定。描述或者操作环境更规范,在本发明实施例中,优选使用JSON(Java Script Object Notation,直译式脚本语言对象表示法)格式,其中,JSON格式具体为键值对(Key-Value)形式的数据;
2)需要有一些固定的描述字段。优选的,机器名称、用户名或者密码等;
3)可扩展。支持一些extend(扩展)字段的格式化扩展,保证后续的灵活性,同时方便添加或者删除模块等操作;
4)支持模块名、分库数以及分组数三级定义。环境拓扑***,同质模块不会只有1个,有这三级定义,就可以适应各种多库多组拓扑定义;
5)支持测试场景定义。不同的测试需要指定环境中模块所处的测试场景;
6)支持上下游模块指定。可以保证连通性成功;
7)拓扑信息和模块静态信息要分开管理。这两种信息不适合放在环境描述接口配置文件中的同一个接口中定义。拓扑信息描述的是环境方面,需要细化到实例,而模块静态信息是所有同质实例的抽象,两者分开定义后,更适合环境操作等需求。
相应的,本发明实施例首先构造一个半固定的环境描述接口配置文件,其中,该环境描述接口配置文件的数据格式为JSON格式,其中,基于上述规定构造的各个特征,作为JSON格式数据中的键预先写入所述环境描述接口配置文件中,而与键对应的值则需要由各***级测试工具的开发人员根据实际的测试环境自定义的填写于该环境描述接口配置文件中,开发人员完善上述环境描述接口配置文件后,***级测试就和环境完全解耦合了,不再需要关心环境的来源以及搭建方式等特点。就可以保证本发明实施例的通用性,对任何环境和模块都具有了操作能力。
进一步的,本发明实施例还为***级测试的开发人员提供了完整的工程框架,即:多个层次的抽象接口(典型的:模块类接口、拓扑类接口、组件类接口、组件基类接口以及组件队列操作类接口等),在环境描述接口配置文件和完整的工程框架支持下,开发者就可以在最上层像搭建积木一样,按照自已设置的场景来搭建自已的测试工具了。测试工具既达到了较高的开发复用性,同时也具备了更好的通用性,同时,测试工具本身的稳定性也得到了保障。
实施例一
图1为本发明实施例一提供的一种测试程序的执行方法的流程图,本实施例的方法可以由测试程序的执行装置来执行,该装置可通过硬件和/或软件的方式实现,并一般可集成于用于完成设定软件***的***级测试的测试设备中。本实施例的方法具体包括:
110、将与测试程序关联的环境描述接口配置文件加载于内存中。
其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联。
如前所述,开发人员首先需要使用本发明实施例提供的半固定的环境描述接口配置文件以及工程框架构造满足实际测试需求的测试程序。开发人员首先需要基于环境描述接口配置文件中固定配置的环境参数名,设置与测试环境相关联的环境特征值。
在测试程序执行时,首先需要将开发人员配置完成的环境描述接口配置文件加载于内存中,以使测试程序在执行过程中可以方便的调用环境描述接口配置文件中所需的环境特征值。
其中,所述环境参数名可以包括:机器名称、用户名、密码、模块名、分库名、分组数、测试场景、上游模块名以及下游模块名等,当然,本领域技术人员可以理解的是,还可以根据实际情况在环境描述接口配置文件中设定其他类型的环境参数名,本实施例对此并不进行限制。
120、执行所述测试程序。其中,所述测试程序中包括:至少一个抽象类。
如前所述,本发明实施例还提供了多层次的抽象接口,编程人员可以基于该抽象接口生成抽象类,并在抽象类中实例化不同的测试操作。
在本实施例的一个优选的实施方式中,所述抽象类可以包括:模块类;
其中,在所述模块类中定义了模块类接口的实现方法,在所述模块类接口中声明了单个模块的操作;所述模块类接口中包括至少一个所述环境参数名;所述模块类中包括至少一条包括所述环境参数名的环境关联语句。
在本实施例中,模块类重点实现对于单个模块实例的操作,比如start(启动),stop(停止),check(检查)等API(Application Programming Interface,应用程序接口)。
其中,所述模块类接口中声明的操作类型可以包括下述至少一项:模块属性实例化、本地执行、远程执行、拷贝、远程目录探测、远程文件探测、消息摘要算法第五版计算、日志拷贝、压力工具判断、清理日志以及性能统计。
进一步的,所述性能统计可以包括:正常的流量日志统计信息、警告日志统计信息、警告日志大小、致命错误日志信息、程序崩溃日志信息、模块处理器或者内存等监控信息的监控图片或者监控数据、二进制文件版本信息、总请求数、平均压力大小以及启动时间等。
当然,可以理解的是,可以根据实际的通用测试需求,设置更多类型的模块类接口。更特殊的,***级测试的实际开发人员可以根据实际情况自定义设置所需的模块类接口。例如:检查进程是否存在、获取版本号、模块属性配置以及获取***耗时等。
在本实施例的另一个优选的实施方式中,所述抽象类还可以包括:拓扑类;其中,在所述拓扑类中定义了拓扑类接口的实现方法,在所述拓扑类接口中声明了至少两个模块的统一操作,所述拓扑类中包括至少两个模块类。
拓扑类重点实现于对于多个实例的统一操作,比如startall(启动全部),stopall(停止全部),checkall(检查全部)等API接口,拓扑类要依赖于模块类里的API,属于更上一层的接口抽象。
其中,所述拓扑类接口中声明的操作类型可以包括下述至少一项:
启动指定模块、杀死指定模块、添加指定模块的模块处理器或者内存监控、更改指定模块环境、清理指定模块的日志信息以及指定模块的性能统计等。
可以理解的是:通过定义了模块类接口以及拓扑类接口这两个不同层次的抽象接口,可以使开发人员对于环境的操作更方便,对不同层次的操作使用也更明确,便于更上一层的抽象。
相应的,在本实施例的另一个优选的实施方式中,所述抽象类还可以包括:组件类和组件基类;
其中,在所述组件类中定义了组件类接口的实现方法,在所述组件基类中定义的组件基类接口的实现方法;在所述组件类接口中声明了一个测试动作,在所述组件基类接口中声明了一个测试动作且包括至少一个继承接口,所述继承接口用于接收用户自定义配置的参数;
所述组件类中包括:基于设定组合方式组合的模块类,和/或拓扑类;
所述组件基类中包括:基于设定组合方式组合的模块类,和/或拓扑类,以及所述继承接口。
如前所述,如果只对开发人员暴露模块类接口以及拓扑类接口,那么基本可以达到初级复用性的要求,但是对于***级测试场景的设计能力就显得比较缺乏。开发人员使用模块类接口以及拓扑类接口写出的测试工具只能是流水式的调用,对于场景的复用能力就没有了。所以发明人继续提出了更高层次的组件类接口以及组件基类接口的概念。
其中,组件的概念可以理解为***级测试场景中的具有独立意义的一个动作。举例而言,在性能测试场景中,按照顺序执行如下动作:
1)启动所有模块;
2)检查所有模块是否启动成功;
3)启动压力工具;
4)检查压力工具是否启动成功;
5)开始进入性能测试,等待设定时间段,例如:1个小时;
6)在所述设定时间段内,检查各个模块是否正常;
7)1个小时结束后,杀掉所有模块;
8)保存模块日志、内存以及中央处理器的监控信息;
9)生成报告,并发送用户;
10)清理环境。
如上10个动作是一个性能测试场景的大概流程,这里可以抽象的是里面的每一个动作。可以看出,每一个场景动作都比较独立,都可以抽象出一个单独的接口,这些接口其实是可以被不同的其它***级测试任务来共用的,这就是组件类接口。
本发明实施例还提出了组件基类接口的概念。组件的行为是可以抽象的,为了规范用户对组件类的开发,还需要提供一个组件基类接口,用户在开发的时候只需要关注几个继承接口的实现即可,这些接口详细定义了每个接口的作用特点,大大降低了组件开发代价。也即,组件基类接口在组件类接口的基础上,进一步向用户暴露了一个或者多个继承接口,用户通过向这些继承接口传递参数,可以自定义对组件基类所实现的动作进行自定义的设置,例如,自定义设置5)中的等待时间段等。
开发人员通过在组件类或者组件基类中将组件类接口以及组件基类接口实例化,可以进而完成相应的测试动作。
在有了组件类接口以及组件基类接口的基本上,如何简单、高效的调用起各个组件就显得尤为重要。在一个完整的***级测试场景里,各个组件的调用顺序是有要求的,不同的组件也有并行执行的要求,某个组件在失败时,是否影响整个任务的运行也是有要求的。还是以上文的性能测试场景来说明:
1)启动所有模块(第1优化级执行,失败后,整个任务要失败);
2)检查所有模块是否启动成功(第2优化级执行,失败后,整个任务要失败);
3)启动压力工具(第2优先级执行);
4)检查压力工具是否启动成功(第3优化级执行,失败后,整个任务要失败);
5)开始进入性能测试,等待设定时间段,例如:1个小时(第4优化级执行,失败后,不影响整个任务);
6)在所述时间段内,检查各个模块是否正常(第4优化级执行,失败后,整个任务要失败);
7)1个小时结束,杀掉所有模块(第5优化级执行,失败后,不影响整个任务);
8)保存模块日志、内存以及中央处理器的监控信息(第5优化级执行,失败后,整个任务要失败);
9)生成报告,并发送用户(第6优化级执行,失败后,不影响整个任务);
10)清理环境(第6优化级执行,失败后,不影响整个任务)。
如上,如果这些组件类对应的运行的场景要求全部让开发人员自已去控制,难度可想而知。因此,发明人进一步提出了组件队列操作类接口,基于该接口,用户只要把组件类追加到组件队列操作类中,设置好相关的调度参数即可实现上述繁琐的执行控制过程。
相应的,在本实施例的另一个优选的实施方式中,所述抽象类还可以包括:组件队列操作类;
其中,在所述组件队列操作类中定义了组件队列接口的实现方法,在所述组件队列接口中声明了组件类,和/或组件基类的执行顺序以及执行调度方式;
所述组件队列操作类中包括:由用户配置执行顺序与调度参数的组件类,和/或组件基类。
130、在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
如前所述,拓扑类、组件类、组件基类以及组件队列操作类均为以模块类为基础逐层抽象生成的抽象类,由于模块类中包括至少一条包括所述环境参数名的环境关联语句,相应的,在上述各抽象类中均同样包括所述环境参数名的环境关联语句。
在测试程序执行至包括环境参数名的环境关联语句后,就会在内存中获取与该环境参数名对应的环境特征值,并基于该环境特征值完成相应的测试操作。
在一个具体的例子中,启动模块类完成的功能为启动待测试软件,在该模块类中会封装有包括startcmd这一环境参数名的环境关联语句。可以理解的是,启动不同的待测试软件,所需的启动命令是不相同的,也就是说对应的环境特征参数不同,需要在环境描述接口配置文件中由开发人员自定义设置与当前的测试软件对应的启动命令,即:与startcmd这个环境参数名对应的环境特征值,相应的,当测试程序执行过程中,如果需要获取与待测试软件对应的启动命令时,仅需直接在内存中获取与startcmd对应的环境特征值即可。
本发明实施例通过将与测试环境相关联的环境参数的环境特征值在环境描述接口配置文件中进行统一配置,使用所述环境参数构建抽象类,并使用抽象类生成测试程序的方式,可以实现在测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,获取环境描述接口配置文件中与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作的技术效果,实现了测试工具与环境的解耦合,提高了测试工具的通用性以及可迁移性,大大减少了开发人员重复开发的工作量。
实施例二
图2是本发明实施例二提供的一种测试程序的执行方法的流程图。本实施例以上述实施例为基础进行优化,在本实施例中,还优选包括:在检测到问题定位场景时,调用执行所述测试程序中的问题排查定位代码。
相应的,本实施例的方法具体包括:
210、将与测试程序关联的环境描述接口配置文件加载于内存中。
其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联。
220、按照程序执行顺序,顺序执行所述测试程序的程序代码。其中,所述测试程序中包括:至少一个抽象类。
230、判断所述测试程序是否执行至目标抽象类中的环境关联语句:若是,执行240;否则,返回220。
240、根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作,执行250。
250、判断是否检测到问题定位场景:若是,执行260;否则,返回220。
***级测试任务不会完全顺利的执行,测试程序在执行期间肯定要受到环境的不稳定,模块或者机器等问题困扰,从而导致任务失败。那么如何在任务失败时,快速的将问题暴露给用户,减少用户的问题定位代价,也显得尤为重要。
本发明实施例在提供了半固定的环境描述接口配置文件以及各种层次的抽象类接口的基础上,进一步提供了一套问题排查定位***,开发人员基于该问题排查定位***可以快速、有效的生成问题排查定位代码加入到待测试软件的测试程序中,其中,该问题排查定位代码在检测到问题定位场景时被调用执行。
所述问题定位场景可以包括下述至少一项:启动失败,进程退出场景、启动成功,进程退出场景、压力测试时日志不滚动场景、压力测试时日志不存在场景或者安全检查失败场景。
260、调用执行所述测试程序中的问题排查定位代码。
其中,所述问题排查定位代码的代码功能包括下述至少一项:
致命错误日志检测、程序崩溃检查、硬盘或内存检查、进程快照、占用端口检查、压力工具状态检查、模块线程堆栈信息输出检查以及***连通性检查。
当然,可以理解的是,开发人员还可以设计其他功能的问题排查定位代码,本实施例对此并不进行限制。
本实施例的技术方案在测试程序的执行过程中,如果检测到问题定位场景,则会调用执行问题排查定位代码定位相应的测试问题,针对测试过程中出现测试问题时,可以有效的暴露问题,达到快速定位的目的。
在上述各实施例的基础上,所述方法还包括:在所述问题排查定位代码执行结束后,以人机交互界面的形式将排查出的关键问题,以设定显示效果提供给用户。
优选的,可以通过HTML(HyperText Markup Language,超文本标记语言)等友好的用户接口界面展示给用户,通过飘红,加重等显示效果展现排查出的主要问题。
具体应用场景
在图3中示出了本发明实施例的一种具体应用场景的示意图。
如图3所示,本发明实施例为不同的***级测试工具的开发人员均提供一套底层环境搭建平台(图3中的Env topo),在该底层环境搭建平台中,主要提供了一个环境描述接口配置文件。其中,该环境描述接口配置文件中固定配置有环境参数名(作为键值对中的键),需要由开发人员根据不同的测试环境,自定义设置与环境参数名对应的环境特征值(作为键值对中的值)。同时,该底层环境搭建平台还为开发人员提供各种层次的抽象类接口,开发人员基于该抽象类接口可以首先构造模块类,并基于模块类构造拓扑类、组件类(图3中的事务抽象接口)、组件基类(图3中的具体事务类),以及组件队列操作类(图3中的串起事务功能)。基于构造完成的各种抽象类,开发人员可以快速衍生出各种***级测试工具。
伴随着互联网***规模的急剧膨胀,***级测试的难度也更大。用户更希望使用到成熟的,稳定的测试***。本发明实施例作为一种新型技术,能够很好的满足用户这方面的需求,快速的跨产品线应用,工具快速开发,减少重复开发,在出现问题时可以有效的暴露问题,达到快速定位的目的。可以有效应各种***级测试上,满足用户在这方面的诉求,提升测试稳定性和测试效率,加快相关产品的迭代速度。
实施例三
图4是本发明实施例三提供的一种测试程序的执行装置的结构图。如图4所示,所述装置包括:配置文件加载模块41、程序执行模块42以及环境特征值获取模块43,其中:
配置文件加载模块41,用于将与测试程序关联的环境描述接口配置文件加载于内存中;其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联。
程序执行模块42,用于执行所述测试程序,其中,所述测试程序中包括:至少一个抽象类。
环境特征值获取模块43,用于在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
本发明实施例通过将与测试环境相关联的环境参数的环境特征值在环境描述接口配置文件中进行统一配置,使用所述环境参数构建抽象类,并使用抽象类生成测试程序的方式,可以实现在测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,获取环境描述接口配置文件中与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作的技术效果,实现了测试工具与环境的解耦合,提高了测试工具的通用性以及可迁移性,大大减少了开发人员重复开发的工作量。
在上述各实施例的基础上,所述环境参数名可以包括下述至少一项:
机器名称、用户名、密码、模块名、分库名、分组数、测试场景、上游模块名以及下游模块名。
在上述各实施例的基础上,所述抽象类可以包括:模块类;
其中,在所述模块类中定义了模块类接口的实现方法,在所述模块类接口中声明了单个模块的操作;
所述模块类接口中包括至少一个所述环境参数名;所述模块类中包括至少一条包括所述环境参数名的环境关联语句。
在上述各实施例的基础上,所述模块类接口中声明的操作类型可以包括下述至少一项:
模块属性实例化、本地执行、远程执行、拷贝、远程目录探测、远程文件探测、消息摘要算法第五版计算、日志拷贝、压力工具判断、清理日志以及性能统计。
在上述各实施例的基础上,所述抽象类还可以包括:拓扑类;
其中,在所述拓扑类中定义了拓扑类接口的实现方法,在所述拓扑类接口中声明了至少两个模块的统一操作,所述拓扑类中包括至少两个模块类。
在上述各实施例的基础上,所述拓扑类接口中声明的操作类型可以包括下述至少一项:
启动指定模块、杀死指定模块、添加指定模块的模块处理器或者内存监控、更改指定模块环境、清理指定模块的日志信息以及指定模块的性能统计。
在上述各实施例的基础上,所述抽象类还可以包括:组件类和组件基类;
其中,在所述组件类中定义了组件类接口的实现方法,在所述组件基类中定义的组件基类接口的实现方法;在所述组件类接口中声明了一个测试动作,在所述组件基类接口中声明了一个测试动作且包括至少一个继承接口,所述继承接口用于接收用户自定义配置的参数;
所述组件类中可以包括:基于设定组合方式组合的模块类,和/或拓扑类;
所述组件基类中可以包括:基于设定组合方式组合的模块类,和/或拓扑类,以及所述继承接口。
在上述各实施例的基础上,所述抽象类还可以包括:组件队列操作类;
其中,在所述组件队列操作类中定义了组件队列接口的实现方法,在所述组件队列接口中声明了组件类,和/或组件基类的执行顺序以及执行调度方式;
所述组件队列操作类中包括:由用户配置执行顺序与调度参数的组件类,和/或组件基类。
在上述各实施例的基础上,所述装置还可以包括:排查定位代码调用模块,用于在检测到问题定位场景时,调用执行所述测试程序中的问题排查定位代码;
其中,所述问题排查定位代码的代码功能可以包括下述至少一项:
致命错误日志检测、程序崩溃检查、硬盘或内存检查、进程快照、占用端口检查、压力工具状态检查、模块线程堆栈信息输出检查以及***连通性检查。
在上述各实施例的基础上,所述问题定位场景可以包括下述至少一项:
启动失败,进程退出场景、启动成功,进程退出场景、压力测试时日志不滚动场景、压力测试时日志不存在场景或者安全检查失败场景。
本发明实施例所提供的测试程序的执行装置可用于执行本发明任意实施例提供的测试程序的执行方法,具备相应的功能模块,实现相同的有益效果。
显然,本领域技术人员应该明白,上述的本发明的各模块或各步骤可以通过如上所述的服务器实施。可选地,本发明实施例可以用计算机装置可执行的程序来实现,从而可以将它们存储在存储装置中由处理器来执行,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等;或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种测试程序的执行方法,其特征在于,包括:
将与测试程序关联的环境描述接口配置文件加载于内存中;其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联;
执行所述测试程序,其中,所述测试程序中包括:至少一个抽象类,其中,所述抽象类是基于抽象接口生成,所述抽象接口包括模块类接口、拓扑类接口、组件类接口、组件基类接口以及组件队列操作类接口;
在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
2.根据权利要求1所述的方法,其特征在于,所述环境参数名包括下述至少一项:
机器名称、用户名、密码、模块名、分库名、分组数、测试场景、上游模块名以及下游模块名。
3.根据权利要求1所述的方法,其特征在于,所述抽象类包括:模块类;
其中,在所述模块类中定义了模块类接口的实现方法,在所述模块类接口中声明了单个模块的操作;
所述模块类接口中包括至少一个所述环境参数名;所述模块类中包括至少一条包括所述环境参数名的环境关联语句。
4.根据权利要求3所述的方法,其特征在于,所述模块类接口中声明的操作类型包括下述至少一项:
模块属性实例化、本地执行、远程执行、拷贝、远程目录探测、远程文件探测、消息摘要算法第五版计算、日志拷贝、压力工具判断、清理日志以及性能统计。
5.根据权利要求3所述的方法,其特征在于,所述抽象类还包括:拓扑类;
其中,在所述拓扑类中定义了拓扑类接口的实现方法,在所述拓扑类接口中声明了至少两个模块的统一操作,所述拓扑类中包括至少两个模块类。
6.根据权利要求5所述的方法,其特征在于,所述拓扑类接口中声明的操作类型包括下述至少一项:
启动指定模块、杀死指定模块、添加指定模块的模块处理器或者内存监控、更改指定模块环境、清理指定模块的日志信息以及指定模块的性能统计。
7.根据权利要求5所述的方法,其特征在于,所述抽象类还包括:组件类和组件基类;
其中,在所述组件类中定义了组件类接口的实现方法,在所述组件基类中定义的组件基类接口的实现方法;在所述组件类接口中声明了一个测试动作,在所述组件基类接口中声明了一个测试动作且包括至少一个继承接口,所述继承接口用于接收用户自定义配置的参数;
所述组件类中包括:基于设定组合方式组合的模块类,和/或拓扑类;
所述组件基类中包括:基于设定组合方式组合的模块类,和/或拓扑类,以及所述继承接口。
8.根据权利要求7所述的方法,其特征在于,所述抽象类还包括:组件队列操作类;
其中,在所述组件队列操作类中定义了组件队列接口的实现方法,在所述组件队列接口中声明了组件类,和/或组件基类的执行顺序以及执行调度方式;
所述组件队列操作类中包括:由用户配置执行顺序与调度参数的组件类,和/或组件基类。
9.根据权利要求1-8任一项所述的方法,其特征在于,还包括:
在检测到问题定位场景时,调用执行所述测试程序中的问题排查定位代码;
其中,所述问题排查定位代码的代码功能包括下述至少一项:
致命错误日志检测、程序崩溃检查、硬盘或内存检查、进程快照、占用端口检查、压力工具状态检查、模块线程堆栈信息输出检查以及***连通性检查。
10.根据权利要求9所述的方法,其特征在于,所述问题定位场景包括下述至少一项:
启动失败,进程退出场景、启动成功,进程退出场景、压力测试时日志不滚动场景、压力测试时日志不存在场景或者安全检查失败场景。
11.一种测试程序的执行装置,其特征在于,包括:
配置文件加载模块,用于将与测试程序关联的环境描述接口配置文件加载于内存中;其中,所述环境描述接口配置文件包括:固定配置的环境参数名,以及由用户自定义设置的,与环境参数名对应的环境特征值,所述环境特征值与测试环境相关联;
程序执行模块,用于执行所述测试程序,其中,所述测试程序中包括:至少一个抽象类,其中,所述抽象类是基于抽象接口生成,所述抽象接口包括模块类接口、拓扑类接口、组件类接口、组件基类接口以及组件队列操作类接口;
环境特征值获取模块,用于在所述测试程序执行至目标抽象类中的环境关联语句时,根据所述环境关联语句中的目标环境参数名,在内存中获取与所述目标环境参数名对应的目标环境特征值,以使所述测试程序执行与所述目标环境特征值关联的操作。
12.根据权利要求11所述的装置,其特征在于,所述抽象类包括:模块类;
其中,在所述模块类中定义了模块类接口的实现方法,在所述模块类接口中声明了单个模块的操作;
所述模块类接口中包括至少一个所述环境参数名;所述模块类中包括至少一条包括所述环境参数名的环境关联语句。
13.根据权利要求12所述的装置,其特征在于,所述抽象类还包括:拓扑类;
其中,在所述拓扑类中定义了拓扑类接口的实现方法,在所述拓扑类接口中声明了至少两个模块的统一操作,所述拓扑类中包括至少两个模块类。
14.根据权利要求13所述的装置,其特征在于,所述抽象类还包括:组件类和组件基类;
其中,在所述组件类中定义了组件类接口的实现方法,在所述组件基类中定义的组件基类接口的实现方法;在所述组件类接口中声明了一个测试动作,在所述组件基类接口中声明了一个测试动作且包括至少一个继承接口,所述继承接口用于接收用户自定义配置的参数;
所述组件类中包括:基于设定组合方式组合的模块类,和/或拓扑类;
所述组件基类中包括:基于设定组合方式组合的模块类,和/或拓扑类,以及所述继承接口。
15.根据权利要求14所述的装置,其特征在于,所述抽象类还包括:组件队列操作类;
其中,在所述组件队列操作类中定义了组件队列接口的实现方法,在所述组件队列接口中声明了组件类,和/或组件基类的执行顺序以及执行调度方式;
所述组件队列操作类中包括:由用户配置执行顺序与调度参数的组件类,和/或组件基类。
16.根据权利要求11-15任一项所述的装置,其特征在于,还包括:排查定位代码调用模块,用于在检测到问题定位场景时,调用执行所述测试程序中的问题排查定位代码;
其中,所述问题排查定位代码的代码功能包括下述至少一项:
致命错误日志检测、程序崩溃检查、硬盘或内存检查、进程快照、占用端口检查、压力工具状态检查、模块线程堆栈信息输出检查以及***连通性检查。
CN201610537223.0A 2016-07-08 2016-07-08 测试程序的执行方法和装置 Active CN106201878B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610537223.0A CN106201878B (zh) 2016-07-08 2016-07-08 测试程序的执行方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610537223.0A CN106201878B (zh) 2016-07-08 2016-07-08 测试程序的执行方法和装置

Publications (2)

Publication Number Publication Date
CN106201878A CN106201878A (zh) 2016-12-07
CN106201878B true CN106201878B (zh) 2018-11-30

Family

ID=57472821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610537223.0A Active CN106201878B (zh) 2016-07-08 2016-07-08 测试程序的执行方法和装置

Country Status (1)

Country Link
CN (1) CN106201878B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107395453B (zh) * 2017-07-03 2021-05-11 竹间智能科技(上海)有限公司 后台服务压力测试方法及装置
CN107659455B (zh) * 2017-10-16 2020-01-03 武汉斗鱼网络科技有限公司 一种iOS端Mock数据的方法、存储介质、设备及***
CN107807869A (zh) * 2017-10-16 2018-03-16 微梦创科网络科技(中国)有限公司 一种测试***和测试方法
CN108375726B (zh) * 2018-01-31 2021-05-11 佛山市联动科技实业有限公司 基于fpga的参变量表测试方法
CN109542757A (zh) * 2018-09-29 2019-03-29 中国平安人寿保险股份有限公司 接口测试环境确定方法、装置、电子设备及存储介质
CN112035335B (zh) * 2019-06-03 2024-06-25 抖音视界有限公司 自动化测试的方法、装置、设备、介质
CN110365967A (zh) * 2019-06-27 2019-10-22 视联动力信息技术股份有限公司 一种测试方法和装置
CN110489341B (zh) * 2019-07-30 2023-08-11 北京字节跳动网络技术有限公司 一种测试方法、装置、存储介质及电子设备
CN111522601A (zh) * 2020-04-22 2020-08-11 北京思特奇信息技术股份有限公司 一种灵活配置多个组件任务的后端运行方法及***
CN112526255B (zh) * 2020-11-13 2024-04-02 武汉联特科技股份有限公司 光模块自动化测试***中的通用配置方法及设备
CN114697398B (zh) * 2022-03-23 2023-10-17 北京百度网讯科技有限公司 数据处理方法、装置、电子设备、存储介质及产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110734A (zh) * 2007-08-24 2008-01-23 福建星网锐捷网络有限公司 自动化测试方法及***
CN103699478A (zh) * 2012-09-27 2014-04-02 ***股份有限公司 一种测试案例生成***和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6349935B2 (ja) * 2014-05-08 2018-07-04 日本電気株式会社 自動試験シナリオ作成装置、自動試験シナリオ作成方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110734A (zh) * 2007-08-24 2008-01-23 福建星网锐捷网络有限公司 自动化测试方法及***
CN103699478A (zh) * 2012-09-27 2014-04-02 ***股份有限公司 一种测试案例生成***和方法

Also Published As

Publication number Publication date
CN106201878A (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
CN106201878B (zh) 测试程序的执行方法和装置
Amparore et al. 30 years of GreatSPN
Sebastio et al. An availability analysis approach for deployment configurations of containers
CN102667730B (zh) 设计时调试
US9535821B1 (en) Displaying violated coding rules in source code
KR20110134582A (ko) 로봇 소프트웨어 컴포넌트를 위한 시뮬레이션 기반 인터페이스 테스팅 자동화 시스템 및 그 방법
US20080141065A1 (en) Parallel computer system
CN110765018B (zh) 接口自动化测试方法及设备
GB2516986A (en) Automated application test system
CN111881014A (zh) 一种***测试方法、装置、存储介质及电子设备
CN112494940B (zh) 用户界面的制作方法、装置、存储介质及计算机设备
US8515727B2 (en) Automatic logic model build process with autonomous quality checking
CN114818565A (zh) 基于python的仿真环境管理平台、方法、设备及介质
CN105164642A (zh) 对合同的操作***支持
CN112698974A (zh) 故障注入测试方法、装置和存储介质
Alawneh et al. A unified approach for verification and validation of systems and software engineering models
US20110246967A1 (en) Methods and systems for automation framework extensibility
KR20110067418A (ko) 자가치유 시스템의 모니터링 및 치유성능 평가를 위한 시스템 및 방법
Berthier et al. Designing autonomic management systems by using reactive control techniques
Laznik et al. Context aware exception handling in business process execution language
KR20090099977A (ko) 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치
Cârlan et al. Arguing on software-level verification techniques appropriateness
CN113010441B (zh) 模型发布方法、装置、电子设备及存储介质
US11360882B2 (en) Method and apparatus for calculating a software stability index
Andrade et al. Openmads: An open source tool for modeling and analysis of distributed systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant