Categories
程式開發

大數據應用的測試發展之路(三)


在前面的文章中,我們介紹了大數據應用在測試領域的六大問題以及解決方法。本文,我們將和大家大數據應用測試的未來發展趨勢。

後端服務測試的工具服務化

未來的大數據應用測試是什麼樣的呢?首先,我們認為後端服務類型的測試不再需要專職的測試人員,開發工程師在使用合理的測試工具的情況下可以更加高效地完成測試任務。專職的測試團隊,未來會更多地專注於偏前端與用戶交互層面的產品質量把控,跟產品經理一樣,需要從用戶的角度思考用戶在使用產品過程中可能遇到的質量問題,產品的交付與交互的驗證是產品測試的重點。

多數服務端的測試工作都是可以自動化完成的,且很多service級別的驗證也只有通過自動化這種方式才能驗證。相較於測試同學,開發同學在API級別的自動化代碼開發方面能力會更強,而且如果是開發同學自己做測試,可以減少與開發同學之間的大量往返溝通的成本,而這個成本在整個發布環節中佔比很大。

另外,算法工程師在業務算法邏輯的理解上更加清晰,算法策略與邏輯的細節是他們設計實現的。所以,我們更希望後端的測試工作由工程或者算法工程師獨立完成,在這種新的生產關係模式下,測試同學更加專注於測試工具的研發,包括自動化測試框架、測試環境部署工具、測試數據構造與生成、發布冒煙測試工具、持續集成與部署等。

這種模式也是Google一直在使用的測試模式,我們今年在這個方向嘗試了轉型,在質量變化和效率提升方面這兩方面效果還不錯。這裡需要強調的一點是,雖然測試團隊在這個方向上做了轉型,但後端測試還是需要繼續做,只是測試任務的執行主體變成了開發工程師,大量後端測試的技術和方向還會繼續存在。後端服務類測試團隊轉型,除了效能工具之外,線上穩定性的建設也是一個非常好的方向。

測試的線上化

TIP(Test In Production)概念是十年前由微軟的工程師提出。

我們之所以認為TIP是未來測試的方向,主要是基於以下三點考慮:

首先,由於線下測試環境與真實線上環境總是存在一些差異,導致測試結論也會有所偏差。目前大家使用最多的是性能測試或容量測試,由於後端服務的拓撲非常複雜,且許多模塊都有可擴展性,不同的數據對性能測試的結果也有很大的影響,測試環境與生產環境的不同會給測試結果帶來的巨大差異。另外,目前的生產集群都是異地多活,在夜里或者流量低谷的時候,單個集群就可以承擔起所有流量請求,剩下的集群可以很方便地用來壓測,這也給我們在線上做性能測試帶來了可能性。

其次,許多真實的演練測試只能在線上系統進行,在線下測試環境是無法做到的,例如安全攻防、故障注入與演練等。

最後,從質量的最終結果看,不管是發布前的線下測試,還是發布後的線上穩定性建設,其目的都是為了減少系統故障的發生,如果把這兩部分融合在一起,針對最終的線上故障去做目標優化工作,可以最大程度地節約和利用人力資源。因此,我們認為線下測試與線上穩定性的融合必將是一個歷史趨勢,這一領域統稱為技術風險的防控。

技術的智能化

測試的第三個發展趨勢是技術的智能化,見圖3。

大數據應用的測試發展之路(三) 1

圖3 測試技術的智能化發展

類似於自動駕駛的分級,智能化測試也有不同的成熟度模型:人工測試、自動化、輔助智能測試、高度智能測試。機器智能是一個工具,在測試的不同階段都有其應用的場景,測試數據和用例設計階段、測試用例回歸執行階段、測試結果的檢驗階段、線上的指標異常檢測等諸多技術風險領域都可以用到不同的算法和模型。

智能化測試是發展到一定階段的產物,前提條件就是數字化,自動化測試是比較簡單一種數字化。如果沒有做到數字化或者自動化,其實是沒有智能分析與優化的訴求的。

另外,一些簡單算法的使用可能會有不錯的效果,比較複雜的深度學習甚至強化學習算法的效果反而一般。出現這種情況的原因可能有兩個,一個是特徵提取和建模比較困難,二是測試運行的樣本與反饋的缺失。

運用最新的算法技術去優化不同的測試階段的效率問題,是未來測試的一個方向。但我們同時判斷,完全的高度智能測試與無人駕駛一樣,目前還不成熟,主要原因不在於算法與模型,而是測試數據的不足。

結束語

阿里巴巴的搜索推薦與廣告系統的質量建設之路,經過近10年的不斷發展,在許多測試同學的不斷努力付出之下,才能在如此眾多的細分領域方向上有所建樹,本文所介紹的方法也都濃縮在我們內部的工具之中,後面我們的想法還是逐漸開源,回饋社區。限於篇幅,本文的內容又較多,很多技術細節這裡並沒有辦法細細展開。如果想了解更多,歡迎大家加入我們的團隊或者開源社區,一起在以上的幾個方向做更加深入的研究與建設。

相關閱讀:

大數據應用的測試發展之路(一)

大數據算法應用的測試發展之路(二)