摘要:軟體專案中的測試的一點實踐心得
眾所周知,測試是在軟體開發中是必不可少的一部分。測試是保證軟體質量的重要手段,甚至可以稱之為軟體的生命。然而如何做好測試或者通過測試達到想要的效果,是一門值得研究的學問。
在很多軟體開發公司,測試是最容易被高層領導和程式設計師忽略的乙個環節。當乙個專案進度非常緊急的時候,測試往往都是時間縮水最多的階段。結果是使「重視測試,充分測試」成了一句話空話。
從軟體工程角度上來說,我們專案的測試活動可以大概分為三個階段,分別是測試計畫,測試實施和測試分析。接下來將分別描述我們在專案開發活動中三個階段是怎麼做的。
[計畫階段]
第一,我們在專案的初期確定好開發方式並制定計畫。在專案計畫中增加乙個測試設計師角色。測試設計師將專職從頭以尾參與我們的專案開發活動,包括需求分析,系統分析,系統設計;並根據專案的每個階段的文件如分析設計文件產生相應的測試計畫和測試案例。測試設計師將測試計畫匯報給專案經理作為專案計畫的一部分。測試計畫包含了每次測試的時間,人員,目標和測試方式.
第二,專案經理與測試設計師將確定測試的型別方式和每個階段的應用的測試策略。在我們專案中採取單元測試,整合測試,系統測試,效能測試等四種主要測試方式在不同的階段實施,並設產相應的測試目標。簡單的說這個測試目標就是在某階段要發現多少個bug或者需要改進的地方。
第三,再好的計畫都還是要靠人來實施。測試成功的關鍵還是需要靠專案組成員的積極性和責任心。大家都知道很多程式設計師都是討厭測試,認為測試是一件浪費時間和卻收不到任何實際效果的事情,所以專案經理和測試設計師都需要花一定的時間來動員程式設計師執行有效的測試。
[實施階段]
按照專案計畫和測試計畫我們內部採用了四種測試方式,分別是單元測試,整合測試,系統測試,效能測試。在做系統設計初期就把系統可測性作為乙個設計目標,因此我們專案採購目前流行j2ee多層架構技術,結合多個常用的j2ee設計模式如mvc, dao, service locator, value object。結合j2ee開發指南和mvc,我們對整個系統發大概可以分成以下幾個層次,model(dao,service), controller(struts, action), view(jsp, tiles, formbean). 讓專案給的人員分別在各個層面上進行開發。並要求每個功能開發完成後,單元測試和用例同時完成; 當各個層次功能完成後我們對各個層次進行整合和進行整合測試,在整合測試期間要求所有程式設計師按照需求說明和設計分檔提交乙個每個功能點的check list交給測試組的同事測試。所有的整合測試通過後,測試設計師將根據寫好的測試用例組織系統測試。效能測試我們將在交由客戶使用之前進行。以下將簡單的說明各種測試是如何進行的:
1. 單元測試
junit的作者曾經說過,軟體開發如果沒有單元測試就像人走在鋼絲上,沒有任何的保障. 由於我們專案是多層架構,在每個不同的層都使用了不同的測試工具。如在service & dao層,使用了jbuilder + junit, 在controller&view層使用了cactus作為主要的測試工具,通過與ant的結合自動測試並生成單元測試報告。大家都知道,做單元測試沒有足夠的測試用例基本上沒有效果的,所以我們在單元測試中設定了用例覆蓋率的目標大概是80%,專案將通過jcoverage進行跟蹤程式設計師的用例是否達到目標,以保證單元測試的質量。
2. 整合測試
整合測試的在我們專案中的目標是檢查是各層次之間是否銜接成功,不會丟擲無法捕獲的異常。整合測試是在通過工具整合時同時進行,使用ant+junit+cactus對所有的程式設計師的測試用例進行收集測試並生成測試報告。
3. 系統測試
系統測試是對整個系統進行一次全面的測試。在我們專案中系統測試將由測試設計師根據需求說明書和測試計畫編寫測試案例。在系統測試開始之前,專案經理安排程式針對自己所編碼功能點進行分析,並提交乙份功能檢查表給測試設計師。功能檢查表中包括了業務邏輯或者輸入有效性檢查等內容。測試設計師收到功能檢查表後安排測試人員(程式設計師之間交叉測試或者第三方人員)根據檢查表進行功能核對,如發現bug,將記錄jira(issue tracking tools)上以便跟蹤bug的狀態。
4. 效能測試
效能測試是在發布使用者之前必不可少的乙個步驟,乙個系統的效能好壞將影響整個專案的成功與否。效能測試主要是通過apache jmeter進行壓力測試,效能測試的包括頁面響應時間和併發使用者的承載量,在進行壓力測試的同時使用profiler收集效能報告以收集系統的瓶頸所在。通過做效能測試我們發現了比較多的問題,如濫用事務,使用者初始化時間過長,200人同時登入時系統將無法執行等情況。對此我們經過分效能測試報告,我們通過以下幾種方法解決:
a) 從**中去掉查詢事務,單錶寫入事務
b) 減少與使用者關聯的資料,減低與使用者對旬太緊密的關係
c) 調整應用程式伺服器的初始記憶體和最大記憶體
d) 對dao層和查詢加上快取
經過以上方案後,系統效能提高了40%以上。
[結果分析階段]
結果分析是測試的重要環節之一。我們能過工具收集了bug的發生原因,引入階段,修改時間,嚴重程度,型別等關鍵資訊。根據以上的資訊分析測試的效率和原因,以便形成公司的知識庫文件和軟體質量的資料庫.
關於專案中的一點感悟 2015 03 12
天是越來越暖和了,今天當地最高氣溫20度,早上下樓買飯時,風吹在臉上絲毫沒有寒意。的確清明節快到了,到了踏春了時候了。回想起每年的這個時候,由於專案的關係,每年這個時間都是在不同的地方。對於東北而言,這個時候穿大衣還為時太早了,親身體驗過5月份還飄雪的場景 而南方無錫就不同了,3月早就已經嗅到桃花開...
軟體專案中的基礎測試
軟體專案中的基礎測試 單元測試 ut 什麼是單元測試 單元測試 又稱為模組測試 是針對程式模組 軟體設計的最小單位 來進行正確性檢驗的測試工作。序單元是應用的最小可測試部件。在過程化程式設計中,乙個單元就是單個程式 函式 過程等。單元測試流程 在傳統軟體開發過程中,單元測試是在編寫完模組 後開始進行...
某君的一點軟體測試思考
測試的過程應該嚴格遵循一定的過程與計畫,這樣的過程體現於測試案例中,測試者可以只按照測試案例便可以找出該軟體的問題所在,而不需要對軟體的需求有深入的了解,恰恰這個測試案例的編寫人卻需要很深入了解軟體需求設計架構,可是能夠編寫好的測試案例的是乙個測試員的基本素質。總結幾年風雨兼程的測試歷程,有以下的一...