淘宝网持续集成的尝试

javale

贡献于2012-12-03

字数:0 关键词: 单元测试

pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 博客分类 热门博客 淘宝网 持续集成的 尝试 heyun 发表于:2012-04-28 浏览:1423次 评论:7次 所属分类: 测试架构 专题:持续集成 全网回归 全网回归 是淘宝网主站 持续集成的 组成部分, 要解决的问题 1. 应用多, 2. 有依赖,各应用之间有依赖,开发应用者不完全清楚。 3. 同一个测试环境,解决问题容易,排查问题难。 目标 1. 对业务线的回归; on time 2. 公司级别的回归, 安全,运维团队 升级 打补丁之后, 可以直接选择需要回归的业务线以及 用例优先级; on demand 3. API 的精确回归, 当某一API 发生 变化时, 能够精确的定位被影响的全网 其他API ,并且进行回归,给出结果,通知相应的 人; on event (we are here) 目前情况 2011年 未分类 (570) 功能测试 (293) 测试理论 (69) 自动化测试 (177) 测试工具 (85) 系列活动 (692) 测试人生 (138) 性能测试 (83) 接口测试 (186) 安全测试 (44) 测试架构 (40) 分布式系统测试 (25) 团队(公司)博客的影响力 2010-01-15 Linux 系列(一) - 基本命令 2008-12-23 ruby中不可小视的@ie.wait 2009-07-16 HBase 线上问题分析小记 2012-07-22 临时需求如何安排发布? 2007-11-30 InstrumentDriver,对iOS自动化测试说 Yes! 2012-05-28 接口测试在淘宝的应用 2009-01-08 linux命令free详解 2009-06-29 HBase Bug 知多少 2012-07-21 淘宝Android自动化测试框架 - TMTS2011-09-04 首页 首页 博客 博客 专题 专题 产品 产品 技术交流 技术交流 关于我们 关于我们 淘宝无障碍 淘宝无障碍 请输入标题关键字... 登录 登录 | | 注册 注册 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 专题 热门标签 GBA(15) 测试(12) ruby(10) rails(10) hadoop(6) 接口测试(6) 添加新标签(6) Spring(5) 持续集成(5) 功能测试(5) 无线测试(5) 1. 平均每天2.1个bug;共发现208个bug;帮助降低线上BUG遗漏率 45.31%(208/459); 2. 脚本平均运行时间: WebUI:1.38分钟API:1.2秒 3. 脚本数量:19263个(WebUI-1613,API-17650) ----------> 54120个(WebUI-6492,API-47628) 4. 脚本成功率: WebUI平均95%(最高97%,最低92%);API平均97%(最高98%,最低95%) 5. 投入成本: 平均每条线维护脚本0.955个,耗时10分钟(6条线); 平均每人维护脚本0.035个,耗时3.75秒(200人计) 6. 成本降低: 平均每天在跑用例 50k,每个用例人工执行 算5min; 则需要 520个工作日的时间(每天8小时不间断工作),相当于 520个人 一天8小时 不间断的工作量 关键技术 1. 机器管理 目的 确保测试机器高可用度 降低测试机器搭建的成本 分析 现状 :从春节后的2月份开始,automan(淘宝自动化框架)升级了5次,但每一次升级都不完整,总会有一些机器升级不成功。 回归机器已达到了70+台,排查起来费时费力; 关于instruments远程执行自动化脚本模 拟器界面卡住问题 2012-05-22 Beta测试 2007-11-27 读者言论经典 2008-01-30 学习笔记之maven2学习总结(1,入门起 步与实践) 2009-02-20 TCon 2012之豆瓣IOS自动化测试2012-07-09 第一次性能测试 2011-05-04 好书推荐 2009-04-05 UI测试的设计层次 2012-05-29 TCon 2012之淘宝Android/IOS自动化测 试框架 2012-07-09 LoadRunner录制脚本时提示默认浏览器 不支持解决方法 2008-07-16 GBA (68) 2012-06-18 开发自测 (5) 2012-06-19 持续集成 (3) 2012-07-06 Tcon 2012 (13) 2012-07-12 无线测试 (1) 2012-07-19 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 无线测试(5) webUi 自动化 automanx 实践 (4) Maven(4) DbUnit(4) Java(4) Dataset(4) watir(4) 数据库(4) MapReduce(4) 前端测试(4) HBase(3) Plugin(3) junit(3) 开发自测(3) mobile testing(3) 无线(3) 自动化(3) 测试工具(3) 白皮书(3) Linux(3) 最新动态 Agent也有同样的问题,但相比而言要少些;目前,全面升级一次的时间挺长,约2小时; 办法 :测试平台提供统一的客户端软件批量升级的办法,升级后能验证是否成功,并反馈到kelude(淘宝测试系统)上的机器管 理系统中,负责人可以立即看到所有机器的升级情况,进而快速发现问题、解决问题; 另外 ,机器管理还需要收集各回归机器的关键软件信息,如:版本、配置等,方便负责人快速发现环境差异; 对回归机器的全面验证,例如:benchmark 现状 :在kelude(淘宝测试系统)系统中登记的机器共有100+,但这里面的机器有些不能访问,或者性能低下;例如,2012- 03-14对全网回归的99台机器进行验证,结果发现:有39台没有执行脚本,有40台机器正常执行(<20S),有15台机器执行时 间超过20S; 办法 :建立一套验证脚本和验证机制:每天定时 或 按需(例如加机器,或升级)运行这一套脚本,对所有的回归机器进行全面的 自动验证,从中确定有问题的,运行缓慢的机器,或优化,或淘汰等; 验证脚本可以根据需要 添加进来,例如:对性能的验证,对浏览器访问的验证,对automan(淘宝自动化框架)版本的验证等; 机器标准化 机器标准化:账号、软件、配置等,并提供标准化的虚拟机镜像,方便快速创建新的回归机器;后期会尝试 KVM 的接入 技术 机器唯一性标识 每个KeludeAgent接入到Kelude系统时,会由系统分配一个独一无二的UUID,用来在Kelude系统内标识该KeludeAgent。 机器信息 &软件配置获取 (windows)KeludeAgent定期读取(1h)注册表获取机器信息,浏览器信息,通过 HTTP API 推送到kelude平台 (linux) 暂未支持 2012年ADC技术嘉年华资料下载2012-07-11 2012年ADC技术嘉年华TCon正在火热报 名 2012-06-12 淘宝Tcon杭州分场将在5月26号举行2012-05-21 2012淘宝网技术质量部年会圆满结束2012-03-07 淘测试2011年刊发布了 2012-01-12 Tcon测试技术沙龙圆满结束 2011-12-27 Tcon测试技术沙龙即将在浙江人民大会堂 举行 2011-12-13 淘宝2011秋季招聘进行时 2011-09-22 淘宝无障碍实验室成立 2011-09-22 Tcon沙龙即将在杭州和北京举行2011-09-16 淘宝接口测试框架iTest开源啦2011-09-16 淘测试网站升级 2011-08-26 技术嘉年华 — TCon第三届互联网测试交 流大会 2011-07-07 技术质量部第一次趣味运动会 2011-05-16 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 招聘栏 软件升级 KeludeAgent开放 Deploy RPC service 接口,Kelude Web 将升级的命令通过 RPC调用传递给KeludeAgent执行。 (windows)KeludeAgent 执行 Kelude Web 传递的命令进行升级。由于在某些时候可能需要升级KeludeAgent本身,因此 KeludeAgent在执行升级命令时,会将升级过程单独启动一个独立的进程来执行。即使KeludeAgent被关闭,也不会影响升级过 程。 可用性检测 任意程序可以通过访问KeludeAgent暴露的 RPC 接口来确定其是否可用. 可用性检测告警 在机器信息收集的基础上,定义了一些触发条件。当机器的信息满足这些条件时,Kelude系统就发出旺旺消息通知对应的机器管理 人员。 目前定义的规则主要包括 机器可用状态变化 机器 C 盘空间降低到500M以下(windows) 2. 任务调度 按机器池并行调度 现状:2月份,各回归机器的利用率差别很大,从30%-90%不等,回归机器没有被充分利用起来,导致部分产品回归时间长; 淘宝技术质量部官方网站---淘测试 上线2011-01-23 我们的职责 2011-01-17 第二届(杭州)互联网测试技术交流会圆满 落幕! 2011-01-17 Java中间件测试开发工程师 2011-08-26 理财产品高级测试开发工程师(北京)2011-08-23 旅行产品测试开发工程师(北京)2011-08-23 C++客户端测试开发工程师 2011-03-29 高级Web(前端)测试工程师2011-03-21 Hadoop测试开发工程师 2011-03-21 手机测试开发工程师 2011-03-21 性能评测工程师 2011-03-21 SNS高级测试工程师 2011-03-21 无线应用高级测试工程师 2011-03-21 应届实习生招聘 2011-01-18 安全工程师 2011-01-18 测试开发工程师(C++) 2011-01-18 资深测试开发工程师(Java)/白盒测试工程 师 2011-01-18 云测试平台开发工程师 2011-01-18 测试架构师 2011-01-18 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 办法:首先按产品线建立机器池,各产品线回归 从机器池中获取可用机器,以10个-30个TC为一组 进行并行调度; 期望的效果是,均衡机器的利用率,缩短整体回归时间; 按任务优先级调度 现状:WebUI回归2小时完成率大约在74%,通过分析发现,70%运行超时的脚本(约300个)都被安排在了02:00之内运行,这 就导致了运行快的脚本被排挤到了2H以外; 办法:增加调度优先级,例如:运行快的脚本被优先执行,重要的用例优先执行等; 机器节点动态伸缩 探测回归机器是否可用,并能够动态的增加或减少回归机器。不会因为其中的少量机器不可用,而引起回归超时、或失败的问题; l 3. 如何确立全网的API依赖关系(系统内,系统外) Depend系统的API接口采用基于REST风格的接口规范。所有的调用请求都需要走http的方式调用统一的URL(暂定 http://XXXXX:8080/depend/rest.do )来实现。 Depend实现原理关键技术点:在被测试应用所有类中插入jvm指令,以取回方法调用链、当前请求URL、tair服务的名字空间等信 息,存入数据库即完成了依赖关系的收集,具体技术要点如下: 在depend的数据类中定义全局静态数据载体属性,这是一个ThreadLocal对象,能进行线程安全的数据存储操作。 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 在被测试应用所有方法入口处插入以下代码,可以取得整个调用链中所有类与方法名,并将此信息存入全局数据载体中。 StackTraceElement[] stackTrace = new Throwable().getStackTrace(); stackTrace[1].getClassName()); stackTrace[1].getMethodName(); 根据各种类型应用预先设置好入口类,入口类中插入特定代码以取回URL、特定参数值(如tair的名字空间),下面以webx 应用为例说明: Webx应用的入口类名为com.xxx.xxxx.xxxx.WebxFrameworkFilter,入口方法为doFilter(request,response,chain),要在 此方法的第一行插入如下指令以从request对象中取回URL,并将此URL和上述信息存放在一起,最终传回服务器进行分析处理。 aload_1 invokestatic com.taobao.depend.InfoPicker.getUrl(javax.servlet.http.HttpServletRequest) 取tair的名称空间以及其他的值,都是需要依赖特定的API的。 在服务器端,将所有的URL、方法调用链信息去重后存入数据库,即完成依赖关系收集。 从SVN取回某个变更了的方法名,取回所有受到影响的方法列表 实现方法:使用HttpClient开源组件发送请求到URL: http://XXXX:8080/depend/rest.do,同时带上如下参数: pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 名称 类型 必选 描述 示例值 api String 是 method.previousMethod.get v String 是 API版本号,请设置成0.1 0.1 app_name String 是 应用名称 xxxx class_name String 是 类名称 com.xxx.xxx.xxxxx. xxxxxx method_name String 是 方法名称 xxx ivk_type Integer 是 调用方式。0为全部,1为本地调用,2为远程调用。 0 valid_day Integer 否 有效日志天数。查询时只使用有效天数之内的日志。默认值为30天 7 format String 否 返回的数据格式,前期支持json json 请求的返回值为json格式: { “app_name”: “xxxx”, “class_name”: “com.taobao.xxx.xxx.xxx”, “method_name”: “xxxx”, “methods”: [{ “app_name”:”xxxx”, “class_name”: “com.taobao.xxx.xxx.xxx”, “method_name”: “xxxxx”, “ivk_count”: 105 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API },{ “app_name”:”xxxx”, “class_name”: “com.taobao.xxxxx”, “method_name”: “xxx”, “ivk_count”: 13048 }] } 其中[ ]中的内容即为受影响的方法列表(包含类名)。 其他API的调用方法相同,参数请参照原文档。 对于测试类里面的方法,可以通过解析获取到一个测试类里面的方法所直接调用的方法列表。 4. 用例来源与组织 来源: Web UI; API; Android; IOS; 组织: 业务线回归(on time): P0,P1,P2,P3; 公司级回归(on demand): P0, P1; 精准回归(on event): P0,P1,P2,P3; 通过用例的逻辑操作,可自由加入回归实验室; 5. 时间分析 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API WebUI脚本Profiler 现状:WebUI脚本执行时间长,7000个TC,在70台机器执行需要3小时;而测试人员并不能分析出其中的性能瓶颈:automan 框架引起的、脚本编写、或者是被测系统响应慢; 办法:提供WebUI脚本的运行各环节的时间消耗,以及脚本中各个step的时间消耗,推送到kelude平台汇总分析; WebUI脚本的执行给出硬性规定,5分钟算超时,10分钟回归系统强行结束; 从近2周的数据,我们已经准确的分析出了automan平台的瓶颈,以及 淘宝被测系统的瓶颈,运行最慢的脚本等; 例如:3.6分析了最近7天,平均访问超过 5S 的10次的URL 共有50+个; 价值:直接给测试员提供性能瓶颈;分析出淘宝的性能瓶颈URL; 2012.3.14的回归时间: l 6. 环境部署 Daily下应用的部署 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 现状:目前主站应用数大致为 800多个,应用的daily环境为 1120多个(虚机)。 基本的部署过程: build.sh先更新代码和配置项打包后进入以下过程 部署方式 目前部署已经实现web化操作 daily环境的建立和维护人为scm,开发、测试、scm都可以有权限来进行部署 在scm.taobao.net平台中申请环境部署权限,可以通过页面实现以下部署 今年daily环境将要进行的工作: pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 1.daily主要应用梳理,备机方式 解决问题:应用部署时,对测试的影响 应用出现问题,可以切换到备机 2.二套标准环境推广 项目、沙箱或者开发环境可以绑定二套标准环境,提升环境的稳定性 7. 测试环境(daily 环境)稳定 Daily下应用部署的监控 现状:对于daily下应用的部署情况只有片面、粗略的了解,没有办法基于数据做一些分析 办法:收集daily下所有应用的部署事件:svn, ip, app等,后续可挖掘出跟环境相关的很多信息:例如部署次数最多的应用; 应用部署测试 现状:daily环境下,部署应用后,并没用立即验证,这经常引起依赖的业务方访问出问题; 办法:由部署事件驱动,应用部署后立即自动验证,比如:hsf接口验证,http接口;这类用例要能够从系统级别来验证,而且要 快,20分钟左右; 网络稳定和响应提速 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 现状:daily环境应用响应速度慢,主要有三方面原因:1、js/css没有压缩,部分合并、部分没合并;2、图片直接从TFS文件系 统读取,没有做缓存;3、automan部分机器配置差,部分网段网络不稳定(6网段和24网段)。 解决办法: 针对第1点,在daily环境中推动js/css压缩、合并、设置过期时间,减少应用端对js/css的请求量。 针对第2点,在daily环境中架设一层TFS缓存,提升图片的响应速度。 针对第3点,更换配置高的机器,尽量选择kvm虚拟技术+win2003server操作系统;并调整不稳定的网段,将automan执行机放 置到独立的网段,避免其它测试(如性能测试)对执行机产生影响。 应用性能提升 现状:每天大约有100个URL在全网回归执行过程中,时长超过5S,疑似被测应用本身性能较低。 办法:利用kelude的log分析出慢URL,kelude调用pap组件的接口将URL推送给pap,pap自动执行专项性能测试,暴露出性能瓶 颈。 实现方法:pap以post方式提供http接口,kelude分析好数据后以json方式post给这个URL。 json串格式: urlinfo={"hostbinds":"hosts文件中需要添加的绑定信息,换行为\r\n", "username":"登录使用的用户名", "password":"登录使用的密码", urls: [{"url":"访问的url","owner":"url对应的负责人","method":"automan对应的action,共有4个,start,goto,cast为http get请求,click为http post请求"}, ...]} 在一个上百人测试部门,上千人以上规模的研发团队, 做好一件事情,技术是一方面,另外一个重要方面是所有人一起为了一个 目标去努力,背后是每一位工程师的心血和汗水, 是每一位工程师的努力打造了淘宝网今天的持续集成一角 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 分享到: -- 持续集成 CI 淘宝 淘宝持续集成 ROI 淘宝测试 淘宝研发流程 淘宝测试流程 上篇 MBT(Model Based Testing)理念(随想) 下篇 新人项目总结 用户留言: 共有7条留言 目前专注于 全网回归,正如文章标题和文章末尾中提到, 尝试,以及持续集成一角; 持续集成的概念覆盖范围很广, 我们从点 滴来尝试比较容易控制并且容易操作。 动态依赖,更详细的展示,可以组织公司间的交流或者来参加我们的TCON 1. 我们5月份 最近会去北京和各大公司交流,有兴趣可以公司间交流;联系我就可以heyun@taobao.com 2. 5月份,有TCON技术沙龙, 7 月份 有技术嘉年华TCON 主会场,欢迎参加 :) 2012-05-02 回复 heyun 1. 这个我们写的不够清晰:), 对不住了, depend, 是后开发的一个能够存储 URLAPI 调用链 这样一个系统, 它不是真实的线 上应用,只是提供分析所用, 不存在接口多样化的问题 2. 主要用于统计 ”API依赖关系” 的技术,是JAVA 操作 bytecode的技 术, instrumentation, 任何的调用关系都存到depend系统里,而其他想去分析API关系做事情的内部系统都用rest方式和 depend 沟通。 3. 如果我讲得不清楚,欢迎再提问:), 当然文字方面的毕竟不是我长相,也欢迎你7月6,7月7来参加全国一年 一度的阿里技术嘉年华,Tcon 会议,今年我们有更多的技术(从测试到流程),分享给大家~ 2012-05-01 回复 heyun “不能让自动化用例失控,维护量大于脚本本身的价值。” 你的观点我非常赞同, 我的一些看法: 1. 自动化的ROI,我想不仅仅 应该以bug为价值,以脚本维护为成本,价值也许更多或者更少,成本同理 2. 上千人的研发团队,上千的应用,近千应用的相互 关联,如果升级任何一段底层代码,而且升级很频繁,每次升级最终要靠邮件或者成立临时项目组,或者人工或者半人工来做,升 级一段小代码,至少没有10天也由半月,效率带来的损失我想ROI分析也很难淋漓尽致 3. 我们想让外部系统稳定,如果外部系统 (如支付宝)为了我们单独成立团队,抽人,挤人做了很大的改造,而我们不能够快速验证,别人等在那,需要验证,对团队合作信 心和沟通会带来压力, 4. 如果精选,那么谁来精选,不是人的问题,是上千的应用,谁有能力能够甄别并且保证这些精选的就是 heyun pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 正确的,人在这个流程中处于什么状态,一直stand by,还是 on demand, 有这个需要的时候必须多久回应,跨应用调用,为 保证精选正确,是否要组成团队来精选,谁来组织团队,组织会议讨论还是邮件沟通, 这样技术和人混起来,实际操作起来比较 难办。当然,我们在努力朝着智能回归前进(即文中API 的精确回归) 5. 每个产品,每个公司,每个组织,对于价值的侧重点都不 一样,如果当前阶段重点是尽量减少线上bug, 减少对客户短时的影响, 即便以bug来衡量价值,不同时间段,价值也不同 6. 此 文是自动化于回归的用处方面,不便于上升到自动化整体ROI 讨论,最多算作部分,在此不做过多阐述,因为我觉得大多和公司 内业务,流程紧密结合,有共同的思考点,但其实每个公司各有各的结论 7. 一些信息,我写不全面,全年发现208个bug, 是指 自动化于回归发现的,正如标题一样,这些bug多半是跨应用或者其他变化所致,很可能遗留线上。 8. 最后,你的观点,我非常 赞同,但具体实施的方法, a. 精选,b. 剩下没发现的bug, 手工投入,实际真的很难做到。欢迎沟通:) 期待交流 2012-05-01 回复 见关键技术分析 2012-04-28 回复 heyun 恩恩,有道理,望听 ROI 分析高见 2012-04-28 回复 heyun 分析得很全面,到位。 2012-04-28 回复 剑儿 云哥,牛! CI尝试的介绍的太全面、深入了!! 2012-04-28 回复 云天 pdfcrowd.comopen in browser PRO version Are you a developer? Try out the HTML to PDF API 返回首页 博客 技术交流 产品 期刊下载 关于我们 意见反馈 无障碍 浙ICP备09109183号-14 Copyright © 2003-2012 TaobaoTesting.com 版权所有 换一张 提 交

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档