關(guān)鍵字:測試自動(dòng)化
作者在上篇文章略微談到了軟件測試的自動(dòng)化,但并沒(méi)有把本文的內容也一起寫(xiě)進(jìn)去。原因主要是希望讀者先努力考慮在自己的企業(yè)或項目?jì),可以有一些怎么樣的做法,而不?huì )先入為主地受到我所寫(xiě)的具體例子的影響而局限了思路。 因為軟件測試的工作量很大(40% 到60% 的總開(kāi)發(fā)時(shí)間),而又有很大部分適于自動(dòng)化,因此,測試的改進(jìn)會(huì )對整個(gè)開(kāi)發(fā)工作的質(zhì)量、成本和周期帶來(lái)非常顯著(zhù)的效果。
首先,談?wù)勗跍y試自動(dòng)化的情況下,帶有圖形界面的產(chǎn)品的測試用例的設計問(wèn)題。因為圖形界面的輸出顯示不是很容易做到測試結果自動(dòng)化比較,所以一般的做法是把圖形界面輸出的部分單獨建立測試用例,以手工運行。而所有非圖形輸出則可進(jìn)行自動(dòng)測試。
下面舉出一些測試自動(dòng)化的例子:
1.測試個(gè)案(test case ,或稱(chēng)為測試用例)的生成:
用編程語(yǔ)言或更方便的劇本語(yǔ)言(script language 例如Perl等)寫(xiě)出短小的程序來(lái)產(chǎn)生大量的測試輸入(包括輸入數據與操作指令);蛲瑫r(shí)也按一定的邏輯規律產(chǎn)生標準輸出。輸入與輸出的文件名字按規定進(jìn)行配對,以便控制自動(dòng)化測試及結果核對的程序易于操作。
這里提到測試個(gè)案的命名問(wèn)題,如果在項目的文檔設計中作統一規劃的話(huà),軟件產(chǎn)品的需求與功能的命名就應該成為后繼開(kāi)發(fā)過(guò)程的中間產(chǎn)品的命名分類(lèi)依據。這樣,就會(huì )為文檔管理和配置管理帶來(lái)很大的方便,使整個(gè)產(chǎn)品的開(kāi)發(fā)過(guò)程變得更有條理,更符合邏輯。任何新手半途加入到開(kāi)發(fā)工作中也會(huì )更容易進(jìn)入狀態(tài)。
2.測試的執行寫(xiě)控制:
單元測試或集成測試可能多用單機運行。但對于系統測試或回歸測試,就極有可能需要多臺機在網(wǎng)絡(luò )上同時(shí)運行。記住一個(gè)這樣的原則,在開(kāi)發(fā)過(guò)程中的任何時(shí)候,如果你需要等候測試的運行結果的話(huà),那就是一個(gè)縮短開(kāi)發(fā)時(shí)間的機會(huì )。
對于單個(gè)的測試運行,挖潛的機會(huì )在測試的設置及開(kāi)始運行和結果的對比及顯示。有時(shí)候,需要反復修改程序,重新匯編和重新測試。這樣,每一個(gè)循環(huán)的各種手工鍵入的設置與指令所花費的時(shí)間,加起來(lái)就非?捎^(guān)。如果能利用make或類(lèi)似的軟件工具來(lái)幫助,就能節省大量的時(shí)間。
對于系統測試或回歸測試這類(lèi)涉及大量測試個(gè)案運行的情況,挖潛的的機會(huì )除了利用軟件工具來(lái)實(shí)現自動(dòng)化之外,就是怎樣充分利用一切硬件資源。往往,就算是在白天的工作時(shí)間內,每臺計算機的負荷都沒(méi)有被充分利用。能夠把大量測試個(gè)案分配到各臺機器上去同時(shí)運行,就能節省大量的時(shí)間。另外,把大量的系統測試及回歸測試安排到夜間及周末運行,更能提高效率。
如果不購買(mǎi)商品化的工具的話(huà),應當遵從正規的軟件開(kāi)發(fā)要求來(lái)開(kāi)發(fā)出好的軟件測試自動(dòng)化工具。在實(shí)踐中,許多企業(yè)自行開(kāi)發(fā)的自動(dòng)化工具都是利用一些現成的軟件工具再加上自己寫(xiě)的程序而組成的。這些自己開(kāi)發(fā)的工具完全是為本企業(yè)量身定做的,因此可用性非常強。同時(shí),也能根據需要隨時(shí)進(jìn)行改進(jìn),而不必受制于人。當然,這就要求有一定的人力的投入。
在設計軟件自動(dòng)測試工具的時(shí)候,路徑(path)控制是一個(gè)非常重要的功能。理想的使用情況是:這個(gè)工具可以在任何一個(gè)路徑位置上運行,可以到任何路徑位置去取得測試用例,同時(shí)也可以把測試的結果輸出放到任何的路徑位置上去。這樣的設計,可以使不同的測試運行能夠使用同一組測試用例而不至于互相干擾,也可以靈活使用硬盤(pán)的空間,并且使備份保存工作易于控制。
同時(shí),軟件自動(dòng)測試工具必須能夠有辦法方便地選擇測試用例庫中的全部或部分來(lái)運行,也必須能夠自由地選擇被測試的產(chǎn)品或中間產(chǎn)品采作為測試對象。
3.測試結果與標準輸出的對比:
在設計測試用例的時(shí)候,必須考慮到怎樣才能夠易于對此測試結果和標準輸出。輸出數據量的多少及數據格式對比較的速度有直接影響。而另一方面,也必須考慮到輸出數據與測試用例的測試目標的邏輯對應性及易讀性,這將會(huì )大大有利于分析測試所發(fā)現的不吻合,也有利于測試用例的維護。
許多時(shí)候,要寫(xiě)一些特殊的軟件來(lái)執行測試結果與標準輸出的對比工作,因為可能有部分的輸出內容是不能直接對比的(比如,對運行的日期時(shí)間的記錄,對運行的路徑的記錄,以及測試對象的版本數據等),就要用程序進(jìn)行處理。
4.不吻合的測試結果的分析、分類(lèi)、記錄和通報:
上一點(diǎn)所談到的,用于對測試結果與標準輸出進(jìn)行對比的特殊軟件,往往也同時(shí)擔任對不吻合的測試結果進(jìn)行分析、分類(lèi)、記錄和通報的任務(wù)。
“分析”是找出不吻合的地方并指出錯誤的可能起因!胺诸(lèi)”包括各種統計上的分項,例如,對應的源程序的位置,錯誤的嚴重級別(提示、警告、非失效性錯誤、失效性錯誤;或別的分類(lèi)方法),新發(fā)現的還是已有記錄的錯誤,等等!坝涗洝,是按分類(lèi)存檔!巴▓蟆,是主動(dòng)地對測試的運行者及測試用例的“負責人”通報出錯的信息。
這里提到測試用例的“負責人”的概念。是用以指定一個(gè)測試用例運行時(shí)發(fā)現的缺陷,由哪一個(gè)開(kāi)發(fā)人員負責分析(有時(shí)是另外的開(kāi)發(fā)人員引進(jìn)的缺陷而導致的錯誤)及修復。在設立測試用例庫時(shí),各用例均應有指定的負責人。
最直接的通報方法是由自動(dòng)測試軟件發(fā)出電子郵件給測試運行者及測試用例負責人。郵件內容的詳細程度可根據需要靈活決定。
5.總測試狀況的統計,報表的產(chǎn)生:
這些都是自動(dòng)測試工具所應有的功能。目的是提高過(guò)程管理的質(zhì)量,同時(shí)節省用于產(chǎn)生統計數據的時(shí)間。
產(chǎn)生出來(lái)的統計報表,最好是存放到一個(gè)約定的路徑位置,以便任何有關(guān)人員都知道怎樣查閱。同時(shí),可按需要用電子郵件向適當的對象(如項目經(jīng)理,測試經(jīng)理和質(zhì)量保證經(jīng)理)寄出統計報表。
6.自動(dòng)測試與開(kāi)發(fā)中產(chǎn)品每日構建(build )的配合:
自動(dòng)測試應該是整個(gè)開(kāi)發(fā)過(guò)程中的一個(gè)有機部分。自動(dòng)測試要依靠配置管理來(lái)提供良好的運行的環(huán)境,同時(shí)它必須要與開(kāi)發(fā)中的軟件的構建緊密配合。
在開(kāi)發(fā)中的產(chǎn)品達到一定程度的時(shí)候,就應該開(kāi)始進(jìn)行每日構建和測試。這種做法能使軟件的開(kāi)發(fā)狀態(tài)得到頻繁的更新,以及及早發(fā)現設計和集成的缺陷。
為了充分利用時(shí)間與設備資源,下班之后進(jìn)行自動(dòng)的軟件構建,緊接著(zhù)進(jìn)行自動(dòng)測試(這里多數指的是系統測試或回歸測試),是一個(gè)非常行之有效的方法。如果安排得好,到第二天上班時(shí),測試結果就已經(jīng)在各人的電子郵箱里面面了,等待著(zhù)新的一天的開(kāi)發(fā)工作。
總結:以上只是根據經(jīng)驗和體會(huì )舉了一些軟件測試自動(dòng)化的做法。
由于企業(yè)開(kāi)發(fā)環(huán)境的不同、產(chǎn)品的不同,測試自動(dòng)化的實(shí)施方法會(huì )有很大的差異。希望大家從這些具體例子中掌握到這項工作的基本精神及思路,然后結合自己的情況,大膽創(chuàng )新。同時(shí)千萬(wàn)不要忘記向大家介紹好經(jīng)驗。祝大家測試愉快。
延伸閱讀
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/