写点什么

百度技术沙龙第 28 期回顾:如何测试你的搜索引擎(含资料下载)

  • 2012-07-16
  • 本文字数:2682 字

    阅读完需:约 9 分钟

在 7 月 14 日由 @百度 主办、 @InfoQ 负责策划组织和实施的第 28 期百度技术沙龙活动上,来自百度高级工程师,线下百度负责人杨进,搜狗搜索事业部测试部经理,搜索测试负责人冯刚分别分享了关于搜索引擎系统的测试方法、常见问题以及相关的案例,话题涉及“大型搜索引擎的系统测试方法及案例分享”,以及“搜索引擎测试常见问题及有趣的缺陷”等。本文将对他们各自的分享做下简单的回顾,同时提供相关资料的下载。

主题一:大型搜索引擎的系统测试方法及案例分享微盘下载讲稿

来自百度高级工程师,线下百度负责人杨进第一个为大家分享,内容主要包括搜索引擎特点和测试挑战、沙盒、线下 PS 以及未来的发展方向这几部分,区别于其他互联网产品,搜索引擎主要充当着互联网入口的角色,无论在从数据和机器规模,还是并发数和响应速度上都有着较大的数量级,同时,这也意味着搜索引擎遇到的网络异常和攻击是其他产品所无法想象的,杨进提到:

系统中隐患爆发的可能性和规模的平方成正比。

早期的搜索引擎测试主要以模块和性能测试为主,遇到的挑战主要集中在以下几点:

  • 上线单
  • 异常处理
  • 多线程、分布式调度
  • 典型、异常数据
  • 相互影响的策略

沙盒一般是线上环境的成比例缩放,主要涉及用例、维护和环境三要素,用例主要包含日志监控、数据排查和监控报表;维护主要是指排队系统、自动部署和系统监控;环境包含模块组成、部署拓扑和数据规模等考量。在使用过程中发现,沙盒同样也遇到了一些困惑,比如在跨子系统接口和沙盒自身稳定性以及基础架构上都遇到了一些挑战,为了解决这一情况,百度推出了一套自己的线下 PS 系统,核心目的是在项目上线前,先进行一次接近生产环境的模拟(预上线),预上线的对象除程序外还包括紧急升级、数据上线、基础架构、OS。其核心测试能力主要体现在以下几点:

  • 环境仿真
    • 搭建完整 PS 系统,并完善对外接口
    • 增加机器规模
    • 线上运维人员使用和运维整个环境
  • 场景驱动
    • 覆盖线上主要场景
    • 测试数据多样化,分成背景随机数据、异常数据、业务监控数据等
    • 注入线上常见故障
  • 监控安全
    • 部署全部线上监控 +QA 系统测试监控和用例

通过这种方式,在半年时间内完成了预上线 722 次,发现问题 150 个,线上问题减少 1/3,新增监控 500 个,监控项多达 3000 多个。最后,杨进还分享了效果监控、业务集成测试等内容,并介绍了质量防护网的组成等内容。

主题二:搜索引擎测试常见问题及有趣的缺陷微盘下载讲稿

搜狗搜索事业部测试部经理,搜索测试负责人冯刚第二个为大家分享,话题主要涉及搜索引擎常见问题(网络连接与容灾、协议容错与兼容、内存使用与线程安全)和有趣 Bug 分享。搜索引擎也同样会遇到内存使用和线程安全的问题:

  • 错误使用
    • 未申请成功就使用
    • 未初始化就使用,缺省值真的不一定为 0
  • 内存泄露
    • 容错分支最易漏
    • 内存碎片
  • 内存越界
    • 静态数组越界
    • 指针移动越界
    • 真的不一定 core
  • 释放了还用
    • Double free
    • Free 后没有将指针置为 NULL,产生野指针
    • Return 了指向“栈内存”的指针或引用,该内存在函数体结束时被自动销毁

在最后,冯刚还分享了一些有趣的 bug:性能测试压力不是越大越好,nagle 算法导致的性能问题,nagle 算法会与 TCP 的延迟确认机制发生冲突,测试前建议使用套接字 TCP_NODELAY 选项关闭 nagle;字符串不能乱做加法,在使用 strcpy 时,字符串错误的被截断后计算 hash,会导致 hash 的 key 严重冲突,由此导致有可能会加出\0;

Open Space(开放式讨论环节)

为了促进参会者与我们每期的嘉宾以及讲师近距离交流,深入探讨在演讲过程中的疑问,本次活动依然设置了 Open ​Space(开放式讨论)环节。除了讲师杨进、冯刚外,《这就是搜索引擎作者》张俊林、一淘网测试架构师公直 _ 黄利,以及乐视网 CTO 曹坤波也参与了小组讨论。在 Open Space 的总结环节,几位话题小组长​分别对讨论的内容进行了总结。

杨进:主要讨论了测试环境的运作机制和监控机制相关的话题。

冯刚:主要讨论了自动化测试的流程、具体分工等问题。

公直 _ 黄利:主要讨论了测试框架、工具和平台的相关话题。重点讨论了为什么要自己开发工具:不适应当前的业务需求、易用性上的考量、学习成本高、需要结合多个工具、功能太全、资金和版权问题、现有工具缺少一些功能、新工具使用调研需要一定成本、技术体系、人员培养和需求、团队的宣传、领导的个人喜爱、兼容性、稳定性、扩展性以及维护成本的考虑。

张俊林:主要讨论了实时搜索和传统搜索的区别、特点以及基于内容和行为分析的算法的一些应用。

曹坤波:主要同大家讨论了从视频上传到搜素以及整个生命周期的管理,还谈到了用户 query 的解析以及后续通过对用户搜索行为的分析,最终提升用户体验的一些技术实践。

