GTAC 2013:簡報第 2 天

開啟 Keynote - 可測試的 JavaScript - 設定應用程式以供測試

Mark Trostler (Google)

可測試 JavaScript 是一個程序。無論是一用空白插入畫面,還是已經實作的應用程式 (或介於兩者之間的任何位置),只要能夠測試您的 JavaScript 程式碼,就能輕鬆簡單、有效地進行必要測試。無法重新編寫的程式碼。

雖然 JavaScript 的執行範圍各有不同,但在種種語言中仍存在一些有效且真實的「可測試」方法,但 JavaScript 也必須這麼做。當然,JavaScript 開發人員在編寫及測試程式碼時依然存在獨特的挑戰。

哪些模式讓程式碼可供測試?哪一種反面模式會妨礙測試?哪些指標和常見慣例可用來評估程式碼的可測試性?建立可測試程式碼的程序是否已開始?

歡迎加入我們,一起撰寫可測試的 JavaScript 程序。我們會調查構想、模式和方法,大幅提升可測試性,並維護程式碼的可維護性、正確性和壽命。無論您撰寫的是用戶端或伺服器端 JavaScript 程式碼,都有助於大幅改善程式碼的品質。

打破矩陣 - 大規模測試 Android

Thomas Knych (Google)、Stefan Ramsauer (Google) 和 Valera Zakharov (Google)

準備好接上紅色藥片了嗎?

行動裝置改變了人類與電腦互動的方式。這個做法非常棒,不過在設計工程師環境時,我們也遇到了日漸增加的矩陣。過去只有幾天才會著手使用各種瀏覽器和螢幕解析度,工程師如何因應矩陣?我們將探討 Google 如何對工作站、雲端和您的理論進行測試

Neo不過,我可以顯示車門。就讓我們不得不走過。」

Android UI 自動化

Guang Zhu (惠斯文) (Google) 和 Adam Momtaz (Google)

隨著 Android 在行動市場中越來越受歡迎,應用程式開發人員和原始設備製造商 (OEM) 供應商也開始探索如何對應用程式或整個平台進行端對端 UI 驅動的測試。這場講座會簡要介紹 Android 上現有的 UI 自動化解決方案,並介紹最近發布的 Android UI Automator 架構,並讓使用者一窺架構、一般用途及工作流程的基本概念。

Appium:行動應用程式自動化

Jonathan Lipps (Sauce Labs)

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)

開發可靠的 Android 測試應該要快速輕鬆地簡單地拍攝濃縮濃縮咖啡。不過,在現有的工具的協助下,再次發覺可能會像是在製作兩個鏡頭時產生雙擊感。Espresso 是全新的 Android 測試架構,可讓您快速撰寫簡潔、美觀且可靠的 UI 測試。核心 API 很小,可預測且易於學習,但也非常適合用於自訂。Espresso 測試清楚明確地闡明期望、互動和斷言,這些訊息都不會受到干擾、自訂基礎架構或主題式導入作業的干擾。測試的執行速度非常快 - 請等待等候、同步、睡眠和意見調查,並讓架構在靜態休息時,能夠流暢地操控使用者介面及聲明。開始享受寫作及執行 UI 測試 - 試用 Espresso 的畫面。

使用 WebDriver 測試網站效能

Michael Klepikov (Google)

在網站效能測試中,我們相當瞭解如何分析網頁載入作業。不過,我們必須把重點放在網頁載入以外的部分:現代化應用程式的互動程度極高,而且營運作業通常不是重新載入整個網頁,而是更新網頁。每個人 (包括我自己) 都已將 WebDriver 整合至網站效能測試測試工具,這有助於將效能測試與其他 UI 測試套件分開。我建議直接在 WebDriver 中使用近期新增的 Logging API,打造效能測試功能。這樣一來,您便能在執行一般功能測試時收集成效指標,進而將效能測試更加順暢地整合至整體開發和測試流程。此外,幾乎所有大型機構建立的自訂建構/測試工具鍊,也能減少干擾。

我會透過新一代的 ChromeDriver (Chromium 瀏覽器專用 WebDriver) 進行示範。

連續地圖資料測試

Yvette Nameth (Google) 和 Brendan Dhein (Google)

