• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件測試中的一個智能的 Web 界面測試系統

    發表于:2010-09-26來源:作者:點擊數: 標簽:軟件測試webWebWEB系統
    軟件測試 中的一個智能的 Web 界面測試系統 Web2.0 是相對Web1.0 的新的一類互聯網應用的統稱。2001年秋天互聯網公司(dot-com)泡沫的破滅標志著互聯網的一個轉折點。許多人斷定互聯網被過分炒作,事實上 網絡 泡沫和相繼而來的股市大衰退看起來像是所有技術

    軟件測試中的一個智能的 Web 界面測試系統

    Web2.0 是相對Web1.0 的新的一類互聯網應用的統稱。2001年秋天互聯網公司(dot-com)泡沫的破滅標志著互聯網的一個轉折點。許多人斷定互聯網被過分炒作,事實上網絡泡沫和相繼而來的股市大衰退看起來像是所有技術革命的共同特征。股市大衰退通常標志著蒸蒸日上的技術已經開始占領中央舞臺。假冒者被驅逐,而真正成功的故事展示了它們的力量,同時人們開始理解了是什么將一個故事同另外一個區分開來。   在那個會議之后的一年半的時間里,“Web 2.0”一詞已經深入人心,從Google上可以搜索到4.7億  web2.0
    以上的鏈接。但是,至今關于Web 2.0的含義仍存在極大的分歧,一些人將Web 2.0貶低為毫無疑義的一個行銷炒作口號,而其他一些人則將之理解為一種新的傳統理念。   在我們當初的頭腦風暴中,我們已經用一些例子,公式化地表達了我們對Web 2.0的理解:   
     Web 1.0 Web 2.0
    1 DoubleClick Google AdSense 
    2 Ofoto Flickr
    3 Akamai BitTorrent
    4 mp3.com  Napster
    5 大英百科全書在線(Britannica Online) 維基百科全書(Wikipedia)
    6 個人網站 博客(blogging) 
    7 evite upcoming.org和EVDB 
    8 域名投機 搜索引擎優化[1][2]
    9 屏幕抓?。╯creen scraping) 網絡服務(web services)
    10 發布 參與
    11 內容管理系統 維基
    12 目錄(分類) 標簽(“分眾分類”,folksonomy)
    13 粘性 聚合
     這個列表還會不斷繼續下去。但是到底是什么,使得我們認定一個應用程序或一種方式為作為所謂“Web 1.0”,而把另外一個叫做“Web 2.0”呢?(這個問題尤為緊迫,因為Web 2.0的觀念  web2.0
    已經傳播的如此廣泛,以至于很多公司正在將這個詞加到他們的行銷炒作中,但卻沒有真正理解其含義。同時這個問題也尤為困難,因為許多嗜好口號的創業公司顯然不是Web 2.0,而一些我們認為是Web 2.0的應用程序,例如Napster和BitTorrent,甚至不是真正適當的網絡程序?。?  然而,拋開紛繁蕪雜的Web 2.0現象,進而將其放到科技發展與社會變革的大視野下來看,Web 2.0可以說是信息技術發展引發網絡革命所帶來的面向未來、以人為本的創新2.0模式在互聯網領域的典型體現,是由專業人員織網到所有用戶參與織網的創新民主化進程的生動注釋。

    Web2.0 是一個體現當代 WWW 技術發展趨勢的流行概念。它極力促進創造性、信息交互性以及用戶間協作性的 Web 設計思想的推廣。這些想法帶來了各種豐富多彩的基于 Web 的互動和資訊服務的開發和演變。例如,社交網站,WIKI 以及博客。

    Web2.0 最突出的特色就是豐富的客戶端技術。主要有三大類:

    • Ajax 和 JSON

    Ajax(Asynchronous JavaScript + XML)是 Web2.0 的主要技術。網頁瀏覽不再是單擊一下,然后等待整個頁面重新裝載,而是可以用鼠標順暢地滾動地圖,等待局部數據的自動刷新。典型的事例應用是 Google Map。

    JSON(JavaScript Object Notation)是 Ajax 的衍生技術之一。Web 數據通常通過 XML 傳輸。而 JSON 對象是一系列以逗號分隔的 name:value 對,與 XML 相比更加的簡潔,傳輸效率高,適合大規模數據傳輸。典型的應用事例是 Live Search Box。

    • Restful

    REST(Representational State Transfer)是一種輕量級的面向數據庫的 Web 服務架構。REST 架構遵循 CRUD 原則,對于資源只需要四種行為:Create(創建)、Read(讀?。?、Update(更新)和 Delete(刪除)就可以完成對其操作和處理。典型的應用事例包括 Facebook 和 Flickr。

    • RIA

    RIA(Rich Internet Application)是如今非常流行的 Web 技術。它的界面類似于一般的桌面程序,比一般的 Web 程序更加豐富并且互動。目前比較流行的技術有三項:Abobe Flex, 微軟的 Silverlight 和 Sun 推廣的 JavaFX。三種技術都有自己的 SDK 和開發工具。

    介紹測試系統流程

    以上我們簡要介紹了 Web2.0 的概念和相關客戶端技術。為確??蛻舳水a品的質量,我們需要使用與此相應的 Web 測試工具,從而方便地融合于產品測試中。此外,為適應 Web 開發的靈活性,我們同時需要一個能夠快速配置、部署、運行和匯報結果的測試系統,從而實現智能高效的測試流程,降低軟件研發的成本。

    基于以上論述,下面將介紹一個智能的 Web 界面測試系統。該系統有四大模塊組成,主體主要由 Python 語言實現,結合幾種開發工具和技術,包括 Ant、Selenium、TestNG、XML 和 Flex。系統有兩個控制方式:時間和 Web 管理站點。時間邏輯在 Python 腳本中實現,當時間到來時系統會按順序下載源代碼、部署應用程序、運行自動測試、發布報告;而 Web 管理站點通過 Flex 和 JAVA 技術來實現,用戶可以按需在線配置某些模塊,并要求立即執行自動測試。

    下面將詳細介紹每個模塊的具體工作內容。測試流程參見圖 1。

    圖 1. 測試系統概述
    圖 1. 測試系統概述

    源代碼和安裝包的按需下載

    在軟件開發過程中,每天都會因新的功能而更改源代碼。此外,很多項目需要國際團隊合作,這些情況下代碼的更新頻率更加高。本土和國外團隊經常需要共享源代碼,而源代碼可能被存放在固定的站點上面。當源代碼文件量大而站點距離遙遠的時候,下載代碼的任務就比較耗時。為了節省這方面的時間,提高團隊整體的工作效率,有必要讓這部分工作自動化起來。所以,系統首先實現了一個結合 Python 和 XML 的下載控制模塊。它的邏輯比較簡單(參見圖 2)。Python 程序定時讀取配置文件,判斷該任務當前是否可以運行。如果此刻時間和配置的時間一致,就訪問站點,下載代碼包。否則,放入等待隊列,獲取下一個任務。在等待隊列里面的任務會在一定時間后重新啟動。

    圖 2. 下載流程
    圖 2. 下載流程

    下載配置文件的內容參見以下代碼:

    清單 1.下載配置文件的代碼
     
     <?xml version="1.0" encoding="utf-8"?> 
     <items> 
     <item name="download source files" type="source" weekday="-1" time="7:-1" 
     source="https://sample.sourcecode.com" 
     target="C:\sourcetar\"/> 
     </items> 

    讀取下載配置文件的代碼如下:

    清單 2.讀取下載配置文件的代碼
     
     from xml.dom.minidom import parse, parseString 
     from MyDownloadTask import MyDownloadTask 
    
     def readFromProperty(xmlfile): 
        tasklist = [] 
        dom = parse(xmlfile) 
        for node in dom.getElementsByTagName('item'): 
            name = node.getAttribute('name')
            weekday = node.getAttribute('weekday')
            time = node.getAttribute('time')
            source = node.getAttribute('source')
            target = node.getAttribute('target')
            type = node.getAttribute('type')
            
     // 定義一個下載任務
            task = MyDownloadTask()
            task.create(name, weekday, time, source, target, type)
     // 加入下載任務列表
            tasklist.append(task)
            
        return tasklist 

    實現具體的下載邏輯如下:

    清單 3.實現下載的代碼
     
     class MyDownloadTask(object): 
        
        …… // 定義一些變量
        
        def create(self, name, weekday, time, source, target, type): 
            self.name = name 
            self.weekday = int(weekday)
            self.source = source 
            self.target = target 
            index = time.find(":")
            self.hour = int(time[0:index])
            self.minute =  int(time[index+1:])
            self.type = type 
         
         def run()
    
     // 使用用戶名和密碼通過防火墻
     password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
     password_mgr.add_password(None, self.source, username, password)
     handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
     opener = urllib.request.build_opener(handler)
     urllib.request.install_opener (opener)
    
     // 從站點下載文件
     content = urllib.request.urlopen(self. source).read()
     f=open(self.target + self.buildno,"wb")
     f.write(content)
     f.close()

    此例指出目前有一項下載任務,下載類型是源代碼,鏈接為 https://sample.sourcecode.com, 將其保持到 C 盤 sourcetar 文件夾下,時間為每天早上 7 點鐘。(-1 代表任意時間)。項目組可以根據需要增加下載項。比如,我們項目組由于資源文件經常要修改,所以需要每天上午和下午都要檢測是否有新的代碼包,所以配置了兩個下載任務。上午的時間一般都在 7 點,這樣可以在每位同事上班打開電腦的那個時刻就獲得大洋彼岸美國項目組下班時候的最新進展。

    正如前文所述,該測試系統中我們提供一個 Web 管理站點,用戶可以根據項目的需要配置下載任務,不必麻煩系統管理員來修改下載配置文件。該模塊使用 Flex 和 Java 技術實現(參見圖 3)。用戶可以通過它了解當前系統已有的下載任務。此外,用戶也可以通過管理站點創建,修改和刪除下載任務。這些更改最終都會被保存到 XML 配置文件中。

    圖 3. 下載管理界面
    圖 3. 下載管理界面

    應用程序的部署

    對 Web 應用程序而言,測試的第一步是部署。有了源代碼后,測試系統使用 Ant 編寫的腳本編譯源代碼,停止當前已有的 Web 服務器,部署產品代碼,然后重新啟動 Web 服務器。在這段時間中,產品的測試環境可能暫時無法訪問(參見以下代碼)。

    清單 4.代碼部署
     
     def deploybuild(self): 
           … // 清理文件夾,將源代碼解壓到 d 盤 buildtar 目錄
           try: 
                tar = tarfile.open(self.target + myHtml.srcbuild, "r:gz")
                for tarinfo in tar: 
                    print(tarinfo.name, "is", tarinfo.size, "bytes in size")
                tar.extractall("d:/buildtar")
                tar.close()
            except : 
               …
    
            // 編譯源代碼
            os.chdir("d:/buildtar")
            os.system("Ant all")
    
            // 關閉 web 服務
            os.system("net stop \”servicename\""); 
    
            … // 部署系統
    
            // 開啟 web 服務
            os.system("net start \"servicename\"")

    運行自動測試腳本

    當新版本的 Web 應用程序部署完后,測試系統就開始進入自動測試。本系統使用 SVN 對測試腳本進行版本控制。所以有必要在一開始通過 SVN 更新最近的測試腳本。這里使用 Ant 來調用 SVN 的命令行工具,參見下圖。

    使用如下 Python 腳本調用相應的 Ant 任務:

    清單 5.Python 腳本
     
     def runseleniumtestcase(self): 
        // 下載測試腳本
        os.chdir("d:/")
        os.system("Ant download-testcase -buildfile=task.xml")
    
     // 運行測試腳本
     os.chdir("d:/v510")
     os.system("Ant start-selenium -buildfile=build.xml")
    
     <target name="download-testcase"> 
     <delete dir ="v100"/> 
    	 <property environment="env"/> 
      	 <exec executable="cmd"> 
      <env key="PATH" path="${env.PATH}:C:/Program Files/CollabNet Subversion Client"/> 
        <arg value="/c"/> 
        		 <arg value="svn"/> 
        		 <arg value="checkout"/> 
        <arg value="svn://9.19.199.9/web/v100"/> 
     </exec> 
     </target> 

    事例中的任務 download-testcase 用來從站點 9.19.199.9 的 web/v100 目錄下載最新版本的測試腳本。start-selenium 任務將啟動 selenium 的 proxy server,然后按照 TestNG 配置的順序運行測試腳本。

    測試系統的腳本應用 Selenium 和 TestNG 的測試工具,實現對各類型 Web 界面的測試需求。在第三節中將詳細介紹 Selenium 工具在本系統的應用,并在第四章中介紹 TestNG 工具在配置 Selenium 測試腳本中的作用。

    為適應項目開發周期不同階段的測試需求,Web 管理站點將列出當前所以測試案例。用戶可以自由地挑選下次測試需要的用例。當用戶選擇保存后,這些測試腳本就會在下次系統自動部署時候被運行。如果用戶選擇運行,那么系統可以馬上在當前已部署的產品環境上運行測試腳本。

    發布自動測試報告

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>