自动化测试笔记

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序人生 - ICP 备案和域名备案是一回事吗?区别是什么?

ICP备案和域名备案是两个不同的概念,ICP备案是指互联网信息服务提供者备案,也就是对于在中国境内提供互联网信息服务的网站必须进行备案登记。而域名备案是指将域名与网站的实际内容进行备案登记。 ICP备案是针对网站运营者的一种许可证,必须…

【Android测试】Appium是否适合用于模拟多指触控呢?

1 问题说明 对于 mobile app automation, ChatGPT4会推荐Appium作为底层的触控工具库;但是,我们一直感觉pyminitouch其实是更好的选择;那么,Appium是否适合用于模拟多指触控呢? 2 资料查询 2.1 Williamfzc: minitou…

pytorch调用gpu训练的流程以及示例

首先需要确保系统上安装了CUDA支持的NVIDIA GPU和相应的驱动程序。 基本步骤如下 检查CUDA是否可用: 使用 torch.cuda.is_available() 来检查CUDA是否可用。 指定设备: 可以使用 torch.device(“cuda:0”) 来指定要使用的GPU。如果系统有多个GPU&…

shell脚本之免交互

目录 一、Here Document 免交互 1、交互与免交互的概念 2、 Here Document 概述 二、Here Document 应用 1、使用cat命令多行重定向 2、使用tee命令多行重定向 3、使用read命令多行重定向 4、使用wc -l统计行数 5、使用passwd命令用户修改密码 6、Here Document 变量…

fastadmin导入excel并对导入数据处理

情景描述 fastadmin有自带的导入功能,但是不好用,它要求你的表格标题必须跟数据表的备注一致,而且拿到的数据是直接插入数据表,我们无法获取想要的数据并对数据进行处理;而且有时候我们只是想要单纯的读取文件功能&…

丰田再怼「纯电动」,抛出「30%上限论」背后的焦虑和矛盾

让传统车企「丢掉」燃油车的包袱,并不简单。一边是赚钱,一边是烧钱,如何平衡是一个不小的难题。 本周,丰田董事长丰田章男对外表示,其预测未来电动汽车的市场份额将只有30%。而在电动化进程中,丰田章男一直…

搭建nginx的RTMP服务器的步骤

搭建Nginx RTMP服务器涉及几个关键步骤,包括安装必需的依赖、下载和编译Nginx及RTMP模块、配置Nginx以支持RTMP流,以及启动Nginx服务。以下是Ubuntu 22.04上搭建Nginx RTMP服务器的详细步骤: 1. 安装编译依赖 首先,你需要安装一…

持续积累分享金融知识

持续积累分享金融知识 一、什么是两融余额?二、什么是量化?三、散户可以进行量化投资么? 一、什么是两融余额? 两融余额是指投资者在融资买入和融券卖出交易中,通过向券商借入资金或证券进行交易,并且在交…

【智慧农业】东胜物联温室监控系统硬件解决方案,自动化控制温室灯光、温湿度等

温室监控系统旨在提高智慧农业的工业生产率和效率。根据最近的一项研究,农业领域的物联网市场预计到2026年将达到约187亿美元。物联网技术包括自主耕作方法,帮助农场生产高质量的商品,并为农场经理提供最佳功能。某上市药企因业务需要&#x…

惊鸿一瞥-网络初识

💕"Echo"💕 作者:Mylvzi 文章主要内容:惊鸿一瞥-网络初识 一.网络的发展过程 网络的发展过程是循序渐进的,大致可以分为四个阶段: 单机时代->局域网时代->广域网时代->互联网时代 单机时代:就是每个机器之间…

[SwiftUI]使用UIActivityViewController来实现系统分享功能

在 SwiftUI 中,你可以使用 UIActivityViewController 来实现系统分享功能。由于 SwiftUI 目前没有直接提供类似的视图或修饰符,你需要使用 UIViewControllerRepresentable 协议来创建一个可以在 SwiftUI 视图中使用的 ActivityView。 首先,你…

BIO、NIO编程与直接内存、零拷贝

一、网络通信 1、什么是socket? Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是一组接口,一般由操作 系统提供。客户端连接上一个服务端,就会在客户端中产生一个 socket 接口实例,服务端每接受 一个客户端…

[机缘参悟-142] :一个软件架构师对佛学的理解 -6- 从计算机和数学的角度理解佛家的“因果”与十二因缘

目录 一、什么是因缘 1.1 佛家的因缘 1.2 佛家的因缘与因果轮回 1.2 从计算机角度理解因缘 1.3 从数学的角度理解因缘 二、佛家的十二因缘 2.1 大多数人的轮回 2.2 大多数人的的十二因缘轮回 2.3 十二因缘与三世因果的关系 2.4 十二因缘的现实意义 2.5 十二因缘与生…

Trie树数据结构——(字符串统计,最大异或对)

Trie树&#xff1a;是一种能够高效存储和查找字符串集合的数据结构 Trie字符串统计 思路&#xff1a; &#xff08;笔记来自AcWing 835. Trie字符串统计 - AcWing&#xff09; 代码如下&#xff1a; #include<iostream> #include<cstdio> #include<string>…

上位机图像处理和嵌入式模块部署(二进制图像的读写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们说过&#xff0c;对于图像处理而言&#xff0c;势必会涉及到文件的读写。但是不同格式文件的读写&#xff0c;这本身又是体力活&#xff0…

CodeFuse成功支持通义千问算法大赛,评测方案已开源

前段时间&#xff0c; 首届通义千问AI挑战赛成功举办&#xff0c;CodeFuse 为大赛提供技术支持&#xff0c;模型微调框架 MFTCoder 和 CodeFuseEval 评测框架为大赛保驾护航&#xff0c;助力大赛圆满完成。我们基于leetcode 阿里和蚂蚁最新面试题库建设了“模型赛马”在线打榜的…

GPT会对各类行业产生导致失业的冲击吗?

在OpenAI近期对ChatGPT进行的静悄悄更新中&#xff0c;推出了一项颠覆性的新功能——“对话中调用自定义聊天机器人”。这一变革允许用户在同一个对话流中灵活地切换并集成各个专业领域的自定义机器人&#xff0c;极大地增强了用户体验。 此前&#xff0c;OpenAI通过推出GPT应…

HTML入门

学习视频 初识HTML 什么是HTML HTML&#xff1a;Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; 超文本包括&#xff1a;文字、图片、音频、视频、动画等 HTML 5&#xff0c;提供了一些新的元素和一些有趣的新特性&#xff0c;同时也建立了一些新规则。…

从传统到智慧:文旅产业的数字化变革

随着科技的迅猛发展和数字化时代的到来&#xff0c;文旅产业正经历着一场前所未有的变革。传统的旅游模式和服务方式逐渐被智慧化的技术和应用所取代&#xff0c;为游客带来更加便捷、高效、个性化的体验。本文将探讨文旅产业如何从传统模式向智慧化转型&#xff0c;以及数字化…

springboot 集成 nacos (demo 版)

环境要求&#xff1a;本地安装 nacos&#xff08;windows版本&#xff09;&#xff0c;jdk 是 8&#xff0c;安装完还得在 nacos 上面配置一个 yaml 类型的配置文件&#xff0c;方便项目演示读取。 提示&#xff1a;如标题所示&#xff0c;本文只介绍如何从零到一的去集成 naco…