論軟件測試體系的建設
作者姓名:余國平
http://bbs.ltesting.net/thread-3258-1-1.html
摘要:1999 年,火星氣象衛星(Mars Climate Orbiter)到達火星之后不久就消失;1996 年6
月4 日,Ariane 5 發射40 秒后爆炸;在一些報刊上,我經??匆妶罂瘓蟮酪恍┦忻裨贏TM
上取款時,發現自己卡內的存款為天文數字。軟件質量已成為軟件公司和軟件客戶越來越關
心的問題。無疑,軟件測試是軟件質量保證的關鍵步驟,許多研究數據表明,軟件公司只有
建立良好測試體系,才能較早地發現軟件中存在的問題,降低開發費用和維護費用,減少客
戶使用軟件時由于質量問題帶來的損失,有效地提高軟件公司的軟件過程改進能力和軟件工
程化能力。我公司以前在軟件開發上同樣碰到不注重軟件測試帶來的軟件質量不高和巨大維
護成本的慘痛教訓,后來通過軟件測試體系的建設,極大地增強了公司產品量,加強風險防
范能力,減少員工勞動強度和企業對系統的維護成本。下面我將介紹在軟件測試體系建設上
我公司的整體解決方案,以供大家相互交流。在軟件測試體系的建設上我們公司分別從軟件
測試的管理體系和技術體系兩方面上進行作手,從團隊組織、環境建設、標準制定、人員培
養、配置管理、工作流程、績效管理與激勵制度七個方面進行建設。實踐證明,此種測試體
系能有效提高軟件質量和軟件過程能力,能極大提高員工工作效率和降低員工工作強度。
測試團隊組織
為了讓大家更好地了解我們公司軟件測試體系建設的外部環境,我先簡要介紹一下我們
公司軟件研發部門的相關組織情況,我們公司在軟件研發上相關的有四個部門:
1. 金融事業部,主要負責金融產品的研發,產品范圍覆蓋windows 和unix 兩大平臺;
2. 政府事業部,主要負責政府、公安、稅務產品方向上的研發,產品范圍主要集中于
windows 平臺;
3. 測試部門,主要負責公司的軟件產品驗證、代碼審查和測試工作;
4. 質量保證(QA)部門,主要負責公司的軟件過程改進指導工作,最終交付產品的
質量檢查和質量保證工作以及版本管理工作。
在測試的組織方式上,我們采用獨立的測試部門,負責整個公司軟件項目的測試工作。
部門內設有測試經理一名,負責測試人員的組織和管理工作;設置有測試工具和測試文
檔保管員一名,負責測試文檔和測試工具管理工作;設置有測試人員若干名,這些測試人員
地位相互平等,但他們的每個人有自己的發展和研究方向,有的發展方向是基于需求的測試,
有的是基于安全的測試,有的是基于接口的測試,有的基于界面的測試等等,各測試人員必
須精通自己測試發展方向,并要求熟悉其他人的測試技術。
我們公司在開發軟件的方式上,是采用基于項目的管理模式。在對一項目的研發過程中,
設置有項目經理,其下設置有開發主管和測試主管,測試主管和開發主管地位相等,同屬于
項目經理負責(如圖1),測試主管管理若干個測試人員,測試主管和測試人員都來自于獨
立的測試部門,項目進行完畢測試主管的使命也隨之結束。所以,在多個項目中,一測試人
員在一項目可能是測試主管,在另一項目中可能是測試員。
開發主管 測試主管
若干測試員
項目經理
環境建設
在環境建設上,我們主要從軟硬件環境兩方面作手。
在硬件方面,我們保證了每個工作人員有自己的PC 機。在基于PC 機上的環境,我保
證測試部門有單獨的測試PC 機環境。對于小型機等測試部門不能單獨配備硬件,我們通常
與開發部門協調,建立獨立的兩套環境,不能建立獨立環境一般與開發部門約定各自可以使
用的時間。
同時,測試相關文檔的管理是一個復雜和繁瑣的工作,我們通過購置國內一軟件廠商的
測試管理系統對計劃、用例、過程、缺陷、過程等文檔進行有效的管理。對于單獨的測試部
門來說,利用測試工具可以大幅提高測試質量,根據公司產品特點和經濟條件,我們通常使
用免費工具和自己書寫自動化工具,如對于代碼審查和單元測試我們經常用C++ TEST,對
于回歸測試、壓力測試我們通常使用自己書寫的工具,對于比較復雜環境的性能測試我們公
司一般外包給專門的測試公司來做,以便減少測試成本和保證測試質量。
配置管理
軟件測試過程是一個復雜性的勞動,測試過程中會產生大量文檔。我們主要通過購買工
具的方式實行對文檔的管理。在文檔的管理方面,我們按照公共類、項目類、軟件缺陷類、
開發人員類、測試工具類:
1. 公共類主要放置測試模板及測試規程說明,測試經驗共享文檔,開發技術規范等。
2. 項目類主要包括項目各階段文檔,如測試計劃、測試用例設計等。
3. 開發人員類是針對每個開發人員易犯錯誤的總結。
4. 測試工具類主要放置常用的測試工具。
對于每個測試人員來說,由于我們測試管理軟件采用的是B/S 結構,所以每個測試人員
可以通過internet 網查看和下載公共類、軟件缺陷類、開發人員類文檔和自己權限范圍類的
項目文檔。
工作流程
為了使測試工作有序,提高工作效率。我們形成了一套測試工作的流程。
當一項目啟動。測試經理將向所有測試人員介紹項目情況,由測試人員申請測試項目主
管,測試經理和項目經理根據實際情況擇優選用一測試人員作為測試項目主管。
測試項目主管和測試部門經理共同商定該項目各階段所需的測試人員,隨著項目的進
行,各階段測試人員相繼加入。每個階段首先相關測試人員首先對文檔進行驗證(如下圖3),
并編寫相關測試用例,隨后按項目實際情況加入進行測試。
需求分析----------------------------------------- ----需求驗證
概要設計 ------------------ 概要設計驗證
詳細設計 ----------- 詳細設計驗證
編碼-----代碼審查
總體來說,項目整個測試過程按V 模型進行,V 模型是測試組織中常用到的一種模型,
它指的是根據需求進行驗收測試,根據概要設計進行系統測試,根據詳細設計進行集成測試,
根據編碼進行單元測試(如下圖4)。對于測試過程中,原則上要求每個測試人員要求必須
每天提供測試文檔讓文檔管理員放入測試管理系統中。對于測試階段和維護階段測試人員測
出的軟件缺陷,要求按錯誤登記分類及時錄入系統中,方便開發人員及時查閱,對于軟件缺
陷,我們通過系統的6 個生命周期狀態(打開、工作、驗證、取消、關閉、延期)進行管理。
開發人員總能通過測試管理軟件中的缺陷子系統及時知道自己開發部分所存在的軟件缺陷。
各階段測試人員工作完畢相繼離開此項目。項目進行完畢時,測試項目主管的使命結束。
需求分析 驗收測試
概要設計 系統測試
詳細設計 集成測試
編碼 單元測試
績效管理與激勵制度
對于測試人員來說,在績效管理和激勵制度上,我們通常按照測試人員業績和貢獻進行
激勵。主要表現在兩個方面:
1. 為部門提供所負責部分測試技術質量、數量和對其他人員的培訓效果。
2. 項目部分,對于每參與一個項目的測試,測試人員要一定績效工資。在項目中,對
測試人員績效考核在于他發現問題個數、等級及說服開發人員修改問題個數和等
級;同時在項目投放市場時自己負責發現問題的多少和級別來確定。
存在問題和不足
對這種體系實施一定時間后,經一段時間后,我們發現存在三方面問題:
1. 由于我公司采用獨立的測試部門,很容易形成測試人員和開發人員的對立。所以在
對測試人員的培訓時強調了注意原則性的同時,要注用一定的靈活性,要讓開發人
員意識到測試人員是他們的朋友,而不是敵人,同時在對測試人員的考核上把說服
開發人員改正問題個數作為重要考核內容。但即使這樣,形成對立的事情還是時有
發生,以后雙方溝通問題還應加強。
2. 項目結束后,再測試時人員組織問題和責任劃定問題。在項目結束后,我公司通常
采用以后再需測試時仍由原該項目測試主管負責進行,但此時組織工作可能不如以
前容易,因為此時相關測試人員已經有其他工作安排,同時多次測試的責任和績效
不好劃定。在這方面我們公司還需制定具體問題細則。
3. 項目較多時,一測試人員可能在一段時間內完成幾個測試項目,容易產生幾個項目
時間規劃對于一個測試人員的時間沖突問題。避免測試人員在多個項目中時間上的
交叉也是以后測試經理規劃時應注意的問題。