29 1 月, 2019 1:38 上午

Windows 生態系統應用程式相容性

By

微軟的應用程式生態非常地多元,其中包含以千萬計之應用程式,且有提供眾多版本、語言、架構、服務與組態選項。雖然微軟的程式生態系極為複雜,但願景非常簡單 – 「所有應用程式在 Windows 裝置上都應可運作!」客戶應放心地升級 Windows 10,無須擔心不同 Windows 版本之間的相容性問題。為了達成這項目標,需要藉由傳統測試,以及創新的方法來預測並防止問題的發生。在這一篇探討Windows 10品質的文章中,Windows 應用程式相容性處理團隊的 Mete Goktepe 介紹了多種微軟用以提升應用程式相容性的計畫與技術。

微軟非常密切地與合作夥伴進行評估、驗證並改善應用程式在所有支援 Windows 系統版本中的相容性。測試是一個非常重要的步驟,但微軟也明白測試並不足以全盤了解整個流動的生態系,因此,微軟投入研究新方法與產品改善。當微軟發現作業系統的改變影響了一個或是一組應用程式時,微軟與內外部開發者合作,對作業系統或是應用程式採取安全防護措施。由於這些修正需花費非常多時間,且微軟的目標是盡可能地降低任何對顧客的影響,因此微軟採取特定步驟,讓顧客在修正進行開發、部署與解決的同時不會受到影響。

微軟在眾多面向進行努力,例如積極預防發現問題與調查內外部夥伴參與以及相容性安全防護,以確保相容性。

積極預防

微軟 Windows 應用程式相容性處理團隊致力於預防應用程式產生的相容性問題時,憑藉與功能開發團隊合作,使系統更具相容性與彈性。當團隊為每次更新開發新功能時,Windows 程式編碼基礎會隨之改變。微軟使用靜態與運行時間分析工具來幫助微軟偵測 APIs 的變化,以檢驗是否有任何編碼改變導致的潛在相容性問題產生。微軟尤其關注可能影響第三方、獨立軟體廠商應用程式如防惡意程式碼與防毒解決方案的編碼變化,並且緊密地與夥伴們合作,在新版本發布之前向其溝通需調整的設定。

除此之外,微軟開發並運用機器學習模型的新功能,以了解編碼在活躍開發週期間如何變化,並建立單一風險評估模型,預先得知哪些應用程式需要測試。當模型成熟,微軟期待藉由客製化調整測試範圍,更快速地抓住相容問題所在,持續改善問題偵測標準。

發現問題與調查

每當改變編碼時,就有可能影響應用程式。微軟必須在作業系統的創新與提升安全水準之間取得平衡,並且不斷地觀察與評估任何對應用程式的影響。為了要維持 Windows 10 的相容性,微軟每周內部驗證上千個應用程式。依據生態系統中的受歡迎程度或是風險程度以及合作夥伴回饋,將這些應用程式選為探測相容性的指標。微軟也依據應用程式的 API 使用和執行潛在作業系統平台功能的獨特方式,部署應用程式選擇類別。如下方的部分清單所示,微軟將許多裝置 / 型態因子與應用程式類別以一個交叉矩陣形式綜合考慮。

內部測試矩陣的部分分類表

微軟持續驗證應用程式相容性,當新編碼組建立完成,接續小眾測試、品質與功能更新後,即展開相容性驗證。微軟的多層驗證方法包含下列的測試種類:

  • 自動化應用程式相容整合測試 – 像 Windows 這樣龐大且複雜的項目,需要上千位工程師一同參與並協同合作,每天專注改進不同分支的原始程式碼。在一個分支可以被整合進主要 Windows 開發主軸前,需要經過內部稱為「閘」的自動化測試。微軟的應用程式相容閘會測試第一方與第三方應用程式的主要功能。僅僅是桌機版,微軟便為每個完整建置的 Windows測試上百個橫跨所有的分支的應用程式。如果加總這些測試數量,微軟每天執行超過 280,000 項獨立應用程式的相容性測試。測試結果須在編碼組建置完成後兩小時內匯報,確保任何失誤都已被發現與處理,使 Windows 可維持穩定運作。
  • 每天自動化應用程式相容測試 – 當編碼到達主要 Windows 開發主軸時,微軟也會運行一個範圍更廣的自動化測試組合,其包含約 2,500 個應用程式,用以偵測任何新的相容性問題。這些每天排程的測試將在當天進行分析,讓工程團隊得以偵測並解決先前分支層級整合測試尚未被發現的問題。
  • 通過手動應用程式測試 – 現今,微軟已非常仰賴自動化,並將持續投資更進一步的自動化作業。但微軟也會仰賴手動驗證以確保一般使用者的體驗不受影響。自動化解決方案有時候會有功能上的疏失。但是,為了驗證並使一般使用者體驗不受影響,就需設身處地操作。

