{"id":13536129,"url":"https://github.com/alibaba/f2etest","last_synced_at":"2025-05-14T12:11:14.731Z","repository":{"id":1762426,"uuid":"41773057","full_name":"alibaba/f2etest","owner":"alibaba","description":"F2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。","archived":false,"fork":false,"pushed_at":"2023-03-06T15:32:34.000Z","size":96670,"stargazers_count":3576,"open_issues_count":14,"forks_count":615,"subscribers_count":235,"default_branch":"master","last_synced_at":"2025-05-12T05:48:18.383Z","etag":null,"topics":["autotest","autotest-framework","f2etest","guacamole","gui-testing","karma-f2etest","webdriver"],"latest_commit_sha":null,"homepage":"https://www.f2etest.net","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alibaba.png","metadata":{"files":{"readme":"README-zh_CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-09-02T01:43:07.000Z","updated_at":"2025-05-09T09:13:54.000Z","dependencies_parsed_at":"2022-07-14T17:00:43.722Z","dependency_job_id":"e7fbdccd-1196-4dd6-bdf1-16deae16bdee","html_url":"https://github.com/alibaba/f2etest","commit_stats":{"total_commits":156,"total_committers":6,"mean_commits":26.0,"dds":"0.14743589743589747","last_synced_commit":"3098bbe87f6b241c8e99c5f7ba75929e74cf8085"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Ff2etest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Ff2etest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Ff2etest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alibaba%2Ff2etest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alibaba","download_url":"https://codeload.github.com/alibaba/f2etest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140760,"owners_count":22021219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autotest","autotest-framework","f2etest","guacamole","gui-testing","karma-f2etest","webdriver"],"created_at":"2024-08-01T09:00:35.071Z","updated_at":"2025-05-14T12:11:09.720Z","avatar_url":"https://github.com/alibaba.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Uncategorized","测试"],"sub_categories":["Uncategorized"],"readme":"# F2etest\n\n![](https://img.alicdn.com/tfs/TB1XMsiMNTpK1RjSZFKXXa2wXXa-1280-800.svg)\n\nF2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。\n\n注：F2e test = Front to End Test = 前端测试\n\n# 浏览器云\n\n在之前，多浏览器兼容性人肉测试，我们一般有三种解决方案：\n\n1. 本机安装大量的虚拟机，一个浏览器一个虚拟机，优点：真实，缺点：消耗硬盘资源，消耗 CPU 资源，打开慢，无法同时打开多个虚拟机\n2. 使用 IeTester 等模拟软件，优点：体积小，资源消耗小，缺点：不真实，很多特性不能代表真实浏览器\n3. 公用机器提供多种浏览器，优点：不需要本地安装，不消耗本机资源，缺点：资源利用率低，整体资源消耗非常恐怖\n\n现在，有了 F2etest，一台普通的 4 核 CPU 的服务器，我们就可以提供给 20 人以上同时使用。\n\n在这之前我们需要 20 台机器，相比之下，至少 10 倍的硬件利用率提升。\n\n再加上我们平时做多浏览器测试时，并不是满负荷工作。经常是测试一会，开发一会，或者是忙点别的事，因此理论并发能力至少可以再乘 2，就是说一台 4 核服务器，理论上跑 40 人同时在线，非常轻松。\n\n但是在此之前，如果我们是单人虚拟机模式的话，当你没在测试时，CPU、内存、硬盘，全部都是处在浪费状态。\n\n相比之前的方案，我们有以下优势：\n\n1. 10 倍以上硬件利用率，降低企业运营成本\n2. 非常棒的用户体验，极大的提高测试效率\n3. 真实浏览器环境，还原真实测试场景\n\n在这个解决方案中，我们使用了以下技术：\n\n1. Guacamole: 开源的 HTML5 远程解决方案\n2. Windows Server: Server 版 Windows，最大化复用机器资源\n3. hostsShare: 跨浏览器，跨服务器的 hosts 共享\n\n# WebDriver 云\n\nWebDriver 云利用 Windows Server 多用户的特性，将执行机的使用效率提升 10 倍以上。\n\n之前 1 台执行机只能跑 1 个任务，现在同样的硬件配置，我们可以跑 10 个任务。\n\n下面的截图看上去有 130 个执行机节点，传统情况下我们需要 130 台服务器。\n\n但是我们实际上才 5 台！\n\n相比较官方的 Selenium Grid，我们有以下优势：\n\n1. 10 倍以上硬件利用率：传统 WebDriver 1 台执行机仅能跑 1 个 Job，而我们一台机器可以高并发跑 N 个 Job，这个 N 取决于机器配置，理论上硬件利用率相当于传统节点的 10 倍以上\n2. 支持独立 hosts 绑定：每次申请节点时，可以指定不同的 hosts 绑定，保证同一台机器上不同节点的 Job 不会相互干扰\n3. 所有节点支持远程在线调试：利用 Guacamole 的在线远程功能，当自动化出现问题时，我们能非常便利的对自动化进展进行即时监控和调试\n\n# UI Recorder\n\nUI Recorder 是一款几乎零成本的整体自动化测试解决方案，一次自测等于多次测试，测一个浏览器等于测多个浏览器！\n\n我们的目标：让自测不要重复测！让自动化变成零成本！让自动化持续保障您的业务！\n\n以下是本产品的特点：\n\n1. 自测 = 自动化测试：对于开发人员来讲，自测是开发流程中缺一不可的过程，我们要实现的目标就是自测过程中即可同步的录制出自动化脚本，实现真正的零成本自动化\n2. 无干扰录制：所作操作均无需交互干扰，鼠标、键盘、alert 弹框、文件上传，完全按照正常自测流程操作即可(以下操作除外：悬停事件、断言、变量)\n3. 本地生成脚本：录制的脚本存储在用户本机，用户可以自行在录制的基础上进行修改定制，更自由更开放\n4. 丰富的断言：支持以下断言类型，val、text、displayed、enabled、selected、attr、css、url、title、cookie、localStorage、sessionStorage\n5. 支持数据 Mock：我们支持 Faker 变量功能，支持强大的数据 Mock\n6. 支持公共用例: 用例之间允许相互引用，可以将某些公用的操作步骤录制为公用用例，以进一步提升录制效率\n7. 支持执行截图：每次执行后，允许生成截图日志，以方便出问题时排查诊断\n\n要了解详细细节，可以查看我们的视频教程：[http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html](http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html)\n\nUI Recorder 目前已经对 F2etest 进行了解偶，在非 F2etest 环境下也可以使用，只要是标准 WebDriver 协议就可以支持。\n\n但是，我们更建议 UI Recorder 配合 F2etest 的 WebDriver 云来使用，更低的执行机成本，更强大的调试功能。\n\n具体如何配合使用，F2etest 部署完成，打开 F2etest-Web 后，可以看到详细使用说明。\n\n仓库地址： [https://github.com/alibaba/uirecorder](https://github.com/alibaba/uirecorder)\n\n# Karma + F2etest\n\nKarma 是由 Google 开源的 JS 单元测试执行过程管理工具，这是一款异常强大并且高可扩展性的测试工具，拥有一个非常活跃且完善的生态圈。\n\nKarma 支持运行在任何 WebDriver 协议的浏览器上，因此结合 F2etest 提供的 WebDriver 云，就可以批量快速的运行在大量的浏览器上，从而满足单元测试的多浏览器测试需求。\n\n具体如何配置，F2etest-Web 中可以看到详细的教程，并且我们提供了完整的配置文件下载。\n\n# 成功案例\n\n[![imgs/alibaba.png](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/alibaba.png)](http://www.alibabagroup.com/)\n\n如果您使用了我们的解决方案，请联系我们添加在此处。\n\n# 产品截图\n\n## 浏览器云\n\n![imgs/screenshot1.jpg](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/screenshot1.jpg)\n\n![imgs/screenshot2.jpg](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/screenshot2.jpg)\n\nChrome 插件:\n\n![imgs/chrome.png](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/chrome.png)\n\nWindows:\n\n![imgs/windows.jpg](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/windows.jpg)\n\nMac:\n\n![imgs/mac.jpg](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/mac.jpg)\n\n## WebDriver 云\n\n![imgs/webdriver1.jpg](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/webdriver1.jpg)\n\n## Karma + F2etest\n\n![imgs/jsunit.png](https://raw.githubusercontent.com/alibaba/f2etest/master/imgs/jsunit.png)\n\n## UI Recorder\n\nUI Recorder 请查看视频教程：[http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html](http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html)\n\n# 安全风险警示(非常重要)\n\n由于本系统基于 Windows Server 体系搭建，因此系统的安全性完全取决于部署人的安全部署能力。\n\n如果您希望部署本系统，请确保以下几点：\n\n1. 严禁将本系统部署在公网环境，仅可部署在内网环境中使用，作为内部测试用途\n2. 请将 Windows Server 服务端升级到最新版本及补丁，以保证没有出现安全漏洞\n3. 请将 User 用户之间做到完全隔离，仅提供 User 用户文件的访问权限，别的任何权限请勿多余授权\n4. 请将 f2etest-client 仅设置为管理员拥有权限，防止 API 接口被恶意访问\n\n# 安装教程\n\n安装请前往安装教程页面：[INSTALL.md](https://github.com/alibaba/f2etest/blob/master/INSTALL.md)\n\n第 3 方安装及使用教程：\n\n1. [http://shaofan.org/f2etest/](http://shaofan.org/f2etest/)\n2. [http://shaofan.org/ui-recorder/](http://shaofan.org/ui-recorder/)\n\n# 感谢\n\n- Guacamole: [http://guac-dev.org/](http://guac-dev.org/)\n- Nodejs: [http://nodejs.org/](http://nodejs.org/)\n- async: [https://github.com/caolan/async](https://github.com/caolan/async)\n- ejs: [https://github.com/mde/ejs](https://github.com/mde/ejs)\n- express: [https://github.com/expressjs/express](https://github.com/expressjs/express)\n- jwebdriver: [https://github.com/yaniswang/jWebDriver](https://github.com/yaniswang/jWebDriver)\n- mysql: [https://github.com/felixge/node-mysql](https://github.com/felixge/node-mysql)\n- request: [https://github.com/request/request](https://github.com/request/request)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falibaba%2Ff2etest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falibaba%2Ff2etest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falibaba%2Ff2etest/lists"}