說明:以下項目測試經驗是我在原來公司工作中的實際經驗,拿出來和大家一起交流。我相信之前的項目測試工作中有不少可以改進的地方,還希望大家多多交流。
在介紹我們之前項目測試工作之前,需要首先介紹一下之前我所在團隊的組織架構及測試人員在項目中的工作。
我們的測試團隊屬于質量改進中心下的測試部,它和研發團隊屬于兩個不同的中心。測試團隊6個人,從這個組織架構圖中可以看出來,一個人可以參與多個處于不同階段的項目測試工作。組織架構如下:
參與項目的測試人員以測試組的形式進入項目,測試組和需求組、開發組并列。每個測試組有一個測試組長負責項目測試工作。項目經理不直接面對測試組成員,而是通過測試組長進行任務安排、協調、溝通。測試部經理知情測試人員的項目測試工作,項目測試組的工作匯報均需要抄送給測試部經理。
上面說到的是舊的測試人員工作模式,在去年年底,為了有效利用公司測試人員資源,我們開始了測試外包的嘗試。這里的測試外包模式是指,測試組不進入項目,而是由項目組將測試工作以一個項目的方式分包給測試部,由測試部根據項目組提供的信息,自己進行計劃、執行測試,并按照項目要求提交測試成果給項目組。這個模式還在探索中。
如圖所示,測試經理直接負責項目的測試工作,測試組的工作情況抄送給項目經理。這種模式需要進行獨立核算,包括成本估算、預算、結算等。但是這種模式整體的思路還不是很成熟,從這個組織架構上大家也可以看出來,很多東西還沒有理順,所以一直都處于嘗試過程中。后面我們交流的內容,如果沒有特殊說明,都是在舊的模式下進行的。
我想不可否認,大家都認為測試人員應該是測試技術上的專家,但是,測試人員是否需要熟悉并擅長一定的業務呢?不管答案是什么都沒有關系,但是我認為一個好的測試人員不僅是測試專家,他同時也是業務專家。有著樣的說法:“軟件測試人員要兩條腿走路,左腿是測試技術,右腿是業務知識。只有兩條腿的健壯差不多,走路才穩當。”出于這種思想的考慮,在原來的測試團隊,我們每個人都有兩個學習、研究方向,一個是技術方向,一個是業務方向。但這在工作開展上有些困難。如果公司認為測試人員應該絕大部分時間用在項目測試工作上,那么測試團隊既要研究測試技術,又要學習業務知識,是比較難的。在我們以前的測試團隊的工作中,有一部分工作時間是用來進行部門建設的,公司允許部門建設工作占整個團隊工作量的30%。部門建設工作中包括前面說到的技術研究、業務學習,還有就是部門搭建所需要進行的一些工作。將部門建設工作分開,主要是用于統計部門成本和測試成本用的。
前面說到了測試人員是以測試組身份進入項目開展測試工作的,但不是每個成員上去都從事同樣的工作。在進入項目組工作時,每個測試人員所充當的角色是不同的,項目的測試角色劃分為以下四種。在實際工作中因為測試人員數量有限,所以經常是一個人擔任多個角色。
了解了原來測試團隊的分工之后,下面介紹一下測試團隊的工作內容。測試團隊承接的工作中,測試技術研究,屬于提高團隊工作技能的工作,在整個部門范圍內進行,這里屬于部門建設工作;對于項目中的測試人員有可能需要進行,如果項目采用新的測試技術或者測試工具,那么就需要項目測試組成員研究測試技術了,這部分屬于項目測試工作。培訓指把內部研究的成果在團隊內使用,在適當的時機在公司內傳播。我們測試團隊在2004年進行了21次內部培訓,7次公司級培訓。因為每個人各有研究重點,所以我們每個人都是團隊內部培訓的講師。
說到測試工程師的工作內容,那么就涉及到測試工程師該做的和不該做的。當然這和公司對測試人員定位有關,這里僅指以前的組織。要說該做的,那么我們需要先明確為什么我們要測試?這是因為存在“系統錯誤很多、系統不是客戶想要的東西、系統實現沒有遵照系統需求”等這樣的背景。在這樣的背景下,產生了測試,但是又因為開發人員自己測試自己的東西,難免測試不全面,所以產生了測試工程師這個角色。因此,測試人員他該做的,就是測試軟件產品和用戶需求不一致的地方,并盡可能多的發現缺陷,能夠向PM匯報軟件質量狀態。但是在實際工作中,測試人員經常主動或被動的去做了一些不該做的事情。例如說,測試人員認為自己或者測試能夠保證軟件的質量,以及有意識或無意識的接受了決定軟件是否發布的這個權利。
為什么測試無法保證軟件的質量,是因為項目的質量,需要項目組的所有成員共同努力,才能達到質量保證的目的。單純靠測試工程師的力量,是無法實現軟件質量保證的目的。
為什么測試人員不適合承擔決定軟件是否發布的權利,是因為軟件的發布,是需要項目組各個小組負責人等相關人一起對系統現在的缺陷、質量狀況進行評估后,由PM(或者與會者)作出是否發布的決定。在這個過程中,測試工程師可以提供測試數據、系統當前質量狀態報告給與會者參考。
當然,我知道這兩點會有很多人不認同,但是沒有關系的。我接觸的同行中對兩點經常有爭論。但是,在一些質量大師等權威人士還是全部或部分贊同這兩個觀點的,如:菲利普.克勞士比曾在他的書中提到軟件質量的保證需要全員努力,需要過程的控制的,而不是某個英雄可以保證軟件質量的等。(《質量免費》、《質量無惑》)
做了背景介紹后,下面我介紹之前項目如何開展測試工作的。今天以我之前從事的一個項目作為例子來介紹之前實際的測試工作。
因為測試過程是整個測試工作的一個綱要,所以首先得從測試過程講起。
測試過程,我們包括四個環節:測試計劃、測試設計、測試執行、測試分析,如下圖所示。