999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應用.NET框架命名空間技術實現Web測試自動化

2010-01-01 00:00:00陸新泉
計算機應用研究 2010年6期

摘 要:目前支持Web的自動化測試工具普遍存在價格偏高、測試腳本可重用性差、代碼維護工作量過大等缺點。為解決這一問題提出了應用.NET框架命名空間(NameSpace)技術實現Web應用程序測試的自動化方法。該方法不使用任何第三方測試工具,通過編寫簡單、易維護的C#.NET代碼,對Web程序接口進行信息抽取與調用,以實現測試的自動化運行。

關鍵詞:C#.NET; 命名空間; 自動化測試; Web應用程序

中圖分類號:TP311.51文獻標志碼:A

文章編號:1001-3695(2010)06-2160-03

doi:10.3969/j.issn.1001-3695.2010.06.047

Using.NET framework’s namespace in Web application automatic testing

LEILei1, LU Xinquan1, LI Rui1, HONG Yu2

(1.PLAInternational Studies University, Nanjing 210039, China; 2.Institute of Command Automation, PLA University of Science Technology, Nanjing 210007, China)

Abstract:Generally, automate test tools supporting Web application are expensive, and their test scripts are hard to be maintained and reused. To solve this problem, this paper presented a method using NameSpace technology of .NET framework in Web application testing. This method realized Web application automatic testing though interface information collecting and interface invoking, and only required writing simple and easily maintained C#.NET code without using any thirdparty testing tools.

Key words:C#.NET; Name Space; automatic testing; Web application

隨著通信技術的發展,基于Internet平臺的Web應用程序憑借著它強大的功能、靈活的交互性以及簡單易用的特點,深入到電信、通訊、銀行、商務、教育等各個領域中。Web應用程序已經在人們生活、學習、工作中起著越來越重要的作用,因此對Web應用程序的可靠性有著越來越高的要求。但由于Web應用程序復雜性日趨增長、需求持續快速變化、采用分布式結構等特點,使得其在測試上有極大的難度。在傳統的手工測試方法中,測試設計、測試運行全部由測試人員手工完成,工作量過重;而且在這一過程中,由于測試人員素質與經驗的差別,在測試中加入過多的主觀因素。考慮到上面的因素,采用傳統的手工方法對Web應用程序進行測試很難取得令人滿意的結果。解決這一問題最好的方法是實現Web應用程序的自動化測試。

目前市場上支持Web的測試工具通常存在價格偏高、測試腳本程序可重用性差、代碼維護量過大等不足,為解決這一問題本文提出了應用.NET框架命名空間(NameSpace)[1]技術實現Web應用程序測試自動化運行的方法。該方法只要求測試人員編寫簡單靈活的C#.NET測試腳本程序,腳本程序通過.NET框架命名空間技術抽取所有Web接口的信息,然后通過對接口的調用實現測試自動化運行。Web測試的自動化運行可讓測試人員將更多的精力放在測試的設計上,進一步提高測試的有效性。由于該方法編寫的C#.NET測試腳本程序只與Web應用程序的接口進行交互,具有很強的可重用性,極大地減少了Web應用程序回歸測試在人力物力與時間上的花費。

1 Web自動化測試工具簡介

測試的自動化可以分為測試設計(測試用例生成)、測試運行與測試結果分析的自動化。在現實應用中可用的測試設計與測試結果分析自動化工具很少[2],原因是在對被測件進行形式化描述過程中無法在完備性上達到100%。目前測試設計與測試結果分析的自動化工具多采用基于模型的測試(modelbased testing)[3]技術,并且多用于學術研究領域,如可嵌入Microsoft Word與Microsoft Visual Studio.NET框架使用的AsmL2[4];George Manson大學的SpecTest[5];Teradyne公司的TestMaster[6]等。