会后,一些参会者也通过新浪微博分享了他们的参会感受:​​

@锐刃 -flint :冯老师讲的很实在,经验的积累。

@Build2011 #百度技术沙龙 #杨大侠讲的真好。不仅仅是搜索引擎测试。还包括百度测试的模式。也提到我们服务上线遇到的问题。赞一个。

公直_ 黄利:下次找个机会专门分享下关于测试框架与工具设计吧,今天Open Space 环节时间太短了。发现tcpcopy 的作者 @wangbin579 也在现场就一起拉到我们组讨论了,好巧 。

钱钤#百度技术沙龙# 搜索引擎测试对网络技术知识与数据结构、操作系统等计算机基本功要求较高,有挑战性,再别说测试没有技术含量了。测试工作也可变得有独创性具备想象力。

Hou 金轩#百度技术沙龙#协议的兼容升级确实是个很头痛的问题,但是编码之前确实很难预测到协议的变化,并且也不是对所有的客户端都有时间和精力做到兼容。做搜索引擎可能还好些,毕竟网络协议已经很稳定升级变动不大。不过当然考虑的越全面对用户体验越好了。

淘朱藻:testing in production, 在听百度技术沙龙,这个想法不错。

Smile 薇 __ #百度技术沙龙#第一次参加,果然很好,都是技术牛人,想想我们银行做测试用的工具和思路,真的是比较落后了,不过木有办法,求稳,对银行来说,最稳定的才是最好的。

harry 小淫既天才#百度技术沙龙#冯刚师兄讲的搜索引擎遇到的网络异常让人大开眼界。

腾腾的小菠萝#百度技术沙龙# 事前测试,事中监控,事后总结,多方面立体提高 QA 工作的效率和质量。

lovely 心若冰清 2010 @百度技术沙龙 服务器端与客户端连接状态的重点监控。lr 无可用端口,爆出。查看 tcp 协议状态。

有关百度技术沙龙的更多信息,可以通过新浪微博关注 ** @百度技术沙龙,或者加入百度技术沙龙微群 **,InfoQ 上也总结了过往 26 期所有百度技术沙龙的演讲视频和资料等,感兴趣的读者可以直接浏览阅读

特别提示:第29 期百度技术沙龙将在8 月18 日,北京举行,欢迎关注 @InfoQ @百度技术沙龙 获取后续的活动信息。

2012-07-16 01:044473
用户头像

发布了 156 篇内容, 共 58.4 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

源码解析Synchronous Queue 这种特立独行的队列

华为云开发者联盟

MQ 堆栈 队列 Synchronous Queue 公平队列

大数据培训学习程序员有必要吗

@零度

大数据开发

BIGO 的数据管理与应用实践

NebulaGraph

数据库 图数据库 数据管理

Go单体服务开发最佳实践

万俊峰Kevin

微服务 单体架构 web开发 go-zero Go 语言

知识管理:新时代企业竞争力核心

小炮

企业知识管理 企业知识管理工具

想参加培训学习web前端不知道靠不靠谱

@零度

web前端开发

企评家,助力创业板企业成长性评价

企评家

企业评价 企业大数据 创业板 评价维度 成长性

Docker下,极速体验编译pinpoint1.6.x分支

程序员欣宸

Java 分布式 4月月更

DevSecOps“内置安全保护”,让软件研发“天生健康”

华为云开发者联盟

DevOps DevSecOps 软件研发 安全架构设计 安全隐私

Swoole中的协程使用相关说明,快来围观

CRMEB

Docker知识对应验证

Docker 4月月更

C语言总结_数组与函数传参练习题

DS小龙哥

4月月更

英特尔分享进军独显市场的背后思考

科技新消息

揭秘华为云GaussDB(for Influx):最佳实践之数据建模

华为云开发者联盟

MySQL 数据建模 数据模型 华为云 GaussDB(for Influx)

培训学习选择java好还是前端好

@零度

JAVA开发 web前端

JavaScript的事件循环机制浅析

程序猿布欧

JavaScript 前端 前端面试 防抖节流

超干货 | 手把手教你快速构建一个企业自有“微信”!

融云 RongCloud

“一个扫描枪一张表”,韵达选择 TDengine 应对每日亿级数据量

TDengine

数据库 tdengine

【易安联】安全都是有边界的,零信任也不例外

极客天地

什么是敏捷开发,敏捷开发落地指南之迭代排期

阿里云云效

云计算 阿里云 敏捷开发 研发 研发敏捷

javaScript深拷贝和浅拷贝简单梳理

程序猿布欧

JavaScript 前端 深拷贝 浅拷贝 深拷贝与浅拷贝

一文详解Java日志框架JUL

华为云开发者联盟

Java 日志 框架 日志框架 JUL

眼见不一定为实:调用链HBase倾斜修复

捉虫大师

HBase 数据倾斜 4月月更

活动预告 | 洞见科技纪凯受邀出席「隐私计算应用与发展论坛」

洞见科技

《数字经济全景白皮书》Z世代用户洞察篇(3)重磅发布!

易观分析

用户分析 Z世代

这是一个有关自律的复杂故事

Coffee Cat

数据分析 监控 自律 跑步 可观测

Go语言入门很简单:Go 中的作用域和变量隐藏

宇宙之一粟

作用域 Go 语言 4月月更

REDIS集群安装运维调优及常见问题处理

IT巅峰技术

为安全而生!浪潮云参编的《数据安全法》实施参考(第一版)重磅发布

云安全

双许可、先决条件、附加条款……开源许可证的疑难杂问

一君

【阿里云大咖说】填问卷送好礼正式上线,快来参与吧!

大咖说

大咖说 问卷 礼品

百度技术沙龙第28期回顾:如何测试你的搜索引擎(含资料下载)_百度_贾国清_InfoQ精选文章