一种软件测试方法、装置及系统与流程

文档序号:14389851阅读:329来源:国知局
一种软件测试方法、装置及系统与流程

本发明涉及计算机技术领域,具体而言,涉及一种软件测试方法、装置及系统。



背景技术:

程序在被编写完成以后,需要对源代码进行测试,以检验源代码是否能够达到预期的效果;发明人在研究中发现,现有技术中,在vs中进行单元测试往往是研发人员来撰写源代码,同时也是研发人员自己编写单元测试用例进行测试,这会导致测试不充分,研发人员在设计测试用例时可能有对自己代码的主观看法,认为某些部分不需要测试或者不能发现自己测试用例中的遗漏。进而导致效率较低,且工作量较大。



技术实现要素:

有鉴于此,本发明的目的在于提供一种软件测试系统及方法,以提高提高测试效率,以及减少工作人员的劳动量。

第一方面,本发明实施例提供了一种软件测试系统,包括:测试服务器和至少一个源代码编辑终端;

所述源代码编辑终端,用于基于用户的操作进行源代码编辑,并在与所述测试服务器建立通信连接以后,将编辑完成的源代码上传至所述测试服务器;

所述测试服务器,用于接收所述源代码,对所述源代码进行解析,基于解析后得到的源代码信息生成测试驱动程序。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述源代码编辑终端,还用于:

在所述源代码编辑完成以后,对所述源代码进行编译,生成测试用例文件;

将所述测试用例文件上传至所述测试服务器。

结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述测试服务器,还用于:

接收所述测试用例文件,在生成测试驱动程序以后,将所述测试用例文件写入所述测试驱动程序中,执行测试步骤,得到用例执行的结果信息。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述测试用例执行的结果信息,包括:测试是否通过的结论信息,以及测试不通过时错误发生的位置信息和错误内容。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述测试服务器,还用于:

将所述得到的测试用例执行的结果信息发送至所述源代码编辑终端。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述源代码编辑终端,还用于:

向所述测试服务器发送请求,获取所述测试服务器当前网络程度负载值;

根据所述测试服务器的当前网络负载程度值、预设的满足上传条件的最小带宽以及在发送周期内从所述源代码编辑终端到达测试服务器的最大数据量进行计算实际带宽;

将所述实际带宽与特定的带宽进行比较,如果所述实际带宽大于特定的带宽时,将编辑完成的源代码上传至所述测试服务器。

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

接收源代码编辑终端上传的源代码;

对所述源代码进行解析;

基于解析后得到的源代码信息进行生成测试驱动程序;所述测试驱动程序用于被执行,以完成对所述源代码的测试。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述方法,还包括:

接收所述源代码编辑终端发送的测试用例文件;

所述在生成测试驱动程序以后,还包括:

将所述测试用例文件写入所述测试驱动程序中,执行测试步骤,得到测试用例执行的结果信息。

结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述方法,还包括:

将所述测试用例执行的结果信息发送至所述源代码编辑终端。

第三方面,本发明实施例提供了一种软件测试装置,该装置包括:

接收模块,用于接收源代码编辑终端上传的源代码;

解析模块,用于对所述源代码进行解析,得到解析后的源代码信息;

测试程序生成模块,用于基于所述解析后的源代码信息进行生成测试驱动程序;所述测试驱动程序用于被执行,以完成对所述源代码的测试。

本发明实施例提供的一种软件测试系统及方法,采用在源代码编辑终端进行源代码编辑,并在源代码编辑完成以后将该源代码发送至测试服务器进行测试;与现有技术中的,由程序编辑人员进行搭建测试环境,然后进行测试相比,具有高效的积极效果。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明一个实施例所提供的一种软件测试系统的结构示意图;

图2示出了本发明另一个实施例所提供的一种软件测试方法的流程示意图;

图3示出了本发明另一个实施例所提供的一种软件测试装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

考虑到现有技术中,往往由研发人员进行撰写源代码,同时也是研发人员进行编写单元测试用例进行测试,进而导致测试不充分;基于此,本发明实施例提供了一种软件测试方法、装置及系统,下面通过实施例进行描述。