持續測試通常涉及執行單元測試和整合測試。不過,當伺服器處理的資料實際上是造成變化的主要原因,你該如何確保資料使用者仍可正常使用,而且不會因為變更率或異常變更而發生當機?我們將討論幾種範例,說明如何透過 Google 地圖的範例持續測試資料。

在建構失敗的大樓中自動尋找烹飪行程,例如誰打烊?

Celal Ziftci (UCSD) 和 Vivek Ramavajjala (UCSD)

持續建構是 Google 的主要基礎架構之一。建構失敗時,請務必迅速找出依附元件變更清單 (CL)/變更清單,以便進行修正,讓建構作業恢復為綠色。

小型和中型版本適用的圓形偵測解決方案,但不適用於大型整合建構作業。

我們的手錶搜尋器可讓你在極短時間內自動找到大型建構適用的 Culprit CL。最近 9 個月在多個專案中依據實際用量的分析結果,得出結果相當優異的成果。歡迎參加我們的講座,瞭解我們如何啟動圓形搜尋器、在生產環境中的表現,以及外觀和外觀。

軟體研究方面的異同調查

Katerina Goseva-Popstojanova (西維吉尼亞大學)

軟體產品系列展現出產品系列系統的成熟度,且可能有多種變化版本。我們擷取了兩份個案研究 (中等尺寸的工業產品系列,以及瞬息萬變的開放原始碼產品線) 擷取的資料,探討系統性能如何提升品質,並成功預測過去曾出現問題、原始碼指標和變更指標,藉此預測未來可能發生的錯誤。研究結果顯示,在軟體產品系列設定中,其他錯誤的受訪者在變更指標方面的結果,比靜態程式碼指標更相關。品質評估結果顯示,雖然較新的套件 (包括通用性) 不斷改變,但仍會維持低密度。此外,隨著開放原始碼產品不斷演進,開放原始碼產品系列也越來越完善。根據一般線性線性迴歸模型的預測,系統會根據先前版本建立的模型,依據其後期出錯順序對套件進行排名。結果也顯示,產後錯誤預測會從其他產品系列資訊受益。

AddressSanitizer、ThreadSanitizer 和 MemorySanitizer -- C++ 的動態測試工具

Kostya Serebryany (Google)

AddressSanitizer (ASan) 是一項工具,用於尋找 C/C++ 程式中的緩衝區溢位 (堆疊、堆積和全域) 和使用後出現的錯誤。ThreadSanitizer (TSan) 會在 C/C++ 和 Go 程式中尋找資料競爭。MemorySanitizer (MSan) 是一項開發中的工具,可尋找未初始化的記憶體 (C++)。這些工具以編譯器檢測設備 (LLVM 和 GCC) 為基礎,因此執行速度非常快 (例如 ASan 僅會降低 2 倍速度)。我們將運用這些工具,大規模進行大規模測試。

閉幕主題演講 - 飲用海洋 - Google 體重計的 XSS

Claudio Criscione (Google)

跨網站指令碼攻擊 (XSS) 是指在網頁應用程式世界中,與成年期的黑人經期為現代,而且涵蓋程度極低且技術上來說沒有任何問題,可達到極佳或毫無技術偵測的威脅。DOM XSS 是特別針對這類變數的變化版本,原因是必須啟用實際的瀏覽器或功能才能偵測:由於可用的自動化解決方案難以使用,

我們需要強大的自主工具能夠在開發生命週期早期識別 DOM XSS,工程團隊以外的工程師能夠使用:我們只須掃描一種快速、快速又複雜的複雜應用程式資料庫,而這一切都是我們想要發掘的產品。因此,我們打造了一款專屬的 Web Scan 掃描器,也就是以標準 Google 技術為基礎的 DOM XSS。這項服務是在 App Engine 中運作,並運用強大的 Chrome 瀏覽器和數百種 CPU 做為安全性掃描平台。

同時也是 Google 的測試稽核員:居住在測試基礎架構內部,而不是安全團隊的儀器。

在本講座中,我們將以創新技術為基礎,將系統擴充至 Google 的挑戰,以及 JavaScript 密集應用程式所偵測和檢索模型背後的構想。