`
我是温浩然
  • 浏览: 104207 次
文章分类
社区版块
存档分类
最新评论

使用cucumber ,想把一个完整的流程,写成一个可执行的自动化测试脚本,应该如何划分 Scenario

 
阅读更多

本着有好东西共享的原则,先跟你们说一个,可以在线进行自动化测试的网站,是阿里云的。

http://fts.aliyun.com/index.htm(云叔,给点广告费呗)


我这里举例用到的流程,就是上一篇博客中的流程图 ,流程名称是: 纸质图书



首先,你要明白,自动化测试,是为了 代替人工,让测试更方便的。


但是,有些地方却是 不能代替的。比如,流程中的 审批 退改 和 审批 不通过 。 因为 我不知道 如何在一个 脚本中,同时定义审批通过,和审批不通过。

但是,可以单独写 审批退改 或者,审批不通过 的脚本


Scenario ,可以理解为,测试单元, 一系列的操作,以达成某目的。

在Scenario 中,有一系列的 步骤,每个步骤,可以理解为方法 。在方法中,会进行一系列的操作。

本博客最后,上传 实现流程图的 feature 文件。


在一个完整的流程 中, 如何根据流程节点来 划分 Scenario 。


如果一个很简单的流程 ,只有一条主线,从头到结束, 可以直接写 一个 Scenario .

但是,当流程非常复杂的情况下。
又分下面这几种情况。


1、 fork 和 join 。

fork 下面的 流程分支,是并发执行的 ,我的流程图中,fork 下面出现四个分支,就会分出 4个流程。

fork 下 所有的分支,都是必须执行的流程,因此,每条流程,无论复杂程度,都必须单独做 Scenario 。



2、 根据选项不同,走不通的流程。 比如,流程中 是否需要签订合同 分支 下 的 书稿初审 任务节点 。

这5条流程路线,只会执行一条,其他4条并不执行,而这5条流程线,分为三种情况,所以,我会再 启动三个Scenario 。

因此,流程出现判断时,会设定一些条件,当满足这些条件,会选择执行流程 ,即,选择执行Scenario 。








在流程中,并不是必须 分成多个 Scenario 。你完全可以做一个 Scenario 解决所有的问题。


分成不同的 Scenario ,是为了更方便流程的 思路,和逻辑, 以及 用更少的判断代码。


为啥说,更少的判断代码呢。

比如,流程中的 四改 ,如果我想测试 四改流程节点 ,则必须满足 是否四改(是) 是否三改(是) 是否一校付型 , 这 三个判断节点。 所以,判断条件,是会越来越多的。 但是,如果我 新启动一个Scenario ,则,只需要在 Given 中,设置 满足条件就可以了 ,当满足条件,继续执行 此Scenario ,不满足,报错并退出。


判断的业务逻辑,特别复杂的,就是这两个节点 社领导三审 和 书稿三审。


你想,我得满足什么条件,才能 正确的执行到这个节点?



feature 文件,是 cucumber 的,不懂cucumer 用法,百度搜一下,很简单。

或者看下一篇博客介绍。



# 编务管理 - -  纸质图书 测试用例
#纸质图书  编务流程测试。
# 用户名  xufei   密码   xufei
#*************************************************************
#*                                                           *
#*                                                           *
#*                         纸质图书                          *
#*                                                           *
#*                                                           *
#*************************************************************
#流程中,所有需要   手动录入数据的步骤  ,都在这里面配置,而其他的流程节点,包括   自动任务,java任务等  ,
#则存在,
#  1、可能在当前流程节点,需要进行 配置校验 方法  ,选择判断走哪条流程节点。
#  2、也可能不配置任何方法。


#     流程每进行一步的所有操作,都 包含到 每个方法中进行声明 ,其中包括。
#    input 输入框 输入,
#    select 选择框,
#    button
#    以及,切换iframe,切换table ,等等。



#法律社项目,编务测试用例
Feature: 法律社项目,编务测试用例
	#纸质图书测试

Background:
  #background 方法,均在 base.setp.js 中定义
  Given 用户名 "xufei" 密码 "xufei" 登录系统
  Then 打开我的任务
  Then 打开待办事项
  Then 打开所有任务

# bw-zzts-1.setp.js
@first
Scenario: 从新建立项申请,到立项确认
  #创建选题立项
  Given 创建选题立项
  #新建立项申请   新建立项申请     是否签订合同  ,是否有补贴款,是否属于丛书   ,都影响 流程步骤,需要标明,当前测试用例,用的是哪些条件。
  # 新建立项申请   选择分类,  分类 1、2、3、4  是根据分类 1 不同,选择是否显示的,我只写 我测试用的,其他需要的,以后补充  到  bw-zzts.pages.js  ctrl +  f (分类 tab 页元素)  ,我选择的分类是,1、引进版图书  和 2、中图分类法 - - 农业科学 - - 林业
  #
  #其中,分类4,是 自动补全 ,自动补全查看 xpath 的方法,参考博客。  http://blog.csdn.net/u012246342/article/details/52857971
  When 新建立项申请
  #丛书责任人意见
  Then 丛书责任人意见
  #分社长意见
  Then 分社长意见
  #中法图意见
  Then 中法图意见
#  #社领导意见
  Then 社领导意见
#  #选题论证会
  Then 选题论证会
#  #立项确认
  Then 立项确认


# bw-zzts-2.setp.js
@first
Scenario: 编辑发设计要求 到 责编意见
#编辑发设计要求 中,
#必填字段
#成品尺寸,如果选择其他,则 特殊尺寸,需要必填 。
#开本,如果选择其他,则 特殊开本 , 需要必填。
#是否有勒口,如果选择是,则 勒口尺寸,需要必填。
  When  编辑发设计要求
  Then  美编设计
  Then  责编意见

#
# bw-zzts-3.setp.js
@first
Scenario: 是否有原稿  到   图书定价印数折扣通知单
  When  社内排出原稿
  Then  送社外排出原稿
  Then  原稿加工
  Then  社外排版
  # 一排 流程 下  , 是否直接付型  ,是由  一排选择的二级加急决定。
  Then  一排


#一校级以下情况,需要  是社内校对,且  否二级加急前提。因此拆出单独scenario
@first
Scenario: 一校流程
  When  社内校对,并且不是二级加急
  Then  一校
  Then  申请一校付型
  Then  二改
  Then  二校
  Then  三改
  Then  三校
  Then  四改
  Then  四校

  Then  退排版
   #核红  代码出现问题。
  Then  核红
  Then  付型整理
  Then  责编确认
  Then  责任印制确认

#
# bw-zzts-4.setp.js
@first
Scenario: 是否一级加急  到  申领书号
  When  是否一级加急
  Then  填写一级加急申请
  Then  分社长审批
  Then  社领导审批
  Then  申领书号
  Then  申请CIP
###


#*************************************************************
#*                                                           *
#*                                                           *
#*             下面属于   bw-zzts-5.setp.js                  *
#*                                                           *
#*                                                           *
#*************************************************************
## bw-zzts-5.setp.js
##************************************* 是否需要签订合同  到   图书定价印数折扣通知单 ************************************************************************************************************************************************
@first
Scenario: 是否需要签订合同  到   图书定价印数折扣通知单
  When  签订合同
  Then  书稿初审
#******************************************** 书稿初审 选择 一审情况  一审情况,有三种子 分支     从  书稿初审 (一审情况) 到     三审结束(是否有补贴款)  ******************************
# 一审情况 分支1
@first
Scenario: 编校部编辑加工
  Given 是否属于编校部编辑加工
  When  编校部编辑加工
  Then  内编审核
  Then  外编审核
  Then  编校部编辑确认审核
  Then  书稿一审
  Then  填写发稿单
  Then  分社长判断二审
  Then  书稿二审
  Then  分社长指定二审
  Then  书稿一审 的 社领导三审
  Then  书稿一审 的 书稿三审

#
# 一审情况 分支2
@first
Scenario: 责编一审 和 责编委托一审
  Given 责编一审 和 责编委托一审
  When  书稿一审
  Then  填写发稿单
  Then  分社长判断二审
  Then  书稿二审
  Then  分社长指定二审
  Then  书稿一审 的 社领导三审
  Then  书稿一审 的 书稿三审
#
#
##
### 一审情况 分支3
@first
Scenario: 社内文编一审  和  编校部委托一审
  Given 社内文编一审  和  编校部委托一审
  When  选择一审内外编
  Then  内编一审
  Then  外编一审
  Then  责编填写发稿单
  Then  编校部判断二审
  Then  编校部再议二审
##
###一审情况 中,   内编二审  和  分社长二审  情况太多,流程太乱,因此 再分 scenario   分别为两种情况 1 、内编二审   2、分社长判断二审
##**************************************一审情况,分支3 ******************************************
#1 、内编二审
@first
Scenario: 选择一审内外编 且 内编二审
  Given 选择一审内外编 且 内编二审
  When 内编二审
  Then 判断三审
  Then 一审内外编 的 书稿三审
  Then 一审内外编 的 社领导三审

#
##2、分社长判断二审
@first
Scenario: 选择一审内外编 且 分社长判断二审
  Given 选择一审内外编 且 分社长判断二审
  When  分社长判断二审
  Then  书稿二审
  Then  分社长指定二审
  Then  一审内外编 的 社领导三审
  Then  一审内外编 的 书稿三审
##**************************************一审情况,分支3 ******************************************
##
##
###********************************************   从  书稿初审 (一审情况) 到     三审结束(是否有补贴款)  **********  end  ********************
#
@first
  Scenario: 有补贴款,并且,未领取补贴款 sfybtk:'是' && sfylqbtk:'否'
  Given 是否等待补贴款
  When 等待补贴款
#
#
@first
  Scenario: 不是一级加急,在 是否需要签订合同 流程后,执行 申领书号和申请CIP
  Given 不是 一级加急,不提前申领书号
  Then 申领书号
  Then 申请CIP

#
##************************************* 是否需要签订合同  到   图书定价印数折扣通知单  **********************  end  **************************
#
#*************************************************************
#*                                                           *
#*                                                           *
#*                        end                                *
#*                                                           *
#*                                                           *
#*************************************************************






## bw-zzts-6.setp.js
##图书定价印数折扣通知单  到  填写发印单
#@first
#Scenario: 图书定价印数折扣通知单  到  填写发印单
#  When  图书定价印数折扣通知单
#  Then  分社长审核图书定价印数折扣通知单
#  Then  社领导审核图书定价印数折扣通知单
#  Then  填写发印单
#


## bw-zzts-7.setp.js
#@first
#Scenario: 检查样书印装  到  end
#  When  检查样书印装
#  Then  检查样书内容及印装
#  Then  修改样书错误
#  Then  印务确认



分享到:
评论

相关推荐

    自动化测试脚本

    这意味着一个完善的自动化测试套件不仅包括正常流程的测试,还包括异常处理、边界输入、压力测试等多方面的测试用例。完备的测试脚本有助于发现潜在的bug,提高软件质量。 三、自动化测试脚本的优势 1. 提高效率:...

    计算机自动化测试脚本写作模板

    9. **参数化**:利用参数化技术,一个测试脚本可以应对多种输入数据,增强测试的灵活性和覆盖范围。 10. **回归测试**:每次修改代码后,自动化脚本应执行回归测试,确保新增或修改的功能没有破坏现有的功能。 11....

    自动化测试平台cucumber框架兼容APP,WEB,API

    Appium是一个跨平台的测试框架,允许使用Cucumber编写测试脚本来控制iOS和Android设备。通过这种方式,开发者可以模拟用户交互,检查应用程序的功能和性能。 **在WEB测试中的应用**: 在Web测试中,Cucumber可以与...

    自动化脚本集合

    自动化脚本集合是一个珍贵的资源,它包含了使用RUBY编程语言和ITAF框架编写的自动化测试脚本。这个集合对于那些在IT行业中从事自动化测试工作的人来说尤其有价值,因为它们可以帮助提高工作效率,减少手动测试的工作...

    自动化软件测试书籍

    自动化软件测试的主要目的是减少手动测试的工作量,尤其是在回归测试阶段,通过编写可重复执行的测试脚本,能够快速验证软件的修改是否引入了新的错误。它涉及到多种技术和方法,如单元测试、集成测试、系统测试和...

    自动化测试框架

    自动化测试框架是一种用于组织和执行自动化测试脚本的结构。它提供了一系列的方法、工具和技术,使得测试人员能够高效地编写、维护和执行自动化测试。自动化测试框架通常包括以下几个关键组成部分: - **测试数据...

    cucumber自动化测试官方教程

    在Java平台上使用Cucumber进行自动化测试,首先需要创建一个Maven工程,并在`pom.xml`文件中引入Cucumber的相关依赖。创建Cucumber项目的一个便捷方式是使用`cucumber-prototype` Maven插件。在终端中,导航至想要...

    自动化测试框架基础指南.pdf

    线性自动化框架是自动化测试的第一种类型,使用一种顺序执行测试用例的方式进行测试。线性自动化框架简单易用,但不能满足复杂的测试需求。 八、自动化框架在测试中的应用 自动化框架在测试中扮演着非常重要的角色...

    自动化测试培训教程

    自动化测试作为一种软件测试方法,其核心在于使用软件工具自动执行预先编写的测试脚本,并对软件应用程序进行检查,以发现程序中的缺陷。 自动化测试的主要优点包括:提高效率,通过自动化执行重复性的测试任务,...

    自动化生成支持cucumber,Rspec的Rails(持续更新中)

    标题 "自动化生成支持cucumber,Rspec的Rails(持续更新中)" 暗示了这个压缩包文件的内容可能涉及使用Cucumber和RSpec这两种自动化测试工具在Ruby on Rails框架下的集成和配置。Cucumber是一种行为驱动开发(BDD)的...

    java自动化测试

    Java自动化测试是软件开发过程中一个重要的环节,它利用编程语言如Java来实现测试脚本,以提高测试效率,减少人工错误,并确保软件质量。在Java自动化测试中,我们通常会用到一系列工具和技术,包括单元测试、集成...

    [零成本实现Web自动化测试-基于Selenium和Bromine].温素剑.扫描版

    3. **Selenium WebDriver**:Selenium的核心部分,允许开发者编写可跨浏览器运行的自动化测试脚本。WebDriver与浏览器直接通信,提供更接近真实用户行为的测试体验。 4. **Bromine**:Bromine是基于Selenium的一个...

    selenium-cucumber-java:用于编写自动化测试脚本以测试 Web 应用程序的行为驱动开发 (BDD) 方法。 http

    selenium-cucumber 是一种行为驱动开发 (BDD) 方法,用于编写自动化测试脚本来测试 Web。 它使您能够编写和执行自动化验收/单元测试。 它是跨平台、开源和免费的。 以最少的编码自动化您的测试用例。 文档 编写测试 ...

    cucumber-automation:这是一个Cucumber自动化测试框架演示

    Cucumber自动化测试框架是一个强大的工具,尤其在JavaScript领域中,它被广泛用于行为驱动开发(BDD)。这个项目,"cucumber-automation",显然旨在展示如何利用Cucumber进行自动化测试。Cucumber以其易读性著称,...

    移动APP自动化测试框架对比

    本文将重点对比分析几种常用的移动APP自动化测试框架,涵盖iOS和Android两大主流操作系统,旨在为读者提供一个全面、深入的理解。 ### 一、移动APP自动化测试概述 移动APP自动化测试是指利用特定工具或框架自动...

    基于cucumber的BDD实现【java、pythion】

    在实现简单的UI自动化测试方面,Cucumber不仅可以用于测试后端逻辑,还可以与Selenium等自动化测试工具结合,用于编写前端的自动化测试脚本。使用Cucumber进行UI自动化测试的步骤通常如下: 1. 首先编写Feature文件...

    watir 自动化测试相关

    这时,AutoIt可以作为一个补充,帮助完成这些非Web界面的操作,进一步扩展了自动化测试的覆盖范围。 **Watir的特性** 1. **跨浏览器支持**:Watir支持多种主流浏览器,如Chrome、Firefox、IE、Safari等,允许测试...

    testng+cucumber+appium移动端自动化测试框架

    一个包含了testng+cucumber+appium的移动端自动化测试框架。 附件包含一个ieda工程以及appium需要的node.js和appium windows安装包 运行还需要jdk。请自行下载。 demo中使用了系统自带的计算器进行自动化测试。不同...

    基于Ruby的Web自动化测试框架平台应用.rar

    在Web测试中,Ruby提供了多种强大的框架,如Selenium WebDriver、Cucumber和RSpec,这些工具可以帮助开发者和测试人员编写可重复执行的自动化测试脚本,以确保Web应用程序的质量和稳定性。 Selenium WebDriver是...

    软件测试自动化(一)

    软件测试是为了发现软件中的错误、缺陷和遗漏,而自动化测试则是通过使用专门的软件工具来执行这些测试,以替代手动执行。它能够显著减少重复劳动,提高测试覆盖率,并且在回归测试中尤为有效。 自动化测试通常分为...

Global site tag (gtag.js) - Google Analytics