摘要:隨著信息科學(xué)技術(shù)的發(fā)展,如今的軟件日益復(fù)雜。在如此嚴(yán)峻形勢(shì)下為了保證軟件質(zhì)量,軟件測(cè)試必然要扮演越來(lái)越重要的角色,尤其對(duì)在現(xiàn)代的商業(yè)公司開(kāi)發(fā)的大型軟件?,F(xiàn)在,自動(dòng)化測(cè)試在一定程度上可以將繁瑣的測(cè)試更加高效。SilkTest就是一款自動(dòng)化測(cè)試軟件,它的優(yōu)勢(shì)顯而易見(jiàn),但是有時(shí)也會(huì)產(chǎn)生一些意想不到的錯(cuò)誤。該文將給出一些解決方法,使該軟件更加高效。
關(guān)鍵詞:自動(dòng)化測(cè)試;SilkTest;解決方法
中圖分類號(hào):TP27 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)01-0077-03
1 概述
軟件測(cè)試的目的就是監(jiān)測(cè)和排除缺陷,以確保軟件產(chǎn)品在可用性、功能性以及可操作性等多方面滿足軟件需求[1]。自從軟件危機(jī)之后,軟件測(cè)試越來(lái)越受到人們的重視?,F(xiàn)如今,軟件測(cè)試是軟件生命周期的一個(gè)重要階段,測(cè)試工作量會(huì)占整個(gè)開(kāi)發(fā)周期的40%甚至于60%[2]。IEEE在1983年給軟件測(cè)試下的定義是:“使用人工或自動(dòng)的手段來(lái)運(yùn)行或測(cè)定某個(gè)軟件系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別”[3]。軟件測(cè)試不等同于程序測(cè)試。需求說(shuō)明、概要設(shè)計(jì)說(shuō)明、詳細(xì)設(shè)計(jì)說(shuō)明和源程序等都是軟件測(cè)試的對(duì)象[4],這就更進(jìn)一步地保證了軟件質(zhì)量。
軟件自動(dòng)化測(cè)試是件測(cè)試的一個(gè)分支,顧名思義,就是通過(guò)測(cè)試工具或者其他的手段,按照軟件測(cè)試工程師的預(yù)定計(jì)劃,讓機(jī)器代替?zhèn)鹘y(tǒng)的手工測(cè)試,并且能夠達(dá)到和手工測(cè)試一樣的最終效果[5]。自動(dòng)化測(cè)試在過(guò)去的20年已經(jīng)有了很大的發(fā)展[6],但保證軟件質(zhì)量的重要使命始終沒(méi)有改變。自動(dòng)化測(cè)試的實(shí)施,可以比手動(dòng)化測(cè)試更快地執(zhí)行測(cè)試,縮短測(cè)試時(shí)間,可以更快地將軟件推向市場(chǎng)[7],而對(duì)于企業(yè)的管理人員來(lái)說(shuō),他們也想通過(guò)自動(dòng)測(cè)試來(lái)控制項(xiàng)目成本,提高軟件質(zhì)量,達(dá)到客戶的滿意度[8]。此外,自動(dòng)化測(cè)試還具有可c7f8958e139c8ec0f3d9e5bd39360ced79d9d27238b02b28848160e4d1cd2c89以參數(shù)化、可重用、低成本、一致性、有效利用資源以及解決測(cè)試與開(kāi)發(fā)之間的矛盾等諸多優(yōu)點(diǎn)[5],自動(dòng)化測(cè)試工具應(yīng)運(yùn)而生并在軟件測(cè)試中發(fā)揮重要作用。
本文就當(dāng)前的一款優(yōu)秀的自動(dòng)化測(cè)試工具——SilkTest做簡(jiǎn)單的介紹,并就在使用過(guò)程中該工具出現(xiàn)的問(wèn)題提出一些解決方法,以使該工具更好的為測(cè)試人員使用。
2 SilkTest介紹
2.1 SilkTest簡(jiǎn)介
SilkTest是一款業(yè)界領(lǐng)先的,用于對(duì)企業(yè)級(jí)應(yīng)用進(jìn)行功能測(cè)試的基于標(biāo)準(zhǔn)的測(cè)試平臺(tái),可用于測(cè)試Web,Java或者是傳統(tǒng)的C/S結(jié)構(gòu)。SilkTest本身提供了很多功能,使用戶能夠高效率地進(jìn)行軟件的自動(dòng)化測(cè)試,比如測(cè)試的計(jì)劃和管理;直接的數(shù)據(jù)庫(kù)訪問(wèn)及校驗(yàn);靈活強(qiáng)大的腳本語(yǔ)言;內(nèi)置的恢復(fù)系統(tǒng);以及具有使用同一套腳本進(jìn)行跨平臺(tái)及瀏覽器進(jìn)行測(cè)試的能力[9]。
2.2 SilkTest的優(yōu)勢(shì)
2.2.1 靈活性
SilkTest的使用是很靈活的,主要表現(xiàn)在以下幾個(gè)方面:
1)SilkTest支持既客戶端/服務(wù)器模式,也支持Web模式。但是這兩者是由不同的技術(shù)和編程語(yǔ)言來(lái)實(shí)現(xiàn)的。
2)測(cè)試人員可以根據(jù)自己的習(xí)慣使用不用的編程語(yǔ)言來(lái)編寫測(cè)試腳本,比如VB.NET, C#, Java。當(dāng)然,SilkTest本身也提供了一種名叫4Test的腳本語(yǔ)言。
3)測(cè)試人員可以很好的組織管理SilkTest的圖形用戶界面(GUI)中定義的對(duì)象。這也是SilkTest一個(gè)很大的優(yōu)勢(shì)。SilkTest本身所提供的4Test腳本語(yǔ)言是一種類似于C++的面向?qū)ο蟮木幊陶Z(yǔ)言。它使用了很多諸如類,對(duì)象,以及繼承等面向?qū)ο笳Z(yǔ)言的概念。因此,所有GUI窗口的控件都可以以獨(dú)特的字符串作為標(biāo)簽而唯一的指定。這些控件根據(jù)標(biāo)簽的相對(duì)位置關(guān)系而形成一種繼承關(guān)系,之后所有控件的標(biāo)簽及其識(shí)別都在一個(gè)或多個(gè).inc文件中定義。這樣,如果控件發(fā)生變化,只需要修改.inc文件即可。
4)SilkTest可以很方便靈活地的模擬用戶對(duì)界面的操作。同樣的,由于4Test語(yǔ)言是一種類似于C++的面向?qū)ο蟮恼Z(yǔ)言,因此GUI的對(duì)象提供了很多方法供測(cè)試人員使用,通過(guò)調(diào)用不同的函數(shù),從而模擬對(duì)GUI對(duì)象的不同的操作,進(jìn)而大大增強(qiáng)了SilkTest的實(shí)用性。
5)SilkTest可以很方便地管理和運(yùn)行測(cè)試用例。在SilkTest中,一個(gè)腳本可以對(duì)應(yīng)一個(gè)活多個(gè)測(cè)試用例。此外,測(cè)試人員還可以把測(cè)試用例放到test plan中。如圖1所示。這樣,當(dāng)運(yùn)行test plan時(shí),其中的測(cè)試用例就可以一個(gè)接一個(gè)的自動(dòng)運(yùn)行。當(dāng)然,測(cè)試人員也可以增加或刪除test plan中的腳本,或者運(yùn)行test plan中的部分腳本,這就大大提高了腳本運(yùn)行的靈活性。
2.2.2 穩(wěn)定性
使用自帶的系統(tǒng)恢復(fù)機(jī)制,SilkTest可以很容易地讓測(cè)試環(huán)境恢復(fù)到之前的狀態(tài)。因此,當(dāng)運(yùn)行多個(gè)測(cè)試用例時(shí),每個(gè)測(cè)試用例都不會(huì)影響到其他測(cè)試用例的執(zhí)行,從而保證了該情況下運(yùn)行結(jié)果的正確性。
2.2.3 強(qiáng)大的記錄功能
對(duì)于在GUI上的操作,用戶不僅可以手動(dòng)編程,還可以使用SilkTest提供的強(qiáng)大的記錄功能。SilkTest可以在不同的層次做記錄,比如記錄整個(gè)測(cè)試用例的執(zhí)行過(guò)程,記錄GUI上的一個(gè)操作,甚至于界面和界面上控件及控件標(biāo)記的聲明,以及窗口的定位等等。
2.2.4 調(diào)試
SilkTest也提供了較強(qiáng)大的調(diào)試功能。比如,可以通過(guò)單步調(diào)試從而確定當(dāng)前腳本的執(zhí)行狀態(tài)。
2.3 SilkTest的測(cè)試過(guò)程
在SilkTest的使用過(guò)程中,SilkTest Agent是一個(gè)很重要的組成部分, 正是由于SilkTest Agent將腳本語(yǔ)言中的語(yǔ)句轉(zhuǎn)換成對(duì)GUI控件的操作,從而實(shí)現(xiàn)自動(dòng)化測(cè)試。SilkTest提供了兩種類型的Agent,分別是Classic Agent和Open Agent。現(xiàn)以Classic Agent為例,簡(jiǎn)單介紹一下SilkTest的使用。如圖2所示:
1)和C++類似,首先,要建立一個(gè)工程,其中.vtp文件保存了該工程所創(chuàng)建的文件的名字和位置,.ini文件則是工程的初始化文件。
2)使擴(kuò)展可用。這里,擴(kuò)展就是一個(gè).inc文件,它用來(lái)使在開(kāi)發(fā)環(huán)境中使用了非標(biāo)準(zhǔn)控件的基本程序可用。
3)設(shè)置系統(tǒng)恢復(fù)。設(shè)置系統(tǒng)恢復(fù)將會(huì)創(chuàng)建一個(gè)frame.inc文件,該文件確定了開(kāi)始測(cè)試時(shí)所調(diào)用的應(yīng)用程序。之后,測(cè)試人員可以在該文件中設(shè)置基本狀態(tài),同時(shí),也可以定義GUI中的控件。
4)讀寫測(cè)試用例。一般情況下,測(cè)試人員在frame.inc中定義GUI中的控件,在.t文件中編寫腳本程序。此外,測(cè)試人員還可以通過(guò)添加.inc文件定義自己的函數(shù),從而在方便編程的同時(shí)也減少了代碼重復(fù)。
5)如果有很多測(cè)試用例要運(yùn)行,則可以通過(guò)創(chuàng)建test plan以提高效率。
3 SilkTest的問(wèn)題
在提供諸多優(yōu)異功能的同時(shí),有時(shí),SilkTest表現(xiàn)卻不盡如人意。SilkTest也有著其他自動(dòng)化測(cè)試工具的一個(gè)顯著問(wèn)題:在進(jìn)行界面操作時(shí),經(jīng)常會(huì)發(fā)生控件不能識(shí)別的情況。也就是說(shuō)在frame.inc中所定義的控件無(wú)法與GUI 中相應(yīng)的控件對(duì)應(yīng)起來(lái),從而不能在GUI中不能識(shí)別出該控件,從而導(dǎo)致對(duì)該控件的操作無(wú)法進(jìn)行,如圖3所示。尤其是在較為復(fù)雜的腳本中,要對(duì)界面做連續(xù)操作時(shí)(如安裝應(yīng)用軟件時(shí),需要輸入相應(yīng)的參數(shù)并不斷點(diǎn)擊“下一步”來(lái)獲取新的操作界面),如果發(fā)生該問(wèn)題,則會(huì)導(dǎo)致后續(xù)操作無(wú)法進(jìn)行,進(jìn)而導(dǎo)致整個(gè)腳本運(yùn)行的失敗。
4 SilkTest常見(jiàn)錯(cuò)誤的解決方法
該問(wèn)題在SilkTest的使用中發(fā)生的概率比較高,并在腳本運(yùn)行失敗的原因中占據(jù)著很大的比重,因此解決該問(wèn)題對(duì)于充分發(fā)揮自動(dòng)化測(cè)試的優(yōu)勢(shì)有著重要的意義。
對(duì)于該問(wèn)題的發(fā)生,測(cè)試人員的疏忽是一個(gè)重要的原因。因此,測(cè)試人員可以采取多種措施,避免該問(wèn)題的出現(xiàn)。
4.1 使擴(kuò)展可用
通過(guò)使擴(kuò)展可用,可以使得在運(yùn)行環(huán)境中使用了非標(biāo)準(zhǔn)控件的程序正常運(yùn)行,并使SilkTest正確識(shí)別出這些非標(biāo)準(zhǔn)控件。
4.2 操作之前確定該控件是否可用
由于自動(dòng)化測(cè)試中,對(duì)GUI的操作速度比較快,因此,會(huì)發(fā)生兩個(gè)操作之間的時(shí)間間隔過(guò)短 的情況。此時(shí),如果前次操作的結(jié)果還沒(méi)正常顯示而下次操作已經(jīng)開(kāi)始,就會(huì)發(fā)生控件不能識(shí)別的情況。通常,這也是測(cè)試人員經(jīng)常疏忽的一個(gè)情況。此時(shí),如果通過(guò)調(diào)用控件的成員函數(shù)IsEnabled()來(lái)確定該控件是否可用,如果不可用,則再調(diào)用sleep()函數(shù)做適當(dāng)?shù)牡却笤僮鱿鄳?yīng)的操作,則可以杜絕該情況的發(fā)生。當(dāng)然,也可以自己定義一個(gè)完整的確認(rèn)函數(shù),置于.inc文件中,需要時(shí)可以直接調(diào)用,從而可以大大減輕測(cè)試人員的負(fù)擔(dān),提高代碼的可重用性。具體代碼如圖4所示。
4.3 激活要使用的窗口
在有些測(cè)試中,可能會(huì)同時(shí)打開(kāi)多個(gè)窗口,如果當(dāng)前窗口是活躍的,但此時(shí)需要對(duì)另一窗口的控件做操作,則會(huì)導(dǎo)致控件確認(rèn)失敗。因此,如果要對(duì)某一窗口的控件做第一次操作時(shí),通過(guò)調(diào)用窗口的成員函數(shù)SetActive()激活該窗口,從而避免問(wèn)題的發(fā)生。
5 總結(jié)
由于SilkTest本身所具有的靈活性,穩(wěn)定性,強(qiáng)大的記錄功能,以及可調(diào)試等易于使用的優(yōu)勢(shì),在自動(dòng)化測(cè)試中,SilkTest是一個(gè)很好的選擇。然而,在使用J2lqMC7b7tGR1BO0fLf5ucEmcUV+6ZE4FnTvywrxmIA=過(guò)程中,一個(gè)比較嚴(yán)重的控件確認(rèn)失敗的問(wèn)題也是經(jīng)常出現(xiàn)的。該文對(duì)此提出了三種可能解決的方法,在使用過(guò)程中對(duì)解決這一問(wèn)題起到了重要作用,很大程度上避免了該問(wèn)題的發(fā)生,從而減輕測(cè)試人員的負(fù)擔(dān),更進(jìn)一步發(fā)揮了自動(dòng)化測(cè)試的優(yōu)勢(shì),保證了測(cè)試的質(zhì)量。
參考文獻(xiàn):
[1] 應(yīng)杭.軟件自動(dòng)化測(cè)試技術(shù)及應(yīng)用研究 [D].杭州:浙江大學(xué),2006.
[2] 王娜. 軟件自動(dòng)化測(cè)試的研究與應(yīng)用[D].大連:大連理工大學(xué),2008.
[3] 張瑾, 杜春輝.自動(dòng)化軟件測(cè)試 [M].北京:機(jī)械工業(yè)出版社,2004.
[4] Robin F.Goldsmith, Proactive Test[EB/OL].http://www.sdbestpractices.com.
[5] 陸登.自動(dòng)化測(cè)試在大型軟件系統(tǒng)的應(yīng)用于研究[D].杭州:浙江大學(xué),2010.
[6] Dustin.自動(dòng)化軟件測(cè)試-入門、管理與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2006.
[7] Binder.Class modality and testing [J].Object Magazine,1997,6(2):61-62.
[8] 劉群策.LoadRunner和軟件項(xiàng)目性能測(cè)試[M].北京:機(jī)械工業(yè)出版社,2006.
[9] 百度百科[EB/OL].http://baike.baidu.com/view/5136325.htm.