CN108536596A - 基于对象构造数据的自动化测试方法、可读介质及设备 - Google Patents
基于对象构造数据的自动化测试方法、可读介质及设备 Download PDFInfo
- Publication number
- CN108536596A CN108536596A CN201810314553.2A CN201810314553A CN108536596A CN 108536596 A CN108536596 A CN 108536596A CN 201810314553 A CN201810314553 A CN 201810314553A CN 108536596 A CN108536596 A CN 108536596A
- Authority
- CN
- China
- Prior art keywords
- test
- data
- test data
- unit
- tested
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明提供一种基于对象构造数据的自动化测试方法,包括以下步骤:提取脚本对象;依据所述脚本对象,创建测试数据对象;根据所述测试数据对象,提取所述脚本对象中的待测试单元;依据所述待测试单元,创建所述待测试单元对应的测试数据。本发明的测试方法使得测试脚本代码与测试数据分离,测试数据以测试单元为对象进行一一映射,测试代码脚本在测试文件中任意修改测试数据,无需对测试脚本进行维护修改。还涉及相关的计算机可读存储介质以及相关电子设备。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种基于对象构造数据的自动化测试方法、相关计算机可读存储介质以及电子设备。
背景技术
现有的单元测试,接口测试,自动化测试,在脚本中测试数据构造时,多采用csv,xml,excel等文件对测试的数据进行数据与测试脚本分离,但是所有的测试数据均无统一规范或者脚本在使用时,对应关系无法进行有效映射,导致后期维护脚本及测试脚本开发成本高,在编写脚本过程中,对数据的获取需使用硬编码方式完成,使脚本代码维护性及可读性差。
发明内容
为了克服上述问题的至少一个方面,本发明实施例提供一种基于对象构造数据的自动化测试方法。
根据本发明的一个方面,提供一种基于对象构造数据的自动化测试方法,包括如下步骤:
步骤S1,提取脚本对象;
步骤S2,依据所述脚本对象,创建测试数据对象;
步骤S3,根据所述测试数据对象,提取所述脚本对象中的待测试单元;
步骤S4,依据所述待测试单元,创建所述待测试单元对应的测试数据。
根据一些实施例,步骤S1包括:识别所述脚本对象,对所述脚本对象进行定义。
根据一些实施例,步骤S1中所述脚本为任意编程语言。
根据一些实施例,步骤S2通过识别所述脚本对象进行测试数据对象的构造。
根据一些实施例,步骤S2包括:将所述测试数据对象存储为yaml文件。
根据一些实施例,步骤S4包括为所述待测试单元进行测试数据对象中测试单元数据的构造。
根据一些实施例,步骤S4包括为所述测试数据对象创建数据子单元,将测试数据存储为yaml文件。
根据本发明的另一个方面,提供一种计算机可读存储介质,其上存储有可执行指令,指令在由处理器执行时,可以实现根据上述实施例中的任一项所述的基于对象构造数据的自动化测试方法的步骤。
根据本发明的又一个方面,提供一种电子设备,包括:
存储器,用于存储可执行指令;以及
处理器,用于执行存储器中存储的可执行指令,以实现根据上述实施例中任一项所述的基于对象构造数据的自动化测试方法的步骤。
与现有技术相比,本发明具有以下优点:测试脚本代码与测试数据分离,测试数据以测试单元为对象进行一一映射,测试代码脚本在测试文件中任意修改测试数据,无需对测试脚本进行维护修改。
附图说明
通过下文中参照附图对本发明所作的描述,本发明的其它目的和优点将显而易见,并可帮助对本发明有全面的理解。
图1是本发明实施例的工作流程图;
图2是本发明实施例的流程简图;
图3是本发明实施例的调用关系图;
图4是本发明实施例的计算机可读存储介质的结构示意图;
图5是本发明实施例的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。
本发明提供一种基于对象构造数据的自动化测试方法,根据图1所示,该方法包括以下步骤:
步骤S1,提取脚本对象;
步骤S2,依据所提取的脚本对象,创建测试数据对象;
步骤S3,根据所创建的测试数据对象,提取脚本对象中的待测试单元;
步骤S4,依据所测试的待测试单元,创建该待测试单元对应的测试数据。
下面对上述步骤进行详细的说明。
步骤S1,提取脚本对象。脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。步骤S1中的脚本可以是任意语言,例如可以是Ruby这种简单快捷面向对象的脚本语言,也可以是Python这种面向对象直译式计算机程序设计语言,还可以是Java这种可以撰写跨平台应用程序的面向对象的程序设计语言,当然,并不局限于上述语言。
编程语言中的“类”往往指一个数据功能的集合,而“对象”则是具有实际内存的类。如果将“类”比作是一份设计图纸的话,那么“对象”就是指根据设计图纸创建的实物。在本实施例中,测试单元为测试对象。在步骤S1中,需要对所测脚本单元对象进行识别,并且为了编程的方便,一般可以对脚本对象进行定义,例如:class TestCheckWhiteList。脚本单元对象是测试对象定义的类对象,也即是测试对象的实例化,就是通过测试对象构造多个具体的对象。实例化对象有两种方式,即从栈实例化和从堆实例化。从栈中实例化对象具体方式如下,如果要定义一个对象,可以写如下代码:TV tv。如果要定义一个对象数组,可以写如下代码:TV tv[20]。而从堆中实例化对象,则需要使用指针指向new运算符申请出来的内存。
步骤S2,依据所提取的脚本对象,创建测试数据对象。通过识别所测脚本对象进行测试数据对象的构造,识别所测脚本对象也即是对所测脚本对象进行读取,检查所测脚本对象的测试属性,测试属性例如可以是测试的类型,然后根据脚本对象的测试属性构造能够实现测试功能的测试数据对象。例如,脚本对象可以是TestCheckWhiteList,这个脚本对象是检查主播的白名单,查看哪些主播有权限创建电台,可以通过识别脚本对象TestCheckWhiteList构造一个检查主播白名单的测试数据对象,也即是创建对应的函数,测试数据对象可以例如为:
上述代码中“login:{″username″:″Test″,″password″:″123456″}”是输入了主播的信息,比如,账号和密码,当然也可以是其他能够表明身份的信息,然后可以回复“0”,这个“0”后面会讲到它的具体含义,同时还回复″msg″:″操作成功″,也即是反馈了一个操作成功的信息,说明这个函数是正常运行的。
可以将上述构造好的测试数据对象存储为yaml文件。yaml是“行导向的”,因此,就算想由现有程序的混乱输出,转换成yaml格式,并保留大部分的原始文件之外观,也非常简单。因为它不需要平衡封闭的标签、括号及引号,可以从很简单的利用程式,从报表产生yaml。同样,空格分隔可让使用行导向的命令如:grep、Awk、perl、ruby和Python,来应急性的过滤yaml文件时更加方便。而且yaml是纯粹用来表达资料的语言,所以内部不会存代码注入的可执行命令。这代表剖析器会相当安全地解析文件,而不用担心潜在与执行命令相关的安全漏洞。格式转换的简便性和可靠的安全性让yaml成为了脚本语言中存储数据比较好的选择。
步骤S3,根据所创建的测试数据对象,提取脚本对象中的待测试单元。也即是对上述步骤中创建的测试数据对象中具体的待测试单元进行提取,也即是给待测试单元构造一个具体的函数。下面用python语言来进行说明,在下面这段代码中,使用的测试框架为pyunit,使用pyunit可以实现自动单元测试,这里可以通过框架来获取数据,即通过获取类方法,也即是具体的测试单元,进而通过对象映射,也即是调用对应的函数,来获取具体的数据。具体的测试脚本可以例如:
deftest_case01_normal(self):
u″′正常场景:查询直播平台主播是否有权限创建电台(白名单控制),白名单内主播id,返回可创建(0)″′
current_method=sys._getframe().f_code.co_name
get_data=self.testdata[self.class_name][current_method][′get_data′]
上述代码中,“current_method=sys._getframe().f_code.co_name”表示获取当前类方法,也即是具体的测试单元,“get_data=self.testdata[self.class_name][current_method][′get_data′]”则代表着具体的数据。测试脚本对象单元,也即是具体的测试单元可以是上述脚本语言中的test case01normal。
步骤S4,依据所测试的待测试单元,创建该待测试单元对应的测试数据。可以创建测试对象数据子单元,例如可以是接口单元。可以将上述创建好的测试数据存储为yaml文件。这样,依据测试单元就构造出了测试数据。例如,接着上述例子,创建待测试单元对应的数据,具体数据如下:
上述代码中的数据包括用户的身份标识、线程的身份标识和服务器地址,当然,不限于上述参数。然后返回了“0”,说明这个房间的主播有权限创建电台。而测试单元,也即是功能模块,具有检查错误的功能,通过调用对应的函数,也即是具体的测试数据,来对测试单元进行测试,这样,测试数据和测试单元就达到了分离的结果,并且通过调用函数实现了测试数据和测试单元的一一对应,也即是测试数据以测试单元为对象进行一一映射。
本实施例通过使用对象的方式进行测试数据的构造,通过测试单元为测试对象,依据测试单元进行测试数据的构造,实现脚本编写中测试脚本代码与测试数据分离,测试数据以测试单元为对象进行一一映射,测试代码脚本在测试文件中任意修改测试数据,无需对测试脚本进行维护修改。实现测试脚本可维护性及可读性强,同时增强测试脚本鲁棒性。
图2是本发明实施例的流程简图,可以通过图2进一步简化整个过程。
首先,提取测试对象;然后,根据提取的测试对象构造测试数据对象;接着,提取测试对象的方法单元;最后,依据提取的测试对象的方法单元构造测试对象方法单元的数据。
图3是本发明实施例的调用关系图。
为了描述的方便,将“提取测试脚本对象”模块记为A,将“基于提取测试脚本对象构造测试数据对象”模块记为B,将“提取测试脚本对象方法单元”模块记为C,将“基于提取测试脚本对象方法单元构造测试数据单元”模块记为D。
首先,直接编写A的程序,然后B和C都可以直接调用A,D可以直接调用B和C,每个具体的待测试单元可以调用C和D,例如,单元测试脚本、接口测试、UI自动化测试均可以调用C和D,使用创建好的测试数据进行测试,也达到了测试代码和测试数据分离的目的。
基于同一发明构思,参考图4所示,本发明还提供一种计算机可读存储介质401,其上存储有可执行指令402,可执行指令402在由一个或多个处理器执行时,可以实现根据上述实施例中的任一项所述的基于对象构造数据的自动化测试方法的步骤。
基于同一发明构思,参考图5所示,本发明还提供一种电子设备501,该电子设备501包括:
存储器510,用于存储可执行指令511;以及
处理器520,用于执行存储器510中存储的可执行指令511,以实现如上述实施例中任一项所述的基于对象构造数据的自动化测试方法的步骤。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于对象构造数据的自动化测试方法,其特征在于,包括:
步骤S1,提取脚本对象;
步骤S2,依据所述脚本对象,创建测试数据对象;
步骤S3,根据所述测试数据对象,提取所述脚本对象中的待测试单元;
步骤S4,依据所述待测试单元,创建所述待测试单元对应的测试数据。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:识别所述脚本对象,对所述脚本对象进行定义。
3.根据权利要求1所述的方法,其特征在于,所述步骤S1中所述脚本为任意编程语言。
4.根据权利要求2所述的方法,其特征在于,所述步骤S2通过识别所述脚本对象进行测试数据对象的构造。
5.根据权利要求1所述的方法,其特征在于,所述步骤S2包括:将所述测试数据对象存储为yaml文件。
6.根据权利要求1所述的方法,其特征在于,所述步骤S4包括为所述待测试单元进行测试数据对象中测试单元数据的构造。
7.根据权利要求1所述的方法,其特征在于,所述步骤S4包括为所述测试数据对象创建数据子单元,将测试数据存储为yaml文件。
8.一种计算机可读存储介质,其上存储有可执行指令,所述指令在由处理器执行时,实现根据权利要求1-7中的任一项所述的基于对象构造数据的自动化测试方法的步骤。
9.一种电子设备,包括:
存储器,用于存储可执行指令;以及
处理器,用于执行所述存储器中存储的可执行指令,以实现根据权利要求1-7中任一项所述的基于对象构造数据的自动化测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810314553.2A CN108536596A (zh) | 2018-04-09 | 2018-04-09 | 基于对象构造数据的自动化测试方法、可读介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810314553.2A CN108536596A (zh) | 2018-04-09 | 2018-04-09 | 基于对象构造数据的自动化测试方法、可读介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108536596A true CN108536596A (zh) | 2018-09-14 |
Family
ID=63480616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810314553.2A Pending CN108536596A (zh) | 2018-04-09 | 2018-04-09 | 基于对象构造数据的自动化测试方法、可读介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108536596A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800154A (zh) * | 2018-12-15 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN111026666A (zh) * | 2019-12-06 | 2020-04-17 | 京东数字科技控股有限公司 | 测试数据处理方法、装置、计算机***和介质 |
CN111176973A (zh) * | 2018-11-13 | 2020-05-19 | 北京京东尚科信息技术有限公司 | 测试方法、***、电子设备和计算机可读介质 |
CN111324526A (zh) * | 2018-12-14 | 2020-06-23 | 北京金山云网络技术有限公司 | 接口测试***、方法和服务器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105630685A (zh) * | 2016-01-29 | 2016-06-01 | 广州酷狗计算机科技有限公司 | 程序接口测试方法及装置 |
WO2016206113A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Technologies for device independent automated application testing |
CN106294184A (zh) * | 2016-08-30 | 2017-01-04 | 广州华多网络科技有限公司 | 测试场景图形化创建方法、装置及终端设备 |
CN107015908A (zh) * | 2017-03-31 | 2017-08-04 | 广州慧睿思通信息科技有限公司 | 一种计算机应用软件测试***及方法 |
CN107329891A (zh) * | 2017-06-06 | 2017-11-07 | 千寻位置网络有限公司 | 基于结构化数据及rest接口的自动化回归测试方法 |
CN107766252A (zh) * | 2017-11-08 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试脚本自动化执行方法、装置、设备以及存储介质 |
-
2018
- 2018-04-09 CN CN201810314553.2A patent/CN108536596A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016206113A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Technologies for device independent automated application testing |
CN105630685A (zh) * | 2016-01-29 | 2016-06-01 | 广州酷狗计算机科技有限公司 | 程序接口测试方法及装置 |
CN106294184A (zh) * | 2016-08-30 | 2017-01-04 | 广州华多网络科技有限公司 | 测试场景图形化创建方法、装置及终端设备 |
CN107015908A (zh) * | 2017-03-31 | 2017-08-04 | 广州慧睿思通信息科技有限公司 | 一种计算机应用软件测试***及方法 |
CN107329891A (zh) * | 2017-06-06 | 2017-11-07 | 千寻位置网络有限公司 | 基于结构化数据及rest接口的自动化回归测试方法 |
CN107766252A (zh) * | 2017-11-08 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试脚本自动化执行方法、装置、设备以及存储介质 |
Non-Patent Citations (1)
Title |
---|
戴夫•托马斯: "《Rails 5敏捷开发》", 31 January 2018, 华中科技大学出版社 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176973A (zh) * | 2018-11-13 | 2020-05-19 | 北京京东尚科信息技术有限公司 | 测试方法、***、电子设备和计算机可读介质 |
CN111176973B (zh) * | 2018-11-13 | 2024-02-02 | 北京京东尚科信息技术有限公司 | 测试方法、***、电子设备和计算机可读介质 |
CN111324526A (zh) * | 2018-12-14 | 2020-06-23 | 北京金山云网络技术有限公司 | 接口测试***、方法和服务器 |
CN111324526B (zh) * | 2018-12-14 | 2024-04-26 | 北京金山云网络技术有限公司 | 接口测试***、方法和服务器 |
CN109800154A (zh) * | 2018-12-15 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 测试数据的加载方法、装置、计算机设备及存储介质 |
CN111026666A (zh) * | 2019-12-06 | 2020-04-17 | 京东数字科技控股有限公司 | 测试数据处理方法、装置、计算机***和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10235142B1 (en) | Code generator tool for building software applications with reusable components | |
CN108536596A (zh) | 基于对象构造数据的自动化测试方法、可读介质及设备 | |
CN104484216B (zh) | 服务接口文档和在线测试工具生成方法、装置 | |
US7478365B2 (en) | Method and system for rule-based generation of automation test scripts from abstract test case representation | |
US7272822B1 (en) | Automatically generating software tests based on metadata | |
US20130275946A1 (en) | Systems and methods for test development process automation for a test harness | |
US8949790B2 (en) | Debugging visual and embedded programs | |
CA2553441A1 (en) | Method and system for conversion of automation test scripts into abstract test case representation with persistence | |
CN101192143A (zh) | 一种软件界面的构造方法 | |
CN106294134A (zh) | 代码的崩溃定位方法及装置 | |
CN108845940A (zh) | 一种企业级信息***自动化功能测试方法和*** | |
US11288062B2 (en) | Automatic source code refactoring | |
Mushtaq et al. | Multilingual source code analysis: State of the art and challenges | |
Fdez‐Riverola et al. | A JAVA application framework for scientific software development | |
CN106919374B (zh) | 一种脚本生成方法和装置 | |
US10042638B2 (en) | Evaluating documentation coverage | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
Sun et al. | Extending linden scripting language on OpenSim | |
Moore et al. | Python GUI Programming-A Complete Reference Guide: Develop responsive and powerful GUI applications with PyQt and Tkinter | |
CN103782271B (zh) | 用于开发和实现门户网站的方法以及相应的计算机程序产品 | |
Parnas et al. | An easily extensible toolset for tabular mathematical expressions | |
Del Fabro et al. | Industrial-strength Rule Interoperability using Model Driven Engineering | |
Aponte et al. | MQP: Soft. Eng. Capstone | |
Lin et al. | Towards verifying VDM using SPIN | |
CN117034298A (zh) | 一种xss漏洞检测方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180914 |