這邊提供一些微軟需要手動驗證的一般使用者情境例子:

  • 自動化顯示選單,並從選單中做選擇。然而,它難以簡單驗證對一般使用者來說,選單上的每個選項是可見的、可使用的。
  • 自動化不能評估當特定周邊類型連結/附加在裝置上時,應用程式改變的行為。

資料與分析基礎的問題偵測:微軟團隊也利用遙測訊號,偵測隨著新的作業系統釋出或是給 Windows 測試人員的作業系統小眾測試版,確認對應用程式生態系統是否存在不良影響。藉由遙測,微軟能緊密地監視應用程式崩壞信號,觀察其是否增加。同樣地,微軟的自動使用者反饋監控系統,每天整理上千條反饋,幫助微軟偵測影響 Windows 客戶的潛在相容性問題;這些都被微軟視為優先處理的項目。

有了這種程度的即時應用程式相容測試與監控,微軟的目標是在每一個版本的 Windows 10 都維持高相容性通過率。微軟針對Windows 10 功能更新以及每月品質更新進行上述測試,以盡可能地保持微軟最佳的相容性。

內外部夥伴參與

藉由測試或遙測尋找相容性問題只是第一步。微軟也希望與合作夥伴共同解決相容性問題並更新應用程式或是作業系統。為了做到這件事情,微軟緊密地與內外部團隊合作,解決在產品開發週期時新發現的相容性問題。外部夥伴包含外部獨立軟體廠商與代工廠商。下方是兩個外部參與的例子:

Desktop App Assure 計畫 : 微軟對於應用程式相容性的承諾非常有自信。2018 年 9 月的 Ignite 大會上,微軟發布了 Desktop App Assure 計畫,當商用客戶要部署 Windows 10、Office 365 專業增強版以及後續的功能更新,提供應用程式修復服務。Desktop App Assure 服務可以讓您不須付額外成本,處理有效的應用程式相容性問題。這項計畫是為了:

  • 協助客戶修復客製開發的企業營運應用程式
  • 與第三方獨立軟體產商合作,協助修復客戶的 Windows 10 應用程式與 Windows 即服務(Windows-as-a-Service) 的問題協助說明
  • 處理在 Microsoft 第一方產品 (包含 Office 巨集與增益集) 發現的問題

防毒軟體廠商合作 : 非常多 Windows 10 裝置使用第三方防毒軟體解決方案,而這些應用程式有時候會有相容性問題。將近 80 間獨立軟體廠商,涵蓋 95 % 以上的生態系統 (例如:Avast, Kaspersky, McAfee, Qihoo, Sophos, Symantec, Tencent, Trend Micro 等等),皆參與微軟的 MIV (Microsoft Virus Initiative) 計畫。微軟與這些廠商維持緊密關係,提供一個「團結力量大」的整合體驗,保護微軟共同的客戶免於受到惡意軟體攻擊。許多防毒軟體廠商也參加微軟的 Security Update Validation Program (SUVP) 計畫以確認安全性更新 (這在 2018 年 12 月的部落格中有提及)。同樣地,微軟在相容性實驗室中執行上百樣防毒產品,以匯報在 Windows 10 功能與品質更新後這些產品的運行狀況。微軟盡心盡力地持續開拓與防毒軟體廠商的協同合作機會,以維持提供高相容性、安全性體驗給微軟的客戶。

相容性安全防護

隨著問題、時間軸與內外部合作夥伴解決問題的能力,Windows 應用程式相容性處理團隊評估許多緩衝措施以避免顧客遇到相容性問題。這拆解為兩個基本類型 – 填充碼與封鎖。填充碼是一個幫助應用程式或功能在作業系統功能沒能完全支援它或是已經改變的情況下如預期地運作的方法。封鎖則更簡單,它排除使用者安裝會產生相容性問題的 Windows 10 更新。當微軟因為一個應用程式的相容性問題而放置一個封鎖,微軟將不會在受影響的裝置上安裝更新,直到問題解決為止。當問題被修正後,重新測試並完全部署,微軟就會移除封鎖。微軟近期開始更透明地在 Windows 10 更新歷程頁面提供這封鎖的功能。即便微軟有足夠的能力藉由封鎖或填充碼來減緩問題,但微軟只將這視為暫時做法,優先處理問題以及更新作業系統才是完整的解決方法。

微軟盡力地在 Windows 裝置上提供全然相容的應用程式體驗。藉由積極預防、多層驗證方法、與動態且多元的生態系統合作以及相容性安全防護,來達成這個目標。微軟將持續創新預防檢驗的方法,讓每個更新體驗都能具有完整的相容性。