GithubHelp home page GithubHelp logo

alibaba / f2etest Goto Github PK

View Code? Open in Web Editor NEW
3.6K 236.0 614.0 94.4 MB

F2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。

Home Page: https://www.f2etest.net

License: MIT License

Batchfile 0.39% HTML 10.21% Java 37.02% JavaScript 48.60% CSS 3.08% Dockerfile 0.15% Shell 0.02% VBScript 0.48% Classic ASP 0.05%
f2etest autotest-framework autotest gui-testing guacamole webdriver karma-f2etest

f2etest's Introduction

F2etest

imgs/logo.png

F2etest是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案。

注:F2e test = Front to End Test = 前端测试

浏览器云

在之前,多浏览器兼容性人肉测试,我们一般有三种解决方案:

  1. 本机安装大量的虚拟机,一个浏览器一个虚拟机,优点:真实,缺点:消耗硬盘资源,消耗CPU资源,打开慢,无法同时打开多个虚拟机
  2. 使用IeTester等模拟软件,优点:体积小,资源消耗小,缺点:不真实,很多特性不能代表真实浏览器
  3. 公用机器提供多种浏览器,优点:不需要本地安装,不消耗本机资源,缺点:资源利用率低,整体资源消耗非常恐怖

现在,有了F2etest,一台普通的4核CPU的服务器,我们就可以提供给20人以上同时使用。

在这之前我们需要20台机器,相比之下,至少10倍的硬件利用率提升。

再加上我们平时做多浏览器测试时,并不是满负荷工作。经常是测试一会,开发一会,或者是忙点别的事,因此理论并发能力至少可以再乘2,就是说一台4核服务器,理论上跑40人同时在线,非常轻松。

但是在此之前,如果我们是单人虚拟机模式的话,当你没在测试时,CPU、内存、硬盘,全部都是处在浪费状态。

相比之前的方案,我们有以下优势:

  1. 10倍以上硬件利用率,降低企业运营成本
  2. 非常棒的用户体验,极大的提高测试效率
  3. 真实浏览器环境,还原真实测试场景

在这个解决方案中,我们使用了以下技术:

  1. Guacamole: 开源的HTML5远程解决方案
  2. Windows Server: Server版Windows,最大化复用机器资源
  3. hostsShare: 跨浏览器,跨服务器的hosts共享

WebDriver云

WebDriver云利用Windows Server多用户的特性,将执行机的使用效率提升10倍以上。

之前1台执行机只能跑1个任务,现在同样的硬件配置,我们可以跑10个任务。

下面的截图看上去有130个执行机节点,传统情况下我们需要130台服务器。

但是我们实际上才5台!

相比较官方的Selenium Grid,我们有以下优势:

  1. 10倍以上硬件利用率:传统WebDriver 1台执行机仅能跑1个Job,而我们一台机器可以高并发跑N个Job,这个N取决于机器配置,理论上硬件利用率相当于传统节点的10倍以上
  2. 支持独立hosts绑定:每次申请节点时,可以指定不同的hosts绑定,保证同一台机器上不同节点的Job不会相互干扰
  3. 所有节点支持远程在线调试:利用Guacamole的在线远程功能,当自动化出现问题时,我们能非常便利的对自动化进展进行即时监控和调试

UI Recorder

UI Recorder是一款几乎零成本的整体自动化测试解决方案,一次自测等于多次测试,测一个浏览器等于测多个浏览器!

我们的目标:让自测不要重复测!让自动化变成零成本!让自动化持续保障您的业务!

以下是本产品的特点:

  1. 自测 = 自动化测试:对于开发人员来讲,自测是开发流程中缺一不可的过程,我们要实现的目标就是自测过程中即可同步的录制出自动化脚本,实现真正的零成本自动化
  2. 无干扰录制:所作操作均无需交互干扰,鼠标、键盘、alert弹框、文件上传,完全按照正常自测流程操作即可(以下操作除外:悬停事件、断言、变量)
  3. 本地生成脚本:录制的脚本存储在用户本机,用户可以自行在录制的基础上进行修改定制,更自由更开放
  4. 丰富的断言:支持以下断言类型,val、text、displayed、enabled、selected、attr、css、url、title、cookie、localStorage、sessionStorage
  5. 支持数据Mock:我们支持Faker变量功能,支持强大的数据Mock
  6. 支持公共用例: 用例之间允许相互引用,可以将某些公用的操作步骤录制为公用用例,以进一步提升录制效率
  7. 支持执行截图:每次执行后,允许生成截图日志,以方便出问题时排查诊断

要了解详细细节,可以查看我们的视频教程:http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html

UI Recorder目前已经对F2etest进行了解偶,在非F2etest环境下也可以使用,只要是标准WebDriver协议就可以支持。