本发明的一个实施例中提供了一种软件测试系统,参照图1所示,该软件测试系统包括:测试服务器101和至少一个源代码编辑终端102,需要说明的是,图1中仅举例示出了系统中具有三个源代码编辑终端102的情况。

上述的源代码编辑终端102,用于基于用户的操作进行源代码编辑,并在与测试服务器建立通信连接以后,在用户的操作下,将编辑完成的源代码上传至测试服务器101;

该源代码编辑终端102可以是个人pc(计算机)、平板电脑、手机等终端设备,该源代码编辑终端的数量可以是一个,优选地,源代码编辑终端的数量为多个,该源代码编辑终端102与测试服务器101之间可以是有线连接或者以无线通信的方式连接,优选地为无线通信的方式进行通信连接,进而可以实现源代码编辑终端与测试服务器之间的远程通讯。需要说明的是,该源代码编辑终端在将编写完成的源代码发送至测试服务器进行测试之前,需要拿到测试服务器所分配的权限,即测试服务器需要预先为每个源代码编辑终端分配权限。示例性地,源代码编辑终端在向测试服务器上传编辑完成的源代码之前,首先向测试服务器发送数据上传请求,该数据上传请求中携带有源代码编辑终端的标识,测试服务器在接收到源代码发送的数据上传请求之后,对该源代码编辑中断的标识进行权限验证,在验证通过以后,向源代码编辑终端发送提示,提示源代码编辑终端可以进行源代码的上传。

上述测试服务器101,用于接收上述源代码编辑终端上传的源代码,对该源代码进行解析,基于解析后得到的源代码信息生成测试驱动程序。该测试驱动程序用于被测试服务器执行,进行对所述源代码的测试。

在具体实际应用时,上述的测试服务器101需要满足以下条件:支持源代码的上传、测试驱动程序的生成和具备测试驱动程序运行所需要的环境;例如,上述的测试服务器101可以是运行在windowsserver2003及以上的版本,再例如,可以是运行在linux3.11及以上的内核版本(以ubuntu为例,通常可支持ubuntu12.04及以上版本);测试服务器中需要安装版本控制类服务,如svn、git等;测试服务器端需要安装可供c\c++源代码编译和运行的软件环境。上述的软件编辑终端需要满足能向测试服务器端进行代码的提交,并可以正常接收邮件的条件;每个软件编辑终端需要在测试服务器上通过邮箱进行注册登记,便于后续接收测试结果等信息,代码的提交等权限由版本控制软件进行限制。

本实施例中所提供的软件测试系统,可以允许用户在源代码编辑终端上进行源代码编辑,并在将源代码编辑完成以后,将该编辑完成的源代码上传至测试服务器,由测试服务器完成对该源代码的测试;进而,避免了现有技术中需要研发人员搭建测试环境进行测试所存在的效率低和劳动量大的问题。

本实施例中,上述的源代码编辑终端还用于在源代码编辑完成以后,对该源代码进行编译,编译通过以后,基于用户的设置内容,生成测试用例文件;具体的,用户可以在测试用例文件中按照预定的格式写入测试的源文件、源文件中的函数名,用户在每一个函数名下编辑测试用例,并且将每个测试用例以分隔符隔开,该测试用例文件中包含有函数的输入(例如,可以是输入变量的类型和输入变量的值)和预期输出(例如,可以是预期输出变量的类型和输出变量的值);当生成测试用例文件以后,源代码编辑终端将源代码和测试用例文件上传到测试服务器;测试服务器接收该源代码和测试用例文件,对源代码进行解析,基于解析后得到源代码信息生成测试驱动程序以后,将接收到的测试用例文件写入测试驱动程序中,测试服务器开始执行测试步骤,并得到测试用例执行的结果信息。

