自动化测试笔记

TDD 之 ATDD 之 CUCUMBER & BDD

 

CUCUMBER 可将人类自然语言转化为(Ruby, python, javascript, C#等)测试代码。

  • 可以传递参数,可打标签@tag进行分类管理,,

@login 

Scenario: …

   Given ...

   When ...

   Then ...

 

  • 可加钩子-HOOKS(Before() do ... end)

Before(‘@login’) do

   ...

end

 

  • 消除重复-DATATABLE

Scenario: login WordPress

Given open the login page

When login with users:

  | admin  | 123456      |

  | admin  |  admin123 |

Then login successful

  • 消除重复-OUTLINE

Examples: 

  | userName | Password | Login Result |

  • 消除重复-TRANSFORM(回调)

When login with user {“username”: “admin"}

 

特技1 WIP work in progress 一般不用,除非要发必杀技

#cucumber —wip

目的:自动化测试的有效性检测

测试过了,CI 挂了,而测试不过,则 CI 临时通过。

注解:将功能代码改错,预知自动化测试是失败的,所以如果自动化测试有效的话,就应该测试 failed 了才通过。

问题:改功能代码不是很费事吗?还要考虑修改哪里,以及检查哪些情况?比看自动化测试的代码是不是还慢?

 

数据管理:OUTLINE + TRANSFORM

 

最难的是抽象 Scenario 的方式,两种风格:

一、纯业务的方式写。

二、以一个真实的使用者来一步步写测试。

 

BDD

开发大型复杂业务系统软件的问题:

主要:知识传递

其次:正确验收

解决方案:BDD(但开发与维护成本相对较高,对于较大项目和人员参与时,会相对有效。)

成本高的原因是:DSL 需要自己开发的语言

 

客观原因是:业务人员和 QA 人员读不懂开发人员的代码,而相对较容易理解 BDD 的 DSL 语言。

 

TDD —> ATDD 验收测试驱动开发,包括(BDD, FDD, CDCD, EDD)Behavior, Feature, Example

万法归宗:测试驱动开发

 

BDD 金字塔

BDD 是一个概念,要解决什么问题,要付出什么代价。

核心是什么?产品愿景——产品的商业价值——用户和干系人如何能交付——软件帮用户做什么——从一个 feature 中划分 Stories

应用 BDD 时需考虑人力成本,低的话不用,高的话就需要考虑使用。

 

QA Server 所有 Scenario 的集合,所有 DSL 的集合。

测试环境的原则:所有 Scenario 的环境应该相互不影响的,环境需要重置非常快。

 

参考资料:

https://cucumber.io/

《Specification by example》

 

移动 APP 的自动化测试

手工测试:引擎——人

自动化测试:引擎——Appium > Calabash

Appium自动化测试框架,跨平台,可录制,类似 Selenium 的功能。

  • Locator 定位器
  • Actor 执行器

 

各移动设备屏幕不同,而定位可通过 screen 的百分比来定位,或相对当前元素的位置来定位,还有滑动 swipe 、长按 longPress 的操作等。

 

UI 自动化测试最大的问题是:UI 会经常变化,使得自动化测试非常脆弱。

 

Page Objects

将业务操作封装为Page Object里的一个方法

class LoginPage 内部定位元素操作等。

Dev在开发 UI 界面时,更新 Page Object 中的元素定位器。

 

健壮性:

  • 异步加载:
    • 解决方案:反复轮询,设置 timeout 时长。因为不清楚网络延时会有多长。
  • 动画处理:如 启动动画时间过长
    • 解决方案:使用 Wait,因为一般动画是固定长度的。
  • 同 id 元素:
    • 使用 Xpath 结合父节点等来定位。

 

BA:业务需求描述,如 AC

QA:自动化用命,如 Feature

Dev:业务语句的代码

 

https://

 

自动化测试就是要减少时间。

 

Gauge 自动化测试工具,由 ThoughtWork 研发,类似 cucumber

轻量的测试工具,

TDD —— BDD —— Guage

cucumber 可以用中文写

我们需要一个什么样的工具?

  • 简单易用的
  • 可维护的
  • 可定制的
  • 迅速的

http://getgauge.io

  • 跨平台的测试框架
  • 是 BDD 的
  • 使用 markdown 语法,易于理解
  • 支持各种语言实现脚本:C#, ruby, java
  • 支持模块化的插件体系结构
  • 语言实现的一致性
  • 开源
  •  

 

/install.sh

gauge —install html-report

gauge —init java

 

使用 golang 开发,而 cucumber 使用 ruby 实现,性能上 gauge 会更高。

语法更简单,使用 markdown 转换其他方式显示更容易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世风十三

你是个有品的人, :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值