但是,我们更建议UI Recorder配合F2etest的WebDriver云来使用,更低的执行机成本,更强大的调试功能。

具体如何配合使用,F2etest部署完成,打开F2etest-Web后,可以看到详细使用说明。

仓库地址: https://github.com/alibaba/uirecorder

Karma + F2etest

Karma是由Google开源的JS单元测试执行过程管理工具,这是一款异常强大并且高可扩展性的测试工具,拥有一个非常活跃且完善的生态圈。

Karma支持运行在任何WebDriver协议的浏览器上,因此结合F2etest提供的WebDriver云,就可以批量快速的运行在大量的浏览器上,从而满足单元测试的多浏览器测试需求。

具体如何配置,F2etest-Web中可以看到详细的教程,并且我们提供了完整的配置文件下载。

成功案例

imgs/alibaba.png

如果您使用了我们的解决方案,请联系我们添加在此处。

产品截图

浏览器云

imgs/screenshot1.jpg

imgs/screenshot2.jpg

Chrome插件:

imgs/chrome.png

Windows:

imgs/windows.jpg

Mac:

imgs/mac.jpg

WebDriver云

imgs/webdriver1.jpg

Karma + F2etest

imgs/jsunit.png

UI Recorder

UI Recorder请查看视频教程:http://v.youku.com/v_show/id_XMTY4NTk5NjI4MA==.html

安全风险警示(非常重要)

由于本系统基于Windows Server体系搭建,因此系统的安全性完全取决于部署人的安全部署能力。

如果您希望部署本系统,请确保以下几点:

  1. 严禁将本系统部署在公网环境,仅可部署在内网环境中使用,作为内部测试用途
  2. 请将Windows Server服务端升级到最新版本及补丁,以保证没有出现安全漏洞
  3. 请将User用户之间做到完全隔离,仅提供User用户文件的访问权限,别的任何权限请勿多余授权
  4. 请将f2etest-client仅设置为管理员拥有权限,防止API接口被恶意访问

安装教程

https://www.yuque.com/artist/f2etest

感谢

Contributors


yaniswang


undead25


Stngle

This project follows the git-contributor spec, auto updated at Wed Apr 24 2019 10:26:36 GMT+0800.

f2etest's People

Contributors

itestauipi avatar stngle avatar undead25 avatar yaniswang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

f2etest's Issues

一个新手的问题

配置f2etest-web时,修改conf/site.json:
clientApiKey: f2etest远程桌面客户端的ApiKey,这个值是随便设置的吗?
guacamoleApi: guacamole的API, 是一个什么样的值,能不能给下具体的值

tutorial 太简单了

之前我都是kvm上部署机器,现在打算把kvm和这个东西连起来,发现教程太简单了,搞了一天没有搞定。希望再精炼下教程。还有就是可以用一些小点的依赖么

不够简单粗暴

人家就喜欢简单粗暴嘛...

主要限制过多

  1. 比如对接用户认证.在小的公司可能根本就没有这方面的需求,毕竟只是内网测试兼容性使用
  2. 客户度部署困难. 对于不习惯windows的人太j8蛋疼了...iis部署总是没办法访问到...我去看了大概客户度就是创建用户之类的操作,和配置浏览器路径.我觉得可以简单粗暴一点,直接在客户端新建特定(规定死)的用户,和配置应用就够了.至于多用户统计之类的可以做成该系统扩展.

guacamole这块配置比较简单还能接受.我公司是 hunantv.com ,对兼容性测试需求比较大,对这个系统其实很需要的,但是奈何我水平过低..搞不定..囧了..

windows 端安装

windows server 2008 这边是怎么安装的,谁有记录安装过程的,能否分享一下

IE 浏览器的上下滑动会有问题

再chrome上面录制的步骤中存在下滑的操作
(it('scrollTo: 0, 807', async function(){
await driver.scrollTo(0, 807);
});),但是在ie浏览器回放的时候,ie浏览器下滑到位置后,立刻跳回到顶部

关于sso.js如何实现标准化接入

大家可以在这里一起讨论下如何让sso.js能够参数化接搏各家公司内部的SSO系统,而不是像现在这样需要人肉的修改sso.js。

配置webdriver云建议在opennode.bat中增加端口号配置项

部署webdriver云过程发现一直提示“Report to f2etest failed!”,然后反复检查配置和尝试多次,最终发现在wdproxy.js中会对web主机发起一个http请求,默认端口是80,但是我配置浏览器云的端口是3000(没有使用nginx做反向代理),导致我这边提示“Report to f2etest failed!”

所以建议大神在配置文件中加入端口号。

用户名密码错误

点击IE图标进入虚机的时候,提示用户名密码错。
能具体说明一下用户同步整个流程是怎么样的的吗?

