現代行動應用比以往任何時候都更加安全。這是一件好事。
但許多球隊直到為時已晚才意識到這種做法的副作用: 安全性越高,使用自動化測試應用程式就越困難。
應用防護、防篡改、憑證綁定和執行時間檢查旨在阻止攻擊者。然而,它們也常常會悄無聲息地、毫無明顯地回饋地導致自動化測試工具停止運作。測試變得不穩定,自動化啟動時應用崩潰,持續整合 (CI) 管線無故失效。
這是 無形牆 行動測試的真相:最關鍵、最安全的應用程式最終往往是自動化程度最低的應用程式。
「安全應用」指的是什麼?
在此背景下,安全應用程式是指包含以下保護措施的行動應用程式:
- 防篡改和防調試
- 代碼混淆
- Root 和越獄檢測
- 證書固定
- 運行時應用程序自我保護(RASP)
這些保護措施在銀行業、金融科技、醫療保健、政府以及任何處理敏感使用者資料的應用程式中都很常見。
這些防禦機制在底層持續監控「可疑」行為:偵錯器、鉤子框架、修改過的程式碼、不受信任的裝置或意外的運行時存取。一旦發現異常情況,應用程式可能會阻止部分功能運行或完全關閉。
問題在於?自動化測試工具的設計往往看起來很可疑。
為什麼啟用安全功能後自動化功能會失效
一旦啟用強效保護措施,以往的測試模式就會失效:
- UI自動化框架依賴可能被阻塞的檢測和輔助功能鉤子。
- 憑證插銷會中斷測試期間使用的交通檢查。
- Root 和越獄檢測阻止了測試在許多實驗室或雲端環境中運行。
- 設備雲端通常會限制企業安全場景所需的深度系統配置。
從測試者的角度來看,這感覺像是隨機的:
- 應用程式會在自動化流程開始後立即關閉。
- 手動登入可以成功,但在 CI 環境中登入失敗。
- 測試在本地進行時通過,但在實驗室進行時失敗。
日誌記錄有限,錯誤訊息模糊不清,安全團隊甚至可能根本不知道自動化流程已被阻止。
由此產生的差距(以及它們為何重要)
當自動化與安全無法共存時,團隊通常會陷入以下三種模式之一:
- 測試未受保護的建置版本,並假設生產環境的行為相同。
- 在測試環境中停用或削弱保護措施。
- 對於安全流程,應高度依賴人工測試。
這三者都會帶來風險──而這正是信心最需要發揮作用的時候。
諷刺的是,團隊對應用程式越敏感,就越難了解其大規模運行的真實情況。
真正的緊張關係:測試人員和攻擊者看起來一樣
這是一個令人不安的事實:
- 攻擊者利用鉤子、偵測和運行時檢查等手段。
- 安全團隊使用相同的技術來驗證防禦措施。
- 測試自動化框架依靠類似的機制來驅動應用程式。
到應用程序, 每個人看起來都像攻擊者。
大多數行動安全防護措施都能很好地偵測出惡意環境,但它們無法自然地區分惡意裝置和可信任的自動化裝置。當所有設備預設都被視為危險設備時,自動化設備就會成為附帶損害。
這就是無形之牆的由來。
今日市場走勢
業內人士意見分歧:
- 安全廠商專注於強大的運行時保護、反鉤子和完整性檢查。
- 測試平台著重於裝置覆蓋率、速度和 CI/CD 整合。
雙方都能解決實際問題,但通常各自獨立解決。
因此,各個團隊將安全 SDK、設備雲端、內部實驗室和手動變通方案拼湊在一起,卻沒有一個關於安全且可測試的應用程式應該是什麼樣子的共享模型。
更佳的前進方向:面向可測試性的安全性
我們看到的這種轉變,概念很簡單,但影響卻很強大: 安全性和可測試性必須同時設計。
團隊不再問“我們如何繞過安全限制進行測試?”,而是開始問:
- 我們能否測試受保護的版本,而不是削弱後的版本?
- 安全措施能否在不引入新的攻擊路徑的情況下識別可信任的測試環境?
- 當安全機制阻止某些操作時,測試人員能否看到清晰、可操作的訊號?
一些現代方法已經朝著這個方向發展:環境感知策略、後端驅動決策以及與 CI 管道自然配合的短期信任機制。
關鍵在於意圖: 懂得測試的安全措施並非敵人。
實踐中的「好」是什麼樣的
當各種因素達到適當的平衡時,以下幾件事就會成為現實:
- 測試和生產環境使用相同的安全版本。
- 保護措施持續生效-沒有捷徑,沒有特殊代碼分支。
- 自動化故障能夠清楚地表明是由安全規則還是功能性錯誤引起的。
- CI 管線將安全結果視為一流訊號,而不是神秘崩潰。
安全團隊掌控全局,測試人員獲得更清晰的可見度。 Release變得更有自信,而不是放慢速度。
超越功能性:當障礙倒塌後,什麼將成為可能
解決安全應用程式測試難題,不僅可以恢復功能自動化,還能為品質和信心開啟全新的可能性。
一旦安全應用程式能夠在測試平台中可靠運行,團隊就可以更進一步:
- 驗證安全保護措施對性能的影響
安全保障並非免費提供。對受保護的版本進行效能測試,有助於團隊在使用者感受到影響之前,了解執行時間檢查、加密和完整性控制如何影響啟動時間、回應速度和使用者體驗。 - 更快、更大規模地測試安全防護措施
自動化使得反覆、一致地驗證不同的保護場景成為可能。團隊無需手動測試少數案例,即可跨裝置、作業系統版本和工作流程測試保護措施,從而提高覆蓋範圍並減少盲點。 - 將安全行為視為可測試的行為
保護機制不再是黑盒子。團隊可以觀察防護措施何時以及如何觸發,確認其行為是否符合預期,並及早發現問題——就像應用程式的其他部分一樣。
換句話說,一旦安全應用程式變得可測試,安全性本身就變成了可觀察、可衡量和可改進的——而不僅僅是假設的。
好奇的測試人員今天就可以開始探索這個領域了
如果您對這個主題感興趣,以下是一些切實可行的初步步驟:
- 找出僅在安全建置中自動化失敗的原因。
- 使用共同語言與安全部門展開對話,例如 OWASP Mobile Application Security 驗證標準 (MASVS)。
- 直接詢問供應商他們如何支援安全應用程序,而不是僅僅詢問「任何設備上的任何應用程式」。
你不需要成為安全專家——只需要有足夠的好奇心去問對問題。
安全且可測試才是未來。
安全與自動化之間存在著一道無形的牆——但這道牆是真實存在的,但並非不可避免。
只要擁有正確的理念、共同的所有權以及專為實際應用而設計的平台,團隊就不必再在安全性和品質之間做出選擇。他們可以在不削弱應用程式效能的情況下測試受保護的應用程序,在不出現盲點的情況下擴展自動化,並且不僅對應用程式的功能充滿信心,還能對安全措施在實際環境中的表現充滿信心。
At Digital.ai這就是我們每天致力於解決的問題:幫助團隊在不禁用任何安全保護措施、不犧牲速度或可見性的前提下,對安全移動應用進行如同在生產環境中實際運行一樣的測試。當安全性和測試協同工作而非相互競爭時,品質就能提升,風險能更早被發現,發布也變得更加可預測。
想進一步了解嗎?
如果您想深入了解安全行動應用程式的測試,以下是一些實用資源,可協助您繼續探索: