亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        0 引 言

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

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

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

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

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

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

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

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

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

        1.2 測試腳本錄制

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

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

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

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

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

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

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

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

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

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

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

        2.1 生成測試結(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)擊登錄,并通過獲取頁面提示“登錄成功”作為斷言信息,在測試用例結(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ò)誤、用戶名正確密碼為空等其他登錄不成功的情況的測試用例。

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

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

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

        Python 通過集成第三方模塊HTMLTestRunner 生成HTML 測試報(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)化登錄測試報(bào)告",description="測試用例執(zhí)行情況如下:")

        runner.run(allcase())

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

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

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

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

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

        在本文測試用例中,首先找到上一步生成的HTML測試報(bào)告,讀取報(bào)告的內(nèi)容并將內(nèi)容以正文的形式發(fā)送到相關(guān)收件人郵箱,同時(shí)也將HTML 測試報(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 測試報(bào)告的正文及附件,如圖3所示。

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

        3 結(jié) 語

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

        猜你喜歡
        測試報(bào)告功能測試快照
        EMC存儲快照功能分析
        某內(nèi)花鍵等速傳動(dòng)軸八功能測試夾具設(shè)計(jì)
        關(guān)于戶外體育游戲?qū)τ變后w能影響的調(diào)查研究
        百變星君:ROLLINGSTONE 變色龍紫破風(fēng)車架測試報(bào)告
        創(chuàng)建磁盤組備份快照
        SSAB Hardox悍達(dá)450材料輕型自卸車廂體測試報(bào)告
        數(shù)據(jù)恢復(fù)的快照策略
        一張“快照”搞定人體安檢
        淺談軟件測試工作的開展流程
        亚洲成a人片在线播放观看国产| 内射合集对白在线| 老熟妇乱子伦av| 亚洲第一av导航av尤物| 日本少妇被黑人xxxxx| 少妇激情av一区二区| 中文字幕成人精品久久不卡| 91青青草视频在线播放| 亚洲精品国产一区二区免费视频 | 美女啪啪国产| 都市激情亚洲综合一区| 色婷婷色丁香久久婷婷| 最近免费mv在线观看动漫| 亚洲AⅤ永久无码精品AA| 日韩精品精品一区二区三区| av天堂中文亚洲官网| 免费国产线观看免费观看| 一二三四在线视频观看社区| 国产亚洲精品国产福利在线观看| 精品久久人妻一区二区| 狠狠色噜噜狠狠狠777米奇| 欧美极品jizzhd欧美| 白浆出来无码视频在线| 色小姐在线视频中文字幕| 中文字幕一区二区人妻秘书| 夜夜躁狠狠躁日日躁2022| 这里有精品可以观看| 99国产综合精品-久久久久| 亚洲国产一区二区中文字幕| 亚洲色偷偷偷综合网| 欧美成人精品一区二区综合| 一本大道久久a久久综合| 丰满人妻被公侵犯的视频 | 欧美极品jizzhd欧美| 亚洲国产一区二区三区最新| 久久精品国产亚洲av网站| 亚洲成a人片在线观看无码3d| 午夜一级韩国欧美日本国产| 日韩肥熟妇无码一区二区三区| 水蜜桃网站视频在线观看| 免费无码av片在线观看播放|