美文网首页
Totoro工作原理

Totoro工作原理

作者: 大芋 | 来源:发表于2015-05-30 09:35 被阅读56次

    下文原本作于2015年5月9日,当时使用长微博,并没有太多不适。只不过最近想要写的技术文章需要贴一些代码,长微博就不合适了。为了保证一点连贯性,所以干脆把这篇也搬运过来。以下是正文。


    昨天看了一下沉鱼老师早先在QCon做的关于多终端测试的分享。实际上我们去年也做了类似的事情,解决方案比较类似,单细节处略有不同。觉得有几处比较好奇,就还是拉代码下来看了一下。代码量不多,逻辑也很清晰,看着真是舒服。下面记录一下。
    有这么几个角色,client就是测试需求方,server测试分配方,还有labor实际测试,干活的浏览器们。

    1. server起来
    2. labor跑来面试好了面试通过
    3. client说我要测试,server说你给我一个可以访问到的地址,于是client
      3.1 有就直接给,没的话
      3.2 如果是本地文件,就启个本地server,得到地址
      3.3 如果是代码片段,建一个临时文件,叫啥你别管,得到地址
    4. 发起order请求到server,带上必要材料,比如要测哪些浏览器,待测地址blahblah
    5. server生成一个order,挑一个工作不饱和的labor,拼上orderId和laborId分配给这个labor跑
    6. labor收到跑测试的消息后,window.open或者通过iframe(在移动平台无法window.open),开始屁颠屁颠的测试
    7. server其实还偷偷摸摸做了一件事情,就是把host换成自己的(proxy),这样他就可以插入一些龌龊美妙的东西。页面中引用的资源因为有refer就直接放行
      7.1 替换掉全局的alert,prompt,confirm这些会添堵的东西
      7.2 注册一个totoro.report方法,各种事儿都往一个本地变量result里丢
      7.3 完事儿后发个end的report,通过ajax告诉server,完事儿了
      7.4 server会根据页面引入的script来猜测使用的测试框架,来插入不同的适配
    8. server把结果告诉client,然后做些清理总结工作,labor没事了,可以去买瓶汽水
    9. 总之client开开心心得到测试报告,server赚钱了钱付给labor一点大家开心(并没有)

    PS 第3步在某些时候可能会有问题,比如server网络访问不到工作机网络之类,可以通过部一个localtunnel-server来绕过去,其他一些细节的处理思路挺值得学习借鉴的。

    相关文章

      网友评论

          本文标题:Totoro工作原理

          本文链接:https://www.haomeiwen.com/subject/uqarqttx.html