測(cè)試工具和測(cè)試自動(dòng)化
人類的進(jìn)化史和發(fā)展史,就是一個(gè)不斷創(chuàng)造和使用工具的歷史。工具是人類想象力的物理呈現(xiàn),也是社會(huì)進(jìn)步的巨大助力。對(duì)于測(cè)試而言,工具同樣不可或缺,甚至于如果想判斷某個(gè)廠商的測(cè)試水平是處于“蠻荒時(shí)代”還是已經(jīng)進(jìn)化到了“現(xiàn)代社會(huì)”,觀察其使用的測(cè)試工具就能知道個(gè)大概。事實(shí)上,很多測(cè)試項(xiàng)目,尤其是性能和穩(wěn)定性測(cè)試項(xiàng)目,必須借助測(cè)試工具才能完成;驗(yàn)證業(yè)務(wù)的大規(guī)模部署能力,沒(méi)有工具的支撐更是不可想象。舉個(gè)簡(jiǎn)單例子,對(duì)一個(gè)可以同時(shí)接入4000個(gè)PPPoE的設(shè)備進(jìn)行測(cè)試,如果沒(méi)有測(cè)試工具,就只能搭建一個(gè)4000個(gè)客戶端的環(huán)境,這在實(shí)踐中幾乎不可實(shí)施,更何況類似測(cè)試項(xiàng)目會(huì)很多,而且每個(gè)版本都需要重復(fù)測(cè)試。
一、測(cè)試工具
伴隨著網(wǎng)絡(luò)技術(shù)的爆發(fā)式發(fā)展,種類繁多的測(cè)試工具也被開(kāi)發(fā)出來(lái),根據(jù)其主要功能,大致可以分為下面幾類*(*注:現(xiàn)在的測(cè)試工具都比較復(fù)雜,不一定能完全嚴(yán)格分類,比如Chariot和Avalanche都能提供強(qiáng)大的流量產(chǎn)生功能,又是很好的業(yè)務(wù)模擬工具)。
流量發(fā)生工具:主要用于生成大規(guī)模網(wǎng)絡(luò)流量,測(cè)試設(shè)備的轉(zhuǎn)發(fā)平面功能。這類工具有的是直接安裝在主機(jī)上的軟件,如Chariot;也有的是專用硬件,比如Spirent和IXIA等專業(yè)廠商提供的測(cè)試儀器;
協(xié)議仿真工具:主要對(duì)信令協(xié)議進(jìn)行仿真,測(cè)試設(shè)備的控制平面功能。比如路由協(xié)議仿真,MPLS相關(guān)協(xié)議仿真,認(rèn)證接入?yún)f(xié)議仿真等測(cè)試工具;
業(yè)務(wù)模擬工具:主要是對(duì)應(yīng)用層協(xié)議和客戶業(yè)務(wù)進(jìn)行模擬,測(cè)試設(shè)備的應(yīng)用和業(yè)務(wù)承載能力。一般的L4-L7的測(cè)試儀器和工具都提供了強(qiáng)大的業(yè)務(wù)模擬能力,比如Avalanche,BPS等測(cè)試儀器和Chariot軟件;
攻擊類工具:包括黑客工具、Fuzzing和Vulnerability類測(cè)試工具,測(cè)試設(shè)備的安全性和攻擊防范能力。典型的有Mu Dynamics、Codenomicon、BIFFIT、SAINT、NESSUS、nMAP以及SYN flood 等DDOS工具;
平臺(tái)類工具:一般提供的是一個(gè)二次開(kāi)發(fā)平臺(tái),有完善的集成開(kāi)發(fā)環(huán)境,支持多種適合用于測(cè)試的高級(jí)計(jì)算機(jī)語(yǔ)言(如Perl、TCL、Python等),可進(jìn)行復(fù)雜的二次開(kāi)發(fā),集成了為適應(yīng)測(cè)試而封裝和抽象的Lib庫(kù),甚至提供一些已經(jīng)經(jīng)過(guò)實(shí)踐檢驗(yàn)的自動(dòng)化測(cè)試套件,并且可以通過(guò)外部接口調(diào)用其它測(cè)試儀器和工具。類似微軟的Visual Studio開(kāi)發(fā)環(huán)境,只不過(guò)它是為開(kāi)發(fā)服務(wù),前者是為測(cè)試服務(wù)。平臺(tái)類工具投入巨大,主要為了滿足廠商建設(shè)自己獨(dú)特的測(cè)試能力體系的需要,一般由廠商自行開(kāi)發(fā)與維護(hù)。H3C構(gòu)建了這類平臺(tái),稱為通用測(cè)試平臺(tái)(VTP,Versatile Test Platform)。
一般來(lái)說(shuō),對(duì)于成熟的協(xié)議或應(yīng)用測(cè)試,都有優(yōu)秀的商業(yè)測(cè)試儀器和測(cè)試工具,可以滿足80%以上的測(cè)試需求。但對(duì)于最新的協(xié)議和應(yīng)用,或者特定客戶的非標(biāo)準(zhǔn)定制需求,就要求廠商具備一定的測(cè)試工具自主開(kāi)發(fā)能力。以H3C為例,在802.1x協(xié)議剛開(kāi)始在國(guó)內(nèi)應(yīng)用時(shí),在大量用戶同時(shí)接入設(shè)備的條件下,設(shè)備會(huì)較大概率出現(xiàn)軟件崩潰。于是,測(cè)試團(tuán)隊(duì)自行開(kāi)發(fā)出一個(gè)模擬大量802.1x用戶接入的工具,最終很快就發(fā)現(xiàn)并解決了問(wèn)題,而具備類似功能的商業(yè)802.1x測(cè)試工具,大約時(shí)隔兩年后才在市場(chǎng)上出現(xiàn)。
H3C對(duì)于測(cè)試儀器和測(cè)試工具在優(yōu)化測(cè)試效率、提高測(cè)試水平、提升產(chǎn)品質(zhì)量方面的重要性深有體會(huì)。在這方面的投入很大。一方面,大量采購(gòu)了業(yè)界先進(jìn)的商業(yè)測(cè)試儀器和工具,如Spirent、IXIA、BPS和Veriwave等公司的測(cè)試儀器和測(cè)試軟件。另一方面,通過(guò)專門的測(cè)試平臺(tái)團(tuán)隊(duì)也獨(dú)立開(kāi)發(fā)了眾多的測(cè)試工具和軟件,為商業(yè)測(cè)試軟件覆蓋不到的測(cè)試需求提供支持,確保H3C能以最快的速度推出最新特性。該團(tuán)隊(duì)開(kāi)發(fā)的測(cè)試工具目前已經(jīng)形成系列并成為測(cè)試工程師的重要助力,如多客戶端模擬系列工具,路由協(xié)議系列測(cè)試工具,一致性系列測(cè)試工具,綜合業(yè)務(wù)模擬系列工具等。該團(tuán)隊(duì)開(kāi)發(fā)的通用測(cè)試平臺(tái)則構(gòu)建了一個(gè)公司級(jí)的自動(dòng)化測(cè)試框架,提供了完善的GUI,CLI自動(dòng)化測(cè)試解決方案,為H3C的全系列產(chǎn)品測(cè)試提供服務(wù)。
二、測(cè)試自動(dòng)化
測(cè)試工具和測(cè)試自動(dòng)化,兩者是一對(duì)孿生兄弟。測(cè)試工具的目的就是為了代替部分繁瑣的手工測(cè)試操作,或完成手工測(cè)試不可能完成的測(cè)試活動(dòng),實(shí)現(xiàn)一定程度的測(cè)試自動(dòng)化。測(cè)試自動(dòng)化的發(fā)展進(jìn)化和測(cè)試工具的進(jìn)步密不可分,隨著測(cè)試工具的進(jìn)步和完善,很大一部分測(cè)試工作已經(jīng)可以做到無(wú)人值守,實(shí)現(xiàn)完全意義上的自動(dòng)化?;仡欁詣?dòng)化測(cè)試技術(shù)的發(fā)展歷史,大致可以分為三代。
第一代,以工具為中心的自動(dòng)化
時(shí)間:90年代中期之前
這一代自動(dòng)化使用的測(cè)試工具,以捕捉/回放(Capture/Replay)工具最為典型,即捕獲用戶的鼠標(biāo)和鍵盤操作,并記錄下來(lái),下次測(cè)試時(shí)可以回放這些操作,重復(fù)上次的測(cè)試。這些工具一般也提供簡(jiǎn)單的腳本功能,測(cè)試人員還可以根據(jù)需要對(duì)記錄的腳本進(jìn)行修改,比如增加循環(huán)操作以及一些簡(jiǎn)單的判斷條件等,以強(qiáng)化測(cè)試。不過(guò)因?yàn)槟_本語(yǔ)言簡(jiǎn)單,腳本功能往往只是其中的點(diǎn)綴。如QARun,WinRunner,就是這種工具的典型代表。這代測(cè)試自動(dòng)化技術(shù)有很大的局限性:
自動(dòng)化程度有限。每種工具都有自己獨(dú)特的腳本語(yǔ)言,但又不是一個(gè)全功能的腳本語(yǔ)言,能自動(dòng)化的操作有限,構(gòu)不成一個(gè)完整的自動(dòng)化解決方案,不同工具的腳本無(wú)法共享;
對(duì)SUT(System Under Test)的變化適應(yīng)性較差。如果SUT的GUI有了變化,錄制的腳本幾乎不能再用,這在軟件總是不斷改進(jìn)和變化的時(shí)代幾乎是致命的缺陷。
第二代,以腳本為中心的自動(dòng)化
時(shí)間:90年代末至21世紀(jì)初
這是自動(dòng)化的個(gè)人英雄主義時(shí)代。一些測(cè)試團(tuán)隊(duì)在這個(gè)階段已經(jīng)認(rèn)識(shí)到采用統(tǒng)一腳本語(yǔ)言的重要性,并找到了適合測(cè)試工作的、功能完備的腳本語(yǔ)言,在團(tuán)隊(duì)中大力推行。但因?yàn)榻?jīng)驗(yàn)有限,缺乏良好的頂層設(shè)計(jì),測(cè)試自動(dòng)化主要依靠測(cè)試工程師的主觀能動(dòng)性,八仙過(guò)海、各顯神通,每個(gè)人都是腳本工程師,測(cè)試腳本大量產(chǎn)生。
這代自動(dòng)化雖然有了統(tǒng)一的腳本語(yǔ)言,測(cè)試工程師之間也可以進(jìn)行少量的腳本共享。但總體而言,是各自為戰(zhàn),風(fēng)格不同,質(zhì)量參差不齊。和個(gè)人測(cè)試環(huán)境密切關(guān)聯(lián)的個(gè)人自動(dòng)化成果難以充分轉(zhuǎn)化為有效的團(tuán)隊(duì)平臺(tái)積累。不過(guò),這個(gè)階段培養(yǎng)了大量的技術(shù)熟練的測(cè)試自動(dòng)化工程師,為下個(gè)階段打好了人員和技術(shù)基礎(chǔ)。
第三代,以平臺(tái)為中心的自動(dòng)化
時(shí)間:21世紀(jì)初至今
在第二代自動(dòng)化摸索幾年后,有眼光的測(cè)試管理者和出色的測(cè)試工程師,都認(rèn)識(shí)到這種野蠻生長(zhǎng)產(chǎn)生的腳本在可維護(hù)性、可重用性、拓?fù)溥m應(yīng)性方面都存在很大問(wèn)題,不能真正形成持續(xù)有效的團(tuán)隊(duì)積累。于是,自動(dòng)化測(cè)試的頂層設(shè)計(jì)被提上日程:構(gòu)建一個(gè)出色的自動(dòng)化測(cè)試平臺(tái);腳本基于邏輯拓?fù)溥M(jìn)行開(kāi)發(fā),在執(zhí)行時(shí)才映射到物理拓?fù)?把常用測(cè)試操作抽象為Action word并實(shí)現(xiàn),作為通用類庫(kù)供所有測(cè)試工程師使用;制定腳本的開(kāi)發(fā),驗(yàn)收,維護(hù)規(guī)范,保證腳本的一致性、通用性和可維護(hù)性?;谶@個(gè)測(cè)試自動(dòng)化平臺(tái)開(kāi)發(fā)的腳本,才真正可轉(zhuǎn)化為有效的團(tuán)隊(duì)積累。
以H3C的測(cè)試自動(dòng)化發(fā)展為例,在1999年之前,只是利用簡(jiǎn)單的捕捉和回放測(cè)試工具,基于這些工具編寫簡(jiǎn)單的腳本,屬于第一代自動(dòng)化。1999-2002年期間,測(cè)試平臺(tái)團(tuán)隊(duì)引入了適應(yīng)通信設(shè)備測(cè)試的TCL語(yǔ)言,開(kāi)發(fā)了通用測(cè)試平臺(tái),但統(tǒng)一的ATF(Auto Testing Framwork)尚未成熟,處于第二代自動(dòng)化階段。2003年,H3C測(cè)試團(tuán)隊(duì)發(fā)布了ATF,并啟動(dòng)Testbladev1/v2腳本體系的開(kāi)發(fā),這標(biāo)志著H3C的測(cè)試自動(dòng)化進(jìn)入了第三代,并在實(shí)踐中不斷優(yōu)化。基于VTP和ATF,H3C已經(jīng)實(shí)現(xiàn)了80%以上的功能測(cè)試的自動(dòng)化,并提供了多個(gè)性能測(cè)試、壓力測(cè)試及持久性測(cè)試的自動(dòng)化測(cè)試套件。
三、展望:第四代自動(dòng)化測(cè)試技術(shù)
那么是否會(huì)有第四代自動(dòng)化測(cè)試技術(shù)? 回答是肯定的。下一代自動(dòng)化技術(shù)必然是以網(wǎng)絡(luò)為中心的測(cè)試自動(dòng)化,也可以稱之為以云為中心的測(cè)試自動(dòng)化。所有的測(cè)試設(shè)備(真實(shí)的、虛擬的)、測(cè)試儀器以及測(cè)試主機(jī),通過(guò)一個(gè)測(cè)試自動(dòng)化管理系統(tǒng)進(jìn)行統(tǒng)一管理,呈現(xiàn)在測(cè)試工程師面前的將是一個(gè)測(cè)試設(shè)備云。測(cè)試工程師可以遠(yuǎn)程登錄到測(cè)試自動(dòng)化管理系統(tǒng),通過(guò)任務(wù)管理系統(tǒng)提交自己的自動(dòng)化測(cè)試任務(wù),只需要描述清楚測(cè)試任務(wù)所需要的設(shè)備類型、設(shè)備連接的鏈路類型,需要執(zhí)行的測(cè)試套,系統(tǒng)即會(huì)按規(guī)則在測(cè)試云中進(jìn)行搜索和計(jì)算,得出什么時(shí)間能提供滿足本次測(cè)試任務(wù)所需要的測(cè)試執(zhí)行環(huán)境,測(cè)試工程師可以預(yù)約這個(gè)時(shí)間之后的任意時(shí)間運(yùn)行自動(dòng)化任務(wù),并準(zhǔn)時(shí)收到自動(dòng)化測(cè)試結(jié)果。
第四代自動(dòng)化測(cè)試技術(shù)相對(duì)第三代,將在可管理性、易用性以及設(shè)備利用率方面有質(zhì)的飛躍,但仍然必須以穩(wěn)定可靠的測(cè)試平臺(tái)以及完善的測(cè)試腳本體系做為測(cè)試執(zhí)行的基礎(chǔ),這意味著第三代測(cè)試自動(dòng)化不可跨越。否則,所謂的云測(cè)試就是無(wú)源之水。
四、結(jié)束語(yǔ)
測(cè)試自動(dòng)化極大的提高了測(cè)試效率,使測(cè)試工程師可以從簡(jiǎn)單重復(fù)的機(jī)械操作中解放出來(lái),把更多精力投入到更有創(chuàng)造性的測(cè)試設(shè)計(jì),以及更復(fù)雜的測(cè)試執(zhí)行中去。但我們也必須認(rèn)識(shí)到測(cè)試自動(dòng)化的局限性。首先,自動(dòng)化只是對(duì)已有測(cè)試設(shè)計(jì)的機(jī)械重復(fù),不會(huì)超出已有的測(cè)試認(rèn)知。其次,復(fù)雜測(cè)試場(chǎng)景下,影響測(cè)試結(jié)果的因素非常廣泛,依靠機(jī)器進(jìn)行判別很難行得通,還是必須由人來(lái)完成。
這些局限因素決定了自動(dòng)化測(cè)試不可能完全替代手工測(cè)試。不過(guò),測(cè)試工具和自動(dòng)化技術(shù)在復(fù)雜環(huán)境模擬和業(yè)務(wù)模型構(gòu)造上的作用,永遠(yuǎn)無(wú)可替代,所以,即使是手工測(cè)試,一樣也離不開(kāi)測(cè)試工具和測(cè)試自動(dòng)化技術(shù)。可以說(shuō),測(cè)試工具和測(cè)試自動(dòng)化的進(jìn)步推動(dòng)著整個(gè)測(cè)試行業(yè)的發(fā)展。