自动化测试笔记

本文介绍了CUCUMBER如何将自然语言转化为编程语言的测试代码,包括步骤定义、hooks、消除重复、WIP策略以及BDD在开发大型复杂业务系统中的作用。同时讨论了自动化测试的挑战,如UI变化、PageObjects设计和性能优化,以及Gauge这样的自动化测试工具的选择标准。

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 转换其他方式显示更容易。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

世风十三

你是个有品的人, :)

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

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

打赏作者

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

抵扣说明:

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

余额充值