ITeye 2012年8月第3周重要新闻回顾

在近期于纽约举办的一场Google技术讲座上,Google资深软件测试工程师Lindsay
Pasricha介绍了Chrome
iOS版的测试及发布流程,探讨了其产品开发策略、自动化测试框架以及手工测试流程等。本文对其中重要内容做个总结。

澳门新葡萄京官网注册 1

关注技术趋势,点评IT热点,ITeye资讯频道,助您把握IT技术的脉搏!每周一我们会为您带来上周重要新闻总结,如果您对ITeye的新闻总结有任何的意见或建议,请留言给我们或邮件联系:webmaster(at)iteye.com。

开发环境

Xcode是Google
iOS版产品的主要开发工具,与其它一些内部方案和工具结合使用。Pasricha说,其中有些工具也并非Google内部专用,如用于管理依赖的gyp和用于版本控制的git。“我们还使用了许多自动构建的解决方案让开发过程尽可能更快,”
比如后面还会提到的Pulse和Waterfall。

Google今天发布了2011年第一个Chrome版本,不过并非稳定版,而是Chrome
9的一个Beta版。Google在官方博客中宣布,Beta渠道升级至9.0.597.42,提供了Windows、Mac和Chrome
Frame(谷歌浏览器内嵌框架)版本,主要完善了稳定性,并且对用户界面进行了微调,并没有新增什么功能。

2012年8月第3周值得关注的重要新闻如下。

iOS开发的挑战

Chrome
iOS版开发面临的最大挑战之一来自于Google本身是个Android导向的公司。比如他们很难在Google内部找到使用iPhone的工程师参与iOS版产品的内部测试。而且,想要与其它非iOS平台的开发团队之间达成共识也很不容易,因为他们并不了解iOS开发的局限性,例如你不可能在App
Store上发布Beta版产品。

除此之外,另一大挑战是App
Store审核流程强制规定了一个应用所允许提供的API和服务。这是所有iOS开发者面临的一个普遍问题,但对Chrome来说尤为严苛,因为苹果将所有浏览类应用限制在它们自己的UIWebView类里,它就是个黑盒子,Pasrica说,而且Bug很多。

还有一个例子是在所有Google应用之间实现的单点登录机制。为了简化用户体验、增强桌面Chrome应用和手机版之间的同步机制,Chrome
iOS版于近期刚刚引入了单点登录。“这对苹果来说是件大事,因为他们认为这样存在潜在的安全威胁。最后,他们终于接受了我们的观点——为用户维护keychain其实正是强化了安全防护,最终Chrome拿到了许可。”

另外,App
Store不允许发布Beta版应用也增加了开发的难度。这一原则与Google的Chrome开发惯用策略相反——即通过分发金丝雀版本让数百万用户使用。这样一来,在iOS上的开发就不得不将之前的“开发-金丝雀版-beta版”流程放在公司内部完成,使得其测试用户数缩减到几百个——应用一旦发布,这些测试用户对应用的成熟度有很大影响。

Chrome
9.0.597.42修复了一些之前版本中存在的Bug问题,Google希望用户能测试该版本并提供反馈,为正式版的发布做好准备。Chrome
9.0在about:flags实验室中提供了一些试验性功能,包括用户自定义DNS地址、Web页面预渲染、Snap
Start、试验性扩展API、点击播放。

一、微软、Win 8与WP 8

发布流程

在Google的计划里,Chrome遵循一个6到9周的发布流程——从为当前开发阶段的新特性取得开发许可开始。所有平台都遵循这一流程。在这几周里,主要任务是在该阶段的代码分支中开发新特性并修复Bug,在准备评审流程的同时,大部分测试也完成了。在这个过程中,既有自动化测试,又有手工测试,重点在回归测试和对新特性的测试。

一旦测试完成,应用就被提交上去做评审,“这可以说是‘一个有意思的过程’,”
Pasricha说。苹果公司没有给Google什么特权,但是从Pasricha的解说来看,他们与评审小组有专线联系,并且他们通常不会收到以文字形式描述的关于某次评审不通过的理由和细节,而是被邀请过去“谈谈”,有时甚至邀请Google的VP。Pasricha说评审过程从未少于2个星期,但导致被拒的原因总会被快速解决,“从没有哪个里程碑是被彻底拒绝的,往往只是误解而已。”

只要应用得到上线许可,它的使用范围就从“一小部分Google内部用户变为数百万普通用户”,有时也会产生新问题,这时Chrome团队就要做一次新构建。随之而来的Bug修复版本的评审时间往往短得多,因为他们可以在提交应用时附上说明,注明这个构建并没有引入新功能,只是修复了哪些Bug。

Google在12月初刚刚发布了Chrome 8正式版,首次支持Chrome Web
Store在线商店并且内置了PDF阅读器。按照Google当前的开发速度,Chrome
9很有可能会在Chrome 8发布的六周后完成正式版。

