新聞中心
現(xiàn)如今,無論是軟件測(cè)試人員,還是利益相關(guān)者,都已經(jīng)認(rèn)識(shí)到:實(shí)現(xiàn)測(cè)試自動(dòng)化框架對(duì)于軟件項(xiàng)目的成功是至關(guān)重要的。它不但能夠提高測(cè)試的效率,而且可以減少人工干預(yù)的工作量。

站在用戶的角度思考問題,與客戶深入溝通,找到樂東黎族網(wǎng)站設(shè)計(jì)與樂東黎族網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋樂東黎族地區(qū)。
在本文中,我們將深入探討什么是真正的測(cè)試自動(dòng)化框架,自動(dòng)化腳本是如何工作的,以及此類框架是如何在測(cè)試過程中給團(tuán)隊(duì)提供競爭優(yōu)勢(shì)的。
定義測(cè)試自動(dòng)化
在任何行業(yè)中,自動(dòng)化通常被解釋為通過智能算法,來自動(dòng)處理各種流程,而且?guī)缀醪恍枰斯さ母深A(yù)。在軟件行業(yè)中,測(cè)試自動(dòng)化意味著:使用受許可版本或開源版本的自動(dòng)化工具,對(duì)軟件應(yīng)用程序執(zhí)行各項(xiàng)測(cè)試。從技術(shù)角度來說,測(cè)試自動(dòng)化框架是一組定制的交互式組件,它可以協(xié)助執(zhí)行腳本化的測(cè)試,并全面地報(bào)告測(cè)試結(jié)果。
為了成功地構(gòu)建自動(dòng)化框架,軟件質(zhì)量保證專家必須通過全面考慮與設(shè)計(jì),來控制和監(jiān)視整個(gè)測(cè)試過程,并提高結(jié)果的準(zhǔn)確性。與此同時(shí),那些經(jīng)過精心設(shè)計(jì)的自動(dòng)化框架也能夠讓測(cè)試人員以實(shí)用、簡化的方式,來執(zhí)行各項(xiàng)自動(dòng)化的測(cè)試。
通常,根據(jù)自動(dòng)化需求目標(biāo)的不同,我們可以選擇并創(chuàng)建如下不同的框架:
以工具為中心的框架
無論是商業(yè)版工具還是開源的自動(dòng)化工具,它們都擁有自己的系統(tǒng)框架,可以在各種測(cè)試環(huán)境中提供測(cè)試套件,實(shí)施分布式測(cè)試,并最終生成報(bào)告。最典型的示例當(dāng)屬Selenium自動(dòng)化框架。該框架的主要組件是WebDriver。作為基于Web的瀏覽器插件,該組件可被用于控制和操作Web瀏覽器中應(yīng)用程序的DOM模型。此外,Selenium自動(dòng)化框架還帶有各種實(shí)用的編碼庫,以及支持記錄回放的工具。
Serenity是另一個(gè)自動(dòng)化工具的框架。它圍繞著Selenium Web驅(qū)動(dòng)構(gòu)建了一個(gè)加速器。為加快測(cè)試自動(dòng)化實(shí)施過程的速度,Serenity還能夠?qū)⑻囟ǖ慕M件與社區(qū)內(nèi)的其他工具相組合。
除了上述兩種工具,業(yè)界還有TestComplete、以及Ranorex HP QTP等工具。作為已部署的預(yù)構(gòu)建框架,它們都帶有用戶行為模擬器、報(bào)告和腳本IDE等功能。
面向項(xiàng)目的框架
定制此類框架主要是用于實(shí)現(xiàn)特定應(yīng)用項(xiàng)目的自動(dòng)化。特定項(xiàng)目的框架既可以支持某些目標(biāo)應(yīng)用的測(cè)試自動(dòng)化需求,又能夠被開源庫構(gòu)建的組件所驅(qū)動(dòng)。此類框架圍繞著被測(cè)系統(tǒng)(System Under Test,SUT)創(chuàng)建了一個(gè)友好的測(cè)試環(huán)境,以運(yùn)行和覆蓋各種基本功能。其中包括:對(duì)已開發(fā)的應(yīng)用進(jìn)行部署,運(yùn)行,并且通過包裝器(Wrapper)的控制以簡化編碼,執(zhí)行測(cè)試用例,以及輸出測(cè)試結(jié)果報(bào)告。面向特定項(xiàng)目的框架還應(yīng)該通過組件,以支持在不同的操作系統(tǒng)和瀏覽器上,進(jìn)行跨多種云端環(huán)境的測(cè)試。
關(guān)鍵字驅(qū)動(dòng)的框架
這是一些旨在給開發(fā)人員和測(cè)試人員帶來較少代碼體驗(yàn)的框架。那些被應(yīng)用于代碼之中的關(guān)鍵字集(如:Login、NavigateToPage、Click、以及TypeText)會(huì)被安裝到代碼庫中,作為一個(gè)關(guān)鍵字的存儲(chǔ)庫。根據(jù)給定的關(guān)鍵字,測(cè)試人員可以參考編寫處對(duì)應(yīng)的腳本,并以電子表格的形式,傳遞到關(guān)鍵字解釋器中,予以執(zhí)行和測(cè)試。因此,對(duì)于技能不足的人員來說,他們能夠據(jù)此輕松地編寫和理解各種自動(dòng)化腳本。
理想的測(cè)試自動(dòng)化框架的主要組件
如果您想實(shí)現(xiàn)功能強(qiáng)大、且性能卓越的測(cè)試自動(dòng)化框架,那么無論采用開源的、還是商用的框架,都必須包括一些核心的構(gòu)成組件。它們分別是:
1.測(cè)試庫
a)單元測(cè)試
您需要將單元測(cè)試庫用于:
- 通過特定的形式注解(例如@Test或[Test]),來定義正在使用的測(cè)試方法。
- 執(zhí)行能夠影響自動(dòng)化測(cè)試最終結(jié)果的斷言(assertion)。
- 運(yùn)行簡單明了的測(cè)試。
無論您是通過命令行、IDE、專用工具、還是CI(持續(xù)集成)系統(tǒng),來運(yùn)行測(cè)試,都需要確保單元測(cè)試能夠以直觀的方式得到運(yùn)行,并能夠提供相應(yīng)的單元測(cè)試庫。
通常,單元測(cè)試庫可以支持幾乎每一種編程語言。其中包括:
- 針對(duì)Java的JUnit和TestNG。
- 針對(duì).Net的NUnit和MSTest。
- 適用于Python的unittest(以前叫做PyUnit)。
b)集成和端到端測(cè)試
在執(zhí)行集成和端到端測(cè)試自動(dòng)化時(shí),我們往往需要檢驗(yàn)現(xiàn)有測(cè)試庫所提供的各項(xiàng)功能。為了消除不必要的編碼負(fù)擔(dān),那些由應(yīng)用UI驅(qū)動(dòng)的API級(jí)別的測(cè)試,需要通過組件,輕松地與被測(cè)應(yīng)用進(jìn)行交互。因此,我們不能僅專注于如下方面的編碼工作:
- 連接到應(yīng)用程序。
- 發(fā)送各種請(qǐng)求。
- 接收各種結(jié)果回應(yīng)。
此環(huán)節(jié)涉及到的重要測(cè)試庫有:
- Selenium(主流語言都可使用)。
- Protractor(特定于JavaScript)。
- Karate DSL(特定于Java的API級(jí)集成測(cè)試,請(qǐng)參見:https://github.com/intuit/karate)
c)行為驅(qū)動(dòng)開發(fā)(Behavior-Driven Development,BDD)
專門針對(duì)BDD的測(cè)試庫往往以行為規(guī)范為目標(biāo),以可執(zhí)行代碼的形式創(chuàng)建各種可執(zhí)行的規(guī)范。盡管它們不能像測(cè)試工具那樣直接與被測(cè)應(yīng)用進(jìn)行交互,但是我們可以將不同的功能和預(yù)期的行為場景轉(zhuǎn)換為代碼。通過對(duì)BDD流程的支持,我們可以創(chuàng)建與自動(dòng)測(cè)試范圍和意圖相一致的實(shí)時(shí)文檔。如下是典型的BDD庫:
- Cucumber(主流語言都可使用)。
- Jasmine(特定于JavaScript)。
- SpecFlow(特定于.Net)。
2.測(cè)試數(shù)據(jù)管理
在軟件測(cè)試自動(dòng)化、以及測(cè)試的創(chuàng)建過程中,我們面臨的最大挑戰(zhàn)是如何利用好測(cè)試數(shù)據(jù)的管理系統(tǒng)。因此,隨著自動(dòng)化測(cè)試數(shù)量的增加,我們需要能夠?yàn)樘囟y(cè)試的開展,提供可用的測(cè)試數(shù)據(jù)。而且,我們的自動(dòng)化框架需要提供必要的措施,來輸入、創(chuàng)建、以及最終按需清除測(cè)試數(shù)據(jù)。通常的做法是:采用一套合適的仿真工具,以使數(shù)據(jù)更加簡化、清晰且易于處置。
3.模擬、存根(Stub)和虛擬化
在研究自動(dòng)化測(cè)試的方案時(shí),您可能會(huì)遇到如下情況:
- 需要將模塊與在單元測(cè)試中連接的組件隔離開來。
- 需要處理應(yīng)用程序集成、或端到端測(cè)試中常見的繁瑣依賴項(xiàng)關(guān)系。
無論上述哪種情況,在開發(fā)自動(dòng)化測(cè)試框架的過程中,您都需要?jiǎng)?chuàng)建模擬已連接的組件行為模式、存根(請(qǐng)參見:https://www.infoq.com/articles/stubbing-mocking-service-virtualization-differences),以及選擇實(shí)用的虛擬化工具。
實(shí)施模型的通用機(jī)制
除了上面討論的自動(dòng)化框架組件之外,還有一些實(shí)用的機(jī)制可以幫助我們創(chuàng)建,使用和維護(hù)各種自動(dòng)化的測(cè)試,其中包括:
- 包裝器方法:在使用Selenium WebDriver組件時(shí),我們可以通過創(chuàng)建自定義包裝器來處理各種錯(cuò)誤。因此,在創(chuàng)建了可用于Selenium API調(diào)用的自定義包裝器后,您將能夠更好地處理各種超時(shí)、異常、以及故障報(bào)告,從而更加關(guān)注于自動(dòng)化測(cè)試的本身。
- 抽象方法:抽象機(jī)制代表了提高可讀性,淡化了多余的實(shí)現(xiàn)細(xì)節(jié)。例如:在創(chuàng)建Selenium WebDriver測(cè)試時(shí),我們可以使用頁面對(duì)象(Page Objects)在頁面上發(fā)現(xiàn)用戶輸入的憑據(jù)或單擊某處等操作。同時(shí),我們通過跳過頁面上某個(gè)特定元素之類的方法,來達(dá)到高級(jí)測(cè)試的目標(biāo)。而且,此類方法適用于許多相似的應(yīng)用程序和自動(dòng)化測(cè)試場景。
測(cè)試結(jié)果報(bào)告
在為“如何將測(cè)試結(jié)果報(bào)告到自動(dòng)化框架中”,這一問題選擇相應(yīng)的庫或機(jī)制時(shí),您應(yīng)該著眼于閱讀與查看此類報(bào)告的目標(biāo)受眾。在此,您需要注意如下方面:
- 那些Junit和TestNG之類的單元測(cè)試框架所生成的報(bào)告,主要針對(duì)的是諸如CI(持續(xù)集成)服務(wù)器之類的接收系統(tǒng)。這些系統(tǒng)最終會(huì)對(duì)結(jié)果進(jìn)行解釋,并以其他軟件可使用的XML格式進(jìn)行呈現(xiàn)。
- 如果您需要產(chǎn)生可讀性較強(qiáng)的報(bào)告,那么可以考慮諸如Junit的UFT Pro、NUnit、以及TestNG類,與單元測(cè)試框架相兼容的商業(yè)工具。
- 當(dāng)然,您也可以利用諸如ExtentReports之類的第三方庫,輸出包括餅圖、圖表、圖像之類帶有直觀說明的報(bào)告格式。
CI平臺(tái)
為了以更快、更一致的方式進(jìn)行應(yīng)用程序的測(cè)試,持續(xù)集成(CI)平臺(tái)可以幫助您定期構(gòu)建軟件,并為新的版本運(yùn)行各項(xiàng)測(cè)試。當(dāng)開發(fā)和部署新的功能,以及更新現(xiàn)有功能的時(shí)候,CI方法可以讓開發(fā)人員和利益相關(guān)者有機(jī)會(huì)就應(yīng)用程序的質(zhì)量,獲得定期的反饋和更快的響應(yīng)。目前,TeamCity、CircleCI、Jenkins、Atlassian Bamboo等都屬于高品質(zhì)的CI平臺(tái)。
源代碼管理
與手動(dòng)測(cè)試相似,自動(dòng)化測(cè)試也涉及到編寫和存儲(chǔ)源代碼的版本。各個(gè)開發(fā)公司都會(huì)運(yùn)用一套源代碼和版本控制系統(tǒng),來保存與保護(hù)自己的源代碼。目前,以Git、Mercurial、Subversion和TFS為代表的源代碼管理系統(tǒng),不但能夠便捷地管理系統(tǒng)在生產(chǎn)環(huán)境中的代碼,而且能夠進(jìn)一步完善自動(dòng)化測(cè)試。
創(chuàng)建依賴項(xiàng)管理器
依賴項(xiàng)管理器的主要目的是:協(xié)助收集和管理在自動(dòng)化軟件方案的功能中,所使用的現(xiàn)有依賴性和庫的過程。其中Maven和Gradle之類的工具,能夠起到依賴項(xiàng)管理,協(xié)助從源代碼和支持庫中開發(fā)自動(dòng)化軟件,以及運(yùn)行測(cè)試等作用。此外,業(yè)界其他常見的依賴項(xiàng)管理工具還有:Ant、npm和NuGet。
建立和實(shí)施框架的過程
我們通??梢酝ㄟ^如下方法,來計(jì)劃與實(shí)現(xiàn)自動(dòng)化測(cè)試的方案。
- 從客戶的角度來探究自動(dòng)化的實(shí)際適用性,也就是說:從產(chǎn)品的界面和外觀上建立測(cè)試,以發(fā)現(xiàn)使用上的不足。
- 密切關(guān)注被測(cè)系統(tǒng)所用到的技術(shù),通過模擬用戶的真實(shí)行為,來采用合適的測(cè)試自動(dòng)化工具。
- 建議采用基于階段的實(shí)現(xiàn)方法。其中,每個(gè)階段都具有交付自動(dòng)化測(cè)試腳本的優(yōu)先級(jí)。同時(shí),我們也可以通過添加各種框架功能,讓各種腳本能夠按期執(zhí)行。
- 在啟動(dòng)軟件測(cè)試自動(dòng)化之前,我們需要事先計(jì)算和估計(jì)實(shí)施后的投資回報(bào)率(ROI),概念證明(concept proof),運(yùn)行手動(dòng)回歸或冒煙測(cè)試的時(shí)間,以及每個(gè)版本的發(fā)布周期。
如果我們能夠認(rèn)真地規(guī)劃和執(zhí)行上述測(cè)試自動(dòng)化框架的過程,那么整個(gè)軟件的開發(fā)和測(cè)試環(huán)境會(huì)得到如下方面的收益:
- 最少的時(shí)間與最大的收益:通過構(gòu)建某種可行的測(cè)試自動(dòng)化框架和腳本,我們將能夠最大程度地減少在編寫與運(yùn)行測(cè)試用例上所花費(fèi)的時(shí)間,進(jìn)而在更短的時(shí)間內(nèi)獲得更大的輸出??梢哉f,有了出色的自動(dòng)化框架,我們可以解決諸如:同步問題、錯(cuò)誤管理、本地配置、報(bào)告生成與解釋等方面的難點(diǎn)。
- 可重用和可讀性的自動(dòng)化代碼:各種既有的組件庫代碼不但能夠在一段時(shí)間內(nèi)保持可讀性和可重用性,并且能夠讓諸如:報(bào)告、同步和故障排除等相關(guān)任務(wù)變得更加易于訪問和實(shí)現(xiàn)。
- 資源優(yōu)化:自動(dòng)化系統(tǒng)的靈活性,很大程度上決定了自動(dòng)化測(cè)試的效率,各個(gè)組件團(tuán)隊(duì)的協(xié)同能力,以及企業(yè)是否能夠在資源優(yōu)化和知識(shí)共享方面受益。
總結(jié)
在如今快節(jié)奏的軟件開發(fā)生態(tài)系統(tǒng)中,自動(dòng)化的測(cè)試和腳本在軟件測(cè)試周期的效率和覆蓋面上都起著不可或缺的作用。當(dāng)然,這些都離不開精心設(shè)計(jì)的框架和基礎(chǔ)性的組件策略。我們可以從最小處入手,通過反復(fù)測(cè)試和改進(jìn),來避免在測(cè)試自動(dòng)化的后期階段產(chǎn)生沖突或被迫妥協(xié)的狀況。希望上述有關(guān)測(cè)試自動(dòng)化框架的討論,能夠讓軟件測(cè)試人員在執(zhí)行測(cè)試項(xiàng)目中有所受益。
新聞名稱:真正的測(cè)試自動(dòng)化框架全接觸
分享鏈接:http://m.5511xx.com/article/dpcheoj.html


咨詢
建站咨詢
