軟件測試中強化測試用例在測試活動中的作用 改進測試用例執行過程
本文的目的不是將軟件測試流程優化的話題闡述的面面俱到,而是從管理角度談談測試用例在測試活動中的重要性,以及測試用例管理流程的一些改進思路。
常聞軟件測試者的如此抱怨:
測試用例在實際中根本沒有起多大作用?
測試人員在實際測試時都沒有按測試用例來執行?
測試執行后沒有把需要更新的測試用例補充到用例庫中?
……
當前國內軟件企業測試流程不規范的原因分析:
1) 從事物的發展規律看,軟件測試行業在我國還是新興行業,目前還處于起步和探索期,雖然國外的同行業發展到了一定階段,但事實上他們也在不斷的否定自我并探索著更成熟的方法、尋求著更有效的方案;而國內的測試行業發展期不過10來年,所謂的測試管理流程不規范,也就情有可原了。
2) 從企業個體角度講,測試部門的整頓和加強,按照企業自身發展的優先層次,還沒有被納入優先解決的程度,開拓市場、簽訂定單才是首要問題,也是維系企業生存發展的命脈。當然國內很多優秀的大中型軟件公司的測試部門相對完善,如神州數碼、用友、聯想等,他們和大型跨國軟件公司的合作,也從中汲取了寶貴的管理經驗。
3) 還有一個普遍存在的問題。近幾年國內軟件企業為了加強企業的競爭優勢和名氣提升,通常大搞特搞ISO/CMM認證;筆者也很支持這么做,但更關注的是通過這些認證后的企業有多少真正按照那些規范、設計的標準在后續的測試或軟件開發管理工作中著手開展下去呢?社會上流傳著這樣的話:任何認證到中國,最后都免不了砸牌兒!筆者讀書時很多高校搞的MCSE認證,有培訓機構明目張膽聲稱"百分百通過率"!當年也有專門媒體報道此事。聽到這樣的話,我們都會寒心,這里真心希望我們的軟件企業通過ISO/CMM后真正為企業的內部軟件開發流程帶來一點新生的曙光。
4) 最后一個原因,我想是企業內部測試管理人員和技術人員技能的不足,還有自身工作態度的不夠端正。有了再好的規范標準,沒人遵守不行!沒人實施不行!應該說,很多中小軟件企業的高層都或多或少的逐漸意識到軟件測試的重要性和必要性,以及它的標準化、流程化改革的緊迫性,但也有很多的工程師、技術人員并不理會這套,常常在實際工作中投機取巧;也有很多測試管理人員后天的經驗不足、技能不夠,對公司測試管理工作考慮不到位,和開發工程師交流不充分,和上層領導反映不及時等等。
總之,任何問題的出現都不是單方面的原因,從宏觀的社會形勢到微觀的企業個人,都有無可推卸的責任;正因為如此,解決問題也要對癥下藥,如何完善軟件測試流程,就要從小處出發;本文不可能將軟件測試流程優化的話題闡述的面面俱到,因此只從管理角度談談測試用例在測試活動中的重要性,以及測試用例管理流程的一些改進思路。
強化測試用例在測試活動中的作用
測試用例在實際中沒有起多大作用,在實際測試時根本沒有按測試用例執行,測試執行后沒有把新的測試用例補充到用例庫中……為何如此?我們分析認為,根本原因是對測試用例重要性的認識不夠,測試流程不完善,針對測試用例的管理流程更不完善,從三個方面具體來說:
1) 測試用例的重要性是毋庸置疑的,它是軟件測試全部過程的核心,是測試執行環節的基本依據,如果這個依據不能足夠發揮它應起的作用,那是不是說這個依據不明確、依據設計的不合理呢?答案是肯定的!
2) 制定了完備有效的測試用例,為什么不按測試用例執行測試呢?首先是因為企業沒有嚴格和良好的機制促使和保證測試執行者這樣做;其次是個別測試人員投機取巧心理作祟的表現。
3) 測試用例設計得不可能天衣無縫,不可能完全滿足軟件需求的覆蓋要求,測試執行過程里肯定會發現有些測試路徑或數據在用例里沒有體現,那么事后該將其補充到用例庫里,以方便他人和后續版本的測試;如果沒有這樣做,那么測試部門負責人和每個測試員都難辭其疚,是該重新坐下來思考一下公司的測試用例管理規范和測試流程了。
改進測試用例執行過程
那么究竟如何做,才能盡量避免上述問題呢?我們不妨從軟件開發周期的每個階段就把這些問題考慮進去,以便從初始就力爭將問題縮到最小,將其扼殺在萌芽階段,以防后期階段出現問題時互相推卸責任或干脆束手無策!
1) 軟件需求分析階段,筆者從來認為測試人員從軟件生命周期的需求階段就開始介入。通常測試人員的測試工作開展在開發周期的末尾,如果前期不涉入,如何通曉整個系統的需求和架構而對其充分測試呢?雖然該觀點被大多數同行所認可,但我知道依然有很多公司為了節省費用,不讓測試人員參與前期調研或制定需求,經常的做法是等到系統開發完畢或將近完成,跟測試經理說一聲"這邊有個項目,你找幾個人來測試一下吧!"經驗表明,這樣的做法實不可取。
測試人員(指項目的測試負責人和測試工程師)在需求階段的任務有:
參與軟件需求調研,以測試角度分析需求的可測性,可構思將來對其測試的方法、原則等;更重要的是,對不可測或難以測試性問題要及時與客戶或項目經理協調解決。
全面了解系統需求,從客戶角度考慮軟件測試需要達到的驗證狀態,即何些功能點需重點測試、何些無需,以便將來制定測試計劃。
推薦企業采用類似于IBM Rational Requisitepro(參考其官方說明: http://www-900.ibm.com/cn/software/rational/products/requisitepro/index.shtml)的需求管理工具來制定和管理軟件需求,同時需要測試人員的配合,保證對軟件測試環節的充分考慮。
2) 軟件分析設計階段,測試人員除制定測試計劃書等基本工作外,筆者認為還有一個相當必要的任務,那就是將系統的可測性落實到書面文檔,以備將來編寫測試用例。
之所以要這么做,是因為考慮到很多企業編寫測試用例直接參考需求規格說明書或者分析流程圖,這樣跨度大,難度也大,是造成測試用例不完備、覆蓋范圍小的重要原因。
如果公司采用類似于IBM Rational Rose(參考官方說明: http://www-900.ibm.com/cn/software/rational/products/rose/index.shtml)的建模分析工具和IBM Rational Rose XDE Developer(參考官方說明: http://www-900.ibm.com/cn/software/rational/products/xde_developer/index.shtml)的可視化設計開發環境,這個工作更好執行;如果沒有,那么測試人員更有必要編寫一份《軟件功能點測試描述書》,它是軟件的詳細測試分析文檔,其主旨是將系統分析人員的開發分析文檔加工成以測試為角度的功能點分析文檔,重要的是描述對系統分解后每個功能點逐一的校驗描述,包括何種方法測試、何種數據測試、期望測試結果等,這些信息都是描述性的,無須具體數據;它的作用是據此編寫測試用例,以及測試執行時的參考依據,基于它直接來源于需求,覆蓋當然最全,也最能貼近客戶要求。
當然該文檔不是非要不可,筆者只是提倡一種原則,如果有類似的替代文檔或有工具可自動實現此功能,則會倍加受推崇!
筆者之所以推薦IBM Rational系列產品在軟件項目中的應用,是因為IBM Rational倡導的RUP(Rational Unified Process)方法論采用了用例驅動的原則。所謂用例驅動,是以體系結構為中心,采用迭代、增量方式的開發過程;而其Rational工具系列正是將這一理念進行行為表述,是當前軟件工程領域一套無可比擬的強大工具集,從需求到測試,它都以用例為基本模型,全面貫穿軟件開發的每個環節。
3) 軟件開發階段,編寫測試用例。我不想從技術角度探討到底如何編寫功能強大、質量優秀的測試用例(可參考筆者主頁轉載的"如何設計編寫軟件測試用例"),這里只想從管理角度和大家談談如何有效控制和增強測試用例在測試活動中的應用。應該遵守的原則是:
首先,從覆蓋率來說,測試用例庫的用例要達到最大覆蓋軟件系統的功能點。按照我上述所言的方式,測試工程師從前期階段順次下來,編寫測試用例時,基本上就是將《軟件功能點測試描述書》中的每個功能點進行操作上的細化:一是從步驟上描述到達校驗點的方式,二是從內容上描述以何種數據校驗功能點;如此可實現趨向最大需求覆蓋率。
其次,從數量來講,筆者覺得很多公司的測試用例太少,甚至遠遠不能覆蓋系統需求,這也是很多測試人員在測試工作開展初期按照用例執行、而后漸漸憑"意念"去執行測試的原因。應該說測試用例的數量很難用數學模型來模擬,更沒辦法衡量,但憑借個人經驗來說,一個多于半年開發周期(指從編碼開始直到提交客戶的時間段)的軟件系統,它的用例數量不要低于4000個,甚至更多!也許有人驚訝這一數字,不過了解IBM等大公司測試過程的人士會認為4000還是很少的數目。我們試想,對于一個中小型軟件系統,如果設計出5000個用例,那它的測試覆蓋率還怕不高么!
再次,如此眾多測試用例的管理問題。是的,需要管理工具軟件!筆者從來都反對以word或excel來編寫測試用例:
格式上難于編寫--通常方式是企業自己設計表格模版,但編輯上始終存在不便,尤其對于一些共性內容,如測試目標、測試環境、參考說明等,每次都要大量的復制、粘貼。
其次難于管理--如果把幾千個文檔文件放在一個共享文件夾里,即便以子目錄方式管理,但是每次查找一個特定用例,你的眼睛也必將飽受煎熬!
更是難于執行--莫非真要針對幾千個用例都是打開一個word-執行測試-輸入測試結果-關閉word嗎?
最重要的是,根本沒辦法追蹤測試結果--在本輪回歸測試輸入完測試結果,但是下一輪結果輸入到哪里?輸入了這些測試結果什么用?能方便的根據其結果統計軟件質量嗎?還有,可以用它追蹤發現的軟件缺陷嗎?有辦法追蹤嗎?
文章來源于領測軟件測試網 http://www.kjueaiud.com/