目前市場上支持Web的自動化測試工具基本為測試自動化運行工具,從工作方式上可以分為兩類:a)采用“錄制/回放”式的工作方式,將測試人員對圖形用戶界面(graphic user interface, GUI)的操作錄制成測試腳本,通過對測試腳本的回放實現測試的自動化,如Mercury公司的LoadRunner[7]、WinRunner[8]與應用Ruby編寫的開源測試軟件Watir[9]等。這類工具使用相對容易,測試腳本中的代碼大部份由錄制器自動生成,測試人員只需對生成的代碼進行簡單的修改,代碼維護量小。但由于其腳本程序記錄的是用戶對界面的操作,當界面發生變化時,舊的測試腳本便無法使用,測試人員不得不重新錄制測試腳本。Web應用程序的最大特點之一就是需求持續快速變化,而且這種變化尤其體現在用戶界面上,所以這種測試工具在Web應用程序的回歸測試應用中存在著明顯的缺陷。b)通過記錄客戶端與服務器端之間的協議數據,然后向特定終端發送特定的協議數據來實現測試的自動化,如Borland公司的SilkPerformer[10]。這類工具在測試腳本中記錄的是Web應用程序的各種協議數據,它在回歸測試中較第一類工具明顯具有優勢。但這類工具要求測試人員必須熟知被測件的內部結構,在掌握協議全部字節意義的基礎上對自動錄制的腳本程序進行修改以實現自動化。這類工具的代碼維護工作量過大,而且對測試人員的技術水平要求較高。

2 .NET框架命名空間在測試中的應用

自.NET框架結構出現以來,所有采用Microsoft Visual Studio環境開發的軟件,不論采用何種.NET語言,最后都以同一種中間語言的形式存儲,然后通過Microsoft的中間語言編譯器(intermediate language assembler)編譯發布。這樣做的好處是增加了軟件的跨平臺、跨語言、易移植等特點。從測試的角度考慮,中間語言的存在極大地提高了軟件的可測性。由于C#.NET是一種全新的完全基于.NET框架開發的高級語言,.NET框架的實現基礎——命名空間技術在C#.NET語言中得到完美的體現。在C#.NET中所有的類全部以層次式命名空間的形式存儲,如System命名空間存儲所有基本的數據類、運算類,是.NET中最大的一個命名空間; System.Drawing用來存儲所有用戶界面實現的類;System.IO命名空間用來存儲所有與輸入/輸出相關的類;System.IO.Compression命名空間存儲與流文件壓縮操作相關的類。

在所有這些命名空間中,System.Type是測試人員最感興趣的。System.Type也被叫做通用類系統(common type system, CTS)。System.Type提供的getTypes( )方法讓測試人員從中間語言中提取感興趣的信息。在C#.NET中getTypes( )方法有三種重載的運行方式,其參數可以是一個類名、一個文件名,甚至是一個內存中正在運行的進程名。運行代碼getTypes( )后,C#.NET還允許通過getFields( )、getMethods( )、getParameters( )方法分別獲取被測件中與類相關的屬性、方法及方法的參數。所有這些被提取的信息被存儲在System.Type提供的屬性變量中,如BaseType屬性變量負責存儲當前類的基類名稱,FullName屬性變量負責存儲當前類的完整名稱(包括上層的命名空間),IsInterface布爾型屬性變量用來判斷當前類是否為接口。

從以上可以看出,通過幾行簡單的C#.NET代碼即可實現對接口關鍵信息的抽取,這些信息包括接口中所有的類、類中的屬性變量、類中的方法以及方法的所有參數與返回值的數據類型等。Web應用程序的運行過程是終端間進行協議數據交互的過程,而協議數據的生成、發送與接收是由Web應用程序的接口程序負責的。測試人員應用C#.NET代碼抽取出Web應用程序所有接口程序的詳細信息后,通過接口調用的方式即可驅動Web應用程序測試的自動化運行。

3 應用.NET框架命名空間技術實現Web應用程序測試的自動化運行

下面通過一個簡化的Web視頻播放程序(圖1)來說明應用.NET框架的命名空間技術實現Web應用程序測試的自動化運行方法。