具体的,测试服务器接收到上述的源代码和测试用例文件以后,对该源代码和测试用例文件进行分析,判断是否是有效地源代码和测试用例中文件,如果不是,则测试服务器不对本次上传作任何处理,直接跳过所有的测试步骤准备下一次的检测;如果是,此时上传的数据中包含有更新的源代码和测试用例文件,则将源代码进行解析,通过词法解释器、语法解释器对源代码结构进行深度解析,将源代码中的头文件、宏定义、标识符(即变量名、函数名等)、函数参数、语句、分支、循环、函数内部代码块等进行解析和识别,并保存到临时的文件中;提取解析后的源代码信息,使用该信息生成测试驱动程序,该测试驱动程序通过测试服务器端的编译器创建,例如可以是c或者c++编译器;创建的测试驱动程序中增加与源代码对应的所有源文件,每一个源文件中的头文件引用、变量、宏定义等均与源代码文件一一对应,以保证测试驱动程序能正常编译和运行,并保证能调用源代码中的函数。

当测试驱动程序创建成功后,测试服务器提取源代码编辑终端上传的测试用例文件,测试服务器通过源文件名、函数名以及分割线等信息区分每一个测试用例的设置值,在测试用例文件中循环提取每一个测试用例的输入变量的类型和输入变量的值,以及预期输出变量的类型和输出变量的值,将输入变量的类型和输入变量的值写入到测试驱动文件中的测试函数中,并在写完用例输入后,以设置好的用例输入作为函数参数,调用源代码中的函数,在函数执行结束后将函数的实际输出与测试用例文件中预设的预期输出进行对比,依此循环地将所有测试用例写入到测试驱动中,得到测试结果。

在测试服务器端,源代码编辑终端每次上传的源代码,测试服务器均会进行源代码的解析,生成测试驱动程序,测试服务器向所述测试驱动程序写入测试用例文件,每次解析后生成的临时文件在生成测试驱动后自动被删除,每次生成的测试驱动程序会独立保存在一个新建文件夹并保存在测试服务器中;

当测试驱动中已经包含所有的测试用例后,在测试服务器端编译器(例如可以是c或c++编译器)的环境下运行测试驱动工程。

上述的用例执行的结果信息,包括:测试是否通过的结论信息,以及测试不通过时错误发生的位置信息和错误内容。

上述的测试服务器还用于:将得到的用例执行的结果信息发送至源代码编辑终端,以供研发人员进行查看。

进而源代码编辑终端侧的研发人员可以通过查看用例执行的结果信息来判断源代码测试是否通过,以及在不通过时,可以及时了解发生错误的位置信息和错误的内容,进而可以根据该位置信息进行查找该错误,并根据错误的内容进行修改。

具体的,测试服务器在测试驱动工程运行结束后,通过每一个用例运行完成后保存的用例执行结果信息进行分类统计,并汇总最后的测试结果统计信息并保存;该测试结果中,可以是包括:测试的源文件名、测试的函数名、测试的用例名、测试的用例编号、测试用例的输入、测试用例的预期输出、测试用例的实际输出、测试用例是否通过、函数的分支覆盖率、函数的语句覆盖率等。进而供研发人员或者测试人员进行参考。

测试服务器在获取到测试结果的统计信息后,通过判断所有的测试用例是否全部通过以及函数的覆盖率是否全部达到100%,进而判断本次测试是否通过;测试服务器,也可以将并将本次测试是否通过的结论以及所有的测试结果统计信息以邮件的形式发送到注册邮箱的源代码编辑终端(例如为远程计算机)。当源代码编辑终端(例如为远程计算机)接收到测试服务器端发送的测试结果邮件后,由研发人员查看测试结果,如果测试通过,则研发人员可以继续写新的源代码了;如果测试未通过,则研发人员需要根据测试的详细结果来修改源代码,或由研发\测试人员修改用例设计,修改完成后再一次提交修改到测试服务器端;效率高,且节省劳动量。

本实施例中所提供的软件测试系统,是在测试服务器端自动的生成测试驱动工程,不需要研发\测试人员自己创建测试工程,编写测试用例代码等,研发\测试人员只需要简单的设计每一个用例的输入参数和预期输出参数的值,测试服务器端会自动将设计好的用例写入测试驱动程序,省掉了大量的测试用例代码的编写。

