• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Selenium+Python的高校統(tǒng)一身份認(rèn)證自動(dòng)化驗(yàn)收測(cè)試技術(shù)研究

      2019-11-20 08:37馮興利洪丹丹羅軍鋒鎖志海
      現(xiàn)代電子技術(shù) 2019年22期
      關(guān)鍵詞:測(cè)試報(bào)告功能測(cè)試快照

      馮興利,洪丹丹,羅軍鋒,鎖志海

      (西安交通大學(xué) 網(wǎng)絡(luò)與信息中心,陜西 西安 710049)

      0 引 言

      每個(gè)項(xiàng)目系統(tǒng)在上線之前都需要進(jìn)行驗(yàn)收測(cè)試,特別是功能測(cè)試。有時(shí)依項(xiàng)目要求需要多次對(duì)系統(tǒng)進(jìn)行功能測(cè)試并保留測(cè)試結(jié)果相關(guān)證據(jù)。傳統(tǒng)方式上,通常采用人工手動(dòng)測(cè)試的方式進(jìn)行,而人工測(cè)試只適合測(cè)試次數(shù)較少的情況,當(dāng)要求進(jìn)行多次重復(fù)測(cè)試時(shí),需要一種自動(dòng)化的功能測(cè)試方式來替代人工,以便高效率的完成測(cè)試任務(wù)。

      Selenium 能夠輕松地完成自動(dòng)化功能測(cè)試。Selenium 是ThoughtWorks 專門為Web 應(yīng)用程序編寫的自動(dòng)化驗(yàn)收測(cè)試工具,特點(diǎn)是開源、免費(fèi)、多瀏覽器支持(Safari,IE,F(xiàn)irefox,Chrome,Opera,Edge)、多平臺(tái)支持(Linux,Windows,MAC)、多語言支持(Java,Python,Ruby,C#,JavaScript,C++)、API 簡單、驅(qū)動(dòng)靈活、支持分布式測(cè)試用例執(zhí)行。Selenium 測(cè)試直接運(yùn)行在瀏覽器中,如同真實(shí)用戶在操作[1]。

      Python 是一個(gè)有條理的、強(qiáng)大的、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,誕生于20世紀(jì)90年代初。2011年1月被TIOBE 編程語言排行榜評(píng)為2010年度程序設(shè)計(jì)語言。Python 的開發(fā)哲學(xué)是“用一種方法,最好是只有一種方法來做一件事”[2]。

      unittest 是Python 自帶的一個(gè)單元測(cè)試框架,負(fù)責(zé)對(duì)最小的軟件設(shè)計(jì)單元進(jìn)行驗(yàn)證,它使用軟件設(shè)計(jì)文檔中對(duì)模塊的描述作為指南,對(duì)重要的程序分支進(jìn)行測(cè)試以發(fā)現(xiàn)模塊中的錯(cuò)誤,并維護(hù)測(cè)試用例的編寫規(guī)范[1,3]。本文基于Python+Selenium 結(jié)合unittest 單元測(cè)試框架對(duì)西安交大統(tǒng)一身份認(rèn)證系統(tǒng)(即CAS)進(jìn)行一次完整的自動(dòng)化登錄測(cè)試。

      1 自動(dòng)化測(cè)試過程

      1.1 測(cè)試環(huán)境搭建

      1)下載安裝Python,并配置系統(tǒng)環(huán)境變量Path。

      2)安裝Selenium,可通過pip 命令安裝,也可直接下載Selenium 包進(jìn)行安裝[4]。

      3)下載 Python 第三方模塊 HTMLTestRunner,用于生成HTML 測(cè)試報(bào)告。

      1.2 測(cè)試腳本錄制

      使用Selenium IDE 錄制。Selenium IDE 是基于Firefox 瀏覽器的一個(gè)插件,為用戶提供腳本錄制、回放以及編輯功能,能夠?qū)浿频哪_本導(dǎo)出生成相應(yīng)的帶單元測(cè)試框架的自動(dòng)化腳本。該插件可直接在Firefox 瀏覽器的附加組件中安裝,也可在線安裝[5]。

      1.3 測(cè)試用例設(shè)計(jì)

      對(duì)于測(cè)試人員來說,不管是進(jìn)行功能測(cè)試還是性能測(cè)試都需要編寫測(cè)試用例。自動(dòng)化測(cè)試用例主要針對(duì)自動(dòng)化測(cè)試框架及其相關(guān)工具,執(zhí)行對(duì)象是腳本,任何一個(gè)判斷都需要程序定義,各用例之間關(guān)聯(lián)性較強(qiáng),主要用來保證產(chǎn)品主體功能正確和完整[1,6]。

      自動(dòng)化測(cè)試用例常用于測(cè)試靜態(tài)內(nèi)容、測(cè)試鏈接、測(cè)試動(dòng)態(tài)元素、測(cè)試Ajax 等場(chǎng)合。其編寫原則是:

      1)一個(gè)用例為一個(gè)完整的場(chǎng)景,例如登錄測(cè)試應(yīng)為從用戶登錄系統(tǒng)到最終退出并關(guān)閉瀏覽器;

      2)一個(gè)用例只驗(yàn)證一個(gè)功能點(diǎn);

      3)盡量少編寫逆向邏輯用例;

      4)用例與用例之間盡量避免依賴;

      5)一個(gè)用例測(cè)試完成后需要還原測(cè)試場(chǎng)景,以免影響其他用例的執(zhí)行[1,7]。

      2 測(cè)試用例和結(jié)果

      本文針對(duì)西安交通大學(xué)統(tǒng)一身份認(rèn)證系統(tǒng)的登錄功能進(jìn)行自動(dòng)驗(yàn)證。

      2.1 生成測(cè)試結(jié)果快照

      2.1.1 元素定位

      首先創(chuàng)建一個(gè)類,使其繼承unittest 框架的TestCase類[8],并在該類中創(chuàng)建test_cas_login()方法,獲取網(wǎng)址并定位用戶名、密碼、提交按鈕等相關(guān)元素,代碼如下:

      def test_cas_login(self,username,password):

      driver = self.driver

      driver.get("https://cas.xjtu.edu.cn/login")

      driver.find_element_by_id("username").send_keys(username)

      driver.find_element_by_id("password").send_keys(password)

      driver.find_element_by_class_name("btn-submit").click()

      2.1.2 生成登錄結(jié)果快照

      創(chuàng)建test_login_success()方法,并調(diào)用已經(jīng)創(chuàng)建好的test_cas_login()方法。該用例用于驗(yàn)證用戶名和密碼均正確的情況下點(diǎn)擊登錄,并通過獲取頁面提示“登錄成功”作為斷言信息,在測(cè)試用例結(jié)束時(shí)使用get_screenshot_as_file 函數(shù)進(jìn)行網(wǎng)頁截圖,并將圖片保存到路徑 D:/caslogintest 下。

      相關(guān)代碼如下:

      def test_login_success(self):

      self.test_cas_login(′fengxingli5927′,′456896523′)

      link = self.driver.find_element_by_id(′msg′)

      self.assertTrue(′登錄成功′ in link.text) self.driver.get_screenshot_as_file("D:\caslogintest\login_success.png")

      用類似方法創(chuàng)建用戶名不存在、用戶名正確密碼錯(cuò)誤、用戶名正確密碼為空等其他登錄不成功的情況的測(cè)試用例。

      執(zhí)行上述用例,可得到測(cè)試結(jié)果快照,如圖1所示。圖中的5 張截圖依次是:用戶名正確密碼錯(cuò)誤、用戶名正確密碼為空、登錄成功、用戶名不存在、用戶名為空的測(cè)試結(jié)果截圖。

      圖1 測(cè)試結(jié)果快照Fig.1 Screenshots of test results

      2.2 生成HTML測(cè)試報(bào)告

      Python 通過集成第三方模塊HTMLTestRunner 生成HTML 測(cè)試報(bào)告[9],部分代碼如下:

      report_path="E://work//2018//下半年//第十三篇文章//case//report//result.html"

      fp=open(report_path,"wb")

      runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title="西安交通大學(xué)統(tǒng)一身份認(rèn)證系統(tǒng)自動(dòng)化登錄測(cè)試報(bào)告",description="測(cè)試用例執(zhí)行情況如下:")

      runner.run(allcase())

      本例自動(dòng)生成的測(cè)試報(bào)告HTML 文檔如圖2所示。

      圖2 HTML 測(cè)試報(bào)告Fig.2 Document of HTML test reports

      2.3 測(cè)試報(bào)告自動(dòng)發(fā)至郵箱

      自動(dòng)發(fā)郵件功能也是自動(dòng)化測(cè)試的一大需求。如果在自動(dòng)化腳本運(yùn)行完之后,與測(cè)試工作有關(guān)的人員能在郵箱里及時(shí)收到最新的測(cè)試報(bào)告,將會(huì)十分方便[10]。

      Python 的smtplib 模塊提供了一種發(fā)送電子郵件的方便途徑,該模塊封裝了SMTP 協(xié)議,可使用其中的sendmail 方法發(fā) 送郵件[11]。

      在本文測(cè)試用例中,首先找到上一步生成的HTML測(cè)試報(bào)告,讀取報(bào)告的內(nèi)容并將內(nèi)容以正文的形式發(fā)送到相關(guān)收件人郵箱,同時(shí)也將HTML 測(cè)試報(bào)告以附件的形式發(fā)送給相關(guān)收件人。其中發(fā)送郵件模塊的相關(guān)代碼為:

      smtp = smtplib.SMTP()

      smtp.connect(′smtp.163.com′)

      smtp.login(username,password)

      smtp.sendmail(msg[′from′],msg[′to′],msg.as_string())

      腳本執(zhí)行成功后,打開收件人郵箱,即可看到HTML 測(cè)試報(bào)告的正文及附件,如圖3所示。

      圖3 收件人郵箱收到的測(cè)試報(bào)告Fig.3 Test report received in recipient′s mailbox

      3 結(jié) 語

      本文基于Selenium+Python 對(duì)西安交通大學(xué)統(tǒng)一身份認(rèn)證系統(tǒng)的登錄模塊進(jìn)行自動(dòng)化功能測(cè)試,包含測(cè)試用例的設(shè)計(jì)和腳本的編寫。測(cè)試結(jié)果表明,基于Selenium 工具和Python 語言寫出的測(cè)試用例簡潔凝練,能夠滿足多個(gè)賬號(hào)多種情況下進(jìn)行登錄測(cè)試并保留測(cè)試結(jié)果快照的測(cè)試需求,能夠自動(dòng)生成HTML 測(cè)試報(bào)告并自動(dòng)將測(cè)試文檔通過郵件發(fā)送給項(xiàng)目相關(guān)人員。相比人工手動(dòng)測(cè)試,此方法大大提高了測(cè)試效率,為技術(shù)人員修復(fù)系統(tǒng)bug、相關(guān)人員及時(shí)查看測(cè)試報(bào)告提供了方便。

      猜你喜歡
      測(cè)試報(bào)告功能測(cè)試快照
      EMC存儲(chǔ)快照功能分析
      某內(nèi)花鍵等速傳動(dòng)軸八功能測(cè)試夾具設(shè)計(jì)
      關(guān)于戶外體育游戲?qū)τ變后w能影響的調(diào)查研究
      百變星君:ROLLINGSTONE 變色龍紫破風(fēng)車架測(cè)試報(bào)告
      創(chuàng)建磁盤組備份快照
      SSAB Hardox悍達(dá)450材料輕型自卸車廂體測(cè)試報(bào)告
      數(shù)據(jù)恢復(fù)的快照策略
      一張“快照”搞定人體安檢
      淺談軟件測(cè)試工作的開展流程
      高阳县| 玛纳斯县| 乾安县| 湖南省| 秭归县| 山东| 铅山县| 桓台县| 茂名市| 临潭县| 长春市| 嘉禾县| 时尚| 林口县| 获嘉县| 鲁甸县| 汝阳县| 天全县| 林口县| 镇沅| 河西区| 东丰县| 五大连池市| 旬邑县| 库尔勒市| 石狮市| 万载县| 青岛市| 固始县| 株洲市| 青州市| 呼和浩特市| 伊春市| 长岭县| 邵阳市| 舒城县| 许昌县| 北安市| 元朗区| 鱼台县| 台前县|