需要具体怎么设置,Windows的设置能不能描述详细一些。

用户名或密码不正确

在windows server 2008上执行openAllNode.bat后,在打开的127.0.0.1远程桌面登陆时提示用户名或密码不正确

360安全浏览器和极限浏览器都无法打开?

  1. Chrome可以正常打开

    Chrome浏览器

  2. 360安全浏览器无法正常打开

    360安全浏浏览器

    360se.bat:

    @echo off
    
    rem 请这里配置f2etest的域名
    set f2etestDomain=192.168.58.129
    set appid=360se
    
    rem 命令行参数
    set proxymode="%1"
    set proxyurl=%2
    set url=%3
    set apiKey=%4
    
    rem 探测桌面模式
    set isWeb=1
    if %url% equ desktop (
    set url="about:blank"
    set isWeb=0
    )
    
    rem 设置代理
    set proxypath="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    reg add %proxypath% /v "ProxyEnable" /t REG_DWORD /d 0 /f>nul 
    set proxydef=
    if %proxyurl% equ "" set proxydef=1
    if %proxyurl% equ default set proxydef=1
    if %proxyurl% equ "default" set proxydef=1
    if defined proxydef set proxyurl="http://%f2etestDomain%/getHosts.pac?name=%USERNAME%"
    if %proxymode% equ "noproxy" (
    set proxyurl=""
    )
    if %proxyurl% neq "" (
    rem 开启代理
    reg add %proxypath% /v "AutoConfigURL" /d %proxyurl% /f >nul
    ) else (
    rem 关闭代理
    reg delete %proxypath% /v "AutoConfigURL" /f > nul
    )
    
    rem 打开应用
    start /MAX "" "C:\360\360se6\Application\360se.exe" --allow-no-sandbox-job %url% --user-data-dir="%APPDATA%\360se6\User Data"
    
    rem 打点统计
    start "" curl "http://%f2etestDomain%/applog?userid=%USERNAME%&appid=%appid%&isweb=%isWeb%"
    
    
  3. 360极限浏览器无法正常打开

    360极限浏览器

    360chrome.bat:

    @echo off
    
    rem 请这里配置f2etest的域名
    set f2etestDomain=192.168.58.129
    set appid=360chrome
    
    rem 命令行参数
    set proxymode="%1"
    set proxyurl=%2
    set url=%3
    set apiKey=%4
    
    rem 探测桌面模式
    set isWeb=1
    if %url% equ desktop (
    set url="about:blank"
    set isWeb=0
    )
    
    rem 设置代理
    set proxypath="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    reg add %proxypath% /v "ProxyEnable" /t REG_DWORD /d 0 /f>nul 
    set proxydef=
    if %proxyurl% equ "" set proxydef=1
    if %proxyurl% equ default set proxydef=1
    if %proxyurl% equ "default" set proxydef=1
    if defined proxydef set proxyurl="http://%f2etestDomain%/getHosts.pac?name=%USERNAME%"
    if %proxymode% equ "noproxy" (
    set proxyurl=""
    )
    if %proxyurl% neq "" (
    rem 开启代理
    reg add %proxypath% /v "AutoConfigURL" /d %proxyurl% /f >nul
    ) else (
    rem 关闭代理
    reg delete %proxypath% /v "AutoConfigURL" /f > nul
    )
    
    rem 打开应用
    start /MAX "" "C:\360\360Chrome\Chrome\Application\360chrome.exe" --allow-no-sandbox-job %url% --user-data-dir="%APPDATA%\360chrome\User Data"
    
    rem 打点统计
    start "" curl "http://%f2etestDomain%/applog?userid=%USERNAME%&appid=%appid%&isweb=%isWeb%"
    
    

新的问题

呵呵,不好意思,又遇到一个问题咨询。
登录进入后显示初始化失败,请联系管理员,错误信息:somc account initialize failed: 192.168.14.248
页面上一直显示正在初始化您的账号,请稍等.....。发生这种情况可能是哪里出了问题?

在f2etest-web选择IE7跳转到*.*.*.*:8080/guacamole/client.xhtml页面黑屏

你好,我按照教程部署完成后,结构是这样的:
f2etest-web部署在地址:http://192.168.137.3:3000/
f2etest-client部署在:http://192.168.137.4(windows server2008 standard)上

现在我访问web端,能看到我配置的IE7图标,点击后重定向到8080端口的地址,url中携带了默认的user和password等参数。

问题是:这个页面是黑屏状态,看不到任何错误信息(包括IIS和tomcat里),IIS可以单独访问。

我猜测是用户名和密码验证没有通过,但是不知道如何定位问题。数据库中可以查到用户名和密码。

