1. 程式人生 > >parewise遇百萬數據跑不動?接口慢上線回歸效率低?

parewise遇百萬數據跑不動?接口慢上線回歸效率低?

用例設計 col tle 笛卡爾積 設計 pos 結果 成本 需要

parewise遇百萬數據跑不動?

在《parewise算法性能優化》一文中,

對原來算法代碼進行了一些優化,

對於笛卡爾積後千條數據,是能滿足使用需要的。

但在實際業務中,會碰到百萬數據。

比如某接口共18個參數,每個參數均可為空,其中8個只需要單個值,10個為多選項,需要多個值。

對於多選項,我的設計是,全選+隨機n個多選(1<=n<=len-1)+空。

按照這個策略,笛卡爾積的結果就是3^8*2^10=6718464。

671萬數據!

parewise根本處理不動。

該怎麽處理?

調整用例設計。

1、為空的情況,單獨一條用例,即可以為空的,全部設置為空。parewise就不考慮為空的情況了。

3^8*2^10就變成了2^8*1^10=256,一下量級驟減。

2、視需要添加特殊的參數組合。

接口慢上線回歸效率低?

即使這樣優化了,也會產生幾十種組合。

假如接口本身響應慢,那麽腳本執行的耗時就比較長。

遇到上線前回歸,等待,是一件很痛苦的事。

該怎麽處理?

還是回到用例設計。

在開發階段,跑幾十種組合的腳本,從時間成本來看是完全可以接受的。

在上線階段,時間緊迫,就會顯得效率有些低。

而實際上,上線前回歸階段更像是一種冒煙。

是可以適當降低覆蓋度,提供效率的。

於是解決方案就是,把parewise擴展為兩種模式

def parewise(dx, mode=2):
    
""" :param dx: :param mode: 1開發 2上線 :return: """

開發模式:就完完整整返回結果

上線模式:從結果當中,隨機返回1條用於快速冒煙

當然,如果是回歸要測修改引入,建議還是多花點時間,老老實實跑開發模式比較好。

parewise遇百萬數據跑不動?接口慢上線回歸效率低?