• 0
  • 0
分享

最新一期TW的技术雷达上出现了一款端到端的开源测试神器Cypress,号称是不懂代码的测试人员、业务人员都可以使用,同时还不依赖于已经是端到端测试扛把子的Selenium,CC先生很好奇,以下是开箱试用报告: 1. 安装cypress https://www.cypress.io/ cypress官网下载,Windows下的安装包大概有233M,下载耗费时间依赖于你的网速咯。 也可以直接到github的cypress项目下获取 : https://github.com/cypress-io/cypress Windows下解压后点击cypress的安装文件,一路默认,直到出现以下画面:

1.jpg

1)打开cypress客户端, 点击箭头位置,通过资源管理器选择/CypressTest目录或者新建一个目录名称为CypressTest(此处为自己取的名字,你也可以写其它名称)

2)如果/CypressTest目录下没有cypress目录,那么cypress就会在CypressTest目录下新建cypress目录,并初始化一些文件

2.jpg

想使用npm安装的小伙伴先要需要配置node的环境。(此环节可Google)

1.初始化cypress 安装完成后安装目录下有一个cypress目录和cypress.json的配置文件,cypress目录下的结构如下:

|-- fixtures

|-- integration

|   `-- example_spec.js

|-- plugins

|   `-- index.js

`-- support

|-- commands.js

`-- index.js

fixtures 文件夹存放自定义 json 文件,integration 文件夹编写测试,plugins 和 support 是非必须使用的文件夹,需要自定义指令的时候会用到。

2.运行Cypress 可以点击examples里的任意一个js文件,它会单独打开一个浏览器并开始执行。下图是执行了actions_example.js的情况。

3.jpg

3.编写一个测试用例 设计一个常见的登录功能的测试流程

4.访问某个页面

5.查找DOM进行交互,例如输入,点击,选择之类

6.进行断言 

describe('InfoQ登录测试', () => {
  it('登录页面', () => {
  cy.visit('https://account.geekbang.org/infoq/signin?redirect=https%3A%2F%2Fwww.infoq.cn%2F')
  cy.get('input[name="cellphone"]').eq(0).type('18013457889')
  cy.get('input[name="password"]').eq(0).type('password')
  cy.get('input[value="登录"]').click()
  cy.get('body').should('contain', 'Bad login')
  })
  })

运行后得到以后结果:

4.jpg

可以看到以上的运行结果时有错误的提示,出错的地方来自于DOM中"登录"按钮没有被识别到。 具体的可参考: https://docs.cypress.io/guides/core-concepts/interacting-with-elements.html# 这个就当课后作业了。

以下给一个进阶版的脚本,大家可以运行一下看看效果:

 describe('should display a correct error message when you enter wrong login information', function () {
  before(function () {
  cy.visit('https://www.amazon.com/')
  })
  var randomEmail = Math.random();
  var randomPassword = Math.random();
  it('displays a correct error message', function () {
  cy.get('#nav-your-amazon').click()
  cy.get('#ap_email').type(randomEmail + '@gmail.com')
  cy.get('#ap_password').type(randomPassword)
  cy.get('#signInSubmit').click()
  cy.get('#auth-error-message-box').should('be.visible')
  })
  })

上面的代码涉及到了before函数的用法。cypress本身是支持before,beforeEach的这类测试套件的用法。


试用小结

Cypress感觉非常容易上手而且它使用了Mocha和Chai来写测试用例,已有Mocha和Chai使用经验的同学可以很容易转换,对于已经习惯使用Selenium+Python/Java的同学来说有没有必要一定要转过来需要进一步考虑一下,而且Selenium Grid对分布式的支持目前在Cypress上还没有看到很好的实现。

具体一点来说,喜欢Cypress的理由:

ocypress不使用Selenium:我们已经尝试过的大多数端到端工具都在使用Selenium,这就是为什么他们有几乎相同的问题。

ocypress很好地支持任何框架或网站:有数百个项目使用最新的React,Angular,Vue,Elm等框架。cypress在旧服务器渲染页面或应用程序上也同样有效。

ocypress测试只用JavaScript编写:虽然您可以从任何其他语言编译成JavaScript,但最终测试代码在浏览器内部执行。没有语言或驱动程序绑定 ,只有JavaScript。

o没有依赖关系,你把测试放在package.json中就是这样。

o与我们已经实验过的Selenium的端到端工具相比,cypress的运行速度要快得多。集成在CI中的时候速度的优势可以尽情体现。

o你的脚本的每一步都有屏幕截图,如果有任何错误的通过或失败的测试,这可能非常有用,所见即所得,这一点和以前大家用LoadRunner等老牌的商用工具的体验感是一样的棒,非常有利于调试!

o当然cypress也有一个明确的cyntax,容易阅读,从学习成本的角度出发大部分人都会喜欢它!


不喜欢cypress的理由:

