• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 一個項目的自動化測試實踐

    發表于:2015-03-31來源:uml.org.cn作者:ronghao點擊數: 標簽:自動化測試
    項目上線,有時間總結一下當前的項目,對自己而言,一直是一個學習的過程。本篇總結我們的測試實踐。本文分5部分,分別是:項目背景、系統架構與模塊劃分、我們的測試實踐、

      項目上線,有時間總結一下當前的項目,對自己而言,一直是一個學習的過程。本篇總結我們的測試實踐。本文分5部分,分別是:項目背景、系統架構與模塊劃分、我們的測試實踐、自動化測試在項目中的價值與對自動化測試的進一步思考。

      一、項目背景

      所有對項目的介紹一定是從客戶開始。

      客戶:我們的客戶是一家全球領先的時尚內容提供商,通過遍布全球的員工,客戶每天獲取大量關于時裝發布、產品設計、街邊流行、城市熱點等信息,這些信息的絕大部分以圖片的形式上傳到公司服務器,然后由專職編輯對這些圖片進行整理和歸類(打標簽),最后再由設計人員根據這些信息書寫分析報表。

      關鍵內容:分類細致的海量高清圖片和具有前瞻性的分析報表。

      商業模式:網站,行業內用戶訂閱-付費。

      客戶面臨的問題:同質化競爭、客戶流失。

      新系統的關鍵詞:CMS、更精確的內容分類、更好的全文檢索、更好的用戶體驗(更有表現力的內容展現)、更快的內容發布。

      二、系統架構與模塊劃分

      1、REST的架構風格

      系統采用了Sling作為WEB框架,JCR作為了底層內容存儲框架。

      系統的特點:

      URI唯一標識資源

      通過URI能夠直接映射到JCR節點,例如http://localhost:80/content/section/news.html能夠映射到JCR里的/content/section/news節點

      GET/POST/DELETE標準方法對資源進行操作

      支持標準方法對資源的直接操作

      資源的多重表述

      同一資源可以存在多種表述形式,例如http://localhost:80/content/section/news.html展現網頁,

      http://localhost:80/content/section/news.json展現資源信息的JSON描述,

      http://localhost:80/content/section/news.pdf展現網頁的PDF。

      服務器端的無狀態

      通過JS獲取當前用戶信息并緩存在客戶端。

      2、系統分層

      系統分為四層:JS、Servlet、Domain Model和JCR。

      因為JCR提供了一套節點模型,所以Domain Model是在節點模型上的行為增強,例如所有對圖片節點的操作我們封裝在Asset領域模型里。

      3、程序劃分

      程序分為兩個大的模塊:Migration和Bundles。為什么叫Bundles?因為Sling使用了OSGI框架Felix。

      Migration負責導入客戶的遺留數據到新系統。之前客戶的CMS運行已有10多年的時間,積累有大量數據。主要是各種類型的報表和圖片。

      Bundles實現系統功能。主要包括了定義報表模板、定義報表各種所見即所得的展現組件、實現對圖片的管理、搜索(包括基于圖片的可視化搜索)和其他七七八八。

      三、測試實踐

      1、Migration的測試

      自動化測試

      對Migration,我們采用了TDD的方式。

      輸入是客戶實際提供的xml文件,輸出是JCR里的節點。測試環境的搭建主要是在本地建立起Jackrabbit實例。我們的工作方式是這樣:每天早上領到一張migration故事卡,然后先寫一個xml到jcr節點的集成測試描述出該類型報表的功能需求,接下來就是讓這個測試通過。經過開始階段的熟悉過程,我們的速度保持在一對Pair一天一種報表類型的導入。

      手工測試

      將xml文件內容正常解析并導入JCR只是第一步,第二步我們需要在Bundles里為該類型的報表編寫模板使之正常展現。由于涉及到報表樣式,這個測試我們采用手工測試,這個工作也是QA工作的重要一部分。

      在最開始的開發中,我們沒有導入所有報表數據進行測試。這帶來了問題,由于客戶遺留數據跨越10多年,各種數據形式都可能存在(特別是04年以前數據,給 UI帶來了很大挑戰),而最開始的開發中,我們只是使用了部分數據(09、10年數據)進行測試,這個導致了建立UAT環境時程序的很多返工以及QA的測試壓力。

      2、Bundles的測試

      自動化測試

      對領域模型,我們采用了TDD的方式進行單元測試;在本地Jackrabbit實例里建立數據,領域模型封裝數據測試行為。

      對servlet,我們采用了TDD的方式進行集成測試(同時測試了servlet和領域模型),在測試中對request和response進行mock; 對JS,我們使用數據驅動的selenium功能測試進行覆蓋。

    原文轉自:http://www.uml.org.cn/Test/201006281.asp

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>