麻烦有人看到能帮忙答复一下,十分感谢!

部署完成访问问题

我已经部署完成,在部署了f2etest-web的机器上能访问正确的f2etest页面,但是在同一ip组内的其他机器上不能访问到这个页面,而机器之间是可以ping通的,可能是什么问题呢

ie11不成功

使用webdriver过程,chrome,firefox都能正常使用,但ie11不行(浏览器云ie11可以正常使用)
报错以下

 Error: done() invoked with non-Error: Unable to find elements on closed window (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 15 milliseconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'WIN-T3QDSSNVM9S', ip: '192.168.56.1', os.name: 'Windows Server 2008 R2', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_101'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver

浏览器信息:
This is the initial start page for the WebDriver server.

在webdriver中有iewebdriver.exe

node server error

Error: Failed to lookup view "index" in views directory "/root/f2etest-web/views"
at EventEmitter.app.render (/root/f2etest-web/node_modules/express/lib/application.js:555:17)
at ServerResponse.res.render (/root/f2etest-web/node_modules/express/lib/response.js:938:7)
at /root/f2etest-web/control/index.js:15:13
at Layer.handle [as handle_request] (/root/f2etest-web/node_modules/express/lib/router/layer.js:82:5)
at next (/root/f2etest-web/node_modules/express/lib/router/route.js:110:13)
at Route.dispatch (/root/f2etest-web/node_modules/express/lib/router/route.js:91:3)
at Layer.handle [as handle_request] (/root/f2etest-web/node_modules/express/lib/router/layer.js:82:5)
at /root/f2etest-web/node_modules/express/lib/router/index.js:267:22
at Function.proto.process_params (/root/f2etest-web/node_modules/express/lib/router/index.js:321:12)
at next (/root/f2etest-web/node_modules/express/lib/router/index.js:261:10)

WebDriver云中的浏览器点击打开guacamole后无法登陆。

此处好像有两个问题:

  1. 点开的链接中,id的值为ip,在浏览器云中,此处的值时配置在guacamole中的/etc/guacamole/noauth-config.xml中的name。 我临时的解决方案是,将这些IP也配置一遍。
  2. 通过第一步,可以登陆进去,但是远程执行的脚本路径错误! 在部署文档中是将webdriver的文件部署到c:\f2etest-webdriver\, 但是在通过guacamole连接远程浏览器的时候,打开的是这个路径c:\f2etest\

webdriver云里去掉IE8的配置后,IE11的节点展示问题

将IE8的配置从/etc/guacamole/noauth-config.xml和app.json、server.json几个文件中全部删掉,获取的节点的状态错位了(ie11/chrome/firefox配置在一个windows server虚拟机上,且每个虚拟机都配置了3个node),ie8亮的那两个节点应该是ie11的:
image

IE 浏览器打开以后默认是禁用Cookie的

直接访问这个主机,IE浏览器Cookie默认启用,但是通过f2etest 打开IE浏览器打开以后默认是禁用Cookie的。需要手动修改。 这个可以在哪里配置啊?
我的版本是 V1.0.2 .

登陆问题

在登录页面的时候,总是302跳转,sso,endSsoToken?SSO_TOKEN=User1501664078057&BACK_URL=http%3A%2F%2F(ip)%2F

Connection Error 一直报错

An internal error has occurred within the Guacamole server, and the connection has been terminated. If the problem persists, please notify your system administrator, or check your system logs.

不知道怎么解决了

360chrome.bat ,360se.bat 这些配置文件怎么写?

我把 360chrome,360se都安装的IE8浏览器服务器上面的,
360chrome.bat ,360se.bat 这个两个文件也配置了,路径也修改过了
RomoteApp 中也添加程序了,但是还是不行,

一进入系统,就自动断开了,想问一下 360chrome.bat ,360se.bat 的配置文件应该怎么写,要注意些什么?

关于数据库建立和配置的问题

1、f2etest.sql,SQL有问题,在创建appUsers,没有创建字段就添加索引了,引起报错,
2、还有您说建一个F2etest表,但是这个SQL是建appLogs,appUsers,也没有这个F2etest表,
3、在配置vi site.json 中"dbTable": "f2etest",不能这样填写吧。
SET FOREIGN_KE"port": 3000,
"name": "F2eTest",
"about": "浏览器云测平台",
"icon": "/favicon.ico",
"dbHost": "localhost",
"dbUser": "xxx",
"dbPass": "xxx",
"dbTable": "f2etest",
"clientApiKey":"xxxx",
"guacamoleApi": "http://f2etest-link.xxxx.com/guacamole/client.xhtml",
"footer": "",
"statNav" : "<a href="/stat">标准统计 | <a href="/statuser">个人统计"Y_CHECKS=0;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.