本发明属于计算机软件测试技术领域,尤其涉及一种软件测试的方法及系统、服务终端。
背景技术:
近年来,随着人们对软件测试的注重,软件测试行业的发展越来越快,软件开发技术也突飞猛进,与此同时,软件测试管理工具也在项目中越来越得到重视和应用,目前市场上的测试管理工具大概分为两类:其中一类是把软件测试的整个流程集成在一起(测试计划、测试需求、测试用例、测试执行、bug报告),但在管理测试数据和测试函数之间的关系是模糊不清的,很多测试用例代码中存在着将测试数据和被测试方法耦合在一套代码里的现象,导致边界界定不清,因而很多被测软件可能包含大量重复的且需要被测的用例,如果每次都复制粘贴或者重写一遍测试代码的话,测试效率是比较低的,而对测试用例的管理更是低效,设计人即使编写大量注释,也无法分清该用例的测试数据是什么,而大量的注释也一定程度降低了测试效率。
技术实现要素:
本发明实施例提供了一种软件测试的方法及系统、服务终端,旨在解决现有技术中测试效率较低的问题。
本发明实施例是这样实现的,一种软件测试的方法,包括:
接收测试指示;
根据所述测试指示获取一个测试函数及一个以上测试数据;
对所获取的一个测试函数与一个以上测试数据进行组合,生成一个以上测试用例;
对所生成的一个以上测试用例进行测试,获得测试结果。
优选地,所述测试指示包括需求属性及种类属性,所述根据所述测试指示获取测试函数及一个以上测试数据具体包括:
根据所述需求属性编写对应的测试函数;
根据所述种类属性设计一个以上测试数据。
优选地,对所获取的一个测试函数及一个以上测试数据进行组合,生成一个以上测试用例具体包括:
判断所获取的测试数据是否为一个;
当判断为是时,基于一个所述测试数据与所述一个测试函数生成一个测试用例;
当判断为否时,分别基于每一个所述测试数据与所述一个测试函数生成对应的测试用例。
优选地,所述分别基于每一个所述测试数据与所述一个测试函数生成对应的测试用例具体为:
分时复用或者并行调用该一个测试函数与每一测试数据进行组合,生成对应的测试用例。
优选地,所述对所生成的一个以上测试用例进行测试,获得测试结果之后还包括:
展示所述测试结果。
优选地,所述展示所述测试结果具体为:以图像或文本方式展示所述测试结果。
优选地,所述测试指示包括需求属性及种类属性,所述根据所述测试指示获取测试函数及一个以上测试数据具体包括:
根据所述种类属性设计一个以上测试数据;
根据所述需求属性编写对应的测试函数。
本发明还提供一种软件的测试系统,包括:
接收模块,用于接收测试指示;
获取模块,用于根据所述测试指示获取一个测试函数及一个以上测试数据;
组合生成模块,用于对所获取的一个测试函数与一个以上测试数据进行组合,生成一个以上测试用例;
测试模块,用于对所生成的一个以上测试用例进行测试,获得测试结果。
优选地,所述测试指示包括需求属性及种类属性,所述获取模块具体包括:
编写单元,用于根据所述需求属性编写对应的测试函数;
设计单元,用于根据所述多样属性设计一个以上测试数据。
本发明还提供一种服务终端,所述服务终端包括一种软件的测试系统,所述系统包括:
接收模块,用于接收测试指示;
获取模块,用于根据所述测试指示获取一个测试函数及一个以上测试数据;
组合生成模块,用于对所获取的一个测试函数与一个以上测试数据进行组合,生成一个以上测试用例;
测试模块,用于对所生成的一个以上测试用例进行测试,获得测试结果。
在本发明实施例中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
附图说明
图1是本发明第一实施例提供的一种软件测试的方法的流程图;
图2是本发明第一实施例提供的一种软件测试的方法的一优选方案的步骤s2的具体流程图;
图3是本发明第一实施例提供的一种软件测试的方法的步骤s3的具体流程图;
图4是本发明第一实施例提供的一种软件测试的方法的另一优选方案的步骤s2的具体流程图;
图5是本发明第二实施例提供的一种软件测试的系统的结构图;
图6是本发明第二实施例提供的一种软件测试的系统的获取模块2的具体结构图;
图7是本发明第二实施例提供的一种软件测试的系统的组合生成模块3的具体结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中,一种软件测试的方法,包括:接收测试指示;根据所述测试指示获取测试函数及一个以上测试数据;对所获取的测试函数及一个以上测试数据进行组合,生成一个以上测试用例;对所生成的一个以上测试用例进行测试,获得测试结果。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明第一实施例提供的一种软件测试的方法的流程图,包括:
步骤s1、接收测试指示;
具体地,当需要测试软件时,用户需要发出测试指示,即发出测试需求,该测试指示可包括输入参数、需求属性及种类属性,所述种类属性可为测试类型或者测试方式等,所述需求属性可为目标测试软件的名称或者代码等,此处对此不作限制,该输入参数为测试输入数据数组或者数据字典类等,此处同样对此不作限制。
步骤s2,根据测试指示获取测试函数及一个以上测试数据;
具体地,根据该测试指示获取一个测试函数及一个以上测试数据,该测试数据的数量与上述种类属性有关,该测试数据包括测试输入数据及期望输出数据,获取之后存储下来,优选地,存储在数据库或者文本文件中。
步骤s3,对所获取的测试函数及一个以上测试数据进行组合,生成一个以上测试用例;
具体地,根据该测试指示获得一个测试函数及一个以上测试数据后,需要对一个测试函数及一个以上测试数据进行组合封装,例如将该测试函数分别与每一测试数据进行组合,形成与该测试数据数量相同的测试用例。
步骤s4,对所生成的一个以上测试用例进行测试,获得对应的测试结果。
具体地,对每一生成的测试用例进行测试,获得对应的测试结果,该测试结果包括需要输出的测试数据。
在本实施例的一个优选方案中,该步骤s4之后还可包括:
步骤s5,展示测试结果;
具体地,当获得测试结果时,可对测试结果进行展示,可通过图像或者文本方式进行展示,还可通过其他(例如视频)方式进行展示,此处对此不作限制。
本实施例中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
在本实施例的一个优选方案中,该测试指示包括需求属性及种类属性,如图2所示,为本发明第一实施例提供的一种软件测试的方法的一优选方案的步骤s2的具体流程图,该步骤s2包括:
步骤s21,根据需求属性编写对应的测试函数;
具体地,该需求属性可具体为测试函数的性质(例如对接口进行测试,该需求属性为接口的属性),根据该测试函数的需求属性编写对应的测试函数。
步骤s22,根据种类属性设计一个以上测试数据。
具体地,该种类属性可为测试属性,通常包括多个测试属性,例如,某个接口的正向功能测试、试错测试等,根据种类属性设计对应的测试数据,该测试数据的数量与种类属性有关,当种类属性不止一个测试属性时,测试数据的数量也不止一个,测试数据的数量与测试属性的数量一一对应。
在本实施例的一个优选方案中,如图3所示,为本发明第一实施例提供的一种软件测试的方法的步骤s3的具体流程图,该步骤s3包括:
步骤s31,判断所获取的测试数据是否为一个;
具体地,当需要生成测试用例时,需要先判断所获取的测试数据的数量,判断其数量是否只有一个,当只有一个时,转到步骤s32,否则表示不止一个测试数据,转到步骤s33;
步骤s32,基于一个测试数据与一个测试函数生成一个测试用例;
具体地,当只有一个测试数据时,将一个测试数据与上述一个测试函数进行组合,生成一个测试用例。
步骤s33,分别基于每一个测试数据与一个测试函数生成对应的测试用例;
具体地,当不止一个测试数据时,分时复用或者并行调用该一个测试函数与每一测试数据进行组合,生成对应的测试用例。即使用一个测试函数生成多个测试用例。
本实施例中,分时复用或者并行调用该一个测试函数与每一测试数据进行组合生成测试用例,无需多次编写测试函数,提高代码复用性,减小工作量,提高测试效率。
在本实施例的另一优选方案中,如图4所示,为本发明第一实施例提供的一种软件测试的方法的另一优选方案的步骤s2的具体流程图,该步骤s2包括:
步骤s201,根据种类属性设计一个以上测试数据。
具体地,该种类属性可为测试属性,通常包括多个测试属性,例如,某个接口的正向功能测试、试错测试等,根据种类属性设计对应的测试数据,该测试数据的数量与种类属性有关,当种类属性不止一个测试属性时,测试数据的数量也不止一个,测试数据的数量与测试属性的数量一一对应。
步骤s202,根据需求属性编写对应的测试函数;
具体地,该需求属性可具体为测试函数的性质(例如对接口进行测试,该需求属性为接口的属性),根据该测试函数的需求属性编写对应的测试函数。
需要说明的是,本实施例中,先设计测试数据再编写测试函数,还可以是设计测试数据及测试函数同时进行,此处对此顺序不作限制。
为了便于理解,下面以一实例具体说明实现过程:
以互联网服务端的接口测试为例,通常一个接口具有增删改查功能,即增加、删除、修改、查询和一般逻辑功能。以一个简单相加的逻辑功能接口为例,进行接口测试的时候,需要对一个接口进行多种测试(测试数据1、2及3),包括:正向功能测试,即使用合法且符合相加功能的数据测试;试错测试,即使用一个明显错误的数据进行测试;性能测试,即测试该接口的并发能力,在本实施例中,只需要编写一个测试用逻辑代码(测试函数),及设计多个测试数据,将该一个测试函数与每一个测试数据进行组合封装,生成三个测试用例(测试用例1、测试用例2、测试用例3),然后分别对每一测试用例进行测试,获得测试结果(测试用例1报告、测试用例2报告、测试用例3报告)并进行展示,实现软件(接口)的测试目的。
例如,测试数据1(input:3,4;excepted:7)、测试数据2(input:‘a’,‘b’;excepted:errormessage)、测试数据3(input:{(3,4),(4,5),、、、,(m,n))};excepted:{7,9,、、、,m+n),测试函数(funcation_add(a,b)),通过组合调度分别生成测试用例1(正向功能测试)、测试用例2(试错测试)、测试用例3(性能测试),经过执行测试功能后,获得测试用例1报告、测试用例2报告及测试用例3报告。
本实施例中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
此外,单独管理测试数据,将测试数据与测试过程解耦分离,可通过组合调度生成测试用例,将测试数据与测试场景进行组合,提高测试运行效率。
再者,由于只需要编写一个测试函数,可减少测试时间成本,降低测试门槛,也降低测试成本,降低测试管理难度。
实施例二:
图5示出了本发明第二实施例提供的一种软件测试的系统的结构图,包括:接收模块1、与接收模块1连接的获取模块2、与获取模块2连接的组合生成模块3、与组合生成模块3连接的测试模块4,其中:
接收模块1,用于接收测试指示;
具体地,当需要测试软件时,用户需要发出测试指示,即发出测试需求,该测试指示可包括输入参数、需求属性及种类属性,所述种类属性可为测试类型或者测试方式等,所述需求属性可为目标测试软件的名称或者代码等,此处对此不作限制,该输入参数为测试输入数据数组或者数据字典类等,此处同样对此不作限制。
获取模块2,用于根据测试指示获取测试函数及一个以上测试数据;
具体地,根据该测试指示获取一个测试函数及一个以上测试数据,该测试数据的数量与上述种类属性有关,该测试数据包括测试输入数据及期望输出数据,获取之后存储下来,优选地,存储在数据库或者文本文件中。
组合生成模块3,用于对所获取的测试函数及一个以上测试数据进行组合,生成一个以上测试用例;
具体地,根据该测试指示获得一个测试函数及一个以上测试数据后,需要对一个测试函数及一个以上测试数据进行组合封装,例如将该测试函数分别与每一测试数据进行组合,形成与该测试数据数量相同的测试用例。
测试模块4,用于对所生成的一个以上测试用例进行测试,获得测试结果。
具体地,对每一生成的测试用例进行测试,获得对应的测试结果,该测试结果包括需要输出的测试数据。
在本实施例的一个优选方案中,该系统还可包括:与测试模块4连接的展示模块5,其中:
展示模块5,用于展示测试结果;
具体地,当获得测试结果时,可对测试结果进行展示,可通过图像或者文本方式进行展示,还可通过其他(例如视频)方式进行展示,此处对此不作限制。
本实施例中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
在本实施例的一个优选方案中,该测试指示包括需求属性及种类属性,图6示出了本发明第二实施例提供的一种软件测试的系统的获取模块2的具体结构图,该获取模块2包括:编写单元21及与其连接的设计单元22,其中:
编写单元21,用于根据需求属性编写对应的测试函数;
具体地,该需求属性可具体为测试函数的性质(例如对接口进行测试,该需求属性为接口的属性),根据该测试函数的需求属性编写对应的测试函数。
设计单元22,用于根据种类属性设计一个以上测试数据。
具体地,该种类属性可为测试属性,通常包括多个测试属性,例如,某个接口的正向功能测试、试错测试等,根据种类属性设计对应的测试数据,该测试数据的数量与种类属性有关,当种类属性不止一个测试属性时,测试数据的数量也不止一个,测试数据的数量与测试属性的数量一一对应。
需要说明的是,本实施例中,可以先设计测试数据,后编写测试函数,也可以先编写测试函数,再设计测试数据,还可以是二者同时进行,此处对此顺序不作限制。
在本实施例的一个优选方案中,如图7所示,为本发明第二实施例提供的一种软件测试的系统的组合生成模块3的具体结构图,该组合生成模块3具体包括:判断单元31、与判断单元31连接的第一组合生成单元32及第二组合生成单元33,其中:
判断单元31,用于判断所获取的测试数据是否为一个;
具体地,当需要生成测试用例时,需要先判断所获取的测试数据的数量,判断其数量是否只有一个,当只有一个时反馈给第一组合生成单元32,否则反馈给第二组合生成单元33;
第一组合生成单元32,用于基于一个测试数据与一个测试函数生成一个测试用例;
具体地,当只有一个测试数据时,将一个测试数据与上述一个测试函数进行组合,生成一个测试用例。
第二组合生成单元33,用于分别基于每一个测试数据与一个测试函数生成对应的测试用例;
具体地,当不止一个测试数据时,分时复用或者并行调用该一个测试函数与每一测试数据进行组合,生成对应的测试用例。即使用一个测试函数生成多个测试用例。
本实施例中,分时复用或者并行调用该一个测试函数与每一测试数据进行组合生成测试用例,无需多次编写测试函数,提高代码复用性,减小工作量,提高测试效率。
为了便于理解,下面以一实例具体说明实现过程:
以互联网服务端的接口测试为例,通常一个接口具有增删改查功能,即增加、删除、修改、查询和一般逻辑功能。以一个简单相加的逻辑功能接口为例,进行接口测试的时候,需要对一个接口进行多种测试(测试数据1、2及3),包括:正向功能测试,即使用合法且符合相加功能的数据测试;试错测试,即使用一个明显错误的数据进行测试;性能测试,即测试该接口的并发能力,在本实施例中,只需要编写一个测试用逻辑代码(测试函数),及设计多个测试数据,将该一个测试函数与每一个测试数据进行组合封装,生成三个测试用例(测试用例1、测试用例2、测试用例3),然后分别对每一测试用例进行测试,获得测试结果(测试用例1报告、测试用例2报告、测试用例3报告)并进行展示,实现软件(接口)的测试目的。
例如,测试数据1(input:3,4;excepted:7)、测试数据2(input:‘a’,‘b’;excepted:errormessage)、测试数据3(input:{(3,4),(4,5),、、、,(m,n))};excepted:{7,9,、、、,m+n),测试函数(funcation_add(a,b)),通过该组合生成模块3分别生成测试用例1(正向功能测试)、测试用例2(试错测试)、测试用例3(性能测试),经过测试模块4执行测试功能,获得测试用例1报告、测试用例2报告及测试用例3报告。
本实施例中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
此外,单独管理测试数据,将测试数据与测试过程解耦分离,可通过组合调度生成测试用例,将测试数据与测试场景进行组合,提高测试运行效率。
再者,由于只需要编写一个测试函数,可减少测试时间成本,降低测试门槛,也降低测试成本,降低测试管理难度。
本发明还提出一种服务终端,该服务终端包括上述实施例所述的软件测试的系统,该系统的具体结构及工作原理与上述实施例的描述基本一致,具体可参考上述实施例的描述,此处不再赘述。
本发明中,将一个测试函数与不同测试数据进行组合,获得一个以上测试用例,分时复用或者并行使用同一个测试函数,无需多次编写测试函数,提高运行效率。
此外,单独管理测试数据,将测试数据与测试过程解耦分离,可通过组合调度生成测试用例,将测试数据与测试场景进行组合,提高测试运行效率。
再者,由于只需要编写一个测试函数,可减少测试时间成本,降低测试门槛,也降低测试成本,降低测试管理难度。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。