Windows
8目前已进入RTM阶段时,这意味着开发工作和测试工作已经完工,微软也开放了Windows
8最终版本的试用下载。

自动化测试

Google的测试理念中很重要的一点是使用Bots——一种使用物理设备来运行app的软件架构。Pasricha说,虽然在iPhone6和6+问世之前,iOS开发领域没有设备的分裂问题,这个测试理念仍然十分重要,并且日后可能会变得越来越重要。

这些自动化解决方案无疑是能帮助我们尽早拿到关于代码质量反馈的最佳方式。

前文提到过,Google从3个渠道开展测试:开发,金丝雀版,beta版。这三个渠道的定义如下:

  • 开发渠道:用于在新特性提交到里程碑之前的功能验证。
  • 金丝雀渠道:包含了待合并到代码分支的所有更改集;在金丝雀版本构建上会运行自动化测试、单元测试和端到端测试。
  • Beta渠道:这是最接近App
    Store发布版本的构建,其中包括了额外的端到端测试。

以下描述了需要完成的几种最主要的测试类型:

  • 单元测试:传统的“用于检验在各种状态下的变量值是否与期望值相符的低级别测试”,在开发过程中进行。
  • 端到端测试:由KIF框架管理,它借助iOS的易访问性功能来实现iOS上的测试自动化。Pasricha说,与苹果公司的自动化测试框架UIA相比,KIF“更为可靠一些”。
  • 性能测试澳门新葡萄京官网注册,:通过Chrome访问一系列URL,之后可以比较每次运行的性能表现。这些测试只能用来比较同一个里程碑内的软件运行性能,而不能跨里程碑比较,因此运行这类测试的目的在于确保在每个发布周期内软件的运行时间没有变长。
  • 截屏测试:这类测试也是用Chrome发送一系列URL,在访问的同时截屏。如果渲染的图像之间的差异低于预先设定的阈值则测试通过,否则需要人工检查。Pasricha说,这种测试的概念很好,但不幸的是,每次运行后许多页面之间的差异几乎达到80%,这是因为页面本身的改变和广告切换导致的,因此这类测试的误报率往往很高。

(责任编辑:admin)

微软开放 Windows 8 试用版下载

手工测试

在Pasricha看来,尽管采用了自动化测试,手工测试仍然是必需且无可避免的。通常来说,总有一部分测试用例只能通过手工方式来测试,例如有些用户网速很慢,那么测试时执行速度就不能太快;还有需要在请求时加入限制条件的一类特殊的企业账户等等。而且有些功能的测试用例还没有实现自动化,此时也要执行手工测试,这种情况往往发生在那些很晚才被添加到开发流程里的新功能上。事实上,有时候有些功能直到最后都没能实现自动化测试。最后,还有些功能本来就没有必要实现自动化,比如Chrome的标签页切换功能。

Pasricha很希望看到Chrome iOS版团队在这个领域做出一些改变,尤其需要“软件工程师们承担起软件质量的责任”,这样的话某个功能只有在开发人员也亲自为它写了测试代码之后才能被发布上线,否则就不予发布。必须承认,这是一个很难在Stakeholder之间达成一致的问题,包括决策层和产品经理——这些人一点也不喜欢看到某些功能无法上线是由于缺少自动化测试这样的理由。

上文提到的开发渠道的测试中并不包括手工测试,而在金丝雀版本渠道内会进行两种形式的手工测试:对比测试和delta测试。它们的关注点都在功能的变更上,因为众所周知的,一幅热点图或者风险矩阵就能够标示出所有发生变更的组件。Pasricha补充道,在进行这类测试时,详细的发布文档十分重要,因为它们提供了变更的位置以及哪些功能可能会因此受到影响等信息。同样的,开发人员并不太乐意提供那么详尽的发布文档,那么在这种情况下还需要做一些额外的工作以达成一致。

Win 8体验:不够完善但依然出色

其它测试

需要进行的其它类型测试还有:

  • 升级测试:app发布之后,首先要做的测试就是“升级”测试,也就是从App
    Store更新已安装的app。在这个阶段,所有新功能也会被快速地过一遍。
  • 可访问性测试及国际化测试:这两种测试不会在每个里程碑阶段都全量进行,其完整测试每年执行两次。
  • 安全测试:每个功能都必须经过整个安全小组的安全评审,除非是很小的功能才会只指派一位安全工程师来做评审。
  • 地理位置测试:这类测试也很重要,因为曾经发现过一些只在某些国家的网站上才会出现的Bug。

在Windows
8中,Metro风格界面是其最重要的标志之一,微软也欲将其所有产品贴上这一标签。

持续集成

Pasricha解释道,Chrome
iOS版团队搭建了一套在Google内部使用的持续集成系统,叫做Pulse。在此之前,Pasricha使用的是Jenkins,但最后他们改用了Pulse。Pulse被用来创建构建并为其签名,以使得iOS
Instrumentation能够在这些构建上运行,而Pulse本身并不是用来运行测试的。用在Pulse之后的是Waterfall,它被用于所有的Chrome平台,并不仅仅是iOS,它负责运行测试并收集测试结果,这些测试结果用一个由红绿格子组成的矩阵表示。

