一种基于自定义测试脚本的测试方法及装置
技术领域
本发明涉及软件测试技术领域,特别是涉及一种基于自定义测试脚本的测试方法及装置。
背景技术
测试例是测量仪表的基本单元,是向用户开放的人机接口。测试例脚本是实现具体测试例测试过程的实体,内容涵盖了与底层测量模块的通信,测试例配置参数获取,测量过程的逻辑控制,测量结果的抓取/计算/分析,以及测量结果的判定/输出。测量仪表使用者可通过运行预先编制好的测试例脚本,验证被测设备的功能与性能指标,也可以按照用户需求调整测试例脚本。实现测试例脚本的灵活性、友好性、动态扩展是衡量一个测量仪表装置便于开发和使用的重要指标。
现有技术中,基于C/C++、.net Framework语言或其他编译类开发的传统测量仪表,只能够支持固定的测试例脚本加一部分参数开放,满足不同测试条件的选择,往往不够灵活,扩展性差。另外,由于部分测试场景测试需求差异化大,与用户侧被测设备通信存在定制化,也有调整测试例脚本测试逻辑的需求,目前通用性的仪表不具备二次开发能力,不能自定义测试脚本,将很难满足用户使用需求。且开发难度大,开发周期长。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于自定义测试脚本的测试方法及装置,实现用户根据自身需求定制自身所需要的脚本,大大提高了测量装置的易用性。
本发明提供了一种基于自定义测试脚本的测试方法,包括:
基于Json文档描述测试例的参数配置,将所述参数配置动态加载到C#开发软件的用户交互界面中;
通过所述用户交互界面接收用户修改所述参数配置的指令,并根据所述指令对所述测试例的参数信息进行修改;
提供所述测试例对应的IronPython测试例脚本供用户进行编辑,根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改;
通过测试例执行引擎将所述测试例参数信息传给所述IronPython测试例脚本;
根据接收到的所述测试例参数信息执行所述IronPython测试例脚本以执行所述测试例。
可选地,所述通过所述用户交互界面接收用户修改所述参数配置的指令,并根据所述指令对所述测试例的参数信息进行修改,包括:
查找当前执行测试的程序的目录下的script文件夹,遍历读取所述script文件夹下预置的测试例的Json文件,获取所述Json文件中的测试例信息以及测试例参数信息;
根据所述测试例信息中的测试例的名称信息,依次将所述测试例添加到测试例列表中;
通过用户交互界面接收用户修改所述参数配置的指令,并根据所述指令修改各Json文件中的测试例参数信息并保存。
可选地,为各测试例对应的Json文件中的测试例参数信息动态增加控件,并初始化所述控件;
通过所述用户交互界面中的控件接收用户修改所述参数配置的指令,根据所述指令修改所述测试例参数信息并保存。
可选地,所述根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改,包括:
在所述测试例列表中选取任意一个测试例;
在所述Script文件夹下查找并选中所述测试例对应的Json文件,根据所述Json文件查找并获取对应的IronPython测试例脚本;
根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改。
可选地,所述在所述Script文件夹下查找并选中所述测试例对应的Json文件,根据所述Json文件查找并获取对应的IronPython测试例脚本,包括:
在所述Script文件夹下查找并选中所述测试例对应的Json文件,在所述Json文件中读取measureItem下的method属性值;
根据所述method属性值,在method文件夹中查找并获取文件名为所述method属性值,扩展名为py的IronPython测试例脚本。
可选地,所述根据接收到的所述测试例参数信息执行所述IronPython测试例脚本以执行所述测试例,包括:
通过C#封装的通信接口与测量模块、被测设备进行通信;
根据接收到的所述测试例参数信息,通过所述通信接口控制所述测量模块对所述被测设备执行所述IronPython测试例脚本以执行所述测试例进行测量,并读取测量数据。
可选地,所述IronPython测试例脚本通过C#封装的通信接口与测量模块、被测设备进行通信之后,还包括:
通过所述C#封装的通信接口验证所述测量模块与所述被测设备的连接状态;
确定所述测量模块与所述被测设备之间的状态为连接。
可选地,所述通过测试例执行引擎将所述测试例参数传给所述IronPython测试例脚本之前,还包括:
通过所述测试例执行引擎初始化所述IronPython测试例脚本的运行环境。
根据本发明的另一个方面,还提供了一种基于自定义测试脚本的测试装置,包括:
加载模块,适于基于Json文档描述测试例的参数配置,将所述参数配置动态加载到C#开发软件的用户交互界面中;
第一修改模块,适于通过所述用户交互界面接收用户修改所述参数配置的指令,并根据所述指令对所述测试例的参数信息进行修改;
第二修改模块,适于提供所述测试例对应的IronPython测试例脚本供用户进行编辑,根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改。
传输模块,适于通过测试例执行引擎将所述测试例参数信息传给所述IronPython测试例脚本;
执行模块,适于根据接收到的所述测试例参数信息执行所述IronPython测试例脚本以执行所述测试例。
根据本发明的再一个方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一项所述的基于自定义测试脚本的测试方法。
本发明提供了一种基于自定义测试脚本的测试方法及装置,基于Jason文档描述测试例参数,并将参数配置动态加载到C#开发软件的用户交互界面中,使得可以根据接收到的用户修改测试例参数配置的指令,对所述测试参数进行修改;另外,提供测试例对应的IronPython测试例脚本,可以在用户有自定义脚本的需求时,无需仪表开发商参与,用户自行进行二次开发。同时,基于默认的测试例脚本,用户可快速定制化自己的脚本,并进行手动调试,大大提高了测量装置的易用性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明一个实施例的基于自定义测试脚本的测试方法流程图;
图2是根据本发明一个可选实施例的修改测试例参数信息的流程图;
图3是根据本发明一个可选实施例描述测试例参数配置的Json文档示意图;
图4是根据本发明一个可选实施例的修改IronPython测试例脚本的流程图;
图5是根据本发明一个实施例的基于自定义测试脚本的测试装置结构示意图;
图6是根据本发明一个可选实施例的基于自定义测试脚本的测试装置结构示意图;
图7是根据本发明另一个可选实施例的基于自定义测试脚本的测试装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。需要说明的是,在不冲突的前提下,本发明实施例和优选实施例中的技术特征可以相互结合。
为了解决现有技术中的测量仪表只能支持固定的测试例脚本导致的不够灵活,扩展性差的问题,本发明实施例提供了一种基于自定义测试脚本的测试方法,能够根据用户需求自定义测试脚本,大大提高了测量软件整体的扩展性、灵活性。下面通过具体的实施例进行详细说明。
图1是根据本发明一个实施例的基于自定义测试脚本的测试方法流程图,如图1所示,根据本发明实施例的基于自定义测试脚本的测试方法包括:
步骤S102:基于Json文档描述测试例的参数配置,将参数配置动态加载到C#开发软件的用户交互界面中;
步骤S104:通过用户交互界面接收用户修改参数配置的指令,并根据该指令对测试例的参数信息进行修改;
步骤S106:提供测试例对应的IronPython测试例脚本供用户进行编辑,根据接收到的用户自定义的修改IronPython测试例脚本的指令,对IronPython测试例脚本进行修改;
步骤S108:通过测试例执行引擎将测试例参数信息传给IronPython测试例脚本;
步骤S110:根据接收到的测试例参数信息执行IronPython测试例脚本以执行测试例。
本发明实施例提供了一种基于自定义测试脚本的测试方法,基于Jason文档描述测试例的参数配置,并将参数配置动态加载到C#开发软件的用户交互界面中,使得可以根据接收到的用户修改测试例参数配置的指令,对所述测试参数进行修改;另外,提供测试例对应的IronPython测试例脚本,可以在用户有自定义脚本的需求时,无需仪表开发商参与,用户可自行进行二次开发。同时,基于默认的测试例脚本,用户可快速定制化自己的脚本,并进行手动调试,大大提高了测量装置的易用性。
图2是根据本发明一个可选实施例的修改测试例参数信息的流程图,如图2所示,在一个可选实施例中,上述步骤S104具体包括:
S202:查找当前执行测试的程序的目录下的script文件夹,遍历读取script文件夹下预置的测试例的Json文件,获取Json文件中的测试例信息以及测试例参数信息;
S204:根据测试例信息中的测试例的名称信息,依次将所述测试例添加到测试例列表中;
S206:通过用户交互界面接收用户修改所述参数配置的指令,并根据所述指令修改各Json文件中的测试例参数信息并保存。
结合图3可知,Script文件夹下的测试例对应的Json文件下的measureItem(计量项目)中包括测试例信息,测试例信息包括测试例的name(名称信息)和id(属性信息)。Json文件下的params(可变参数)中包括测试例参数信息,params下包括多个对象数组,循环遍历每一个对象数组,每个对象数组下有7个属性,包括id(唯一标识),name(参数名称),value(参数值),selectItem(选项),type(控件类型),enable是(是否可操作),visible(是否显示)。首先,依据这些信息在界面中从上至下动态的增加控件,其中type类型为input增加输入框,为select增加下拉列表框。并在控件前面增加lable控件,内容为name属性值。其次,进行控件初始化,Input控件初始化数据为value属性值,select控件,需要先循环添加selectItem以“;”分割的值到下拉列表框中,再依据value属性值选中进行初始化。此外,还依据enable、visible两个属性值分别设置是否可操作,可显示。
通过设置上述控件,使得可以根据用户交互界面中的控件接收用户修改测试例参数配置的指令,并根据所述指令对测试例参数信息进行修改并保存,实现了测试例参数信息的可视化编辑。
图4是根据本发明一个可选实施例的修改IronPython测试例脚本的流程图,如图4所示,上述步骤S106具体包括:
S402:在测试例列表中选取任意一个测试例;
S404:在Script文件夹下查找并选中该测试例对应的Json文件,根据该Json文件查找并获取对应的IronPython测试例脚本;
S406:根据接收的用户自定义的修改该IronPython测试例脚本的指令,对该IronPython测试例脚本进行修改。
在一个可选实施例中,步骤S404的具体过程是:在所述Script文件夹下查找并选中所述测试例对应的Json文件,在Json文件中读取measureItem下的method属性值;根据所述method属性值,在method文件夹中查找并获取文件名为所述method属性值,扩展名为py的IronPython测试例脚本。
上述测试程序在使用C#语言开发桌面应用的专业性基础上,增加了Python语言可自定义测试例脚本的能力,C#与Python混合编程的模式提高了仪表装置软件整体的扩展性、灵活性与适应性,使得在用户有自定义脚本的需求时,无需仪表开发商参与,用户可自行进行二次开发。同时,基于默认的测试例脚本用户可快速定制化自己的脚本,并进行手动调试,大大提高了测量装置的易用性。
在一个可选实施例中,上述步骤S110包括:通过C#封装的通信接口与测量模块、被测设备进行通信;根据接收到的测试例参数信息通过通信接口控制测量模块对被测设备执行IronPython测试例脚本以执行相应地测试例进行测量,并读取测量数据。
其中,由于IronPython脚本要与被测设备、测量模块进行通信,接口优选包括GPIB、USB、串口、网口四种,基于C#对各种I/O读写支持的优势,对这四类接口都统一进行了封装,简化为打开、关闭、读、写四种操作,在IronPython中引用这些封装的C#库即可进行通信,封装通用的I/O通信接口,增加新的通信模块,无需对新模块进行适配开发,节省了开发人员的操作。
上述通过C#封装的通信接口与测量模块、被测设备进行通信之后还包括:通过所述C#封装的通信接口验证所述测量模块与被测设备的连接状态;确定所述测量模块与所述被测设备之间的状态为连接。
其中,若确定测量模块与被测设备之间的状态为连接,则通过上述通信接口控制测量模块对所述被测设备执行上述IronPython测试例脚本以执行上述测试例进行测量。
若确定测量模块与被测设备之间的状态为未连接,则生成报警信息,提示连接上述被测设备与测量模块,进而对被测设备进行测量。
测量结束后,读取相应的测试数据,计算和判定被测设备是否测量通过,并将测量的结果返回到界面进行显示。
根据同一发明构思,本发明实施例还提供了一种基于自定义测试脚本的测试装置。图5示出了根据本发明一个实施例的基于自定义测试脚本的测试装置的结构示意图,参见图5,基于自定义测试脚本的测试装置500至少包括:加载模块510、第一修改模块520、第二修改模块530、传输模块540、执行模块550。
先介绍本发明实施例的基于自定义测试脚本的测试装置500的各组成或器件的功能以及各部分间的连接关系:
加载模块510,适于基于Json文档描述测试例的参数配置,将所述参数配置动态加载到C#开发软件的用户交互界面中;
第一修改模块520,与加载模块510耦合,适于通过所述用户交互界面接收用户修改所述参数配置的指令,并根据所述指令对所述测试例参数信息进行修改;
第二修改模块530,与第一修改模块520耦合,适于提供所述测试例对应的IronPython测试例脚本供用户进行编辑,根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改。
传输模块540,与第二修改模块530耦合,适于通过测试例执行引擎将所述测试例参数信息传给所述IronPython测试例脚本;
执行模块550,与传输模块540耦合,适于根据接收到的所述测试例参数信息执行所述IronPython测试例脚本以执行所述测试例。
基于本实施例提供的基于自定义测试脚本的测试装置,用户可以根据自身对测试过程的需求自定义IronPython测试例脚本,大大提高了测试例脚本的灵活性,易用性。
图6是根据本发明一个可选实施例的基于自定义测试脚本的测试装置结构示意图,如图6所示,在本发明一可选实施例中,上述第一修改模块520,包括:
查找单元521,与加载模块510耦合,适于查找当前执行测试的程序的目录下的script文件夹,遍历读取所述script文件夹下预置的测试例的Json文件,获取所述Json文件中的测试例信息以及测试例参数信息;
添加单元522,与查找单元521耦合,适于根据所述测试例信息中的测试例的名称信息,依次将所述测试例添加到测试例列表中;
修改保存单元523,与添加单元522耦合,适于通过用户交互界面接收用户修改所述参数配置的指令,并根据所述指令修改各Json文件中的测试例参数信息并保存。
在一个可选实施例中,上述修改保存单元523具体适于:为各测试例对应的Json文件中的测试例参数信息动态增加控件,并初始化所述控件;
通过所述用户交互界面中的控件接收用户修改所述参数配置的指令,根据所述指令修改所述测试例参数信息并保存。
图7是根据本发明另一个可选实施例的基于自定义测试脚本的测试装置结构示意图,如图7所示,在一个可选实施例中,上述第二修改模块530包括:
选取单元531,与第一修改模块520耦合,适于在所述测试例列表中选取任意一个测试例;
查找获取单元532,与选取单元531耦合,适于在所述Script文件夹下查找并选中所述测试例对应的Json文件,根据所述Json文件查找并获取对应的IronPython测试例脚本;
修改单元533,与查找获取单元532耦合,适于根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改。
在一个可选实施例中,上述查找获取单元532具体适于:在所述Script文件夹下查找并选中所述测试例对应的Json文件,在所述Json文件中读取measureItem下的method属性值;
根据所述method属性值,在method文件夹中查找并获取文件名为所述method属性值,扩展名为py的IronPython测试例脚本。
在一个可选实施例中,上述执行模块550具体适于:通过C#封装的通信接口与测量模块、被测设备进行通信;
根据接收到的所述测试例参数信息,通过所述通信接口控制所述测量模块对所述被测设备执行所述IronPython测试例脚本以执行所述测试例进行测量,并读取测量数据。
在一个可选实施例中,上述执行模块550具体还适于:通过所述C#封装的通信接口验证所述测量模块与被测设备的连接状态;
确定所述测量模块与所述被测设备之间的状态为连接。
在一个可选实施例中,上述传输模块540还适于:通过所述测试例执行引擎初始化所述IronPython测试例脚本的运行环境。
依据本发明的再一个方面,还提供了一种计算机存储介质,计算机存储介质存储有计算机程序代码,当计算机程序代码在计算设备上运行时,导致计算设备执行上述任意实施例中的基于自定义测试脚本的测试方法。
本发明实施例提供了一种基于自定义测试脚本的测试方法及装置,基于本发明提供的方法,基于Json文档描述测试例的参数配置,将所述参数配置动态加载到用户交互界面中;使得通过所述用户交互界面可以接收到用户修改所述参数配置的指令,并根据所述指令对所述测试例的参数信息进行可视化修改;提供所述测试例对应的IronPython测试例脚本供用户进行编辑,根据接收到的用户自定义的修改所述IronPython测试例脚本的指令,对所述IronPython测试例脚本进行修改,使得用户可以自定义测试例脚本,大大提高了测试例脚本的灵活性,易用性;通过C#封装的通信接口与测量模块、被测设备进行通信,无需增加新的通信模块,无需对新模块进行适配开发,节省了相应人员投入,另外只开放测试例脚本源码,使得整个软件版本能够保持一致。所属领域的技术人员可以清楚地了解到,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不做赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。