# 盘点2021年最值得学习的自动化测试框架




魔幻的2020年马上就要过去了，竟然有一点点猝不及防。

我们还是要向前看，戴着口罩继续前行，这里就简单盘点一下2021年最值得学习的自动化测试框架吧。

### selenium

![](https://www.selenium.dev//images/selenium_logo_large.png)

毫无疑问，selenium仍然是目前市面上最值得测试同学学习的ui自动化测试框架。

selenium拥有稳定的api，这意味着你每次的selenium版本升级都相当安全。

selenium官方支持java/python/ruby等主流语言，另外由于webdriver协议具有很强的扩展性，因此你几乎可以找到大部分主流语言的selenium binding，比如go/javascript等，这无疑使得selenium在真实项目中的应用变得相对容易。

selenium支持所有的主流浏览器，而且是官方支持，这使得selenium在做兼容性测试上有着天然的优势。

selenium拥有活跃的社区，稳定的核心开发者，广泛的使用人群，这使得你可以非常容易的找到各种文档，资料，教程以及解决你实际遇到问题的各种线索。有时候我们放弃使用一个框架往往是因为我们遇到问题以后尝试各种方法都无法解决，这点在selenium上可能不会成立。

selenium背后的webdriver协议基本上定义了各种ui自动化框架的开发规范，比如怎么开启session，如何定位元素和表示元素等等，这也孕育了一些流行的ui测试框架，比如appium等。

想象这样一种情形：你们公司需要将web的ui自动化测试跑起来，但是测试人员对自动化测试的了解非常有限，希望尽快开始动手尝试，头绪不多，选择却很多，这时候其实就可以无脑选择python+selenium，哪怕用例最终没办法稳定跑起来，但整个学习的过程都会让团队及公司收益。这就跟我们练习跑步一样，尽管最终不是人人都可以去跑马拉松，但练习的工程却能让我们的身体受益。

总之selenium对于测试同学来说是性价比最高的测试工具，并且除了测试，selenium在爬虫，自动化效率提升上面也有天然独特的优势。

推荐程度：🌟🌟🌟🌟🌟，五颗星。

### puppeteer

![](https://user-images.githubusercontent.com/10379601/29446482-04f7036a-841f-11e7-9872-91d1fc2ea683.png)

selenium在无界面的浏览器领域一直表现的都很挣扎，比如多年前的headless模式在面对稍微复杂的js页面时就一筹莫展，puppeterr的出现正好弥补了这一遗憾。

关于puppteer我之前有过详细介绍，其实就是无界面的chrome浏览器，这里就不过多解释了，相对于有界面的浏览器，puppeteer有着独特的优势。

* google官方出品，chrome团队维护，稳定性相对可以得到保证
* 相对简单高效的api，使用方便
* 没有界面，资源占用相对可控，并且可以在浏览器端运行，天生有着云浏览器的潜力和属性
* 用户众多，资料丰富，遇到一般问题都可以搜索解决；
* js语言调用，前端开发者基本没有太大的学习成本
* 生态丰富

不过原生的pupetter在调试上相对于selenium就没有那么方便了，好在一些第三方扩展可以缓解这些问题。

peppeteer适合这样的场景：对web页面进行持续的性能统计，一些不需要很高效但却要行为真实的爬虫，以及简单持续以及稳定的自动化验证用例。

推荐程度：🌟🌟🌟🌟，四颗星，适合有高级需求的同学

### appium

![](http://appium.io//img/appium-logo-sauce-white.png)

appium是移动端自动化测试的领导者，是webdriver协议瓜熟蒂落的产物，它的出现看起来在意料之外，但其实也在情理之中。如果你想在andorid/ios以及移动web上都使用同一套框架的话，appium大概是目前的最佳选择。

appium的设计思想来源于selenium，所以有着跟selenium相似的优势

* 支持多种语言
* api简单而且接近selenium
* 相对活跃的社区以及使用者

如果你对移动端自动化一无所知而且需要快速开始进行自动化测试工作的化，那么闭着眼睛用appium就可以了。 如果你对测试框架的性能以及其他方面有定制性的需求，那么你可能需要花更多的时间研究其他的框架。

推荐程度：🌟 🌟 🌟 🌟 四颗星


### cypress

![](https://www.cypress.io//static/33498b5f95008093f5f94467c61d20ab/b65d3/cypress-logo.png)

cypress是一款易用性很强的测试工具，其宣传的口径是下一代的自动化测试工具，从其提供的时间穿梭和实时刷新等功能来看，确实是目前自动化测试领域的game chagers。

cypress是用javascript实现，很好的结合了可视化和专业性，并且提供了强大的debug能力，对于新手来说是非常友好的。

针对selenium的一些祖传问题，比如调试困难，所见并非所得，生态完善但工具链不完善等问题，cypress很好的给出了自己的答案，那就是all in one。只要你用了cypress，那么所有的一切cypress都帮你搞定，如果说用selenium是拼乐高的话，那么cypress就是直接玩拼好的成品，可玩性虽然低了一点，但是所见即所得，这对很多新人来说应该就是正义吧。

推荐程度：🌟🌟🌟 三颗星，生态目前看来还很新，不过潜力巨大

### 各种语言自带的单元测试框架

比如python的unittest框架，java的junit框架(严格来说junit框架并不是java自带的)等，这些基本的框架就像是盖房子过程中的地基和承重墙，基础打的牢固了，才能万丈高楼平地起。

这些框架其实并不是特别适合对于编程一无所知的纯小白，推荐大家在有一定的语言基础之后进行学习。

推荐程度：🌟🌟🌟🌟🌟 五颗星





原始封面

![课程图片](https://images.unsplash.com/photo-1482192596544-9eb780fc7f66?w=300)


