发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种测试管理系统,用于解决现有技术中不能对测试脚本文件以及测试脚本执行的进行可视化管理的问题。
为实现上述目的及其他相关目的,本发明提供一种测试管理系统,所述测试管理系统包括:脚本执行控制模块,用于选择一个或多个待测试脚本,并控制所选择脚本的执行;脚本执行日志显示模块,与所述脚本执行控制模块相连,用于在日志显示界面上实时显示所执行脚本的测试日志信息。
可选地,所述在日志显示界面上实时显示所执行的脚本的测试日志信息的方法包括:创建一个子进程,在所述子进程执行所选择脚本;利用管道获取所述子进程的输出信息;将所述输出信息输出到所述日志显示界面显示。
可选地,所述子进程的输出信息为所述子进程的标准输出信息,将所述子进程的错误输出重定向到所述子进程的标准输出,以同时获取所述子进程的错误输出信息。
可选地,所述管道包括命名管道和匿名管道中的任一种。
可选地,所述测试管理系统还包括测试套管理模块,所述测试套管理模块以测试套为单位进行管理,每个所述测试套包括至少一个测试脚本;所述测试套管理模块用于显示所有所述测试套,并在选择一测试套时,显示所选择测试套中的所有测试脚本;所述脚本执行控制模块与所述测试套管理模块相连,将所有所述测试套中的所述测试脚本作为待测试脚本。
可选地,所选择脚本包括属于多个测试套的测试脚本。
可选地,所述测试套管理模块还用于对所述测试套的添加或/和删除。
可选地,所述测试套管理模块还用于实现对所述测试套中的所述测试脚本的内容进行编辑修改。
可选地,所述测试套管理模块还用于实现对所述测试套中的所述测试脚本进行添加或/和删除。
可选地,所述测试管理系统采用TCL/TK语言实现。
本发明还提供一种测试管理方法,所述测试管理方法包括:选择一个或多个测试脚本;创建一个子进程,并在所述子进程执行所述测试脚本;利用管道获取所述子进程的输出信息;将所述输出信息输出到日志显示界面显示。
可选地,所述测试管理方法还包括:采用测试套为单位对所述测试脚本进行管理,所述测试套包括一个或多个所述测试脚本。
如上所述,本发明的一种测试管理系统及方法,具有以下有益效果:采用管道技术使得脚本执行的测试日志信息可以实时的显示在日志显示界面,大大方便了测试人员的对测试的跟踪,采用了图形化的界面测试套管理方式,将测试环境等条件相同的测试脚本归入到同一个测试套中,并提供对测试脚本的修改,简化了测试人员对测试脚本的管理,更方便测试人员根据需要选择或调整测试脚本进行测试。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明提供一种测试管理系统。在一个实施例中,如图1所示,所述测试管理系统1包括:脚本执行控制模块12和脚本执行日志显示模块13。其中:
脚本执行控制模块12,用于选择一个或多个待测试脚本,并控制所选择脚本的执行。具体地,脚本执行控制模块12首先根据测试要求选择一个或者多个待测试脚本,并控制所选择的一个或多个待测试脚本执行。
脚本执行日志显示模块13,与所述脚本执行控制模块相连,用于在日志显示界面上实时显示所执行脚本的测试日志信息。具体地,所述在日志显示界面上实时显示所执行的脚本的测试日志信息的方法包括:创建一个子进程,在所述子进程执行所选择脚本;利用管道获取所述子进程的输出信息;将所述输出信息输出到所述日志显示界面显示。在一个实施例中,所述子进程的输出信息为所述子进程的标准输出信息,将所述子进程的错误输出重定向到所述子进程的标准输出,以同时获取所述子进程的错误输出信息,这通常是通过修改相应的脚本语言代码实现的。所述管道可以为命名管道,所述管道也可以为匿名管道,通常,采用匿名管道的效率会高一些。匿名管道主要用于本地父进程和子进程之间的通信。在父进程中创建一个匿名管道并且设置成可读写,在创建成功后,父进程和子进程均可以对匿名通道进行读写操作。
在一个实施例中,本测试管理系统1上的控制包括通过点击相应的执行按钮来实现的;或者上述控制可以是通过选择相应的菜单命令来实现,或者通过在测试选择界面右键选择相应的功能条实现。
在一个实施例中,所述测试管理系统1不仅包括还包括脚本执行控制模块12和脚本执行日志显示模块13,还包括测试套管理模块11。所述测试套管理模块11以测试套为单位进行管理,每个所述测试套包括至少一个测试脚本;所述测试套管理模块11用于显示所有所述测试套,并在选择一测试套时,显示所选择测试套中的所有测试脚本;所述脚本执行控制模块12与所述测试套管理模块11相连,将所有所述测试套中的所述测试脚本作为待测试脚本。进一步地,这些测试套在测试套管理模块11中显示,当某一个测试套被选择时,将显示该测试套中的所有测试脚本供进一步脚本执行控制模块12对该测试套中的测试脚本进行选择。在一个实施例中,所述脚本执行控制模块12所选择的待测试脚本为一个测试套中的一个或多个测试脚本。在一个实施例中,所述脚本执行控制模块12所选择的待测试脚本为多个测试套中的一个或多个测试脚本。
在一个实施例中,所述测试套管理模块11还用于对所述测试套的添加或/和删除。在一个实施例中,所述测试套管理模块11还用于实现对所述测试套中的所述测试脚本的内容进行编辑修改。当选中某个测试脚本进行编辑时,所述测试套管理模块11将弹出一个编辑界面对该测试脚本进行编辑修改,并提供保存功能。在一个实施例中,所述测试套管理模块11还用于实现对所述测试套中的所述测试脚本进行添加或/和删除,即对测试套中所包含的测试脚本进行添加或/和删除。
在一个实施例中,所述测试管理系统采用TCL/TK语言实现。其中,可以将所述子进程的错误输出重定向到所述子进程的标准输出,以同时获取所述子进程的错误输出信息,这也是通过修改TCL/TK脚本语言代码实现的。
在一个实施例中,如图2所示,所述测试管理系统的界面由六部分组成。其中,测试套目录界面以及测试套管理区域界面属于测试套管理模块11,脚本执行控制界面属于脚本执行控制模块12,日志输出区域界面属于脚本执行日志显示模块13,即脚本执行日志显示模块13的日志显示界面。菜单栏是对测试管理系统功能操作的汇总,以更方便于用户使用。
1.菜单栏:提供程序的基本操作,例如测试套(由多个脚本组成)的添加、脚本的运行和程序的退出等;所述操作也可以在操作相应的部分通过右键点击显示的菜单中选择。
2.测试套目录界面:显示当前选中测试套的目录,提供添加测试套的功能。所述功能操作可以通过右键点击显示的菜单中选择,也可以通过在菜单栏中选择相应的功能操作。
3.脚本执行控制界面:提供脚本批量执行的选择以及脚本的执行。所述功能操作可以通过右键点击显示的菜单中选择,也可以通过在菜单栏中选择相应的功能操作。
4.测试套管理区域界面:罗列添加的测试套,并提供测试套的单选、多选、全选等功能。所述功能操作可以通过右键点击显示的菜单中选择,也可以通过在菜单栏中选择相应的功能操作。被选中的测试套中所有的脚本将在脚本显示区域中显示。
5.脚本显示区域界面:罗列被选中的测试套下所有的测试脚本,并提供脚本内容的查看以及编辑和保存功能。所述功能操作可以通过右键点击显示的菜单中选择,也可以通过在菜单栏中选择相应的功能操作。当选中测试脚本进行编辑时,将弹出相应的编辑界面供用户对所选中的测试脚本进行编辑,并提供保存功能。
6.日志输出区域界面:提供脚本执行时日志的实时输出。用户可以通过此界面实时的观察到测试脚本的运行信息。
本发明还提供一种测试管理方法。该测试管理方法主要通过管道和多线程技术来实现了脚本执行和日志实时输出的功能。在一个实施例中,如图3所示,所述测试管理方法包括以下步骤:
步骤S1,选择一个或多个测试脚本。在一个实施例中,测试人员可以根据测试的实际要求选择要测试的测试脚本。
步骤S2,创建一个子进程,并在所述子进程执行所述测试脚本。具体地,主进程创建一个用于运行测试脚本的子进程,所述子进程通常为打开的该测试脚本的脚本语言对应的命令解析器的一个实例;并将所述测试脚本的绝对路径以及运行命令发送给所述子进程,所述子进程根据命令执行所述测试脚本。
步骤S3,利用管道获取所述子进程的输出信息。在一个实施例中,父进程利用管道获取所述子进程的输出信息,既可以使用简单的匿名管道来获取所述子进程的输出信息,也可以使用命名管道来获取所述子进程的输出信息。所述子进程的输出信息为标准输出信息,即(stdout)输出的信息。在一个实施例中,可以通过修改代码将所述子进程的错误输出(stderr)信息重定向到标准输出(stdout)中,这样,所述子进程的错误输出信息也将在所述子进程的标准输出中输出,即所述标准输出信息包括原有的标准输出信息,也包括错误输出信息。
步骤S4,将所述输出信息输出到日志显示界面显示。具体地,主进程将所获取到的所述子进程的输出信息,可以包括标准输出信息和错误输出信息,输出到日志显示界面中显示。
在一个实施例中,所述测试管理方法还包括以下步骤:采用测试套为单位对所述测试脚本进行管理,所述测试套包括一个或多个所述测试脚本。具体地,当某一个测试套被选择时,将显示该测试套中的所有测试脚本供进一步对该测试套中的测试脚本进行选择。采用测试套管理的方法可以将相同运行环境需求的测试用例整合在一起,以更方便于测试人员的管理。
在一个实施例中,如图4所示,所述测试管理方法中,在主进程中通过“open”命令创建匿名管道、子进程以及多线程(多线程用于读写子进程的输入输出),取得子进程的句柄“tclshfd”。
主进程和子进程通过匿名管道进行通讯,具体过程如下:命令puts tclshfd“source+脚本绝对路径”,表示通过匿名管道向子进程发送“source+脚本绝对路径”的字符串,当子进程收到该字符串之后,就会调用source命令去执行该自动化脚本;通过在主进程中设计readbuf过程来获取匿名管道里面的数据并做相应处理,而readbuf中又调用putslog过程将脚本执行过程中产生的日志输出到主界面的日志区域。
所述测试管理方法中也可以针对如Python,Ruby等其他脚本语言编写的脚本进行管理和执行。所述测试管理方法会对测试脚本的脚本语言进行判断,比如,根据脚本语言的后缀判定所述测试脚本采用的脚本语言。当执行其他脚本语言编写的脚本时,所述测试管理方法会对该在创建子进程时,打开的该测试脚本的脚本语言对应的命令解析器的一个实例。例如,对于采用Python语言编写的脚本,所述测试管理方法将通过“open|python-i r+”创建的子进程运行相应的测试脚本,实现对python语言编写的自动化脚本的执行。
综上所述,本发明的一种测试管理系统及方法,具有以下有益效果:采用管道技术使得脚本执行的测试日志信息可以实时的显示在日志显示界面,大大方便了测试人员的对测试的跟踪,采用了图形化的界面测试套管理方式,将测试环境等条件相同的测试脚本归入到同一个测试套中,并提供对测试脚本的修改,简化了测试人员对测试脚本的管理,更方便测试人员根据需要选择或调整测试脚本进行测试。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。