端到端的测试(e2e)
端到端的测试(e2e)
端到端测试类似于系统测试,测试级的“宏大”的端点,涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。端到端架构测试包含所有访问点的功能测试及性能测试。从某种意义上来说,端到端架构测试实质上是一种"灰盒"测试,一种集合了白盒测试和黑盒测试的长处的测试方法。端到端架构测试所要求的单项功能和性能测试是在"测试自动化、执行和跟踪"阶段进行的。
- 单元测试旨在将每个组件与系统的剩余部分隔离开来,单独测试每个组件;而 e2e 测试则旨在对系统进行整体测试。这导致 e2e 测试更脆弱,因为它依赖更多因素,但从长远来看,它与单元测试同样重要。
- Angular 努力确保端到端测试从未开发应用的最开始就可用,具体方法是生成一些在首次生成应用时就位的基础基架(假设使用的是 Angular 命令行接口 [CLI] 工具)。由于项目根目录下的 e2e 目录包含运行端到端测试所需的代码,所以将在执行其他任何操作前先尝试一下:“npm run e2e”启动端到端测试
- 与单元测试工具不同,e2e 一直运行到测试通过才停止。意图是,单元测试工具应在开发期间几乎持续不断地运行,以验证“局部”是否正常运行,而端到端测试则只应在是时候验证是否不会出现回归时才运行。
- 默认测试只是验证已搭建基架的应用的“欢迎使用应用!”消息是否显示,所以第一项简单更改是将 AppComponent 的标题属性(请注意,从首次启动时起,此属性就位于 app.component.ts 中)更改为“SpeakerApp”,并检查它是否显示。(同时更改 app.component.spec.ts 中的单元测试。) 执行此更改并确保单元测试通过,再重新运行“npm run e2e”并记录故障。尽量记录故障。虽然浏览器关闭,但在其中运行“npm”的控制台窗口会(以红色)突出显示测试故障。
- 端到端测试使用 ProtractorJS 框架 (protractortest.org) 在“自动”模式下运行浏览器,用于启动 Protractor 的代码位于 app.po.ts 文件中。po的全称是“page object”(页面对象)实际上,页面对象表示可以在给定网页上执行的所有操作,因此,根据命名约定,app.po.ts 页面表示应用的主页。在编辑器中如下所示:
import { browser, by, element } from 'protractor';
export class AppPage {navigateTo() {return browser.get('/');}getParagraphText() {return element(by.css('app-root h1')).getText();}
}
//此处的代码不执行任何测试,这实际上是一堆仅起到端到端测试实用工具作用的代码。
//navigateTo 方法简化了在浏览器中显示此页面的过程
//getParagraphText 方法则直接使用 CSS 选择器从 DOM 中查找对应于应用根组件的 H1 元素,以提取标题文本,其实应名为 getTitleText。
- 打开 e2e 目录中的另一个文件 app.e2e-spec.ts:
import { AppPage } from './app.po';
describe('full-app App', () => {let page: AppPage;beforeEach(() => {page = new AppPage();});it('should display welcome message', () => {page.navigateTo();expect(page.getParagrahText()).toEqual('Welcome to app!');});
});
常规 Jasmine 测试格式(包含 describe 方法及其函数),并注意测试是如何启用并转到 AppPage 实例,再测试以确定段落文本是否符合预期的。我知道自己需要执行两项更改,
一项是使用重命名的 getTitleText 方法,
另一项是将文本更改为“欢迎使用 SpeakerApp”,以在标题中反映所做的更改。完成这些更改并调用“npm run e2e”后,一切又变正常了。
7. Protractor 主页上举例说明了一个相对简单的端到端测试(运行的
是“待办事项”列表应用),展示了如何
使用 CSS 选择器 (element(by.css(…))) 或
模型对象 (element(by.model(…))) 查找页面上的元素
通过 Angular 中继器 (element.all(by.repeater(…))) 抓取元素集合,然后可以根据需要对它们进行计数和单独检查。
可以通过 HTML 标识符 (by.id(…))和绑定来获取元素,即元素绑定到给定变量 (by.binding(…));
这些在 Protractor 文档中全都统称为 ElementFinders
- 在设置和运行 e2e 测试(且默认 Angular CLI 基架提供强大支持,假定提供了起点)后,编写 e2e 测试其实与编写其他任何测试相同:排列、操作、断言。鉴于这是基于 JavaScript 的环境,当然可以更改使用的测试框架(如果这样选择的话),但假设使用的是 CLI 提供的现成相同工具,就已经开始在编写整套 e2e 测试了。
- 由于 e2e 测试往往是更“宏观的”测试(它通常不只是测试一个页面或组件,而是测试全部一系列的步骤)和/或用户接受样式测试,因此使用页面对象通常有助于让测试更易于读取和(特别是)维护。请注意,UI 往往是在用户演示期间经常变化的元素之一,页面对象方法有助于最大限度地减少因用户更改所致的 e2e 测试“搅动”。
- 确保运行 e2e 测试也启用服务器,一种方法是,编写用于同时运行二者的批处理文件或 PowerShell 脚本;另一种方法是,直接编辑 Angular 生成的 package.json,让文件的“e2e”部分发出正确的 shell 命令,以启动 API 服务器的本地版本。(暂时可用。) 这样一来,就可以一直与 Angular CLI 约定保持一致。
- 假设服务器部件位于“服务器”子目录中只需让“npm run”发出“node server”命令,以进入服务器目录并发出“node .”,这足以启动 Loopback 位:
{"name": "full-app",// ..."scripts": {"ng": "ng","start": "ng server","build": "ng build --prod","test": "ng test","lint": "ng lint","e2e": "start node server & ng e2e"},// ...
}
“node server”前面的“start”是要告知 shell,将节点服务器脱离到单独的命令窗口中;负面影响是,导致服务器窗口在 e2e 测试完成后一直运行,但目前足够了。(如果这的确令你很头疼,请将这两个命令替换为批处理文件或 PowerShell 脚本,这样就可以两全其美了。) 现在,服务器已启动并运行,客户端可以开始调用它了。
端到端的测试(e2e)相关推荐
- SAP Spartacus Accessibility E2E 端到端测试
原文 Spartacus 中的可访问性有自己的一套端到端测试,这些测试位于 projects/storefrontapp-e2e-cypress/cypress/integration/accessi ...
- 端到端测试(e2e测试)
端到端测试:end to end测试,又称为e2e测试,可以看做一个自动化的测试脚本,其目的是模拟用户行为,通过自动的访问一个真实浏览器环境下的页面,对于页面上的任意操作,断言浏览器中发生特定的行为.
- E2E 端到端测试学习 - E2E 介绍、Cypress 案例基本使用
E2E 测试介绍 E2E E2E(end to end)端到端测试是最直观可以理解的测试类型.在前端应用程序中,端到端测试可以从用户的视角通过真实浏览器自动检查应用程序是否正常工作. E2E 把整个系 ...
- e2e test 端到端的测试
在进行学习的时候,遇到了一个新的知识点.总想来记录一下,学到老,活到老. e2e或者端到端(end-to-end)或者UI测试是一种测试方法,它用来测试一个应用从头到尾的流程是否和设计时候所想的一样. ...
- unit单元测试和e2e端到端测试的区别
前端实现自动化就要借助到unit和e2e端到端测试了 一.unit测试 站在程序员的角度测试 unit测试是把代码看成是一个个的组件.从而实现每一个组件的单独测试,测试内容主要是组件内每一个函数的返回 ...
- 测试你的前端代码 - part3(端到端测试)
本文作者:Gil Tayar 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58d50da37413fc2e8240855c ...
- 使用.NET Core 编写端到端测试
什么是端到端测试 端到端测试也称E2E,与单元测试.集成测试.组件测试.契约测试相比,端到端测试的目的是验证整个系统是否满足业务目标,而不管使用的组件架构如何,为了实现这一点,系统被视为一个黑盒子,测 ...
- java maven restful_使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架...
额外的话: 我会非常感激如果您在读本文的时候 Follow 文中的操作步骤在你的环境中实践本文所讲内容, 我保证这个过程不会非常复杂, 即便加上你研究代码的时间也不需要超过 15 分钟 和传统后端页面 ...
- 如何使用Postman和Newman在CI环境中自动化REST API端到端测试
Postman is a great tool to explore REST APIs. You can build requests and try them out to get quick f ...
最新文章
- 除了计算机中的二进制还有哪些进位制,除了十进位制还有什么进位制
- 如何站在使用者的角度来设计SDK-微信公众号开发SDK(消息处理)设计之抛砖引玉...
- C#操作SQL Server通用类
- Chrome浏览器取代火狐的十大理由
- core data firing fault
- 在ASP.Net中两种利用CSS实现多界面的方法(转)
- 二〇二二注定是踔厉奋发、笃行不怠的一年
- request.GetResponse()超时的解决办法
- Drool规则引擎详解(转)
- QQ音乐歌曲解析API接口
- c语言令牌桶原理,令牌桶算法及实现(二)
- 照片怎么转PDF格式?这两个方法快来学习下
- 百度世界2020技术“大阅兵”背后的营销战役
- Steinitz exchange lemma
- SSL-ZYC 2124 涂色
- 人工智能为代表的新一轮科技革命和产业变革正在重构全球创新版图
- 家庭用服务器的作用,家庭网络存储服务器四大主要功能
- 压力测试相关概念与性能指标以及压测实例
- SWF Decompiler/Parser/Creater Comparison(opensource)
- 现代信号处理——参数估计理论(最小二乘估计)
热门文章
- Android拦截短信并屏蔽Notification
- 低代码适用于哪些应用开发场景
- java 图片 哈希值_上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中...
- java知识总结-1
- 一文读懂贝叶斯推理问题:MCMC方法和变分推断
- video4linux--4
- python 代码实现短信发送
- 【UCOSIII操作系统】系统初始化篇(2)CPU,SysTick,内存初始化
- Stable Diffusion - Stable Diffusion WebUI 图像生成工具的环境配置
- 【2019.06.16】Django + 微信小程序 实现微信小程序1——小程序基本信息,开发规范