所有测试既要在模拟器中的OS
X环境运行,也要在真实的设备上运行。Pasricha警告说,使用模拟器有一个问题:它的内存比真实的设备多,因此不能用于定位与内存相关的问题。

微软推出新版SkyDrive,欲统一产品体验

对老版本iOS的支持

关于是否支持某个iOS版本的问题,Pasricha的建议是,设定一个最小用户数阈值,基于这个值来决定一旦发现了Bug是否要为此将当前开发阶段重新开始。这个值可以是5%,3%或1%,也就是成千上万的用户。有时候你也可以选择支持一小部分用户的需求,尽管他们的群体在短期看来是很小的。这种情况就发生在iOS越狱社区,Pasricha说,他们对Chrome
iOS版尤为重要,因为只有他们才可能选择Chrome作为默认浏览器。但是一般来说,如果一个老平台上只有很少量的用户,比如iOS
5或iOS
6,那么还是有必要仔细考虑你愿意为支持这些用户投入多少成本。如果要支持,后续还会有设备和配置项增多的问题,从而导致测试矩阵变大。同时也增加了未来的开发成本,因为到时候可能还需要解决在这些平台上功能缺失的问题。另一个需要考虑的方面在于开发人员为一个旧iOS平台解决Bug的意愿:如果他们不愿意,那么就没必要支持那些平台了。

第三方开发商也不例外。

Metro 版 Firefox for Windows 8 即将发布

多年的版权官司经验,令微软意识到“Metro”这一名称可能会引起商标权纠纷,微软也不得不弃用这一名称。

微软:名称中包含“Metro”的应用将无法通过审核

作为Windows/.NET平台上最重要的IDE,Visual Studio 2012也将随Windows
8一并发布。

微软面向开发者发布VisualStudio 2012和.NET 4.5

说完了桌面产品,再来看微软的移动产品。作为重振微软移动平台的重要棋子,WP
7.5
Mango功不可没,该版本可以算是一个里程碑式的版本。而下一个里程碑的使命,微软赋予给了WP
8。

WP平台上的VIP开发者已经拿到WP8手机

WP 7.8 和 WP 8 的差别在哪

为了迎接这个重量级的产品,微软升级了其WP开发者中心。微软已事先告知,升级过程及升级后的一段时间将会出现一些不可预知的问题。

微软关于新版WindowsPhone开发者中心的 QA

Windows Phone应用商店遭遇全球性故障

二、移动开发

HTML5的步步紧逼,令Flash的处境有些尴尬。Adobe相继宣布停止移动平台、Linux平台的Flash
Player开发工作。Adobe也明确指出,Android 4.1已经没有配套的Flash
Player了,如果用户一定要安装,则可能会出现这样那样的问题。

Flash Player 正式退出 Android 平台

但这不影响Android4.1之前版本中已安装过FlashPlayer的用户继续使用该功能,只是GooglePlay中将不再提供该应用的下载了。而Google
Play中新增的增量更新功能,Flash Player也是“无福享受”。

Google Play 开始提供应用增量更新功能

和Google Play一样,苹果App
Store至今也尚未找到一个好的应用发现机制,因此苹果一再更改App
Store的搜索算法,除了抑制刷榜外,苹果想让用户发现更多的应用。但有时会适得其反。

苹果AppStore搜索算法再次变化,第一个字为关键字

其他讯息

移动开发者 2012 年经济状况信息图

昔日 Palm 变身为 Gram,将专注于软件

Twitter 收购应用测试平台Clutch.io

三、编程语言/工具相关

编程语言

2012年8月TIOBE排行榜:Objective-C高歌猛进,C#继续“杯具”

甲骨文和AMD发起新项目,致力GPU上运行Java程序

JavaFX 2.2 正式发布,下一版本为8.0

PHP 5.4.6 和 5.3.16 发布,bug 修复版本

框架

ServiceFramework:效率堪比Rails的超敏捷Java开发框架

Spring Tool Suite 3.0 发布,相关组件开源

Web前端

jQuery 1.8 正式版发布

Dojo 1.8 发布,文档质量显著提升

Sencha Architect 2.1发布,HTML5应用可视化构建工具

其他

谷歌提供200万奖金用于寻找Chrome漏洞

Google发布基于Dart的Google API客户端库

Growl 2.0 SDK发布,整合苹果通知中心

四、每周甜点

Web3.0:移动时代

HTML5能做什么?在浏览器中运行GBA游戏

值得开发者关注的 5 个新兴平台

7 个简单实用的 jQuery图片播放器

在国外可获得高薪的 10 项 IT 技能

Mac 平台上 13 款实用的代码编辑器推荐

15 款基于jQuery 的 RSS 阅读器插件

发表评论

电子邮件地址不会被公开。 必填项已用*标注