軟件測試中的一個(gè)項目的自動(dòng)化測試實(shí)踐
隨著(zhù)社會(huì )的不斷發(fā)展和信息化的不斷普及,各種軟件越來(lái)越多,在日常生活中也起著(zhù)越來(lái)越重要的作用,再加上客觀(guān)系統的復雜性,無(wú)論經(jīng)驗多豐富的開(kāi)發(fā)人員、無(wú)論采用哪種開(kāi)發(fā)模型開(kāi)發(fā)出來(lái)的軟件,每個(gè)階段的技術(shù)復審也不可能毫不遺漏地查出和糾正所有的錯誤,因此如何才能把新的軟件做得更穩定、錯誤更少呢?測試! 統計表明,在典型的軟件開(kāi)發(fā)項目中,軟件測試工作量往往占軟件開(kāi)發(fā)總工作量的40%以上。
測試是軟件能否通向市場(chǎng)的最后也是最重要的一關(guān)。傳統的測試方法是手工測試,目前大部分都是采用此方法,其特點(diǎn)就是簡(jiǎn)單,但是它存在的問(wèn)題非常多。手工測試可能引入人為的輸入錯誤,尤其在數據量大的情況下;另外大量重復性的手工測試可能成本較高,如果考慮軟件發(fā)生改動(dòng)而需要重復手工測試的情況,這個(gè)成本還會(huì )更高;沒(méi)有辦法對組件進(jìn)行隔離的測試,從而導致發(fā)現問(wèn)題和解決問(wèn)題的成本都太高。在很多項目中,測試人員的所有任務(wù)實(shí)際上都是手動(dòng)處理的,而實(shí)際上有很大一部分重復性強的測試工作是可以獨立出來(lái)自動(dòng)實(shí)現的。
針對手工測試的缺點(diǎn),自動(dòng)化測試應運而生。相比手工測試,自動(dòng)化測試的優(yōu)勢很多;規范測試流程,提高測試效率、測試覆蓋率等。很多人對自動(dòng)化測試存在誤區,把其理解為找到一種自動(dòng)化測試工具,把它應用到軟件工程項目中,自動(dòng)化測試工具只是被看作是一種錄制和回放的工具。事實(shí)上自動(dòng)化測試遠不止這么簡(jiǎn)單,錄制和回放僅是自動(dòng)化測試中的最低級別。目前常把自動(dòng)化測試分為5個(gè)級別,如圖l所示。
現在常用的是基于數據驅動(dòng)的測試,它是以數據來(lái)控制自動(dòng)化測試的流程和動(dòng)作的測試,其中數據是獨立于測試用例腳本的,通常以文本文件形式、Excel文件形式、XML文件等形式存在。
項目上線(xiàn),有時(shí)間總結一下當前的項目,對自己而言,一直是一個(gè)學(xué)習的過(guò)程。本篇總結我們的測試實(shí)踐。本文分5部分,分別是:項目背景、系統架構與模塊劃分、我們的測試實(shí)踐、自動(dòng)化測試在項目中的價(jià)值與對自動(dòng)化測試的進(jìn)一步思考。
一、項目背景
所有對項目的介紹一定是從客戶(hù)開(kāi)始。
客戶(hù):我們的客戶(hù)是一家全球領(lǐng)先的時(shí)尚內容提供商,通過(guò)遍布全球的員工,客戶(hù)每天獲取大量關(guān)于時(shí)裝發(fā)布、產(chǎn)品設計、街邊流行、城市熱點(diǎn)等信息,這些信息的絕大部分以圖片的形式上傳到公司服務(wù)器,然后由專(zhuān)職編輯對這些圖片進(jìn)行整理和歸類(lèi)(打標簽),最后再由設計人員根據這些信息書(shū)寫(xiě)分析報表。
關(guān)鍵內容:分類(lèi)細致的海量高清圖片和具有前瞻性的分析報表。
商業(yè)模式:網(wǎng)站,行業(yè)內用戶(hù)訂閱-付費。
客戶(hù)面臨的問(wèn)題:同質(zhì)化競爭、客戶(hù)流失。
新系統的關(guān)鍵詞:CMS、更精確的內容分類(lèi)、更好的全文檢索、更好的用戶(hù)體驗(更有表現力的內容展現)、更快的內容發(fā)布。
二、系統架構與模塊劃分
1、REST的架構風(fēng)格
系統采用了Sling作為WEB框架,JCR作為了底層內容存儲框架。
系統的特點(diǎn):
URI唯一標識資源
通過(guò)URI能夠直接映射到JCR節點(diǎn),例如http://localhost:80/content/section/news.html能夠映射到JCR里的/content/section/news節點(diǎn)
GET/POST/DELETE標準方法對資源進(jìn)行操作
支持標準方法對資源的直接操作
資源的多重表述
同一資源可以存在多種表述形式,例如http://localhost:80/content/section/news.html展現網(wǎng)頁(yè),
http://localhost:80/content/section/news.json展現資源信息的JSON描述,
http://localhost:80/content/section/news.pdf展現網(wǎng)頁(yè)的PDF。
服務(wù)器端的無(wú)狀態(tài)
通過(guò)JS獲取當前用戶(hù)信息并緩存在客戶(hù)端。
2、系統分層
系統分為四層:JS、Servlet、Domain Model和JCR。
因為JCR提供了一套節點(diǎn)模型,所以Domain Model是在節點(diǎn)模型上的行為增強,例如所有對圖片節點(diǎn)的操作我們封裝在A(yíng)sset領(lǐng)域模型里。
3、程序劃分
程序分為兩個(gè)大的模塊:Migration和Bundles。為什么叫Bundles?因為Sling使用了OSGI框架Felix。
Migration負責導入客戶(hù)的遺留數據到新系統。之前客戶(hù)的CMS運行已有10多年的時(shí)間,積累有大量數據。主要是各種類(lèi)型的報表和圖片。
Bundles實(shí)現系統功能。主要包括了定義報表模板、定義報表各種所見(jiàn)即所得的展現組件、實(shí)現對圖片的管理、搜索(包括基于圖片的可視化搜索)和其他七七八八。
三、測試實(shí)踐
1、Migration的測試
自動(dòng)化測試
對Migration,我們采用了TDD的方式。
輸入是客戶(hù)實(shí)際提供的xml文件,輸出是JCR里的節點(diǎn)。測試環(huán)境的搭建主要是在本地建立起Jackrabbit實(shí)例。我們的工作方式是這樣:每天早上領(lǐng)到一張migration故事卡,然后先寫(xiě)一個(gè)xml到j(luò )cr節點(diǎn)的集成測試描述出該類(lèi)型報表的功能需求,接下來(lái)就是讓這個(gè)測試通過(guò)。經(jīng)過(guò)開(kāi)始階段的熟悉過(guò)程,我們的速度保持在一對Pair一天一種報表類(lèi)型的導入。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/