程序由用戶端(user terminal,UT)、頁面服務器(Web server,WS)和存款服務器(credit server,CS)三個組件構成,組件之間通過UTWS、WSCS、WSUT與CSWS四個接口通信。程序準許用戶在登錄后進行視頻訂購與播放操作,并以小時計費。程序的一般流程如圖2描述的時序交互圖所示。

用戶在用戶端進行登錄操作,UT向WS發出登錄命令UW_Login(userID:int),userID為用戶的標志。WS收到登錄命令后向WC發送WC_Login(userID:int)命令以獲取該用戶存款信息,即還有多少余款。如果用戶存在,CS向WS發回CW_Info(userID:int, totalCreidt:double):true命令,WS向UT發出WU_Info (userID:int, totalCreidt:double):true確定登錄成功,并顯示用戶的余額totalCredit;如果用戶不存在,即userID非法,則分別返回CW_Info(userID:int, totalCreidt:double):1與WU_Info(userID:int,totalCreidt:double):1命令以示登錄失敗。如果登錄成功,UT通過UW_Order(userID:int,orderID:int)訂購待播放的視頻,WS發回WU_PlayOrder (credit:double,userID:int,orderID:int)命令為用戶播放其訂購的視頻,credit為正在播放視頻以小時計費的單價。由于用戶的余款有限,在播放過程中有兩種可能:播放時間過長,用戶余款不足,WS發出WU_CancelOrder(userID:int,orderID:int)取消用戶播放;用戶在余款不足時停止播放,UT發出WU_CancelOrder (userID:int,orderID:int)命令。播放完成時WS向中CS發出WC_ModifyCredit(userID:int,totalCredit:double)修改用戶余額,用戶通過UW_Logout(userID:int)命令退出系統。

在本例中測試人員雖然獲取了被測件的組件圖與時序交互圖,但并不知道接口在命名空間中的位置、接口的運行環境等必要信息,而且在大部分情況下測試人員只能拿到被測件及其需求文檔,無法立刻開始測試腳本的編寫。本例中測試人員需將測試腳本分成兩部分編寫:首先對接口程序UT_WS與WS_UT進行信息抽取,然后通過調用該接口程序以驅動整個Web應用程序測試運行。第一部分代碼如下(以抽取UT_WS接口信息為例,并假設Webplay為視頻播放程序的最上層命名空間):

System.Type[] tps = UT_WS.GetTypes( );

//提取UT_WS接口中的所有類

foreach ( Type tp in tps)

{

FieldInfo[] flds = tp.GetFields();//提取類中所有屬性變量

MethodInfo[] mthds = tp.GetMethods();//提取類中所有方法

Foreach ( Methodinfo mthd in mthds)

{

ParameterInfo[] prmts = mthd.GetParameters();

//提取方法中的所有參數

}

}

上面的代碼將接口所有類存儲在tps中,與類對應的屬性變量存儲在flds中,將所有的方法存儲在mthds中,將與方法對應的參數存儲在prmts中。測試人員可以在本段代碼最后通過設置斷點方式查看這些數據的內容以獲取調用Web接口的足夠信息。當然測試人員還可以根據需要將抽取后的信息設計成TXT、Excel等格式的數據文件存儲以方便讀取,也可以實現數據驅動的測試自動化,數據文件的生成與讀取可以通過編寫代碼自動完成,這一部分不是本文的重點,不再詳細介紹。

當第一部分代碼運行完畢后,測試人員已掌握了UT_WS與WS_UT兩接口的所有方法與相應參數,第二部分的工作就是如何調用這些接口中的方法。根據組件圖與時序圖的描述,測試人員為測試程序的正常流程一般會設計三個測試用例(如果考慮到異常情況,測試用例不止三個),代碼如下:

a)登錄不成功

Webplay. UT_WS.US_Login(userid); //userid為不存在的用戶ID

b)登錄成功,用戶主動停止播放

