无论在校招还是社招的面试中,我都会为那些欣赏的候选人准备这么一个问题,你了解哪些开源测试项目?因为在我看来,这是一个很大的加分项,一个主动研究过测试应该如何做的候选人一定会去开源社区寻求帮助。如果他处于一个与开源项目绝缘的状态,只能说明他是一个非常传统的手动测试人员,对自己的定位仅仅是最终用户,而非项目的技术人员。所处的认知状态也只是“不知道自己不知道”,类似于达克效应四象限中的“愚昧山峰”,更可怕的是,也许这个人还处在攀登这个山峰的过程中。
央视有位主持人曾说过,“想要看见,就要从蒙昧中睁开眼来”。没有人能单靠个人的冥想解决技术问题,从底层的编译器、操作系统、到应用层的服务器、开发框架再到我们的测试项目,无数的开源项目相互成就彼此。可能我们每个人的人生重心不一样,离核心贡献者也会有一定的技术差距,但这并不妨碍我们睁开双眼,一起看看开源社区中那些霸榜的测试项目。从这些项目中,我们甚至能看到测试的未来,语言的重心以及历史的沉浮。有些项目我们见了很久,比如Selenium, 依然生生不息、日久弥新。有些项目上升速度之快,比如Postwoman让人不禁感慨曾经爱理不理,如今高攀不起。有些项目名为最佳实践,比如蚂蚁的Sofa-acts, 却仅有300颗星,让人唏嘘不已。还有长期霸榜的puppeteer, 让我对爬虫界的扫地僧更加钦佩有加。
限于篇幅原因,这一次让我们从广度入手,各用一句话简述这些项目,了解他们的技术特性和使用场景,然后结合自己的兴趣和工作内容再做深入研究。
第一篇:全语言测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
puppeteer |
77,689 |
2 |
nodebestpractices |
77,416 |
3 |
storybook |
70,715 |
4 |
Postwoman |
43,102 |
5 |
LocalStack |
40,658 |
6 |
jest |
38,823 |
7 |
Cypress |
38,201 |
8 |
Playwright |
37,117 |
9 |
PHPT |
33,725 |
10 |
googletest |
25,745 |
11 |
Selenium WebDriver |
23,303 |
12 |
mocha |
21,346 |
13 |
Enzyme |
19,860 |
14 |
ava |
19,767 |
15 |
vegeta |
19,432 |
16 |
locust |
18,775 |
17 |
PHPUnit |
18,381 |
18 |
learn-go-with-tests |
17,518 |
19 |
javascript-testing-best-practices |
17,438 |
20 |
react-testing-library |
16,313 |
1. puppeteer
是一个控制 headless Chrome 的 Node.js API 。它是一个 Node.js 库,通过 DevTools 协议提供了一个高级的 API 来控制 headless Chrome。它还可以配置为使用完整的(非 headless)Chrome。在浏览器中手动完成的大多数事情都可以通过使用 Puppeteer 完成。
2. Nodebestpractices
不太清楚GitHub为什么把这个项目归在测试类别中,也许是因为其中含有测试和质量最佳实践。总之,这是对Node.js最佳实践中排名最高的内容的总结和分享。这里是最大的汇集,且每周都在增长。
3. Storybook
为UI组件提供一个独立的沙箱环境,在这里无论是edge case还是难于遇到的状态都可以造出来。可以把use case 像故事一样展现出来。它们不仅可以供以后测试用比如UT,也可以用于生成文档。这样的话原来老土的手工活在工具话流程化后突然变得高大上了。storybook.js.org/
4. Postwoman
一款开源的 Postman 替代品,支持 GET、POST、DELETE 等请求方式,是接口测试的必备工具,在其官方主页上,他的目标还不仅在此,而是要打造开源API开发生态圈。值得持续关注。https://hoppscotch.io
5. LocalStack
是一款本地AWS云堆栈, 可以帮助用户进行离线开发和测试,通过这款软件可以在用户的本地机器上启动一个测试环境,然后在该环境上可以进行软件的开发测试,该环境和用户的云环境完全一致,有相同的API,工作方式也一样。
6. Jest
是一个令人愉快的 JavaScript 测试框架,专注于简洁明快。可帮你实现无痛的 JavaScript 单元测试支持,由 Facebook 推出。
7. Cypress
Cypress是为现代网络打造的,基于JavaScript语言的一种前端自动化测试工具,对浏览器中运行的所有内容进行快速,轻松和可靠的测试,有着比Selenium更好的使用体验。他追求对测试环境的完全控制,只有这样才能降低测试的难度和成本。Testomat.io
8. Playwright
是微软开源的一个UI自动化测试工具。针对 Python 语言,它可以通过单个API自动执行 Chromium,Firefox 和 WebKit 浏览器,同时支持以无头模式、有头模式运行。添加了默认等待时间增加脚本稳定性,并提供视频录制、网络请求支持、自定义的定位器、自带调试器等新特性。
9. PHPT
看名字是和php语言相关的测试框架,几年前曾用wordpress为多个公司搭建过展示类网页,从此再也没有接触过php, 考虑到php已经跌出了编程语言前十的排行榜,感兴趣的小伙伴自己看看吧。
10. Googletest
开源 C++ 单元测试框架 Google Test,简称 gtest 是一个非常的不错单元测试框架。支持跨平台以及包括 Windows CE 和 Symbian 在内的一些手机操作系统
第二篇:Python测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
LocalStack |
40,658 |
2 |
locust |
18,775 |
3 |
faker |
14,101 |
4 |
httpbin |
10,807 |
5 |
pytest |
8,708 |
6 |
fsociety |
7,623 |
7 |
Robot Framework |
6,910 |
8 |
PyAutoGUI |
6,557 |
9 |
Airtest |
6,105 |
10 |
hypothesis |
5,865 |
1. LocalStack
见第一篇
2. Locust
是一个可扩展、分布式的性能测试工具,可模拟上百万用户。它的主要思想就是模拟一群用户访问你的网站。每个用户的行为由你编写的python代码定义,同时可以从Web界面中实时观察到用户的行为。不需要笨重的UI和臃肿的xml代码,基于协同而非回调。
3. Faker
是python的一个类库,用于构造完美的测试假数据。可以批量生成数十种数据,包括中英文的地址、人名、时间、文件、公司、颜色、地理位置、信用卡、IP地址、密码、甚至是句子、自然段、关键词等伪文本数据。
4. Httpbin
是使用Python + Flask语言编写的一个HTTP Request & Response Service的简单服务,该服务主要用于测试 HTTP 请求,你可以向他发送请求,然后他会按照指定的规则将你的请求返回。
5. Pytest
一个非常成熟的全功能的python测试框架,常用于接口自动化测试,几乎每位面试者都会提到。与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。具有很多第三方插件,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等。
第三篇:Java测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
Selenium WebDriver |
23,303 |
2 |
Mockito |
12,837 |
3 |
JUnit |
8,282 |
4 |
metersphere |
7,424 |
5 |
Apache JMeter |
6,080 |
6 |
TestContainers |
5,900 |
7 |
Karate |
5,862 |
8 |
REST Assured |
5,830 |
9 |
robolecric |
5,523 |
10 |
Moco |
3,935 |
1. Selenium WebDriver
绝大多数校园面试同学眼中自动化测试代名词。UI自动化测试领域当仁不让的第一名,无论知名度还是应用范围,通过各种浏览器的驱动(web driver)来驱动操作浏览器
,独自承担起自动化测试的生态系统,提供C#、JavaScript、Java、Python、Ruby等多种语言的API接口。
2. Mockito
是一个强大的用于 Java 开发的模拟测试框架, 通过 Mockito 我们可以创建和配置 Mock 对象, 进而简化有外部依赖的类的测试。简单来说,创建mock对象之后,这个对象里面的方法是怎么实现的可以不用去关心,我们只需要给这个方法定义一个输入、输出即可。
3. JUnit
是一个Java语言的单元测试框架,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
4. MeterSphere
是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付。可以利用该开源项目做二次开发,进行私有部署。
5. Apache Jmeter
又是一个人尽皆知的接口测试、压力测试工具。 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。
第四篇:JavaScript测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
nodebestpractices |
77,416 |
2 |
Cypress |
38,201 |
3 |
mocha |
21,346 |
4 |
Enzyme |
19,860 |
5 |
ava |
19,767 |
6 |
javascript-testing-best-practices |
17,438 |
7 |
react-testing-library |
16,313 |
8 |
jasmine |
15,327 |
9 |
Appium |
15,125 |
10 |
volkswagen |
12,279 |
1. Nodebestpractices
见第一篇
2. Cypress
见第一篇
3. mocha
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。类似的测试框架还有Jasmine、Karma、Tape等。
4. Enzyme
来自 airbnb 公司,是一个用于 React 的 JavaScript 测试工具,方便你判断、操纵和遍历 React Components 输出。通过模仿 jQuery 的 API ,使得 DOM 操作和历遍很灵活、直观。Enzyme 兼容所有的主流测试运行器和判断库。
5. ava
简单的说ava是mocha的替代品,对es6语法支持更好,对aysnc/await有支持。AVA 利用node.js的异步特性让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。
第五篇:TypeScript测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
puppeteer |
77,689 |
2 |
storybook |
70,715 |
3 |
jest |
38,823 |
4 |
playwright |
37,117 |
5 |
Testcafe |
9,329 |
6 |
WebdriverIO |
7,511 |
7 |
cosmos-js |
7,499 |
8 |
ts-jest |
5,774 |
9 |
Cucumber.js |
4,509 |
10 |
react-hooks-testing-library |
4,489 |
1. puppeteer
见第一篇
2. storybook
见第一篇
3. jest
见第一篇
4. playwright
见第一篇
5. Testcafe
Node.js版UI测试工具,类似于Selenium 3.X。并且具备一套较为完整的自动化测试框架,套完整的⾃动化测试框架,不仅提供了Cases的管理,运行,失败自动重跑,错误自动截图,并发等,对页面和页面元素的等待也封装得更为完善。
第六篇:Go测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
learn-go-with-tests |
17,518 |
2 |
Testify |
16,217 |
3 |
goreplay |
15,521 |
4 |
Gor |
15,472 |
5 |
toxiproxy |
8,005 |
6 |
chromedp |
7,560 |
7 |
GoConvey |
7,134 |
8 |
gomock |
7,117 |
9 |
terratest |
6,075 |
10 |
ginkgo |
5,833 |
1. learn-go-with-tests
关于go语言的学习包,通过编写测试学习 Go 语言。Go的开发者是最具有测试驱动开发精神的开发人员,同时Go 本身是学习测试驱动开发的优秀语言,因为它简单易学而且内置测试功能。
2. Testify
可以说是最流行的Go 语言测试库。testify提供了很多方便的函数帮助我们做assert和错误信息输出。使用标准库testing,我们需要自己编写各种条件判断,根据判断结果决定输出对应的信息。
3. goreplay
GoReplay是一个用golang开发的简单的流量录制插件,支持多种方式的过滤,限流放大,重写等等特性。GoReplay 可以做到对代码完全无侵入性,也不需要更改你的生产基础设施,并且与语言无关。它不是代理,而是直接监听网卡上的流量。得物的流量回放解决方案就基于此。
4. Gor
另一个用 Go 编写的简单 HTTP 流量复制工具,主要是为了从生产服务器返回流量到开发环境。使用 Gor 可以在实际的用户会话中测试代码。
5. toxiproxy
是一个模拟网络条件的框架,它专门用于混沌工程和弹性测试。可以模拟定制化的或是随机的网络连接故障。
第七篇:其他测试项目排行榜(2022年5月)
排名 |
项目 |
星数 |
1 |
Swagger-ui |
22,467 |
2 |
PHPUnit |
18,381 |
3 |
Catch |
14,897 |
4 |
Mockery |
10,177 |
5 |
Detox |
9,524 |
6 |
newman |
5,843 |
7 |
artillery |
5,421 |
8 |
EarlGrey |
5,401 |
9 |
awesome-test-automation |
5,023 |
10 |
SoloPi |
4,754 |
1. Swagger-ui
Swagger-UI是google的一个测试文档库,用于标注接口信息和快速测试。无论开发还是最终用户都可以可视化API资源并与之交互,而无需任何实现逻辑。在实际使用过程中也衍生出了接口测试、渗透测试等多种测试实践。
2. PHPUnit
是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)
3. Catch
是一个C++原生的框架,只包含一个头文件,用于单元测试,TDD测试驱动开发和BDD行为驱动开发。
4. Mockery
是简单而灵活的 PHP mock 对象框架,常用在 PHPUnit,PHPSpec 或者其他测试框架的单元测试中。TA 的核心目标是提供一个双向测试框架,提供一个 succint API,能清晰的定义所有可能的对象操作和交互,使用人类可读的 Domain Specific Language (DSL)。
5. Detox
为移动端APP打造的灰盒端到端自动化测试框架。可用于React-Native开发的APP,支持 iOS 和安卓,使用js来执行相应的测试脚本。通过对RN程序包中package.json增加Detox相关配置,并在RN程序包中增加测试案例文件夹e2e(在其中增加测试案例)实现测试用例的编写和执行。
如果能看到这,那么相信你已经对目前Github上最流行的测试项目有了较为深刻的了解。我相信这些客观的数据远比各自官方宣称的流行程度要靠谱。定期地回顾这些排行榜也能够让我们跟上时代,了解测试工具的趋势。对于那些不再增长的项目,我们可以减少关注,比如2800的Robotium, 1700的Calabash, 以及300的sofa-acts,基本已经不再受新生代测试人员青睐。当然也有一些例外,主要是是国内的项目逐渐迁移到开源中国等国内平台所致,后续将继续更新这些平台的数据,敬请关注。
文章评论