专访搜狗测试Leader:浏览器之争搜狗如何用技术迎战

发表于:2015-10-22 11:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing    来源:51Testing软件测试网原创

  51Testing小编:占领用户桌面一直是各大软件厂商的目标所在,而浏览器市场一直竞争非常激烈。一款优质的软件,测试做得好很关键,在你看来,浏览器产品测试与普通产品测试有什么不同?搜狗浏览器在这场竞争中,又运用了哪些特殊的测试技术或测试要点?
  诸葛东明:区别于普通的软件产品,浏览器产品更强调产品的稳定性、响应性能、智能化程度,而在这三点上,不论产品开发还是测试,都有很多难点,对此我们使用了大量的技术来努力,这也成为我们在浏览器竞争中脱颖而出的法宝。
  第一点:稳定性。
  为了保证稳定性,在程序实现上采用了多进程的方式(如下图所示),即浏览器由多个进程组成,每个进程负责不同的事情,当某个进程出现异常之后,不会因为死锁崩溃等原因导致整个浏览器不能运行。
  1) 主进程,主要总管主界面的显示、数据库读写、其他sogouexplorer子进程的生命周期维护。
  2) 网络层进程,主要总管浏览器所有的HTTP网络请求。因为搜狗浏览器是Trident内核+Webkit内核,所以为了提升网络请求稳定性,同时便于双内核下的Cookie等数据同步,所以我们在4.2版本开始,将双内核的网络请求都统一在网络层。
  3) Webkit内核的渲染进程,它主要负责将从网络层获取的HTML内容渲染显示为我们看到的网页。
  4) Trident内核的渲染进程,作用与Webkit渲染进程相同,但进程架构与Webkit略有不同。Webkit一般是1个render对应1个网页,3个render代表开启了3个网页,而Trident是10个页面对应一个进程。
  测试技术:
  为了保证浏览器的稳定性,我们采用的测试方法是随机浏览自动化的稳定性测试,这一测试方法在上一个问题也有介绍,它的主要过程是:使用自动化技术进行大量的、长时间、随机地动作组合运行浏览器,比如访问某个URL、添加收藏、删除收藏等300个动作混合在一起运行,进而观察浏览器的崩溃率。这一自动化平台称之为稳定性评测系统的结构,它由以下几部分组成:
  1) 基于我们自研的Venus自动化平台(考虑获取原视频剪裁 里面有他们二维码)
  2) 执行机环境,即几十台Windows虚机,上面安装有自动化平台的agent,可以接受自动化平台下发的各种自动化执行并上传数据。
  3) 崩溃收集服务器,是一台CrashDump分析服务器,该服务器上通过运行cdb程序对上报上来的crashdump进行分析,并将分析后的崩溃栈整理并存入后台的mysql数据库中。
  4) 崩溃分析服务器,是一台展示Crash分析结果的服务器,它通过WEB页面,将浏览器的崩溃率、崩溃栈、崩溃机器数量等信息友好地展现给开发和测试人员,方便后续的问题定位和跟踪。
  第二点:响应性能。
  浏览器的启动时间是业界浏览器性能对比的重要指标,为了提升用户体验,我们在程序启动做了大量的优化,主要使用了异步加载的技术。举个例子:IE浏览器启动的时候,后台通常需要将收藏数据等加载完毕然后才进行UI界面的绘制显示,所以UI界面会被收藏数据加载所阻塞;而我们是UI界面与收藏数据会同时进行,UI界面先显示程序框架,同时后台数据库线程加载收藏数据,加载一部分后通过POST消息告知前台UI进行绘制,所以它是一个边显示边加载的过程。
  测试技术:在Windows客户端程序性能评测中,最大的困难在于要客观地反映不同浏览器的加载时间,例如IE浏览器、Chrome浏览器、搜狗浏览器及其他国内主流浏览器。因为被测程序来自不同的厂商,所以我们无法通过源代码中加日志的方法对比,同样通过Hook注入被测进程也是不稳定的。所以最终我们采用了与用户感知相同的方法:图像扫描。
  1)首先我们通过自动化脚本python进行一系列的测试前环境准备工作。
  2)其次会在windows运行一个像素扫描程序,该程序可以定制一个到多个扫描点,扫描点的位置也支持可配置。
  3)然后通过自动化脚本执行相应的操作并计时。
  4)像素扫描点开始实时扫描,当发现被扫描点发生变化,即为停止时间。
  5)最后通过脚本进行以上步骤的多次试验并进行结果统计,生成报告。
  第三点:智能化程度
  现在的浏览器,大家都在功能智能化上下功夫,例如通行证数据自动同步功能,当用户在电脑A上添加或编辑一个收藏,那么在电脑B上使用同一账户,这些收藏数据都可以智能的保持同步。搜狗在实现这个功能上自主开发了一套类似SVN的同步协议机制:
  这一技术中最为核心的是Merge的算法,即用户在A机器上操作的数据和在B机器上操作的数据如何进行合并,如A机器删除sohu.com收藏,B机器修改sohu.com收藏的标题,那么最终同步后的结果是删除还是修改。
  测试特点:Merge算法的场景非常之多,两台机器增删改查的不同组合,包括这些组合对应在数据库字段也会有不同数据组成,所以回归测试是一项非常繁重的工作。如何保证每次上线前都能够进行相应的回归呢?如果使用外围界面UI的自动化测试,效率及数据的校验都是个问题。在这里我们尝试使用了在代码层面通过Gtest测试框架进行集成自动化。
  1) 通过Gtest搭建单元测试框架
  2) 对同步这一过程编写相应的测试接口
  3) 通过代码中模拟A、B两台机器,例如切换数据库,使得切换机器可用代码切换
  4) 搭建配套的测试CloudServer
  5) 编写对应的单元测试用例
  版权声明:本文出自51Testing软件测试网测试专题。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 小小_闯天涯
    2015-11-10 16:48:42

    大赞诸葛老师。

  • zhuruize
    2015-11-05 18:37:41

    好,赞一个

  • 咚咚宝031102
    2015-10-30 14:08:47

    从来没有用过搜狗浏览器的路过, 不过貌似用过搜狗输入法

  • 冉冉的小屋
    2015-10-28 19:27:39

    非常好的访谈内容,收获颇丰。很关注诸葛东明,涉及到的文章全都记录下来,确实收到的启发很大,对我的帮助很多。果断下载了搜狗浏览器,哈哈。一起努力继续加油。

  • wander_miss
    2015-10-22 13:32:54

    好!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号