Webplay. UT_WS.UW_Login(userid); //userid為合法的用戶ID

Webplay. UT_WS.UW_Order(userid,orderid)

//orderid為待播放視頻ID

Webplay. UT_WS.UW_CancelOrder(userid,orderid)

//用戶主動停止播放

Webplay. UT_WS.UW_Logout(userid); //用戶退出系統

c)登錄成功,服務器停止播放

Webplay. UT_WS.UW_Login(userid); //userid為存在的用戶ID

Webplay. UT_WS.UW_Order(userid,orderid)//orderid為待播放視頻ID

Webplay. WS_UT.WU_CancelOrder(userid,orderid)//服務器停止播放

Webplay. UT_WS.UW_Logout(userid);//用戶退出系統

以上所有代碼只列出了腳本程序中最關鍵的片段,完整的程序應包括命名空間聲明、變量聲明、被測程序代碼引用等。通過本例可以看出,應用.NET的命名空間技術,測試人員只需編寫簡單的C#.NET代碼即可實現Web應用程序測試的自動化運行。

4 實驗比較

為證明.NET框架命名空間技術在Web軟件自動化測試中的應用價值,筆者曾經做過多項測試實驗,下面將列舉其中具有代表性的兩項實驗結果。

第一項實驗中,將命名空間技術與開源Web測試工具Watir相比較,共同應用在解放軍某部開發的缺陷管理系統的測試過程中。該系統采用B/S結構,在完成缺陷報告、跟蹤、分配等多種缺陷管理功能的基礎上,具有自動化郵件通知、工作流程自定義、BBS等子功能,其應用到了多種常用的Web服務功能。第二項實驗中,將命名空間技術與如Borland公司的SilkPerformer進行比較,測試對象是專門為實驗而編寫的具有主要功能的簡化網絡圖書館管理系統,該系統只具有圖書購置、分目、編碼、錯閱、查詢功能。為保證實驗結果的有效性,在這兩項實驗中均采用覆蓋所有功能(充分考慮正常與異常情況)的原則設計與生成測試用例。表1列出了兩項實驗的結果。

表1 對比實驗結果

實驗比較項.NET框架命名空間技術WatirSilkPerformer

實驗1用例數1 317956

(缺陷管理系統)發現缺陷數142101

實驗2用例數338196

(網絡圖書館管理系統)發現缺陷數4534

從表1的實驗結果可以看出,應用命名空間技術生成的測試用例數與發現的錯誤數上遠遠大于其他種工具,這是由于應用命名空間技術在測試過程中實現了接口參數信息的自動抽取,使得生成的用例充分地考慮相關參數的所有可能組合,這一點是人工很難做到的。但通過對實驗結果的進一步分析發現,命名空間技術很難發現用戶界面錯誤,這是由于其采用了直接在接口中輸入數據以驅動測試運行,這種方式跳過了用戶操作界面的過程。

5 結束語

應用.NET空間技術實現Web應用程序測試的自動化運行方法有很高的應用價值:可以應用于任何采用.NET編寫的或采用.NET的Web應用程序;測試腳本程序相對簡單,代碼易于維護,不受用戶界面的影響;測試人員無須對被測件的內部有太多了解,必要信息由腳本自動抽取;靈活性高,通過對測試腳本更改可以實現數據驅動等多種測試技術;測試花費小,不需要第三方測試軟件。

目前筆者已經實現了被測件信息提取的自動化與測試運行的自動化,為進一步提高測試自動化水平,如何根據提取的信息實現測試數據的自動生成是未來的主要工作。

參考文獻:

[1]SHARP J. C#從入門到精通[M]. 北京:清華出版社, 2006.

[2]BERTOLINO A. Software testing research: achievements, challenges, dreams[C]//Proc of International Conference on Future Software Engineering .Washington DC: IEEE Computer Society, 2007:85-103.

[3]UTTING M, PRESCHNER A, LEGEARD B. A taxonomy of modelbased testing [J/OL]. [2006-04]. http://www.cs.waikato.ac.nz/pubs/wp/2006/uowcswp-2006-04.pdf.

[4]BARNETT M, GRIESKAMP W, NACHMANSON L, et al. Modelbased testing with AsmL.NET framework [R]. [S.l]: Microsoft Research, 2003.

[5]HARTMAN A. Modelbased testing generation tools[EB/OL]. [2002-10-06].http://www.agedis.de/documents/ModelBasedTestGenerationTools_cs.pdf.

[6]STEPHENSON M, LYNCH T, WALTERSS. Using advanced tools to automate the design, generation and execution of formal qualification testing[C]//Proc of Test Technology and Commercialization Conference.1996:160-165.

[7]伊文斌,鄭劍. 基于LoadRunner的Web負載測試[J]. 江西理工大學學報, 2008(4):13-15.

[8]樂翊舟. WinRunner在網管自動化測試中的應用[J]. 電信網技術, 2002(5):26-30.

[9]KOHL J, RRGERS P. Watir works[J]. Better Softwares Magazine, 2005(4):40-45.

[10]Borland Software Corporation. Borland SilkPerformer[R/OL]. [2006-02].http://www.borland.com/resources/en/pdf/products/silk/silkperformer_datasheet.pdf.

主站蜘蛛池模板: 久久这里只精品热免费99| 日本一本正道综合久久dvd| 特级精品毛片免费观看| 在线色国产| 国产美女精品一区二区| 91丝袜在线观看| 欧美日韩国产精品va| 2022国产无码在线| 国产青青操| 91九色视频网| 亚洲人妖在线| 亚洲精品大秀视频| 亚洲日本中文综合在线| 欧美日韩高清在线| 精品无码一区二区三区电影| 伊人久久青草青青综合| 久久久久九九精品影院| 欧美成人综合在线| 国产精品成人免费综合| 蜜臀AVWWW国产天堂| 丰满的熟女一区二区三区l| 在线欧美国产| 精品综合久久久久久97超人该 | 亚洲中文字幕国产av| 久久国产精品国产自线拍| 亚洲最大情网站在线观看| 国产精品第5页| 国产精品久久精品| 国产成人精品一区二区三区| 欧美天堂久久| 亚洲国产精品无码久久一线| 亚洲成A人V欧美综合| 中文毛片无遮挡播放免费| 女人18一级毛片免费观看| 国产精品亚洲五月天高清| 国产成人免费| AV天堂资源福利在线观看| 人妻丰满熟妇av五码区| 最新日本中文字幕| 99热亚洲精品6码| 久久婷婷色综合老司机| 国产高清色视频免费看的网址| 国产不卡在线看| 色香蕉影院| 在线另类稀缺国产呦| 亚洲水蜜桃久久综合网站| 日韩毛片基地| 成人综合网址| 国产成年女人特黄特色毛片免| 色爽网免费视频| 久久国产高清视频| 午夜精品久久久久久久2023| 99久久亚洲精品影院| 97人人做人人爽香蕉精品| 日韩a级片视频| 欧美一区福利| 91精品视频在线播放| 日韩欧美国产成人| 亚洲免费福利视频| 久久精品一卡日本电影| 欧美伊人色综合久久天天| 亚洲一区二区视频在线观看| 亚洲性影院| 国内精品视频| 91精品专区国产盗摄| 91精品aⅴ无码中文字字幕蜜桃 | 国产亚洲欧美另类一区二区| 国产精品永久在线| 人妻少妇乱子伦精品无码专区毛片| 1769国产精品视频免费观看| 亚洲成肉网| 草草线在成年免费视频2| 天堂av综合网| 亚洲欧美成人综合| 毛片网站在线播放| 亚洲av色吊丝无码| 女人18一级毛片免费观看| 国产日韩欧美在线视频免费观看| 国产精品无码制服丝袜| 91免费国产在线观看尤物| 全午夜免费一级毛片| 一区二区影院|