<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 一種GUI自動(dòng)化測試框架方案

一種GUI自動(dòng)化測試框架方案

作者: 時(shí)間:2011-08-28 來(lái)源:網(wǎng)絡(luò ) 收藏

目前,在中,很多軟件體系都采用錄制回放技術(shù)。這種技術(shù)要求者通過(guò)鼠標和鍵盤(pán)的點(diǎn)擊進(jìn)行工作,腳本記錄事件,然后以的方式進(jìn)行回放。記錄下來(lái)的測試腳本必須經(jīng)過(guò)編輯和調試之后插入驗證和檢查點(diǎn)。產(chǎn)生的腳本通常是硬編碼,需要測試人員對腳本進(jìn)行編輯以及參數化操作。同時(shí),界面元素屬性的任何變化都會(huì )影響腳本的運行,有時(shí)甚至需要重新錄制腳本。

本文引用地址:http://dyxdggzs.com/article/155841.htm

  1 .NET中的反射機制

  通常,應用程序(包括桌面程序和Web應用)都由一些基本的界面控件組成,所有的軟件指令都是通過(guò)控件以事件或消息的形式傳遞給后臺處理。測試的本質(zhì)是對中的控件元素提供編程手段[2]。在基于GUI對象識別和控制的自動(dòng)化測試工具中,過(guò)去一直依賴(lài)于Windows API函數的調用。而隨著(zhù)新的編程語(yǔ)言和平臺的出現,涌現了很多新的語(yǔ)言特性,這些語(yǔ)言特性可用于自動(dòng)化測試工具的設計,例如反射機制就是其中一項技術(shù)。

  反射(Reflection)是.NET中的重要機制,通過(guò)反射可以在運行時(shí)獲得.NET中每一個(gè)類(lèi)型(包括類(lèi)、結構、委托、接口和枚舉等)的成員,包括方法、屬性、事件及構造函數等,還可以獲得每個(gè)成員的名稱(chēng)、限定符和參數等。如果獲得了構造函數的信息,即可直接創(chuàng )建對象,即使這個(gè)對象的類(lèi)型在編譯時(shí)還不知道。程序集包含模塊,而模塊包含類(lèi)型,類(lèi)型又包含成員,反射則提供了封裝程序集、模塊和類(lèi)型的對象??梢允褂梅瓷鋭?dòng)態(tài)地創(chuàng )建類(lèi)型的實(shí)例,將類(lèi)型綁定到現有對象或從現有對象中獲取類(lèi)型,然后調用類(lèi)型的方法或訪(fǎng)問(wèn)其字段和屬性[3]。

  2 的整體設計

  自動(dòng)化測試的搭建基本上占了整個(gè)自動(dòng)化測試工作量的40%,是自動(dòng)化測試實(shí)施的一個(gè)重要組成部分。軟件自動(dòng)化從本質(zhì)看是一系列的策略思想、規范文件和代碼的集合。本文提出改進(jìn)的輕量級的GUI自動(dòng)化測試框架,該框架可以幫助用戶(hù)避免當前測試工具出現的缺陷。此框架將具備以下五個(gè)特性:GUI控件自動(dòng)搜索、自動(dòng)生成和執行測試腳本、基于數據驅動(dòng)的原則、測試的自動(dòng)驗證、使用編程語(yǔ)言開(kāi)發(fā)??蚣艿恼w設計如圖1所示。從圖1可以看出,該框架讓測試人員從繁重的錄制工作中解放出來(lái),將更多的時(shí)間和精力集中在測試用例的設計中。

  

  3 框架具體開(kāi)發(fā)

  3.1 加載被測試程序

  為了測試GUI應用程序,必須在測試工具中運行被測程序使兩個(gè)程序交互。使用Assembly定義和加載程序集,加載在程序集清單中列出模塊,并從此程序集中查找類(lèi)型,創(chuàng )建該類(lèi)型的實(shí)例。為了使這兩個(gè)應用程序實(shí)現交互,必須通過(guò)多線(xiàn)程機制實(shí)現。下面是通過(guò)反射加載被測程序的核心代碼[4]:

  Assembly asm=Assembly.LoadFrom(path);

  Type t1=asm.GetType(formName);

  testForm=(Form)asmCreateInstance(t1.FullName);

  ParameterizedThreadStart pt=new ParameterizedThreadStart(AppRun);

  Thread thread=new Thread(pt);

  thread.Start(testForm);

  private void AppRun(Form theForm)

  {

  Application.Run(theForm);

  }

  


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>