自动化测试有以下几个概念:
- 单元测试
- 集成测试
- E2E 测试
- 快照测试
- 测试覆盖率
- TDD 以及 BDD 等
简述
项目开发过程中会有几个经历。
- 版本发布上线之前,会有好几个小时甚至是更长时间对应用进行测试,这个过程非常枯燥而痛苦
- 代码的复杂度达到了一定的级别,当维护者的数量不止一个人,你应该会逐渐察觉到你在开发新功能或修复 bug 的时候,会变得越发小心翼翼,即使代码看起来没什么问题,但你心里还是会犯嘀咕:会不会引起其他的bug。
- 对项目中的代码进行重构的时候,会花费大量的时间进行回归测试
这些问题都是由于大多数使用最基本的手动测试的方式所带来的问题,解决它可以引入自动化测试方式。
我们日常的开发中,代码的完工其实并不等于开发的完工。如果没有测试,不能保证代码能够正常运行。
如何进行应用程序测试?
- 手动测试:通过测试人员与应用程序的交互来检查其是否正常工作。
- 自动化测试:编写应用程序来替代人工检验。
手动测试
开发者都懂得手动测试代码。在编写完源代码之后,下一步理所当然就是去手动测试它。
手动测试的优势在于足够简单灵活,但是缺点也很明显:
- 手动不适合大型项目
- 忘记测试某项功能
- 大部分时间都在做回归测试
虽然有一部分手动测试时间是花在测试新特性上,但是大部分时间还是用来检查之前的特性是否仍正常工作。这种测试被称为回归测试。回归测试对人来说是非常困难的任务————它们是重复性的,要求投入很多注意力,而且没有创造性的输入。总之,这种测试太枯燥了。幸运的是,计算机特别擅长此类工作,这也是自动化测试可以大展身手的地方!
自动化测试
自动化测试是利用计算机程序检查软件是否运行正常的测试方法。换句话说,就是用其他额外的代码检查被测软件的代码。当测试代码编写完之后,就可以不费吹灰之力地进行无数次重复测试。
可使用多种不同的方法来编写自动化测试脚本:
- 可以编写通过浏览器自动执行的程序
- 可以直接调用源代码里的函数
- 也可以直接对比程序渲染之后的截图
每一种方法的优势各不相同,但它们有一大共同点:相比手动测试而言节省了大量时间以及提高了程序的稳定性。
自动化测试还有很多优点,比如:
- 尽早的发现程序的 bug 和不足
- 增强程序员对程序健壮性、稳定性的信心
- 改进设计
- 快速反馈,减少调试时间
- 促进重构
当然,自动化测试不可能保证一个程序是完全正确的,而且事实上,在实际开发过程中,编写自动化测试代码通常是开发者不太喜欢的一个环节。大多数情况下,前端开发者在开发完一项功能后,只是打开浏览器手动点击,查看效果是否正确,之后就很少对该块代码进行管理。造成这种情况的原因主要有两个:
- 一个是业务繁忙,没有时间进行测试的编写
- 另一个是该如何编写测试
测试类型
前端开发最常见的测试主要是以下几种:
- 单元测试:验证独立的单元是否正常工作
- 集成测试:验证多个单元协同工作
- 端到端测试:从用户角度以机器的方式在真实浏览器环境验证应用交互
- 快照测试:验证程序的 UI 变化
单元测试
单元测试是对应用程序最小的部分(单元)运行测试的过程。通常,测试的单元是函数,但在前端应用中,组件也是被测单元。
单元测试可以单独调用源代码中的函数并断言其行为是否正确。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!