o该结构与其他Selenium端到端工具不同,之前习惯使用其它E2E测试工具的使用者来说,您可能需要花费更多时间来理解结构并找到创建脚本的最佳方法。

o社区:由于cypress相对较新,社区规模较小。 你很难找到问题的答案等。

o特征: 没有文件上传支持。 没有跨浏览器测试。 谁知道什么时候会涵盖这些东西,对于大项目这些功能至关重要。

o页面对象模型。 这已经被时间证明了。 赛普拉斯支持一种可能引起争议的不同方法。

o它仅适用于一个客户端(语言),即仅适用于JavaScript。 因此,要使用它,您必须知道JavaScript:但是这可能是JavaScript应用程序的一个优势,同时也将是cypress的一个缺点。


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   顺丰集团宣布,顺丰国际与亚马逊海外购联合推出全新直邮服务,“为跨境电商和国际贸易的客户提供更加高效和便捷的物流服务”。  官方介绍称,全新的端到端顺丰国际直邮解决方案不仅可以提供更快速的国际物流服务,简化清关流程,还可实现更透明的全链路物流追踪。此次合作将大大缩短货物从美国到中国的运输时间(具体时间未说明),确保更多来自亚马逊全球运营中心的优质海外商品由顺丰在短时间内送达中国消费者手中。  亚马逊中国副总裁、亚马逊海外购中国及亚马逊新加坡电商负责人李岩川表示:  此次与顺丰国际合作推出的跨境直邮服务,是亚马逊海外购提升跨境物流体验的新一步。通过本次合作,亚马逊海外购将继续为中国消费者提供更...
            0 0 300
            分享
          •   一旦你的系统流量有大的增长,比如类似“双十一”的流量,那么你在面临性能问题时就可能会手足无措。为了解决后顾之忧,你需要了解在流量增长若干倍的时候,系统的哪些组件或者服务会成为整体系统的瓶颈点,这时你就需要做一次全链路的压力测试。  那么,什么是压力测试呢?要如何来做全链路的压测呢?这两个问题就是本节课重点讲解的内容。  什么是压力测试  压力测试(简称为压测)这个名词儿,你在业界的分享中一定听过很多次,当然了,你也可能在项目的研发过程中做过压力测试,所以,对于你来说,压力测试并不陌生。  不过我想让你回想一下,自己是怎么做压力测试的?是不是像很多同学一样:先搭建一套与正式环境功能相同的测试...
            7 7 1657
            分享
          •   应用场景:设想要集中测试一个Web服务器的性能表现, 我们用一台机器模拟上千个用户不断地访问被测试的服务器,可能会遇到一些瓶颈,模拟的用户不够,服务器设置了安全措施、拒绝接收(当有超量的数据来自同一台机器在短时间内,服务器就会认为这是外来的攻击行为),测试机的配置过低、不能完成上千个用户的请求。  解决方案:利用JMeter的分布式测试配置,就可以很轻松的解决上述问题。如下图所示,我们选择一台主机(Master),然后配置一些节点服务器(Slaves),主机发送测试运行指令,节点服务器在同一时间模拟用户对终端服器发送请求。这样总模拟的用户数量 = 单个节点用户数 * 节点服务器个数  学习...
            5 4 5165
            分享
          •   对业务指标的要求主要有:请求响应时间,最大并发量等等。  对系统资源的指标,如:资源使用率是指在系统负载运行期间,数据库服务器,应用服务器,web服务器的cpu,内存,硬盘,外置存储,网络带宽的使用率,低于20%的使用率为资源使用稳定,60%-80%的使用率表示资源使用饱和,超过80%的使用率的资源使用率必须尽快进行资源调整和优化。  1) 业务指标  2) 系统资源指标  根据测试目的不同,需要统的系统资源指标也不同。主要包括以下一些:服务器操作系统资源使用情况,各种服务器的资源消耗情况等等。  内存  Paging rate:内存页交换速率  如果该值偶尔走高,表明当前有线程竞争内存。...
            0 0 859
            分享
          • 概述记得2019年,微信支付出过一个故障,用户发起支付给了钱后,微信一直不回调,导致使用了微信支付的商家的订单都成了未支付状态了,如果业务系统设计的不好,那瞬间就会有大量的客诉出现。像下面的对话场景,我相信当时肯定非常的多:用户:我支付了好几次了,你说你没收到?别开玩笑了。 商家:我这边真的没收钱。然后心想:这家伙不会是想吃霸王餐吧?虽然像微信和支付宝这样的大牌支付平台,出大故障的几率比较少,但是也不得不防。下面列举几个支付问题以及对应的解决思路。第三方支付平台无法支付以微信为例子,像2019年微信支付出故障时,美团那边,是在APP侧,立刻将微信支付置灰了,引导用户使用支付宝支付,将损失和影响...
            0 0 2635
            分享
      • 51testing软件测试圈微信