許多編程組越來越依賴于自動(dòng)化測試,特別是那些使用測試驅(qū)動(dòng)開發(fā)的組。有許多框架可以編寫測試,每次將代碼輸入版本控制系統(tǒng)時(shí),連續(xù)集成軟件都會(huì)自動(dòng)運(yùn)行測試。
雖然自動(dòng)化不能重現(xiàn)人類所能做的一切(以及他們所認(rèn)為的所有方式),但它對(duì)回歸測試非常有用。但是,為了真正有用,它確實(shí)需要一個(gè)精心開發(fā)的測試套件的測試腳本。
雖然手動(dòng)測試可能會(huì)在軟件應(yīng)用程序中發(fā)現(xiàn)許多缺陷,但這是一個(gè)費(fèi)時(shí)費(fèi)力的過程。此外,它可能無法有效地發(fā)現(xiàn)某些類型的缺陷。測試自動(dòng)化是一個(gè)編寫計(jì)算機(jī)程序來進(jìn)行測試的過程,否則就需要手動(dòng)完成這些測試。一旦測試實(shí)現(xiàn)了自動(dòng)化,它們就可以快速運(yùn)行了。對(duì)于維護(hù)壽命長的軟件產(chǎn)品來說,這通常是最劃算的方法,因?yàn)樵趹?yīng)用程序的生命周期中,即使是很小的補(bǔ)丁也會(huì)導(dǎo)致在早期工作的特性中斷。
測試自動(dòng)化一般有兩種方法:
·代碼驅(qū)動(dòng)的測試。對(duì)類、模塊或庫的公共(通常)接口使用各種輸入?yún)?shù)進(jìn)行測試,以驗(yàn)證返回的結(jié)果是否是正確的。
·圖形用戶界面測試。測試框架生成用戶界面事件,如擊鍵和鼠標(biāo)單擊,并觀察導(dǎo)致用戶界面的變化,以驗(yàn)證程序的可觀察行為是正確的。
測試自動(dòng)化工具可能很昂貴,而且通常與手動(dòng)測試結(jié)合使用。從長遠(yuǎn)來看,它可以實(shí)現(xiàn)具有成本效益,特別是在回歸測試中重復(fù)使用時(shí)。
自動(dòng)生成測試用例的一種方法是通過使用系統(tǒng)的模型進(jìn)行測試用例生成來進(jìn)行基于模型的測試,但研究將繼續(xù)進(jìn)行各種替代方法。
自動(dòng)化是什么,何時(shí)自動(dòng)化,甚至是否真的需要自動(dòng)化,這些都是測試(或開發(fā))團(tuán)隊(duì)必須做出的關(guān)鍵決策。選擇產(chǎn)品的正確功能,在很大程度上決定了自動(dòng)化的成功。應(yīng)避免自動(dòng)化不穩(wěn)定的特性或正在進(jìn)行更改的特性。
代碼驅(qū)動(dòng)測試
軟件開發(fā)的一個(gè)日益增長的趨勢是使用測試框架,如xUnit框架(例如,JUnit和NUnit),允許執(zhí)行單元測試,以確定代碼的各個(gè)部分在各種情況下是否按預(yù)期發(fā)揮作用。測試用例描述了需要在程序上運(yùn)行的測試,以驗(yàn)證程序是否按預(yù)期運(yùn)行。
代碼驅(qū)動(dòng)的測試自動(dòng)化是敏捷軟件開發(fā)的一個(gè)關(guān)鍵特性,其中它被稱為測試驅(qū)動(dòng)的開發(fā)(TDD)。在編寫代碼之前,需要先編寫單元測試來定義該功能。只有當(dāng)所有測試都通過時(shí),該代碼才被認(rèn)為是完整的。支持者認(rèn)為,它生產(chǎn)的軟件比通過人工探索進(jìn)行測試的代碼更可靠,成本也更低。它被認(rèn)為更可靠,因?yàn)榇a覆蓋率更好,而且它在開發(fā)過程中不斷運(yùn)行,而不是在瀑布式開發(fā)周期結(jié)束時(shí)運(yùn)行一次。開發(fā)人員在進(jìn)行更改時(shí)立即發(fā)現(xiàn)缺陷,而修復(fù)缺陷的成本最低。最后,代碼重構(gòu)更安全;將代碼轉(zhuǎn)換為更簡單的形式,代碼重復(fù)更少,但等效的行為,不太可能引入新的缺陷。
圖形用戶界面(GUI)測試
許多測試自動(dòng)化工具提供了記錄和回放功能,允許用戶交互式地記錄用戶操作,并回放任何次數(shù),并將實(shí)際結(jié)果與預(yù)期結(jié)果進(jìn)行比較。這種方法的優(yōu)點(diǎn)是它需要很少或不需要軟件開發(fā)。這種方法可以應(yīng)用于任何具有圖形用戶界面的應(yīng)用程序。然而,依賴于這些特性就帶來了主要的可靠性和可維護(hù)性問題。重新標(biāo)記一個(gè)按鈕或?qū)⑵湟苿?dòng)到窗口的另一部分,可能需要重新記錄該測試。錄制和回放還經(jīng)常添加不相關(guān)的活動(dòng)或錯(cuò)誤地記錄一些活動(dòng)。
這種類型的工具的一個(gè)變體是用于對(duì)網(wǎng)站的測試。這里的“界面”是網(wǎng)頁。這種類型的工具也需要很少或不需要軟件開發(fā)。然而,這樣的框架使用了完全不同的技術(shù),因?yàn)樗亲x取html,而不是觀察窗口事件。
另一個(gè)變體是無腳本的測試自動(dòng)化,它不使用記錄和回放,而是構(gòu)建被測試應(yīng)用程序的模型,然后允許測試人員通過簡單地編輯測試參數(shù)和條件來創(chuàng)建測試用例。這不需要任何腳本技能,但具有腳本方法的所有能力和靈活性。測試用例維護(hù)很容易,因?yàn)闆]有代碼需要維護(hù),而且由于被測試的應(yīng)用程序會(huì)更改,因此可以簡單地重新學(xué)習(xí)或添加軟件對(duì)象。它可以應(yīng)用于任何基于gui的軟件應(yīng)用程序。
要測試什么
測試工具可以幫助自動(dòng)化任務(wù),如產(chǎn)品安裝、測試數(shù)據(jù)創(chuàng)建、GUI交互、問題檢測(考慮配備了oracles的解析或輪詢代理)、缺陷日志記錄等,而不一定是以端到端方式自動(dòng)化測試。
在考慮測試自動(dòng)化時(shí),必須保持滿足普遍的要求:
·平臺(tái)和操作系統(tǒng)獨(dú)立性
·數(shù)據(jù)驅(qū)動(dòng)功能(輸入數(shù)據(jù)、輸出數(shù)據(jù)、元數(shù)據(jù))
·可自定義的報(bào)告(數(shù)據(jù)庫訪問、晶體報(bào)告)
·易于調(diào)試和日志記錄
·版本控制友好-最小的二進(jìn)制文件
·可擴(kuò)展的和可定制的(開放的api,以便能夠與其他工具集成)
·通用驅(qū)動(dòng)程序(例如,在Java開發(fā)生態(tài)系統(tǒng)中,這意味著Ant或Maven和流行的ide)。這使得測試能夠與開發(fā)人員的工作流集成。
·支持無人值守的測試運(yùn)行,以便與構(gòu)建過程和批處理運(yùn)行進(jìn)行集成。連續(xù)集成服務(wù)器需要這樣做。
·電子郵件通知(在故障或閾值級(jí)別上的自動(dòng)通知)。這可能是執(zhí)行它的測試運(yùn)行器或工具。
·支持分布式執(zhí)行環(huán)境(分布式測試臺(tái))
·分布式應(yīng)用程序支持(分布式SUT)
自動(dòng)化框架方法
框架是一個(gè)設(shè)置特定產(chǎn)品自動(dòng)化規(guī)則的集成系統(tǒng)。該系統(tǒng)集成了功能庫、測試數(shù)據(jù)源、對(duì)象細(xì)節(jié)和各種可重用模塊。這些組件作為小型構(gòu)建塊,需要組裝以表示業(yè)務(wù)流程。該框架提供了測試自動(dòng)化的基礎(chǔ),并簡化了自動(dòng)化工作。
定義自動(dòng)化框架和測試工具之間的邊界
工具是專門針對(duì)某些特定的測試環(huán)境而設(shè)計(jì)的。例如:Windows自動(dòng)化工具、web自動(dòng)化工具等。它作為一個(gè)自動(dòng)化過程的驅(qū)動(dòng)代理。但是,自動(dòng)化框架并不是執(zhí)行某些特定任務(wù)的工具,而是一個(gè)提供解決方案的基礎(chǔ)設(shè)施,其中不同的工具可以插入自己,并以統(tǒng)一的方式完成它們的工作。因此,為自動(dòng)化工程師提供了一個(gè)共同的平臺(tái)。
有各種類型的框架。它們是根據(jù)它們所利用的自動(dòng)化組件進(jìn)行分類的。這些內(nèi)容包括:
·數(shù)據(jù)驅(qū)動(dòng)測試
·模塊化驅(qū)動(dòng)的測試
·關(guān)鍵字驅(qū)動(dòng)測試
·混合動(dòng)力測試
·基于模型的測試
測試工具
程序測試和故障檢測可以通過測試工具和調(diào)試器得到顯著的幫助。
測試/調(diào)試工具包括以下功能:
·程序監(jiān)控,允許全面或部分監(jiān)控程序代碼,包括:
·指令集模擬器,允許完整的指令級(jí)監(jiān)控和跟蹤設(shè)施
·程序動(dòng)畫,允許在源級(jí)別或機(jī)器代碼中逐步執(zhí)行和條件斷點(diǎn)
·代碼覆蓋報(bào)告
·格式化轉(zhuǎn)儲(chǔ)或符號(hào)調(diào)試,允許在錯(cuò)誤或選定點(diǎn)上檢查程序變量的工具
·自動(dòng)化的功能GUI測試工具用于通過GUI重復(fù)系統(tǒng)級(jí)的測試
·基準(zhǔn)測試,允許進(jìn)行運(yùn)行時(shí)性能比較
·性能分析(或分析工具),可幫助突出顯示熱點(diǎn)或資源使用情況
其中一些特性可以合并到集成開發(fā)環(huán)境(IDE)中。
審核編輯 :李倩
-
自動(dòng)化
+關(guān)注
關(guān)注
29文章
5726瀏覽量
81320 -
代碼
+關(guān)注
關(guān)注
30文章
4883瀏覽量
70101
原文標(biāo)題:自動(dòng)化測試
文章出處:【微信號(hào):QCDZYJ,微信公眾號(hào):汽車電子工程知識(shí)體系】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
電池電量的兩種測試方法
手機(jī)自動(dòng)化測試方法
討論Linux系統(tǒng)中設(shè)置開機(jī)自動(dòng)運(yùn)行的兩種方法
基于LabVIEW的自動(dòng)化控制和編程設(shè)計(jì)
LCD1602初始化流程圖及程序的兩種方法

使用jdbc連接上oracle的兩種方法
NI針對(duì)自動(dòng)化和定制化的測試需求提出兩種平臺(tái)化方案
簡述人工智能和機(jī)器學(xué)習(xí)實(shí)現(xiàn)完全自動(dòng)化的5種方法
AVR單片機(jī)在電機(jī)轉(zhuǎn)速測量中兩種方法總結(jié)

STM32操作矩陣鍵盤的兩種方法——掃描和中斷

簡述安裝打印機(jī)驅(qū)動(dòng)的兩種方法

評(píng)論