您好,登錄后才能下訂單哦!
作為一個軟件測試培訓講師,主要側重在白盒測試培訓方面,尤其對C++test比較擅長。最近發現市面上跳出一款Wings工具,據說1分鐘可以自動生成100萬行測試代碼,性能方面大大超越C++ test,就想著抽空來實際的對比看看是不是在吹牛。這兩天索性閉關好好研究一下。試用下來,發現Wings的創造團隊真的是非常有才,邏輯非常清楚。我又掐指大致框算一下,整體研發工作量肯定不小,突破了很多技術天花板。所以,在開寫之前,首先向Wings創造團隊表達我真摯的敬意,畢竟在這樣浮躁的社會環境下,能靜下心來研究創新算法的人太少了。
長話短說,現在把Wings和我熟悉的C++ test做一個對比分析,如果有不對的地方歡迎大家拍磚,也借此機會轉達想要認識Wings開發團隊的誠懇。
首先Wings與c++ test都是用于生成單元測試驅動框架的工具。兩者差異在于以下幾點:
(1) 基本普通類型,wings與c++ test生成用例大致相同,wings采用隨機生成一組或者多組數值,而c++ test依據臨界值生成固定的隨機數。
例如:c++ test:生成五組測試函數,每個測試函數分別取最大值,最小值,-1,0,1
Wings:從json中取值,json中的值先隨機生成,也可以用戶自己修改。
例如:
C++ test針對基本類型:
Wings針對基本類型:
(2) 數組類型
數組作為函數參數使用時,分為固定長度和非固定長度。
Wings指針數組類型:
(1)一維數組類型
(2)二維數組類型
(3)三維數組類型
(3) 指針類型
Wings:json文件生成不定長度的數組,驅動運行的時候可以根據文件中用戶設定的數組進行靈活的取值,二級指針也可以根據json中數組的長度進行靈活的賦值,三級指針暫時是取的二級指針的地址。
C++ test:一級指針是生成4種測試函數,前三種賦值長度分別為1,16,256的數組,最后一種指針賦值0;二級指針三級指針類似,取一級指針,二級指針的地址。
例如:c++ test針對指針類型:
Wings針對指針類型:
(1)一級指針
(2)二級指針
(4) 復雜類型(結構體類型)
Wings:對結構體的處理相對比較合理,首先針對復雜類型,wings首先進行展開分析,將復雜類型分解為最簡單的基本類型,然后依次進行賦值操。
C++ test:對結構體的處理很簡單,就是直接將結構體定義一下,然后就傳進去了,結構體指針或者數組是取上一級的地址或者初始化0。
例如:c++ test針對復雜類型:
Wings針對復雜類型:
將復雜類型展開分解,依次進行賦值操作。
(5) 枚舉類型
Wings:json中隨機生成枚舉類型里面對應的數值,然后驅動里面將該數值轉化為枚舉的值賦給函數參數。
C++ test:直接隨機賦上枚舉類型里面所有可能的情況。
例如:c++ test針對枚舉類型
Wings針對枚舉類型:
(6) 聯合體類型
Wings:對聯合體的每一項都進行默認順序賦值,用戶可以根據需要實際選擇賦值哪一個,聯合體的值存在json中
C++ test:聯合體賦值跟普通類型賦值一樣,聯合體里面的某一個變量賦值為最大,最小,-1,0,1這五種值,每種都測試一次
例如:c++ test針對聯合體類型:
總結對比下來的結果就是這樣:
wings | C++test | |
---|---|---|
基本類型 | 隨機賦值 | 最大值,最小值,-1,0,1 |
數組類型 固定長度 | 依據具體長度賦值 | 全部按照1、16、256的長度進行賦值 |
非固定長度 | 依據需求動態賦值 | 全部按照1、16、256的長度進行賦值 |
指針類型 基本類型 | 動態獲取長度,進行賦值 | 全部按照1、16、256的長度進行賦值 |
復雜類型 | 采用常規賦值方式 | 全部按照1、16、256的長度進行賦值 |
復雜類型 | Wings首先將復雜類型分解為簡單的基本類型,然后依次進行賦值 | 不做處理,直接賦值為空 |
枚舉類型 | 隨機賦值 | 隨機賦值 |
聯合體類型 | 隨機賦值 | 聯合體里面的某一個變量賦值為最大,最小,-1,0,1這五種值 |
特殊類型 | 利用模板方式,特殊進行賦值處理 | 不做處理 |
Wings與c++ test優缺點對比:
(1) 從靈活性方面:wings可以依據需求,修改賦值的次數,c++ test只能夠一次性固定生成幾組值。
(2) 從賦值方式:wings的賦值更加合理,c++ test只能夠生成一個簡單的單元框架,具體的賦值方式,大部分需要測試人員手動去修改驅動賦值,wings基本上不需要測試人員修改驅動代碼,只需要依據需求,修改測試數據即可。
(3) 從企業適用性方面:企業應用一般軟件復雜性高,因此c++ test由于無法面對復雜參數和復合類型以及嵌套類型產生用例,因為其企業適用性大打折扣,更多時候是產生了測試驅動的框架而已,而wings則可以面向任意復雜的應用,可完成全部單元測試用例驅動代碼的生成。
不比不知道,一比嚇一跳。Parasoft C++是美國廠商的產品,占據市場好多年,很多都是軍工在用。Wings據說是全自研的,居然性能表現這么好。創新太難了,我也深有體會。衷心希望這樣優秀的產品能有更好突破。畢竟這樣用心和認真專研的團隊,國內太少了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。