- 1、本文档共85页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
百度测试秘籍全解析
伴随移动互联网转型,百度的测试工程师也在实际工作中,快速跟进技术更迭、不断地改善测试方法和技术。本章将我们的一些优秀实践分享给读者。
3.1自动化测试
测试环节在整个产品周期中对产品的质量起到关键的作用。 测试人员在进行功能测试时,首先想到的就是如何摆脱一些纯手工测试,将精力放入更加复杂的测试上,自动化测试永远是最受测试人员关注的一个话题。
Baidu的自动化测试经过10几年的积累,小有成果。接下来以百度地图客户端的自动化为实例,介绍baidu质量部在自动化测试上的实践和获益。
3.1.1概述
客户端测试包括很多工作,测试工作有功能测试、稳定性测试、代码静态检查、性能测试、兼容性测试和安全测试等,辅助工作有用例管理、设备管理、项目管理等,还有很多其他工作。工程师们往往花了很多时间在做一些重复性工作,没有过多的精力投入到产品质量的深挖上去。地图客户端测试效率提升思路是不定期的组织版本耗时分析,将耗时较长工作缩短、将耗时少工作变为零耗时,从而释放人力做更多探索测试。比如:
事例1:设备管理这块,没有一个公共的地方记录设备在哪位工程师手上,工程师借出还入操作比较繁琐,导致在设备调度这块耗时很长。
解决方式:开发一个设备管理app,工程师只需要打开设备做借入还出操作;搭建设备管理平台,用于方便查看设备是否空闲以及归属。
事例2:地图客户端大框检索业务逻辑复杂,用例繁多,耗时很长(预计115分钟)
解决方式:高工对大框检索业务进行代码解读。通过业务分享、用例梳理,用例自动化转化等方式,最终该业务测试用例执行耗时降低86%,预计15分钟完成。
地图客户端通过对测试效率得不断迭代,得到明显的效果也积累了一些经验值:
? 监控开发工程师每次提交代码质量,触发核心功能自动化验证。
? 功能自动化率最高时达到40%,集成测试一轮时间从22小时缩短至6小时。
? 基于自动化持续集成的前提,集成测试阶段Android地图客户端做到daily灰度,保证代码时刻处于可发布状态。
接下来,主要介绍地图客户端自动化是如何构建的。
3.1.2基础准备
用例调整
很多团队做自动化之前,都可能碰上这样的问题,测试开发人员将框架等都搭建完毕后,转化手工用例时,发现手工用例无法转化,导致自动化工作开展缓慢,且效果不好量化。地图在前期自动化方案也碰到这样的问题,产生的场景就是用例编写人员按照自己的理解编写自动化用例步骤,而实际验证点与期望验证点相差甚远。
自动化工作开展前,务必保证现有的用例可自动化,便于后续用例自动化转化和自动化效果考量。用例的要求有三点:
? 用例目的要明确
? 一个用例只有一个验证点 (没有主观体验)
给出一个GOOD Case:
测试目的:起点或终点以我的位置发起搜索
测试步骤:
1. 点击路线按钮
2. 起点为“我的位置”
3. 终点为“西直门”
4. 点击所搜按钮
期望结果:进入公交方案列表页
自动化工具
地图客户端分为Android和iPhone两个端,这两个开发平台的自动化测试工具有很多,结合地图客户端的特点,我们对工具的选型如下:
Android 端
? 自动化事件管理工具:Robotium
? 管理用例执行:adb + bat
? 代码语言:java
iPhone 端:
? 自动化事件管理工具:UIAutomation (地图是多团队并行开发,组件以库形式提交,所以选择非注入式框架)
? 管理用例执行:tuneup-js + shell
? 处理崩溃信息:MobileDevice
? 代码语言:javascript
自动化框架
前面提到自动化工具选型,关于UI元素定位、事件触发等都是基础library,自动化用例脚本的落地形式很重要。就脚本可读性和后期维护性而言,地图最终选择的脚本形式是关键字驱动型,代码形式如下:
#import ../importall.js
test(baidumap_ios_3114747_G0,function(target, app){
writeLog(回地图主页面);
clickToBackHomePageInitializePage();
writeLog(点击路线面板);
clickRouteButtonHomePage();
writeLog(点击公交tab图标);
clickBusTabRouteBusPage();
writeLog(点击起点输入框);
clickStartBoxRouteBusPage();
writeLog(点击我的位置作为起点/终点);
clickLocationStartEndPage();
writeLog(点击终点输入框);
clickEndBoxR
文档评论(0)