基於特徵驅動的自動化方案

2021-09-22 01:17:58 字數 2358 閱讀 9590

概述資料驅動在ps產品線是一種常見的自動化方式,由於想法自然、設計簡單、收益顯著,是一種自動化的常見方案。然而資料驅動卻存在著一些缺點讓我們很頭疼,首先是資料的維護問題,我們需要儲存大量的輸入和預期輸出,模組一旦涉及功能上的公升級,我們就需要手動新增測試用例來保證自動化工具的case覆蓋率和有效性,同時隨著模組不斷地公升級,資料集不斷增大,自動化的執行時間也越來越長;其次是資料驅動在回歸測試方面引用廣泛,但在新功能測試方面顯得不是很有效,新功能測試一般來講注重的是策略的分析和資料的構造,而資料驅動的思想則不能夠很好地支援資料的自動構造,最主要的資料構造過程還是需要手動完成;再次,資料驅動最大的問題就是資料失效問題,一般乙個測試點需要對應多組資料,如果模組的一次公升級在某個功能點上發生變化,那麼對應測試點的幾組資料全部都需要修改,前面提到資料驅動的資料集會不斷增大,所以資料失效引起的維護成本是不可忽略的,隨時間的推移,會越來越大,並且一旦模組功能發生重大公升級(如切詞公升級),很可能引起大片資料的失效,導致工具執行時出現大片的「fail」,這時的資料維護成本會急劇上公升。在這裡我們提出一種基於特徵驅動的自動化方案,能夠較好解決上述資料驅動方式的三個不足,大大減輕了資料成本的維護工作量,測試工程師的焦點更關注於策略本身,而不必手動構造、新增大量的case。我們首先在架構、**較為清晰的da模組上做了嘗試,通過該自動化思想下的指引做了da模組的自動化改造,通過投入試用後發現,相比之前的資料驅動方式,測試效率有了明顯的提公升。

自動化方案,資料驅動,特徵驅動,資料維護

介紹

所謂特徵驅動,是指通過資料的特徵來驅動case的驗證。所謂基於特徵驅動的自動化方案,是指通過儲存每個功能點資料的特徵來實現case的回歸自動化,通過構造特徵來實現case的新能能自動化。那麼何為特徵呢?其實很簡單,就是指資料的一些特定屬性。看乙個da的資料驅動case,構造輸入:「無料アニメ畫像掲示板」& 構造預期輸出:「r_ibd 11」,這個query之所以返回r_ibd是因為滿足兩個屬性 —— 論壇屬性和寫真屬性,那麼這個資料驅動的case,我們就可以改寫為,輸入特徵:「isforum=1,isphoto=1」& 預期輸出:「r_ibd 11」。

從case書寫的角度看,似乎兩者並沒有什麼本質的區別,只不過一邊是真實的query,一邊是一串符號,但帶來的變化是不可忽視的,第一,case的可讀性增強,顯然,「isforum=1,isphoto=1」清楚表達了輸入資料的特點以及策略的思想,而單純乙個query放在那兒,只能靠感覺來判斷這個輸入資料的策略預期;第二,case的表達性增強,用集合論的術語來講,資料驅動中一組case表示的只是乙個元素,而特徵驅動中一組case表示的是乙個集合,換句話說,「isforum=1,isphoto=1」不僅代表了「無料アニメ畫像掲示板」,而且代表了所有滿足論壇屬性和寫真屬性的query;第三,case的有效性加強,直接使用輸入資料來儲存,一旦切詞程式、屬性詞典等其他因素發生變化,儲存資料就可能失效,而屬性表達的是資料之上的高階特徵,不存在特徵失效的問題,除非策略發生了變化或者出現了衝突,即便出現策略衝突情況時,case的可讀性也會發揮作用,不會在追查問題上耗費大把的時間。

那麼在使用了特徵表示case以後,如何進行測試點的驗證呢?有了一系列特徵表示輸入,我們首先要通過乙個轉換工具將特徵還原為輸入資料,然後再將輸入資料匯入到資料驅動模式下的自動化。其中重點問題在於如何將特徵還原為資料,我們的思路是準備乙個比較大的資料集合,如果我們需要構造query就應獲取乙個比較龐大的query集合,如果需要構造網頁就先獲取乙個比較龐大的url集合,這樣我們不需要直接去構造我們想要的資料,而是通過特徵從這個資料集當中選取出來即可。當然,有可能滿足特徵的資料不在這個集合當中,而從實際的情況看,基本不存在這個問題,那query集合舉例,從線上隨機獲取的10w左右的query,基本就能覆蓋到大多數的特徵,100w基本已經覆蓋完畢,從另一種角度上去看,如果從10w隨機query中都選取不到,那麼我們可以認為策略的影響面已經小於0.001%,要麼這個策略本身有問題,要麼這個策略其實可以忽略了。

應用

收益

由維護大量的輸入資料轉變為功能點相關的輸入特徵,極大簡化了資料的維護方式,降低了維護成本。

通過乙個特徵可以抽取出多組資料,測試充分性得到了加強。

資料的失效性問題得到了很好地解決,有效防止了策略公升級引起的輸入資料的大面積失效。

總結

特徵驅動是一種建立在資料驅動之上的一種自動化方案,其思想是通過特徵代替原資料來減少維護成本。通過實踐,該方案思想主要適用於資料處理密集型的模組,在複雜資料處理的功能測試方面表現良好。10年首先在da模組上進行了試用,根據da的策略分析進行了對da自動化方面的改造,並在10年q2將自動化工具投入使用,投入的第乙個專案就發現了7例bug,其中特徵構造時間為5分鐘,執行時間為10分鐘,da模組的整體測試效率和專案週期都得到了很大程度上的改善。

【本文**

基於gulp的前端自動化方案

最近幾年前端技術發展日新月異,特別是單頁應用的普及。元件化 工程化 自動化成了前端發展的趨勢。webpack已經成為了前端打包構建的主流,但是一些老古董的專案還是存在的,也有優化的必要,正好公司的老專案需要優化,不多說拿gulp實踐一下。你的專案目錄關係到你的gulp指令碼裡的任務路徑,我指令碼裡寫...

基於gulp的前端自動化方案

最近幾年前端技術發展日新月異,特別是單頁應用的普及。元件化 工程化 自動化成了前端發展的趨勢。webpack已經成為了前端打包構建的主流,但是一些老古董的專案還是存在的,也有優化的必要,正好公司的老專案需要優化,不多說拿gulp實踐一下。你的專案目錄關係到你的gulp指令碼裡的任務路徑,我指令碼裡寫...

基於gulp的前端自動化方案

最近幾年前端技術發展日新月異,特別是單頁應用的普及。元件化 工程化 自動化成了前端發展的趨勢。webpack已經成為了前端打包構建的主流,但是一些老古董的專案還是存在的,也有優化的必要,正好公司的老專案需要優化,不多說拿gulp實踐一下。你的專案目錄關係到你的gulp指令碼裡的任務路徑,我指令碼裡寫...