Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

浅谈端到端测试 #59

Open
fayeah opened this issue Apr 22, 2022 · 0 comments
Open

浅谈端到端测试 #59

fayeah opened this issue Apr 22, 2022 · 0 comments

Comments

@fayeah
Copy link
Owner

fayeah commented Apr 22, 2022

测试金字塔

image

测试金字塔用于帮助开发人员和测试人员创建高质量应用的框架,其能够迅速帮助鉴别、定位bug,创造更加可靠的产品。其特性包括自动化、不同测试的顺序和频率和及时给出反馈。从图中可以看出,测试金字塔含有:

  1. 单元测试
  2. 集成测试
  3. 端到端测试

同时也可以看出从底层到上层测试成本越来越高、复杂度也越来越高。

端到端测试 VS 单元测试

image

对于前端测试开发来说,常见的是单元测试和端到端测试,我们来做一个对比:

  • 功能角度:端到端主要测试软件的工作流程,而单元测试主要是对功能实现进行验证;
  • 系统角度:端到端结合当前系统和关联系统,而单元测试模块是互相独立的;
  • 成本角度:端到端成本较高,而单元测试成本较低;
  • 顺序角度:端到端一般在其他测试之后,而单元测试发生在最开始阶段;
  • bug角度:端到端不容易寻找问题产生的原因,而单元测试却很容易;
  • 业务角度:端到端需要对所有相关系统有熟悉的业务知识,而单元测试无此要求;

什么是端到端测试

在真实场景中从头到尾执行测试整个应用程序 (类似生产场景),测试应用程序流是否按照设计的方法,例如与数据库、网络、硬件和其他应用程序通信。从用户角度执行测试,关注用户使用场景。

从概念角度注意到端到端从用户角度出发测试应用流程

端到端测试的作用

  • 从终端用户角度验证应用的有效性和性能;
  • 不仅能测试到应用本身,还会测到子系统;
  • 测试后端系统的有效性;
  • 测试失败能像终端用户一样给出反馈;
  • 减少测试时间和成本;
  • ...

端到端测试的设计

image

  • 用户功能 User Functions:列出软件系统及其相互连接的子系统的功能;跟踪执行的操作、输入/输出数据;不同功能之间的关系;找出不同功能的本质;
  • 条件 Conditions:测试数据、时间等影响用户功能的因素;
  • 测试用例 Test Cases:每个场景应该创建一个或多个测试用例;每个单独的条件都应该作为一个单独的测试用例;

端到端测试的框架

image

目前有许多开源框架可以使用,包括Web端和Mobile端,也有企业级收费工具,我本人在实际项目中用过Selenium、Cypress和Detox(手机端),对于初学者或者我们前端开发而言,Cypress足够使用,其文档也很丰富,周边插件也很完善。Selenium出现比较早,其功能更加丰富,兼容性也更加友好,但配置稍稍复杂。

Selenium VS Cypress

以下是Selenium和Cypress的对比,可以感受一下:

image

初识Cypress

因为Cypress文档非常友好,我不做过多赘述,只简单说明安装和hello world的案例。

  • 安装,多种方式,前端最简单的使用npm: npm install cypress —save-dev
  • hello world:
describe('My First Test', () => {
  it('Does not do much!', () => {
    expect(true).to.equal(true)
  })
})

更多进阶和使用方式,参考文档:point_up_2:

思考

Bigo前端计算平台的人工智能产品目前已到开发后期,比较稳定的阶段,不会有特别大的需求改动,加上团队结构因素,端到端测试实则是非好不错的保证产品质量的手段。目前分支上已有相关测试用例,后续计划排期在项目中落地,并且集成到Gitlab CI。

我们说测试需要熟悉业务上下文才知道怎么测、测什么,而端到端测试对业务却有反向促进的作用。我们在设计端到端测试的时候,必然会全面了解产品功能,深入业务上下文,相关人员对产品会有一个更加深刻的了解,从而更好地维护产品,保证产品质量。

以上是我对端到端测试的一些总结,大家一起交流呀 ~

References:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant