2013 年 GTAC:演示文稿

2013 年 GTAC 的所有录像和幻灯片均已公开发布。 您可以观看 GTAC 2013 YouTube 播放列表中的视频,也可以观看下面的讲座:

开场白

Tony Voellm (Google)

链接:Video

开场主旨演讲 - 从质量保证到测试工程的演变

Ari Shamash(Google)

您构建了一个应用。您已经启动了该应用。您一定想到自己能成功,建立一些转化量,获得一些资金,然后全部放弃,最后从头开始,确保能“取得良好成效”。但是,现在对新功能的需求空前高涨,因此您需要以前所未有的速度加速到前所未有的规模。哎呀!该怎么办?

您不能抛开所有内容,而是从头开始。您只需改进已有的功能,同时继续以惊人的速度添加高品质功能。此外,您需要确保现有内容不会中断。如何实现?幸运的是,我们在软件工程行业中形成了一个新的领域,旨在解决以下常见场景:在 Google,我们称之为“测试工程”。

本次演讲将重点介绍测试工程是什么,它是如何从质量保证过程中演变的,以及整个行业如何实施测试工程(具体的具体示例介绍了 Google 如何实施测试工程)。

链接:视频幻灯片

大规模测试系统 @Twitter

James Waldrop (Twitter)

James 将讨论 Twitter 的性能测试所用的工具、流程和理念。我们将着重强调 Iago 开源负载测试库,他编写该库后,可让 Twitter 的工程团队在将代码部署到生产环境之前执行负载测试。并且会深入介绍其中部分测试(包括源代码)的实现细节,以及 OAuth 和任意 Thrift 协议等复杂因素的管理方式。

链接:视频幻灯片

如何测试移动操作系统?

David Burns (Mozilla) 和 Malini Das (Mozilla)

于是,我们决定探索 FirefoxOS 时,遇到了一个问题。从何处着手,采用何种方式,事实证明这是一项有趣的任务。来听听我们如何解决此问题以及我们如何创建新框架。

链接:视频幻灯片

持续交付流水线中的移动自动化

Igor Dorovskikh(Expedia)和 Kaustubh Gawande(Expedia)

Expedia 从 2012 年初开始投资建立移动网站和 iOS/Android 应用。与此同时,测试工程师从一开始就开发测试自动化解决方案,以提高产品质量和可测试性。在本次演讲中,我们将分享在 Expedia 敏捷开发和持续交付环境中利用开源工具构建自动化测试的经验和经验。我们将讨论测试金字塔,并详细介绍那些效果较好的特定开源工具。我们使用的一些开源工具包括 Cucumber、网络自动化工具 Selenium-WebDriver、iOS 自动化工具 Frank、Android 自动化工具 Robotium 和 Calabash 以及持续集成系统 Jenkins 等 BDD 工具。此外,我们会分享我们努力采用的一些敏捷交付原则,例如 TDD、配对编排、组装和测试辐射器。最后,我们将分享我们在敏捷性和测试自动化方面的一些成果,以及这如何帮助我们实现持续交付目标。

链接:视频幻灯片

使用 GStreamer 和 OpenCV 自动进行机顶盒测试

David Röthlisberger (YouView)

我们将在 3 分钟内使用 GStreamer 的命令行工具和 OpenCV 构建一个视频拍摄系统。(GStreamer 是一个开源媒体处理框架;OpenCV -“Open Computer Vision”- 是一个开源图像处理库。)

这种系统的一个领先示例是 http://stb-tester.com,它是在 YouView 开发的开源工具,可自动对机顶盒进行界面测试。我们将介绍 stb-tester、其 GStreamer 支持的灵活性、它的一些可能性以及未来的挑战。

链接: 视频

适用于 Chrome 的 Webdriver

Ken Kania(Google)

从最初仅支持 Windows 的浏览器开始,Chrome 已扩展到 Mac、Linux、ChromeOS 以及最近的 Android 和 iOS。跨这些平台对 Web 应用进行用户级测试很困难,因此需要采取各种自动化方法。本次演讲将介绍 Chrome 团队为支持所有平台上的 Chrome 而推出的 WebDriver。这包括从底层技术层面了解技术,但会重点关注开发者如何使用新版 ChromeDriver 为 Chrome 的各种平台编写测试。此外,我们还会介绍该项目的当前状态以及未来的路线图。

链接:视频幻灯片

Karma - JavaScript 测试运行程序

Vojta Jina (Google)

Karma 简介 - 让运行程序在真实浏览器中测试 JavaScript 应用的过程顺畅无碍且令人愉悦。

如果要构建的 JavaScript 应用必须能在多种浏览器和设备上运行,则测试并非可选操作。不过,在所有这些不同的环境中执行测试并不容易。Karma 将这类艰难的任务变成了一项蛋糕。利用该工具,您可以在舒适的终端或喜爱的 IDE 上直接执行手机或平板电脑等 JavaScript 设备或设备中的 JavaScript 测试。

链接: 视频

自动视频质量衡量

Patrik Höglund(Google)

可以,可以自动测试复杂的主观衡量,例如视频质量!本演讲将介绍我们如何针对 WebRTC 视频通话构建连续的自动化端到端测试。我们来大致了解一下工具链,以及我们在构建工具链时遇到的挑战。如果您想了解如何推动媒体测试水平再上新台阶,非常适合采用这种策略。

链接:视频幻灯片

当糟糕的应用发生坏事时...

Minal Mishra (Netflix)

移动计算和平板电脑计算的兴起已向软件行业大力推广应用开发平台。在计算平台上开发消费类应用对最终用户来说有他们自己的魔法体验。面向消费者的软件公司始终致力于针对这些平台开发应用,全力以赴发展。然而,应用程序开发面临的最大挑战仅在公司推出第一个版本的应用之后才会发生。消费者和软件公司希望尽快以最高质量实现开发中的最新特性和功能。这会导致堆栈的每一层都出现不断的代码抖动。作为界面自动化工程师,我们构建了各种检测系统来及时发现应用问题。在本次演讲中,我会分享我们在这种检测系统背后所带来的一些挑战和成功成果,它们不仅有助于发现应用层之外的问题,还对用户体验产生不利影响。

链接:视频幻灯片

教育游戏和教育游戏测试

Tao Xie(北卡罗来纳州立大学)

这场讲座介绍了 Pex4Fun (http://www.pexforfun.com/),该平台利用自动测试生成功能,在可扩容到数十万用户的在线编程系统中支持自动评分。它提供了课堂之外的编程游戏体验,可以培训用户学习各种编程和软件工程技能,包括测试参数化单元测试等技能。Pex4Fun 对作业评分的已知问题做出了重大贡献,还提供了基于互动式游戏的有趣学习体验。Pex4Fun 在社区越来越受欢迎:自 2010 年 6 月向公众发布以来,截至 2013 年初,“Ask Pex!”按钮(表明用户为尝试 Pex4Fun 中的游戏而尝试点击)的次数已超过了 100 万次。

链接:视频幻灯片

结束语主旨演讲 - Facebook 如何在 Android 上测试 Facebook

Simon Stewart (Facebook)

Facebook 是最受欢迎的 Android 应用之一。在此演讲中,您将了解 Facebook 会采取哪些措施来确保每个版本都尽可能出色。我们将介绍方方面面的内容,从管理代码的方式,到测试方法,再到 Dogfood 测试,不一而足。

链接:视频幻灯片

开场主旨演讲 - 可测试的 JavaScript - 设计应用的可测试性

Mark Trostler(Google)

可测试的 JavaScript 是一个进程。无论是从空白可选广告开始,还是已经实施的应用(或在两者之间实施),都可以简单、简洁且有效地测试 JavaScript 代码,这是一项必要功能。无法测试的代码将被重写。

尽管 JavaScript 在许多环境中运行的环境非常独特,但也有一些源自其他语言且久经考验的“可测试”方法,这些方法也适用于 JavaScript。当然,JavaScript 开发者在编写和测试代码时仍面临着一些独特的挑战。

哪些模式支持代码测试?哪些反模式会阻碍测试?哪些指标和常识性指南可用于衡量代码的可测试性?创建可测试代码的流程现在开始了,具体是什么?

和我一起来学习编写可测试 JavaScript 的过程。我们将会调查可显著提升可测试性,从而显著提升代码的可维护性、正确性和长效的想法、模式和方法。无论您是编写客户端 JavaScript 还是服务器端 JavaScript 来掌控此过程,都会大大提高代码的质量。

链接:视频幻灯片

打破矩阵 - 大规模 Android 测试

GoogleStefan Ramsauer (Google) 和 Valera Zakharov (Google)

您准备好服用红色药了吗?

移动设备改变了人们与计算机互动的方式。这很棒,但作为工程师,我们面临着一个不断增长的环境矩阵,它运行我们的代码。过去考虑少量浏览器和屏幕分辨率的日子已经结束了。工程师该如何应对矩阵?我们将介绍 Google 如何在工作站、云端和脑中抵御这一测试问题...

“我试着摆脱你的内心,Neo。但我只能向你显示门门情况。你必须竭尽所能才能做到。”

链接:视频幻灯片

Android 界面自动化

Guang Zhu(周光) (Google) 和 Adam Momtaz (Google)

随着 Android 在移动世界越来越受欢迎,应用开发者和 OEM 供应商正在探索如何对应用或整个平台执行界面驱动的端到端测试。在本演讲中,我们会简要介绍 Android 上的现有界面自动化解决方案,并将介绍最近发布的 Android UI Automator 框架。该框架将继续对框架、典型用例和工作流进行内部介绍。

链接:视频幻灯片

Appium:移动应用自动化

Jonathan Lipps(酱汁实验室)

Appium 是一个 Node.js 服务器,可自动处理原生和混合移动应用(iOS 和 Android)。Appium 的理念指出,应用不得为了实现自动化而进行修改,也应该能够使用任何语言或框架编写测试代码。最终,他们构建了 Selenium WebDriver 服务器,该服务器就像是本机语言一样。Appium 可在真实设备和模拟器上运行,并且是完全开源的,因此是开始进行移动测试自动化的绝佳友好方式。在本演讲中,我将简要介绍为 Appium 设计提供依据的原则,谈论其他移动自动化框架领域的 Appium,以及引入这种魔力的架构。最后,我会深入分析用于全新移动应用的简单测试的代码,并演示如何在 iPhone 和 Android 上运行此测试。

链接:视频幻灯片

构建适用于 Google+ 移动版的可扩展移动测试基础架构

Eduardo Bravo (Google)

以有意义的、稳定且可伸缩的方式测试原生应用是一项挑战。为了解决上述问题,Google+ 开发了多种有效的解决方案。我们当前的测试基础架构为 iOS 和 Android 应用提供了正确的工具,让开发团队可以确信新的更改不会破坏现有客户。

链接:视频幻灯片

Espresso:Android 界面测试入门

Valera Zakharov(Google)

更新 [2013 年 10 月]:Espresso 现已开放源代码。请参阅 https://code.google.com/p/android-test-kit/

开发可靠的 Android 测试应该和提取浓缩咖啡一样简单快速。遗憾的是,使用现有工具后,您可能感觉更像是生成双重焦糖汁-调味面-倒中-低温-十五投入式拿铁 - 令人困惑,很少保持一致。Espresso 是一个新的 Android 测试框架,可让您快速编写简洁、美观且可靠的界面测试。核心 API 体量小、可预测且易于学习,但也支持自定义。Espresso 测试会清楚地说明他们的预期、交互和断言,而不会干扰样板文件、自定义基础架构或混乱的实现细节。测试的运行速度最快 - 无需等待、同步、睡眠和轮询,可以让框架在静止时优雅地操作和断言界面。开始享受编写和执行界面测试的乐趣 - 试用 Espresso。

链接:视频幻灯片

使用 WebDriver 进行 Web 性能测试

Michael Klepikov (Google)

在网络性能测试中,我们知道如何分析网页加载情况。不过,我们需要超出页面加载的范围:现代应用具有很高的互动性,因此操作往往不会重新加载整个页面,而是更新它。我自己也包含不同的人,他们将 WebDriver 集成到了 Web 性能自动化测试框架中,这有助于实现性能测试,但依然能将性能测试与界面测试套件的其余部分分开。我提议利用最近添加的 Logging API 将性能测试功能直接内置到 WebDriver 中。这样,就可以在运行常规功能测试时收集性能指标,从而将性能测试无缝集成到整体开发和测试流程中。而且,它对几乎每个大型组织创建的自定义构建/测试工具链造成的干扰也更低。

我将通过新一代 ChromeDriver(适用于 Chromium 浏览器的 WebDriver)演示这一点。

链接:视频幻灯片

持续地图数据测试

Yvette Nameth (Google) 和 Brendan Dhein (Google)

持续测试通常是指运行单元测试和集成测试。但是,当服务器处理的数据实际上是最大的变化原因时,您如何确保数据的使用方仍然有用,并且不会因为更改率或不良更改而崩溃?我们将通过 Google 地图的示例讨论连续数据测试的技巧。

链接:视频幻灯片

在失败的 build 中自动查找问题根源 - 即是谁破坏了 build?

Celal Ziftci (UCSD) 和 Vivek Ramavajjala (Google)

持续构建是 Google 的重要基础架构之一。当某个 build 失败时,请务必快速查明罪名变更列表 (CL)/变更列表,以便可以对其进行修复,使其重新回到绿色。

问题检测解决方案适用于中小型企业 build,但不适用于大型集成 build。

我们的犯罪根发现者会在很短的时间内自动获取大型 build 的 Kulprit CL。根据过去 9 个月内多个项目的生产使用情况,Culprit Finder 的成效非常好。欢迎观看我们的讲座,了解我们如何实施罪魁祸首、其在生产环境中的成功程度及其外观和效果。

链接:视频幻灯片

软件产品线质量实证研究

Katerina Goseva-Popstojanova(西弗吉尼亚大学)

软件产品线在产品线系统中表现出高度共性,并且出现了大量可能的变体。根据从两个中型规模开发(一个中型工业产品线和一个大型不断发展的开源产品线)中提取的案例研究,我们通过探索性地探索了系统重用是否提高了质量,并且支持根据以往的故障、源代码指标和变化指标成功预测未来的故障。我们的研究结果证实,在软件产品线设置中,其他故障的发现结果与变化指标具有更高的相关性,而非静态代码指标。质量评估结果显示,尽管旧包装(包括共通性)不断变化,但它们的故障密度仍然较低。此外,随着产品不断完善,开源产品系列的质量也不断提高。基于通用线性回归模型的预测使用在发布之前的模型上构建的模型,根据软件包发布后的错误对它们进行了准确的排名。结果还表明,发布后的故障预测有助于了解其他产品线信息。

链接:视频幻灯片

AddressSanitizer、ThreadSanitizer 和 MemorySanitizer -- C++ 动态测试工具

Kostya Serebryany(Google)

AddressSanitizer (ASan) 是一款工具,可用于查找 C/C++ 程序中的缓冲区溢出(堆栈、堆和全局)和释放后使用 bug。 ThreadSanitizer (TSan) 可在 C/C++ 和 Go 程序中查找数据争用。MemorySanitizer (MSan) 是一个开发中的工具,用于查找使用未初始化内存 (C++) 的工具。这些工具基于编译器插桩(LLVM 和 GCC),因此它们的运行速度非常快(例如,ASan 只会减慢 2 倍)。我们将使用这些工具分享我们在大规模测试方面的经验。

链接:视频幻灯片

闭幕主旨演讲 - 畅饮海洋 - Google 规模的 XSS

Claudio Criscione (Google)

跨站脚本攻击 (XSS) 与现代网络黑暗世界的中年黑死病一样流行:它很普遍,很糟糕,而且很少会有技术检测方法检测到它为时已晚。DOM XSS 是一种特别讨厌的变体,因为它需要检测真实浏览器或等效机制:几乎没有自动化解决方案时的困难问题。

我们需要强大的自动驾驶工具,在开发生命周期的早期阶段确定 DOM XSS,以供安全团队以外的工程师使用:我们只想要一款可以扫描庞大、快速移动、高度复杂且模糊和冷漠的应用语料库的产品。当然,我们什么也没找到。因此,我们自行开发了一款以 DOM XSS 为目标的 Web 应用扫描器,它基于标准 Google 技术而设计。它在 App Engine 中运行,并利用强大的 Chrome 浏览器和数百个 CPU 作为安全扫描平台。

它也是 Google 测试工厂的不错选择:它位于我们的测试基础架构内部,而不是安全团队的工具。

在本次演讲中,我们概述了新颖的方法,我们在将系统规模扩大到 Google 规模时遇到的挑战,以及针对 JavaScript 密集型应用进行检测和抓取模型背后的想法。

链接:视频幻灯片