CN112527465A - 基于FitNesse框架的数据驱动脚本库的方法、系统及介质 - Google Patents
基于FitNesse框架的数据驱动脚本库的方法、系统及介质 Download PDFInfo
- Publication number
- CN112527465A CN112527465A CN202011510507.3A CN202011510507A CN112527465A CN 112527465 A CN112527465 A CN 112527465A CN 202011510507 A CN202011510507 A CN 202011510507A CN 112527465 A CN112527465 A CN 112527465A
- Authority
- CN
- China
- Prior art keywords
- script
- common
- library
- fitnesse
- framework
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于FitNesse框架的数据驱动脚本库的方法、系统及介质,包括:步骤1:启动FitNesse框架,编写贴合预设自动化规范的测试脚本;步骤2:在测试脚本上方添加局部共通脚本作为参数化的共通脚本,在测试脚本正文调用局部共通脚本中的共通脚本段接口;步骤3:共通脚本段接口调用调通后,在通用脚本库创建层级结构;步骤4:将局部共通脚本中的共通脚本段放到通用脚本库对应的层级,上层测试脚本自动导入通用脚本库;步骤5:在上层测试脚本中,对通用脚本库的共通脚本段采用一行参数化调用缩减脚本行数。本发明通过一套通用脚本库的方法论,解决相近脚本的复用性问题,并且不依赖于任何环境,脚本维护工作量会有大幅降低。
Description
技术领域
本发明涉及软件编程技术领域,具体地,涉及一种基于FitNesse框架的数据驱动脚本库的方法、系统及介质。
背景技术
基于FitNesse框架的自动化方案,适用于无编程经验的测试团队,对于脚本抽象思维较薄弱,易导致自动化脚本通用性低,依赖环境现有数据,脚本频繁维护,脚本繁琐等问题。
专利文献CN104778124A(申请号:CN201510170813.X)公开了一种软件应用自动化测试方法,包括如下步骤:a)获取基于各种自动化测试工具的可复用函数和/或脚本;b)对获取的各种自动化测试工具的脚本和/或函数利用关键字进行映射,并封装成框架语言;c)采用所述框架语言编写执行脚本;d)使用分布式执行机制,将所述执行脚本分发到多个测试引擎上执行。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于FitNesse框架的数据驱动脚本库的方法、系统及介质。
根据本发明提供的基于FitNesse框架的数据驱动脚本库的方法,其特征在于,包括:
步骤1:启动FitNesse框架,编写贴合预设自动化规范的测试脚本;
步骤2:在测试脚本上方添加局部共通脚本作为参数化的共通脚本,在测试脚本正文调用局部共通脚本中的共通脚本段接口;
步骤3:共通脚本段接口调用调通后,在通用脚本库创建层级结构;
步骤4:将局部共通脚本中的共通脚本段放到通用脚本库对应的层级,上层测试脚本自动导入通用脚本库;
步骤5:在上层测试脚本中,对通用脚本库的共通脚本段采用一行参数化调用缩减脚本行数,提升脚本编写效率。
优选的,通过java-jar方式启动FitNesse框架,更为轻量、便捷。
优选的,基于FitNesse框架的数据驱动脚本库的方法,其特征在于,在上层测试脚本自动导入通用脚本库后,删掉上层测试脚本中的局部共通脚本段。
优选的,共通脚本段和共通脚本段之间存在互相调用关系,多个共通脚本段组成通用脚本库,服务于上层测试脚本。
根据本发明提供的基于FitNesse框架的数据驱动脚本库的系统,包括:
模块M1:启动FitNesse框架,编写贴合预设自动化规范的测试脚本;
模块M2:在测试脚本上方添加局部共通脚本作为参数化的共通脚本,在测试脚本正文调用局部共通脚本中的共通脚本段接口;
模块M3:共通脚本段接口调用调通后,在通用脚本库创建层级结构;
模块M4:将局部共通脚本中的共通脚本段放到通用脚本库对应的层级,上层测试脚本自动导入通用脚本库;
模块M5:在上层测试脚本中,对通用脚本库的共通脚本段采用一行参数化调用缩减脚本行数。
优选的,通过java-jar方式启动FitNesse框架。
优选的,在上层测试脚本自动导入通用脚本库后,删掉上层测试脚本中的局部共通脚本段。
优选的,共通脚本段和共通脚本段之间存在互相调用关系,多个共通脚本段组成通用脚本库,服务于上层测试脚本。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述的方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
本发明通过一套通用脚本库的方法论,解决相近脚本的复用性问题,并且不依赖于任何环境,脚本维护工作量会有大幅降低;亦可赋能于团队,提升自动化脚本编写的效率。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为执行流程图;
图2为系统架构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
根据本发明提供的一种基于FitNesse框架的数据驱动脚本库的方法,包括:
步骤1:启动FitNesse框架后,编写一段贴合自动化规范的测试脚本;
步骤2:测试脚本上方添加Local Scenario(局部共通脚本)作为参数化的共通脚本,测试脚本正文调用Local Scenario中的scenario(共通脚本段)接口;
步骤3:Local Scenario中的scenario接口调用调通后,在Scenario Library创建层级结构;
步骤4:将Local Scenario中的scenario,放到Scenario Library(通用脚本库)对应的层级。上层测试脚本,即可自动include Scenario Library(导入通用脚本库);
步骤5:上层测试脚本中,对Scenario Library的scenario调用,采用一行参数化调用,即可大幅缩减脚本行数。
所述步骤1包含如下子步骤:
步骤1.1:通过java-jar方式启动Fitnesse;
步骤1.2:编写一段贴合自动化规范的测试脚本。
所述步骤2包含如下子步骤:
步骤2.1:测试脚本上方添加Local Scenario局部共通脚本,作为参数化的共通脚本;
步骤2.2:在测试脚本正文调用Local Scenario中的scenario接口。
所述步骤3包含如下子步骤:
步骤3.1:调试Local Scenario局部共通脚本中的scenario接口调用;
步骤3.2:在Scenario Library通用脚本库,创建通用脚本库层级结构;
在http://ip:port/FrontPage.IntegrationTest.ScenarioLibrary创建一个ScenarioLibray路径:
!include.FrontPage.IntegrationTest.ScenarioLibrary.MapPutDemo。
所述步骤4包含如下子步骤:
步骤4.1:将Local Scenario局部共通脚本中的scenario共通脚本段,放到Scenario Library通用脚本库对应的层级;
点击!include.FrontPage.IntegrationTest.ScenarioLibrary.MapPutDemo右侧的“?”,进入MapPutDemo的Scenario Library静态页,输入脚本段;
步骤4.2:删掉上层自动化测试脚本中的Local Scenario脚本段。
所述步骤1细化说明,如下为wiki脚本:
!|script|IntegrationTestFixture|${DB_ADDRESS}
|${DB_USERNAME}|${DB_PASSWORD}
|${DB_PORT}
|${BOOT_STRAP_SERVER}
|${NACOS_SERVER_ADDR}
|${NACOS_NAMESPACE}
|${REDIS_HOST_AND_PORT}
|${REDIS_PWD}
|${DEFAULT_ZONE_EUREKA}
|${SSH_HOST_AND_PORT}||
|$mapName=|mapPut;|param1|a|
|$mapName=|mapPut;|$mapName|param2|b|
|$list=|listAdd;|a|
|$list=|listAdd;|$list|b|
|$mapName=|mapPut;|$mapName|param3|$list|
|$json=|toJsonString;|$mapName|
|assertEquals;|{"param3":["a","b"],"param1":"a","param2":"b"}|$json|
所述步骤2细化说明,如下为wiki脚本:
!*>”'Local Scenario”'
!|scenario|mapDemo|value1||value2|
|$mapName=|mapPut;|param1|@value1|
|$mapName=|mapPut;|$mapName|param2|@value2|
|$list=|listAdd;|@value1|
|$list=|listAdd;|$list|@value2|
|$mapName=|mapPut;|$mapName|param3|$list|
|$json=|toJsonString;|$mapName|
*!
!|script|IntegrationTestFixture|${DB_ADDRESS}|${DB_USERNAME}|${DB_PASSWORD}|${DB_PORT}|${BOOT_STRAP_SERVER}|${NACOS_SERVER_ADDR}|${NACOS_NAMESPACE}|${REDIS_HOST_AND_PORT}|${REDIS_PWD}|${DEFAULT_ZONE_EUREKA}|${SSH_HOST_AND_PORT}||
|mapDemo;|a|b|
|assertEquals;|{"param3":["a","b"],"param1":"a","param2":"b"}|$json|
所述步骤3细化说明,如下为wiki脚本:
在http://ip:port/FrontPage.IntegrationTest.ScenarioLibrary创建一个ScenarioLibray路径:
!include.FrontPage.IntegrationTest.ScenarioLibrary.MapPutDemo;
所述步骤4细化说明,如下为wiki脚本:
点击!include.FrontPage.IntegrationTest.ScenarioLibrary.MapPutDemo右侧的“?”,进入MapPutDemo的Scenario Library静态页,输入以下脚本段:
!|scenario|mapDemo|value1||value2|
|$mapName=|mapPut;|param1|@value1|
|$mapName=|mapPut;|$mapName|param2|@value2|
|$list=|listAdd;|@value1|
|$list=|listAdd;|$list|@value2|
|$mapName=|mapPut;|$mapName|param3|$list|
|$json=|toJsonString;|$mapName|
然后删掉上层自动化测试脚本中的
!*>”'Local Scenario”'
!|scenario|mapDemo|value1||value2|
|$mapName=|mapPut;|param1|@value1|
|$mapName=|mapPut;|$mapName|param2|@value2|
|$list=|listAdd;|@value1|
|$list=|listAdd;|$list|@value2|
|$mapName=|mapPut;|$mapName|param3|$list|
|$json=|toJsonString;|$mapName|
*!
所述步骤5包括:
上层自动化测试脚本,对Scenario Library的scenario调用,通过|mapDemo;|a|b|一行脚本即可实现,更能通过scenario调scenario的方式,脚本量大幅度缩减。
实际操作中,自动化测试脚本中前置条件的数据,均可用过调用scenario,实现数据准备的需求。该方案亦可实现脚本健壮性提升,使同一套自动化测试脚本Run(运行)在多套环境。
图1是FitNesse框架数据驱动的通用脚本库运行流程图,具体步骤如下:
1、TestCase1(用例脚本1)调ScenarioA第一个通用脚本段;
2、Scenario A调Scenario B,Scenario B调Scenario C等;
3、逐行执行Scenario通用脚本行,当前脚本行执行成功,则执行TestCase1的下一行脚本;
4、待TestCase1执行完毕,执行下一个case脚本TestCase2;
5、Scenario通用脚本只要有一行执行失败,就直接执行下一个TestCase2。
图2是数据驱动的通用脚本库方案结构图。
1、Test Suite(用例集)中存在多个Test Case(用例脚本);
2、Test Case用例脚本调用Scenario Library通用脚本库中的scenario通用脚本;
3、Scenario Library中存在多个scenario通用脚本,scenario和scenario之间可存在调用关系,由此组成了通用脚本库,服务于上层的Test Case。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (9)
1.一种基于FitNesse框架的数据驱动脚本库的方法,其特征在于,包括:
步骤1:启动FitNesse框架,编写贴合预设自动化规范的测试脚本;
步骤2:在测试脚本上方添加局部共通脚本作为参数化的共通脚本,在测试脚本正文调用局部共通脚本中的共通脚本段接口;
步骤3:共通脚本段接口调用调通后,在通用脚本库创建层级结构;
步骤4:将局部共通脚本中的共通脚本段放到通用脚本库对应的层级,上层测试脚本自动导入通用脚本库;
步骤5:在上层测试脚本中,对通用脚本库的共通脚本段采用一行参数化调用缩减脚本行数。
2.根据权利要求1所述的基于FitNesse框架的数据驱动脚本库的方法,其特征在于,通过java-jar方式启动FitNesse框架。
3.根据权利要求1所述的基于FitNesse框架的数据驱动脚本库的方法,其特征在于,基于FitNesse框架的数据驱动脚本库的方法,其特征在于,在上层测试脚本自动导入通用脚本库后,删掉上层测试脚本中的局部共通脚本段。
4.根据权利要求1所述的基于FitNesse框架的数据驱动脚本库的方法,其特征在于,共通脚本段和共通脚本段之间存在互相调用关系,多个共通脚本段组成通用脚本库,服务于上层测试脚本。
5.一种基于FitNesse框架的数据驱动脚本库的系统,其特征在于,包括:
模块M1:启动FitNesse框架,编写贴合预设自动化规范的测试脚本;
模块M2:在测试脚本上方添加局部共通脚本作为参数化的共通脚本,在测试脚本正文调用局部共通脚本中的共通脚本段接口;
模块M3:共通脚本段接口调用调通后,在通用脚本库创建层级结构;
模块M4:将局部共通脚本中的共通脚本段放到通用脚本库对应的层级,上层测试脚本自动导入通用脚本库;
模块M5:在上层测试脚本中,对通用脚本库的共通脚本段采用一行参数化调用缩减脚本行数。
6.根据权利要求5所述的基于FitNesse框架的数据驱动脚本库的系统,其特征在于,通过java-jar方式启动FitNesse框架。
7.根据权利要求5所述的基于FitNesse框架的数据驱动脚本库的系统,其特征在于,在上层测试脚本自动导入通用脚本库后,删掉上层测试脚本中的局部共通脚本段。
8.根据权利要求5所述的基于FitNesse框架的数据驱动脚本库的系统,其特征在于,共通脚本段和共通脚本段之间存在互相调用关系,多个共通脚本段组成通用脚本库,服务于上层测试脚本。
9.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011510507.3A CN112527465A (zh) | 2020-12-18 | 2020-12-18 | 基于FitNesse框架的数据驱动脚本库的方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011510507.3A CN112527465A (zh) | 2020-12-18 | 2020-12-18 | 基于FitNesse框架的数据驱动脚本库的方法、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527465A true CN112527465A (zh) | 2021-03-19 |
Family
ID=75001700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011510507.3A Pending CN112527465A (zh) | 2020-12-18 | 2020-12-18 | 基于FitNesse框架的数据驱动脚本库的方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527465A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294185A (zh) * | 2016-08-30 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 基于五层框架的自动化测试框架及方法 |
CN106326111A (zh) * | 2016-08-11 | 2017-01-11 | 浪潮电子信息产业股份有限公司 | 一种基于Fitnesse的网页页面和接口自动化测试框架 |
-
2020
- 2020-12-18 CN CN202011510507.3A patent/CN112527465A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326111A (zh) * | 2016-08-11 | 2017-01-11 | 浪潮电子信息产业股份有限公司 | 一种基于Fitnesse的网页页面和接口自动化测试框架 |
CN106294185A (zh) * | 2016-08-30 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 基于五层框架的自动化测试框架及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10409700B2 (en) | Flexible configuration and control of a testing system | |
WO2016177124A1 (zh) | 一种实现持续集成测试的方法及装置 | |
US9047413B2 (en) | White-box testing systems and/or methods for use in connection with graphical user interfaces | |
US10067858B2 (en) | Cloud-based software testing | |
US7966604B2 (en) | Web browser object based automatic testing method for web applications | |
US20140211021A1 (en) | Test system for evaluating mobile device and driving method thereof | |
US9594670B2 (en) | Managing software dependencies during software testing and debugging | |
CN101241467A (zh) | 一种面向Web应用的自动化白盒测试系统及方法 | |
CN109933521A (zh) | 基于bdd的自动化测试方法、装置、计算机设备及存储介质 | |
CN111858321B (zh) | 一种基于Xdotool的自动化测试方法 | |
US20050229161A1 (en) | Generic user interface testing framework with load-time libraries | |
CN108923997B (zh) | 一种基于python的云服务节点自动测试方法及装置 | |
US7783927B2 (en) | Intelligent processing tools | |
CN115658529A (zh) | 用户页面的自动化测试方法以及相关设备 | |
CN111414309A (zh) | 应用程序的自动化测试方法、计算机设备和存储介质 | |
US8904346B1 (en) | Method and system for automated load testing of web applications | |
CN103197947A (zh) | 脚本处理方法及装置 | |
CN110704315A (zh) | 一种嵌入式软件测试的故障注入装置 | |
WO2018040664A1 (zh) | 一种跨平台的驱动测试方法、装置及系统 | |
US20180348301A1 (en) | Systems and methods for testing an embedded controller | |
CN112035300A (zh) | 服务器bmc自动化测试系统、方法、存储介质、电子设备 | |
CN111984367A (zh) | 一种基于容器云平台的应用部署方法及系统 | |
CN112527465A (zh) | 基于FitNesse框架的数据驱动脚本库的方法、系统及介质 | |
CN113986263A (zh) | 代码自动化测试方法、装置、电子设备、存储介质 | |
CN115934559A (zh) | 表单智能测试系统的测试方法 |
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: 20210319 |