一种基于业务流程控制的应用程序测试方法及***
技术领域
本发明涉及软件测试以及网络通信技术领域,具体涉及一种基于业务流程控制的应用程序测试方法及***。
背景技术
在应用程序测试领域中,通常是使用人工或者自动手段来运行或测试某个***,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。对于一些流程性较强的应用程序,如订单***生产流程,审核流程等***,采用人工测试手段时,手工测试人员要根据自己的测试经验和业务熟悉程度,凭感觉去测试这些流程,可能因为疲劳或者项目时间的压力,使覆盖率不是很高,容易产生漏测或者来不及测试的情况,导致线上事故,严重的会造成直接的经济损失。
对于此类问题,软件测试行业中发展了一些自动化测试工具,如QTP,即HPQuickTest Professional software、Selenium等专业测试工具,此类工具可以通过执行测试脚本,完成测试任务;同时,由于实际情况的需要,本行业内还发展了一些测试管理工具,用于管理软件的整个测试输入、执行过程和测试结果,如TestLink、TestCenter等。
应用上述两种工具执行测试工作时,已经在一定程度上避免了手工测试带来的问题,但是在实际实践中,由于测试项目的数据量很大,需要测试的业务流程的组合情况很多,关键问题在于测试套件、测试用例和测试脚本的设计以及对它们之间关系的利用。比如应用QTP对应用程序进行测试时,测试人员需要对于应用程序中的每个业务流程分别设计测试用例以及测试脚本,非常依赖测试人员的经验和能力,会使得测试覆盖率较低;并且由于测试任务的比较复杂以及数据量较大等问题,使得测试项目所此耗费的时间很长,所以依然存在测试效率低和测试成本高等问题。
发明内容
有鉴于此,本发明结合自动化测试工具和测试管理工具的特点以及多线程通信领域的技术,提供一种基于业务流程控制的分布式应用程序测试***及方法,来提高测试覆盖率、增加测试质量、减少测试成本。本发明提供一种基于业务流程控制的应用程序测试方法,所述方法包括:
定义测试用例:应用测试管理工具,根据被测应用程序的业务流程,为所述流程中的每个业务节点分别设计测试用例,并将所述测试用例存储于数据库中;
实现自动化测试脚本:针对所述测试用例,分别编写与各个测试用例对应的自动化测试脚本,并将所述自动化测试脚本存储于数据库中;
建立对应关系:应用测试管理工具,在所述数据库中建立所述自动化测试脚本与所述测试用例的对应关系,所述对应关系是一对一的映射关系;
定义测试流程:应用测试管理工具,按照被测应用程序的业务流程中业务节点的逻辑顺序,将所述测试用例组合成一个或多个测试套件;
定义测试计划:在测试管理工具中,选择一个或多个所述测试套件,并选定一个带有自动化测试工具并且处于空闲状态的测试机作为执行测试任务的对象;所述测试任务是测试套件中测试用例所对应的自动化测试脚本的组合;
执行测试任务:被选定的测试机启动自动化测试工具,加载数据库中所有与测试套件包含的测试用例有对应关系的自动化测试脚本,并按照所述定义测试流程的步骤中定义的测试用例的组合顺序执行所述脚本。
进一步的,所述定义测试计划的步骤是:在测试管理工具中,选择一个或多个所述测试套件,并选定多个带有自动化测试工具并且处于空闲状态的测试机作为执行任务的对象;并且由人为指定每个测试机所要执行的测试任务。
进一步的,所述建立对应关系的步骤中,建立自动化测试脚本与测试用例的对应关系的方法是:在测试管理工具中,将每个测试用例的摘要字段输入为与该测试用例对应的自动化脚本名称。
进一步的,所述执行测试任务的步骤还包括如下子步骤:
更新自动化测试脚本:在加载和执行自动化测试脚本之前,在数据库中利用版本管理工具更新自动化测试脚本的代码。
进一步的,所述方法还包括如下步骤:
维护测试数据:在所述定义测试计划的步骤之后,应用测试管理工具对测试套件中的测试用例涉及的测试数据进行增加或替换。
进一步的,所述方法还包括如下步骤:
反馈任务进度:所述测试机在执行测试任务的过程中每隔一段时间生成任务执行进度报告。
进一步的,所述方法还包括如下步骤:
释放测试机资源:测试机在测试任务将执行完毕后,将所述测试机的资源释放,使所述测试机重新处于空闲状态。
进一步的,所述方法还包括如下步骤:
生成测试报告:测试机在测试任务将执行完毕后,所述测试机生成测试报告并发送至指定的电子邮箱。
对应地,本发明提供一种基于业务流程控制的应用程序测试***,所述***包括:
数据存储单元,用于建立数据库;
流程管理单元,用于建立测试套件与测试用例以及二者的对应关系,用于建立测试脚本与测试用例的对应关系;
任务创建单元,用于定义测试计划、创建测试任务;
任务执行单元,用于执行测试任务;
所述流程管理单元根据数据存储单元中的数据建立测试套件与测试用例以及二者的对应关系、建立测试脚本与测试用例的对应关系;所述任务创建单元根据流程管理单元建立的内容定义测试计划、创建测试任务;所述任务执行单元根据任务创建单元发送的信息并读取数据存储单元的数据执行测试任务。
进一步的,所述***的任务执行单元包括至少一个服务器。
进一步的,所述***的任务执行单元包括至少一个测试机。
进一步的,当任务执行单元包含一个服务器和至少一个测试机时,所述至少一个测试机与所述服务器相连。
进一步的,当任务执行单元包含多个服务器和多个测试机,每个服务器与任意个测试机连接组成若干任务执行子单元。
进一步的,所述多个测试机的操作***不相同。
进一步的,所述***还包括:
数据管理单元,用于维护测试数据;所述数据管理单元对流程管理单元中建立的测试套件中的测试用例所用到的测试数据进行维护。
进一步的,所述***还包括:
任务监控单元,用于反馈测试机执行测试任务的进度与结果;所述任务监控单元根据任务执行单元产生的数据进行反馈。
本发明提供的方法和***,通过对每个业务节点分别设计测试用例,以及建立对测试用例和测试脚本的对应关系和对整个测试流程的定义,提高了测试覆盖率,增加测试质量;减少测试成本。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例一提供的一种基于业务流程控制的分布式应用程序测试方法流程图;
图2是本发明实施例三提供的一种基于业务流程控制的应用程序测试***的示意图;
图3是本发明实施例三提供的一种基于业务流程控制的应用程序测试***中的任务执行单元示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
如图1所示,本实施例提供一种基于业务流程控制的应用程序测试方法,本实施例以一个被测试应用程序为例,被测试的应用程序的业务流程包括四个业务节点1、2、3、4,本实施例所用的测试管理工具是Testlink,自动化测试工具是QTP或Selenium,QTP即HPQuickTest Professional software,并且应用本发明的方法以及任何实施例,都需要对Testlink进行二次开发,增加若干功能模块。所述测试方法包括以下步骤:
定义测试用例101:应用测试管理工具,根据被测应用程序的业务流程,为所述流程中的每个业务节点分别设计测试用例,并将所述测试用例存储于数据库中;首先应用Testlink定义与四个业务节点对应的4个测试用例A、B、C、D,A是针对节点1的用例、B是针对节点2的用例、C是针对节点3的用例、D是针对节点4的用例,并将四个测试用例存于数据库中。
实现自动化测试脚本102:针对所述测试用例,分别编写与各个测试用例对应的自动化测试脚本,并将所述自动化测试脚本存储于数据库中;根据4个测试用例编写与之对应的自动化测试脚本,将四个脚本名称分别命名为TestCase_A、TestCase_B、TestCase_C、TestCase_D,并将四个自动化测试脚本存储于数据库中。
建立对应关系103:应用测试管理工具,在所述数据库中建立所述自动化测试脚本与所述测试用例的对应关系,所述对应关系是一对一的映射关系;在数据库中建立测试用例A、B、C、D与自动化测试脚本TestCase_A、TestCase_B、TestCase_C、TestCase_D的对应关系。
定义测试流程104:应用测试管理工具,按照被测应用程序的业务流程中业务节点的逻辑顺序,将所述测试用例组合成一个或多个测试套件;假设业务流程有多种逻辑顺序,其中包括124、234,应用Testlink建立一个包含ABD流程的测试套件,命名为TestSuite_ABD,在此测试套件中添加A、B、D三个用例;并且可以建立多个测试套件,如建立另一个包含BCD流程的测试套件,命名为TestSuite_BCD,并在此测试套件中添加B、C、D三个用例。
定义测试计划105:在测试管理工具中,选择一个或多个所述测试套件,并选定一个带有自动化测试工具并且处于空闲状态的测试机作为执行测试任务的对象;所述测试任务是测试套件中测试用例所对应的自动化测试脚本的组合;
由于实际情况中的测试流程较多,需要多个测试机共同完成测试任务,作为一种优选的方案,在本实施例中,在测试管理工具中,选择一个或多个所述测试套件,并选定多个带有自动化测试工具并且处于空闲状态的测试机作为执行任务的对象;并且人为指定每个测试机所要执行的测试任务。
在Testlink中定义测试计划,命名为“回归测试计划”,将测试套件TestSuite_ABD下A、B、D用例和TestSuite_BCD下的B、C、D用例添加到“回归测试计划”中,此处添加的用例B、C、D是可选的,例如测试套件TestSuite_BCD,若只要执行C、D用例,则添加C、D用例即可,后续执行测试套件TestSuite_BCD的时候,实际运行的就是此处添加的测试用例。
本实施例采用图3所示的***实现多个测试机共同完成测试任务的功能,在定义测试计划的步骤中,需要在testlink中填写某个任务执行子单元中服务器的ip地址并且选择此服务器下的一个测试机,并为此测试机指定测试任务;如果有多个测试套件,即代表有多个测试任务,可以为多个测试机分配不同的测试任务来实现分布式执行的功能。例如选中“回归测试计划”后,***自动带出测试套件TestSuite_ABD,和TestSuite_BCD,然后选中服务器1下的测试机1,将TestSuite_ABD任务信息封装,发送socket请求给服务器1;选中服务器2下的测试机4,将TestSuite_BCD任务信息封装,发送socket请求给服务器2。
执行测试任务106:被选定的测试机启动自动化测试工具,加载数据库中所有与测试套件包含的测试用例有对应关系的自动化测试脚本,并按照“定义测试流程”的步骤中定义的测试用例的组合顺序执行所述脚本。任务执行子单元中的服务器1或服务器2接收到测试套件TestSuite_ABD或TestSuite_BCD后,服务器从数据库中查询测试用例A、B、D和测试用例B、C、D,并将测试用例发送给被选定的测试机1和测试机4,被选定的测试机接收到测试用例后,根据测试用例与自动化测试脚本的名称的对应关系,从数据库加载与测试用例对应的自动化测试脚本,获取到所有测试用例与脚本后自动开始测试任务。测试机1和测试机4实现了分布式执行测试任务的功能。
实施例二
本实施例提供的方法,是在实施例一基础上提出的一种改进,本实施例中的软硬件环境与实施例一相同。在本实施例提供的方法的建立对应关系的步骤中,建立自动化测试脚本与测试用例的对应关系的方法是:在测试管理工具中,将每个测试用例的摘要字段输入为与该测试用例对应的自动化脚本名称。同样以实施例一的业务流程为例,对于测试用例A,在测试项目管理服务器中的Testlink测试用例摘要输入框内,填写TestCase_A;同样地,对于测试用例B,摘要输入框内输入TestCase_B,按照此方式将测试用例C、D的摘要字段输入为与该测试用例对应的自动化测试脚本名称TestCase_C、TestCase_D。
在本实施例提供的方法的执行测试任务的步骤还包括如下子步骤:
更新自动化测试脚本:在加载和执行自动化测试脚本之前,在数据库中利用版本管理工具更新自动化测试脚本的代码。本实施例采用版本管理工具SVN,即subversion,对自动化测试脚本的代码进行更新,本发明***中的测试机在加载自动化测试脚本时,利用版本管理工具从数据库中拉取最新的脚本代码。此步骤可以保证***所用的代码是最新版本,并且是自动地执行,可以减少环境维护的成本。
本实施例提供的方法方法还包括如下步骤:
维护测试数据:在定义测试计划的步骤之后,应用测试管理工具对测试套件中的测试用例涉及的测试数据进行增加或替换。
在本实施例中,对于Testlink中的测试套件TestSuite_ABD和TestSuite_BCD,若ABD流程中需用到商品种类数据为“普通”,则选中TestSuite_ABD,添加一个“商品种类”值为“普通”的数据;若BCD流程中需用到商品种类数据为“奢侈品”,则选中TestSuite_BCD,添加一个“商品种类”值为“奢侈品”的数据。此步骤可以使测试人员更改测试流程中所用的测试数据数据,此方法具有很强的适应性。
本实施例提供的方法还包括如下步骤:
反馈任务进度:所述测试机在执行测试任务的过程中每隔一段时间通过软件控制报告任务执行进度。
本实施例中的测试机上的自动化测试工具QTP在执行测试任务的过程中,将测试过程产生的数据和中间成果定时地发送给与其对应的服务器,服务器存储该数据,测试项目管理服务器从该服务器上读取所述数据,本实施例中提到的测试项目管理服务器是一个装有Testlink的服务器。此步骤可以使测试人员查看任务的进度,并且可以读取中间成果,有效地提高了工作效率。
本实施例提供的方法方法还包括如下步骤:
释放测试机资源:测试机在测试任务将执行完毕后,通过软件控制将所述测试机的资源释放,使所述测试机重新处于空闲状态。本实施例中的测试机上的自动化测试工具QTP执行完测试任务后,通知与其对应的服务器任务已完成,所述服务器将该测试机的资源释放,使该测试机重新成为可用状态或者说空闲状态,以便于在创建测试任务步骤中使该测试机可以被选定。此步骤可以使***资源循环利用,进一步节约了资源,提高了***的效率。
本实施例提供的方法方法还包括如下步骤:
生成测试报告:测试机在测试任务将执行完毕后,通过软件控制自动生成测试报告并发送至指定的电子邮箱。本实施例中,在测试项目管理服务器中可以指定若干电子邮箱地址,当测试机上的自动化测试工具QTP执行完测试任务后,会自动生成测试报告并发送至指定的电子邮箱。此步骤可以使测试人员直观地看到测试结果,节省了一定的人员成本,提高了工作效率。
实施例三
如图2、图3所示,本实施例提供一种基于业务流程控制的应用程序测试***,本***应用测试管理工具Testlink和自动化功能测试工具QTP,即HP QuickTestProfessional,以及JAVA多线程Sockect通信技术实现***中的各单元以及他们的连接关系。
本实施例提供的***包括:
数据存储单元201,用于建立数据库;本实施例采用建立专用于测试项目的数据库实现数据存储单元的功能。
流程管理单元202,用于建立测试套件与测试用例以及二者的对应关系,用于建立测试脚本与测试用例的对应关系;本实施例采用测试项目管理工具Testlink中的测试用例管理功能模块和测试需求管理功能模块实现流程管理单元。
任务创建单元203,用于定义测试计划、创建测试任务;
本实施例采用测试项目管理工具Testlink中的测试用例对测试需求的覆盖管理功能模块、测试计划的制定功能模块、测试用例的执行功能模块实现任务创建单元。
由于流程管理单元202和任务创建单元203都是利用测试项目管理工具Testlink现有的功能模块来实现各自的功能,所以本实施例使用一个测试项目管理服务器207集成流程管理单元202和任务创建单元203,在所述测试项目管理服务器207上安装Testlink并对Testlink进行二次开发。
任务执行单元204,用于执行测试任务;本实施例采用自动化功能测试工具QTP以及服务器与终端的JAVA多线程Sockect通信技术实现任务执行单元的功能。在本实施例中,任务执行单元包含一个服务器和多个测试机,每个测试机与同一服务器连接;具体连接方式是使用Java语言设计一套软件安装在服务器上和测试机上,在服务器上,指定本无服务器与测试机的连接端口以及本服务器与测试项目管理服务器的连接端口,在测试机上,为每个测试机命名,指定要连接的服务器ip和连接端口。
进一步的,本实施例提供的任务执行单元,如图3所示,本实施例***的任务执行单元包括多个服务器和多个测试机,每个服务器与任意个测试机连接组成若干任务执行子单元。测试机1、测试机2、测试机3共3个测试机与服务器1相连组成了第一任务执行子单元301;测试机4、测试机5共2个测试机与服务器2连接组成了第二任务执行子单元302。本实施例中的服务器与测试机之间采用JAVA多线程Sockect通信技术进行通信。本***的多个任务执行子单元可以有效地分担测试任务,进一步提高***的效率,减少执行过程所花费的时间。
所述流程管理单元根据数据存储单元中的数据建立测试套件与测试用例以及二者的对应关系、建立测试脚本与测试用例的对应关系;所述任务创建单元根据流程管理单元建立的内容定义测试计划、创建测试任务;所述任务执行单元根据任务创建单元发送的信息并读取数据存储单元的数据执行测试任务。概括的说,本实施例提供的基于业务流程控制的分布式应用程序测试***,包括一个测试项目管理服务器207,所述测试项目管理服务器207中包括流程管理单元202和任务创建单元203;测试项目管理服务器207与数据存储单元201连接,读取或存储数据;所述测试项目管理服务器207还与任务执行单元204连接,发送或接受数据;所述任务执行单元204中包括一个服务器和多个测试机。
进一步的,在本实施例提供的***中,多个测试机的操作***不相同。测试机的操作***可以是windows操作***、iOS手持设备操作***等;对应地,测试机的种类也不相同,测试机可以是固定终端、移动终端、手持设备等;针对不同的测试机环境,测试机上应用的自动化测试工具也不相同。本***可以跨平台测试多种***的应用程序,使***的扩展性增强。
进一步的,实施例提供的***还包括:
数据管理单元205,用于维护测试数据;所述数据管理单元对流程管理单元中建立的测试套件中的测试用例所用到的测试数据进行维护。本实施例采用测试管理工具Testlink的测试用例管理功能模块实现数据管理单元,与流程管理单元202和任务创建单元203相同,本实施例将数据管理单元205集成于测试项目管理服务器207上。
进一步的,本实施例提供的***还包括:
任务监控单元206,用于反馈测试机执行测试任务的进度与结果;所述任务监控单元根据任务执行单元产生的数据进行反馈。本实施例采用Java语言设计的软件安装在测试项目管理服务器和任务执行单元上实现任务监控单元的功能。
上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。