在一可能的实施例中,上述的源代码编辑终端,还用于:

向测试服务器发送请求,获取测试服务器当前网络程度负载值;

据测试服务器的当前网络负载程度值、预设的满足上传条件的最小带宽以及在发送周期内从所述源代码编辑终端到达测试服务器的最大数据量进行计算实际带宽;

将实际带宽与特定的带宽进行比较,如果实际带宽大于特定的带宽时,将编辑完成的源代码上传至所述测试服务器。

具体的,上述的源代码编辑终端可以是按照如下公式(1)进行计算实际带宽,

a=max(i,e×w(l))(1)

其中,a为实际带宽,i为预设的满足上传条件的最小带宽,e为发送周期内从源代码编辑终端到达测试服务器的最大数据量,l为网络负载程度值,w(l)为根据网络负载程度值的变化所改变的权值。

本实施例中,在源代码编辑终端可以是在将编辑完成的源代码发送至测试服务器之前,先发送请求获取测试服务器当前的网络负载程度值,并在实际带宽达到上传条件时,将源代码上传至测试服务器,进而保证了源代码上传的安全性和高效性。

本发明的另一个实施例中提供了一种软件测试方法,参照图2所示,该方法包括如下步骤:

s201、接收源代码编辑终端上传的源代码;

源代码编辑终端基于用户的操作进行源代码编辑,并在与测试服务器建立通信连接以后,将编辑完成的源代码上传至测试服务器。

s202、对所述源代码进行解析;

s203、基于解析后得到的源代码信息进行生成测试驱动程序;所述测试驱动程序用于被执行,以完成对所述源代码的测试。

上述方法,还包括:接收所述源代码编辑终端发送的测试用例文件;

所述在生成测试驱动程序以后,还包括:

将所述测试用例文件写入所述测试驱动程序中,执行测试步骤,得到用例执行的结果信息。

源代码编辑终端在所述源代码编辑完成以后,对所述源代码进行编译,生成测试用例文件;将所述测试用例文件上传至所述测试服务器。

上述方法,还包括:将所述用例执行的结果信息发送至所述源代码编辑终端。测试服务器接收所述测试用例文件,在生成测试驱动程序以后,将所述测试用例文件写入所述测试驱动程序中,执行测试步骤,得到用例执行的结果信息,并将所述用例执行的结果信息发送至所述源代码编辑终端。

具体的,以源代码编辑终端为远程计算机为例,用户在远程计算机上进行编辑源代码,在源代码编辑完成以后进行编译,并基于用户的输入生成测试用例文件;源代码编辑终端将该编辑完成的源代码和测试用例文件上传至测试服务器,测试服务器接收该源代码和测试用例文件,并进一步判断该源代码和测试用例文件是否是有效地源代码和测试用例文件,如果是,则对源代码进行解析,基于解析后的得到的源代码信息生成测试驱动程序,该测试驱动程序用于被执行进行源代码的测试,将测试用例文件写入测试驱动,测试服务器执行测试驱动,得到测试用例的执行结果信息,该执行结果信息,包括:测试是否通过的结论信息,以及测试不通过时错误发生的位置信息和错误内容。

测试服务器将上述的测试执行结果信息以邮件的形式发送至源代码编辑终端,源代码编辑终端接收执行结果邮件,根据测试是否通过的结论信息判断测试通过时,该测试过程结束,当测试不通过时,继续进行源代码的编辑工作。

本发明又一个实施例中,提供了一种软件测试装置,参照图3所示,该装置包括:

接收模块301,用于接收源代码编辑终端上传的源代码;

解析模块302,用于对所述源代码进行解析,得到解析后的源代码信息;

测试程序生成模块303,用于基于所述解析后的源代码信息进行生成测试驱动程序;所述测试驱动程序用于被执行,以完成对所述源代码的测试。

本发明实施例所提供的软件测试的装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,测试服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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