一种自动化测试方法和装置与流程

文档序号:11233998阅读:460来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种自动化测试方法和装置。
背景技术
::随着计算机技术发展,软件测试是逐渐由以人为驱动的手工测试方法转化为计算机执行的自动化测试过程。自动化测试可以利用软件测试工具对软件自动实现测试,完成许多手工测试无法实现或者是难以实现的测试,采取合理的自动化测试方法能够快速全面的对软件进行测试,从而提高软件重量,节省资费,缩短软件开发周期等。在自动化测试时,通常是在预设条件下运行系统程序或应用程序,得到运行结果并与预期结果进行比较以对系统程序或应用程序的质量进行评估。自动化测试具体执行时,首先会访问数据库进行测试数据准备,然后访问上述数据库进行测试结果校验等操作。但由于上述数据库是公共服务,可能会存在多个访问同时对数据库或数据库中的数据进行不同方式的修改和操作,这样自动化测试所依赖的测试数据将无法保障准确性,从而导致测试结果不正确,比如自动化测试访问数据库时,数据库表结构被其他访问进行了修改,将导致测试用例执行过程中所创建的数据无法录入,往往需要手动对数据信息进行调整,多次运行才能执行成功,因此目前自动化测试运行的稳定性较低。技术实现要素:基于上述技术问题,本申请实施例提供一种自动化测试方法和装置,用于提高自动化测试运行的稳定性。本申请实施例采用下述技术方案:一种自动化测试方法,包括:创建用于当前自动化测试的数据库;获取测试数据,并将获取到的测试数据导入所述数据库中;从所述数据库中的测试数据中获取数据以执行自动化测试的测试方法,并将测试结果数据保存在所述数据库中;访问所述数据库,根据预期结果数据对所述数据库中的测试结果数据进行数据校验。优选地,所述数据库具体为内存数据库。优选地,获取测试数据,并将获取到的测试数据导入所述数据库中具体包括:从自动化测试的测试代码中获取测试数据,并将获取到的测试数据导入所述数据库中。优选地,将获取到的测试数据导入所述数据库中之前,所述方法还包括:在创建的数据库中创建测试数据对应的表结构。优选地,根据预期结果数据对所述数据库中的测试结果数据进行数据校验之后,所述方法还包括:反馈校验结果。优选地,反馈校验结果之后,所述方法还包括:删除所述数据库中的测试数据。优选地,删除所述数据库中的测试数据之后,所述方法还包括:测试代码结束运行,数据库停止运行。优选地,创建用于当前自动化测试的数据库具体包括:运行自动化测试代码,通过运行测试代码创建用于当前自动化测试的数据库。一种自动化测试装置,包括:数据库创建模块,测试数据准备模块,测试执行模块和结果数据校验模块,其中:所述数据库创建模块,用于创建用于当前自动化测试的数据库;所述测试数据准备模块,用于获取测试数据,并将获取到的测试数据导入所述数据库中;所述测试执行模块,用于从所述数据库中的测试数据中获取数据以执行自动化测试的测试方法,并将测试结果数据保存在所述数据库中;所述结果数据校验模块,用于访问所述数据库,根据预期结果数据对所述数据库中的测试结果数据进行数据校验。优选地,所述数据库创建模块创建的数据库具体为内存数据库。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:在自动化测试时首先创建用于当前自动化测试的数据库,将获取到的测试数据导入所述数据库中,然后执行自动化测试的测试方法,最后再访问上述数据库对测试结果数据进行数据校验,每次自动化测试时都自动搭建一套数据库环境,创建本次依赖的测试数据,保障了数据库的稳定以及测试数据的准确性,从而提升自动化测试运行结果的稳定性。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为现有技术中自动化测试方法的应用场景示意图;图2为本申请实施例1提供的一种自动化测试方法的具体实现流程示意图;图3为本申请实施例2提供的一种自动化测试方法的具体实现流程示意图;图4为本申请实施例2提供的自动化测试方法应用场景示意图;图5为本申请实施例3提供的一种自动化测试装置的具体结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。如前所述,现有技术中在执行自动化测试时,首先会访问数据库进行测试数据准备,然后访问数据库进行测试结果校验,又或者是访问数据库对测试结 果数据进行评估等操作。但由于数据库是公共服务,可能会存在多个访问同时对数据进行不同方式的修改和操作,这样自动化测试所依赖的测试数据将无法保障准确性,从而导致测试结果不正确。举例说明,如图1所示,公共数据库服务器被应用服务器、自动化测试服务器a,自动化测试服务器b所公用。当自动化测试服务器a,自动化测试服务器b分别在执行同一个待测试程序所对应的两个测试用例时,其中待测试的程序运行所需的数据均保存在公共数据库服务器中,如果应用服务器将上述待测试程序运行所依赖的数据所对应的表结构进行修改,此时将可能引起自动化测试服务器a无法在上述公共数据库服务器中新增记录进而无法进行数据准备,同时自动化测试服务器b无法获取记录进而无法进行数据校验,最终造成测试运行结果不正确或者是测试中断的情况,因此目前自动化测试运行的稳定性较低。实施例1为解决上述技术问题,本申请实施例1提供一种自动化测试的方法,用于提高自动化测试运行的稳定性。该方法的具体流程示意图如图2所示,包括下述步骤:步骤11:创建用于当前自动化测试的数据库;创建用于当前自动化测试的数据库时,所创建的数据库可以为在本次测试用例所运行的内存中创建的内存数据库,也可以为创建的用于当前自动化测试的磁盘数据库。内存数据库可以将数据放在内存中直接进行访问控制,相对于磁盘数据库,其读写速度要高出几个数量级,进而能够极大地提高测试用例的执行效率。具体创建数据库时,可以利用createdatabase<数据库名称>的命令创建数据库,例如创建一个名为ceshi的mysql数据库时,首先连接mysql服务器;然后执行mysql>createdatabaseceshi;完成数据库的创建。需要说明的是,上述创建数据库用于当前自动化测试,具体可以设置为只 有本次测试用例的执行主体拥有访问权限,即创建的数据库仅供本次自动化测试所使用。步骤12:获取测试数据,并将获取到的测试数据导入所述数据库中;测试数据通常是自动化测试的方法执行过程中需要用到的全部数据,其来源于测试用例对应的测试需求。获取测试数据时,可以具体从自动化测试的测试代码中获取,在获取测试数据之后,可以通过数据库的导入功能将获取到的测试数据导入所述数据库中。例如,获取到一批测试数据,这些测试数据是由测试用例的测试代码中获取得到,则可以通过导入测试数据的方式,将获取到的测试数据导入到创建的数据库中实现测试数据准备。具体导入测试数据时,可以利用测试用例的代码中的一段程序将获取到的全部测试数据导入到步骤11所创建的数据库中,导入的测试数据可以为自动化测试过程中所需要的变量值的初始值,又或者是某一表记录的所有值等。步骤13:从所述数据库中的测试数据中获取数据以执行自动化测试的测试方法,并将测试结果数据保存在所述数据库中;自动化测试的测试方法执行时,即在搭建测试环境运行测试用例,测试环境可以为软件产品运行的软硬件环境,比如要求操作系统系统是windows2000pack4版本等。其中测试过程中所需的数据从所述数据库中的测试数据中获取,且测试结果数据保存于所述数据库中。需要说明的是,数据库中的测试数据包括测试中全部所需要的数据,测试过程是一个连续过程,可能还会分为多个执行步骤,每一个步骤执行时可能只是需要上述测试数据中的部分数据又或者是全部数据,每次需要使用时即可从上述数据库中获取所需的数据。自动化测试通常是为了特定的测试目的而设计的一组测试输入,执行条件,和预期结果。自动化测试的测试输入即为提供测试执行中的各种输入条件,根据需求中的输入条件,确定测试用例的输入。操作步骤即提供测试执行过程的步骤。预期结果即提供测试执行的预期结果,预期结果应该根据软件需求中的 输出得出。通过测试用例的执行,进而能够发现测试对象的错误。如果在实际测试过程中,得到的实际测试结果数据与预期结果数据不符,那么测试不通过;反之则可以认为测试通过。步骤14:访问所述数据库,根据预期结果数据对所述数据库中的测试结果数据进行数据校验。由于测试结果数据是保存在上述数据库中,访问所述数据库,通常即访问上述数据库中的测试结果数据并将其与预期结果数据进行校验。具体访问数据库时可以通过自动化测试的测试用例经由一层或多层创建数据库的中介代码或中间件进入数据库中进而访问测试结果数据,并且读取出测试结果数据后送回测试用例中来进行数据校验。其中预期结果数据通常可以保存在自动化测试的测试代码中。在测试执行中访问所述数据库对测试结果数据进行数据校验时,即便实际测试结果数据与测试的预期结果数据一致,通常也要查看自动化测试的测试用例的操作日志、系统运行日志和系统资源使用情况,来判断测试用例是否执行成功。全方位观察软件产品的输出可以发现很多隐蔽的问题。采用实施例1提供的该方法,在自动化测试时首先创建用于当前自动化测试的数据库,将获取到的测试数据导入所述数据库中,然后执行自动化测试的测试方法,最后再访问上述数据库对测试结果数据进行数据校验,每次自动化测试时都自动搭建一套数据库环境,创建本次依赖的测试数据,保障了数据库的稳定以及测试数据的准确性,从而提升自动化测试运行结果的稳定性。在实施例1的步骤11中,创建的用于当前自动化测试的数据库具体可以为内存数据库。内存数据库可以通过利用本地内存资源换取测试数据准备以及数据校验的实时性的。内存数据库的事务实时处理性能要强于磁盘数据库。相对于磁盘数据库,通过内存数据库,减少了磁盘输入输出,能够达到以磁盘输入输出为主的传统数据库无法与其相比拟的处理速度。内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,内存数据库 基于全部数据都在内存中管理进行了新的体系结构的设计,在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,进而提升自动化测试的测试效率。在实施例1的步骤12中获取测试数据,并将获取到的测试数据导入所述数据库中之前,所述实施例还可以包括以下步骤:在创建的数据库中创建自动化测试的测试数据对应的表结构,创建表结构之前通常已经明确测试过程中所需要的数据的类型以及所需要的数据库表结构。例如自动化测试时需要有字段名为"lastname"、"firstname"、"address"和"age"的字段,在数据库中创建名为“person”的表结构时时可以编写如下语句:createtableperson(lastnamevarchar,firstnamevarchar,addressvarchar,ageint)通过创建自动化测试的测试数据对应的表结构,进而能够方便后续的测试数据导入以及访问数据库对测试结果数据进行数据校验。在实施例1的步骤14中访问所述数据库,根据预期结果数据对所述数据库中的测试结果数据进行数据校验之后,所述实施例还可以包括以下步骤:反馈校验结果。软件测试执行结束后,测试活动还没有结束。结果分析是必不可少的重要环节,通过反馈的校验结果,进而对测试结果的分析对下一轮测试工作的开展有很大的借鉴意义。软件测试结果关键的域就是“问题描述”,这是定位问题的依据。问题描述应该包括以下几部分内容:软件配置、硬件配置、测试用例输入、操作步骤、输出、当时输出设备的相关输出信息和相关的日志等。软件配置包括操作系统类型版本和补丁版本、当前被测试软件的版本和补丁版本、相关支撑软件,比如数据库软件的版本和补丁版本等。硬件配置包括计算机的配置情况,例如cpu、内存和硬盘的相关参数,其它硬件参数根据测试用例的实际情况添加。如果测试中使用网络,那么网络的组网情况,网络的容量、流量等情况。测试用例输入\操作步骤\输出。输出设备的相关输出信息包括输出设备包括计算机显示器、打印机、磁带等等输出设备等。日志信息包括软件的运行日志和用户、管理员的操作日志。在上述实施例中反馈校验结果之后,所述方法还可以包括以下步骤:删除所述数据库中的测试数据,当然这里的测试数据可以为数据库中的全部数据。如果是内存数据库,及时删除内存数据库中的测试数据,进而减少内存占用率,减少对系统资源的使用;如果是磁盘数据库,及时删除磁盘数据库中的结果数据,进而减少磁盘的占用率,同样起到减少系统资源的使用的效果。另外,删除所述数据库中的测试数据之后,所述方法还可以包括以下步骤:测试代码结束运行,数据库停止运行。相对于内存数据库,测试用例的测试代码运行结束后内存数据库即可结束运行,进而降低对内存的占用,相对于磁盘数据库,在测试用例的测试代码运行结束后,可以通过删除数据库的方式来结束数据库的运行。在之前所有的实施例中,创建用于当前自动化测试的数据库具体可以采用运行自动化测试代码,通过运行测试代码创建用于当前自动化测试的数据库。即在自动化测试的测试代码中增加创建数据库的相关程序,通过自动化测试代码的运行自动创建用于当前自动化测试的数据库。实施例2基于相同的发明构思,实施例2提供了一种自动化测试方法,用于提高自动化测试运行的稳定性。该方法的具体流程示意图如图3所示,包括下述步骤:步骤21:运行测试代码创建内存数据库;创建内存数据库时,可以在自动化测试的测试代码中添加构建内存数据库的相关代码,通过运行测试代码调用数据库创建工具创建用于当前自动化测试的内存数据库,创建的内存数据库可以为sqlite内存数据库或altibase内存数据库等一些符合测试用例的运行需要的内存数据库。sqlite是一个小型的c程序库,实现了独立的,可嵌入的,零配置的sql数据库引擎。sqlite不仅占用内存少、操作方便快速且运行稳定。但sqlite省略了一些人们认为比较有用的特性,例如高并发性、严格的存取控制、丰富的内置功能、存储过程、复杂的sql语言特性、xml以及java的扩展,超大的万亿级别的数据测量等等。altibasetm内存数据库管理系统(dbms)可以为在事务优先的环境中提供高性能和高可用性的软件解决方案。altibase提供极限性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。altibase能够最大限度的发挥数据库服务系统的潜力。步骤22:在创建的内存数据库中创建测试数据对应的表结构;通过创建自动化测试的测试数据对应的表结构,进而能够方便步骤23中数据库导入测试数据以及步骤25中访问数据库对测试结果数据进行数据校验,其中,在获取测试数据之前通常已经明确测试过程中所需要的全部数据在数据库中的表结构。步骤23:获取测试数据,并将获取到的测试数据导入内存数据库中;获取测试数据时,可以具体从自动化测试的测试代码中获取,将测试数据导入内存数据库时,可以利用测试用例的代码中的一段程序将测试过程中所需的全部测试数据导入到步骤21所创建的内存数据库中,例如导入测试过程中所需要的变量值的初始值,又或者是存储某一表记录的所有值等。步骤24:从内存数据库中的测试数据中获取数据以执行自动化测试的测试方法,并将测试结果数据保存在内存数据库中;自动化测试的测试方法具体执行时,即在搭建测试环境运行测试用例。其 中测试过程中所需的数据从所述内存数据库中的测试数据中获取,且测试结果数据保存于所述内存数据库中。步骤25:访问所述内存数据库,根据预期结果数据对所述内存数据库中的测试结果数据进行数据校验;访问所述内存数据库,通常即访问测试结果数据,将其与预期结果数据进行比较,预期结果数据通常可以保存在自动化测试的测试代码中。在测试执行中访问所述内存数据库对测试结果数据进行数据校验时,即便实际测试结果内存与测试的预期结果内存一致,通常也要查看测试用例的操作日志、系统运行日志和系统资源使用情况,来判断测试用例是否执行成功了。全方位观察软件产品的输出可以发现很多隐蔽的问题。步骤26:反馈校验结果;进行数据校验后,还可以反馈校验结果,软件测试执行结束后,测试活动还没有结束。结果分析是必不可少的重要环节,通过反馈的校验结果,进而对测试结果的分析对下一轮测试工作的开展有很大的借鉴意义。步骤27:删除所述内存数据库中的测试数据;及时删除内存数据库中的测试数据,进而减少内存占用率,提高系统资源的利用效率。步骤28:测试代码结束运行,内存数据库停止运行。测试用例的测试代码运行结束后内存数据库即可结束运行,进而降低对内存的占用。采用实施例2提供的方法,由于在自动化测试时首先创建内存数据库并创建测试数据对应的表结构,将获取到的测试数据导入所述内存数据库中后执行自动化测试的测试方法,然后访问上述内存数据库对测试结果数据进行数据校验,最后反馈校验结果之后删除内存数据库中的测试数据并停止内存数据库运行,每次自动化测试服务运行时都自动搭建一套内存数据库环境,创建本次依赖的测试数据,保障了数据库的稳定以及测试数据的准确性,从而提升自动化 测试运行结果的稳定性,同时通过及时删除内存数据库中的测试数据并停止内存数据库运行,减少自动化测试所占用的资源。对于实施例2起到提升自动化测试运行结果的稳定性的效果,具体可以如图4所示,与现有技术中图1的对比可以看出,图4中自动化测试服务器a和自动化测试服务器b可已分别对其对应的测试对象进行测试,测试过程不受应用服务器对公共数据库服务器中表c结构修改的影响,进而提高自动化测试过程的稳定性。实施例3基于相同的发明构思,实施例3提供了一种自动化测试装置,用于提高自动化测试运行的稳定性。如图5所示,该装置包括:数据库创建模块31,测试数据准备模块32,测试执行模块33和结果数据校验模块34,其中:所述数据库创建模块31,可以用于创建用于当前自动化测试的数据库;所述测试数据准备模块32,可以用于获取测试数据,并将获取到的测试数据导入所述数据库中;所述测试执行模块33,可以用于从所述数据库中的测试数据中获取数据以执行自动化测试的测试方法,并将测试结果数据保存在所述数据库中;所述结果数据校验模块34,可以用于访问所述数据库,根据预期结果数据对所述数据库中的测试结果数据进行数据校验。采用实施例3提供的该方法,数据库创建模块31在自动化测试时首先创建用于当前自动化测试的数据库,测试数据准备模块32将获取到的测试数据导入所述数据库中,然后测试执行模块33执行自动化测试的测试方法,最后结果数据校验模块34访问上述数据库对测试结果数据进行数据校验,每次自动化测试服务运行时都自动搭建一套数据库环境,创建本次依赖的测试数据,保障了数据库的稳定以及测试数据的准确性,从而提升自动化测试运行结果的稳定性。在一种实施方式中,数据库创建模块31创建的数据库具体可以为内存数据库。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1