測試用例的準備,都是為了執行測試準備的。
測試環境的搭建
(1)測試數據:有些測試需要使用大批量的數據,例如容量測試、壓力測試等。根據產品的具體測試要求,可能需要在數據庫表插入大量的數據,準備大量的文件,生成大量的Socket包等。
(2)有些測試需要專門的外部硬件設備,比如打印機,條碼識別器,讀卡機,指紋儀等。
?如果是手機應用測試,可能要把所有支持的型號的手機都準備好。這些設備有些可以使用模擬器來模擬,有些則不能。模擬器比如夜神安卓模擬器。經常遇到在手機模擬器上可以執行的程序,在真正的手機上運行則會出現問題,或者在pc上報表格式正確,但是真正打印出來則會移位,走樣。
(3)有些產品需要支持多種操作系統,那么在做兼容性測試之前就需要準備好各種操作系統的計算機,或者可以考慮虛擬機來安裝,如vm ware,virtual PC等。
(4)有些測試需要部署到多臺機器,并且需要設置各種參數,那么就需要在測試之前準備好各種安裝包。
(5)有些測試需要用到網絡,設置需要考慮網絡的路由設置、拓撲結構等,那么在測試之前就需要準備好這樣的網絡設備和網絡環境配置。
BVT測試與冒煙測試
BVT測試(Build Verification Test)),編譯檢查測試,主要檢查源代碼是否能正確編譯成一個新的,完整可用的版本。如果BVT不通過,測試人員不能拿到新的版本進行測試。
冒煙測試,該概念來源于硬件生產領域,一般通過給制造出來的電路板加電,看電板是否通電,如果設計不合理,則可能在通電的同時馬上冒出煙,電路板不可用,因此沒有必要進行下一步的檢測。
那么該概念應用于軟件測試,其實意義也一致。就是主要驗證主功能,如果主功能都行不通,那就沒有驗證下去的必要,直接把編譯版本退回給開發人員修改。
需要注意的是,冒煙測試的測試用例應該是隨著開發的深入而不斷演進的。
每日構建的基本流程
程序模塊的集成問題是一個導致開發進度受阻的常見原因。缺陷也往往在集成階段才集中出現的,尤其是那些接口設計不夠好的軟件。
那么解決集成問題的最后辦法就是盡早集成,持續地集成,小版本集成。通過每日構建可以達到持續集成,小版本集成以及版本集成驗證的目的。
每日構建就是每天定時把所有的文件編譯,連接,組成一個可執行的程序的過程。
通常把每日構建放在晚上,利用空余時間自動進行,因此也叫每晚自動構建。簡單的流程如下圖
通過每日構建來規范代碼管理
每日構建除了可以解決部分版本集成的問題外,還可以對程序員的源代碼簽入簽出行為做出規范性約束。
大家都知道,如果程序員沒有遵循一定的規范簽入,簽出源代碼,就很可能導致其他程序員的代碼模塊失效或者混亂。一個正確而謹慎的做法應該是每次簽入自己修改的代碼之前,先獲取所有新版本并把所有代碼編譯通過,確保不會影響別人的代碼時才簽入,否則必須先把問題解決掉。
每日構建是一個提高士氣的機制,每天項目組的所有人都能看到構建出來的新版本增加了哪些新特性,看到能工作的產品,并且每天都比前一天多一些,增強一些,就像看到自己的孩子在茁壯地成長著,給所有人一種信心和鼓舞。
測試的記錄和跟蹤
bug的質量:所謂質量,是指測試人員錄入bug描述的清晰度,越容易理解的bug,質量越高。開發跟測試之間也不用花費大量時間去理解該bug如何修改合適。
如何錄入一個合格的bug
發現問題的版本
一般來說,在不同版本發現同一個Bug,有可能是由于不同原因產生的。所以如果在版本1.1修改完該Bug后,在版本1.2又發現了該bug,不應該把版本1.1的bug激活,而應該重新錄入一個bug,版本改為1.2。因為這是一個新增的Bug,測試人員需要重新驗證,統計。如果激活上一個bug也可能造成質量統計時的漏算。
問題出現的環境
問題出現的環境包括操作系統環境、軟件配置環境,有時候還需要包括系統資源的情況,因為有些錯誤只有在資源不足時才出現。
由于開發環境與測試環境存在差異,往往導致有些問題只有在測試環境下才能出現。例如開發環境中使用的某些第三方組件在測試環境沒有注冊。這時測試人員應該把這些差異寫清楚,以便開發人員在重新問題和進入調試之前把環境設置好。
問題重現步驟
描述問題出現的操作步驟。要盡量把操作步驟縮減到必須執行才能重新錯誤的幾個步驟。別浪費步驟在無關問題上面,影響重現進度。
預期行為的描述
需要讓開發人員知道什么才是正確的。有些描述不清的,如“編輯單據時,列表中不出現日期信息”,那么你是希望他出現日期呢,還是不出現日期呢?一般描述就加上XX應該XX或者SS不應該SS。
錯誤行為的描述
描述問題的現象。例如“程序拋出異常信息如下。。。”,如實反映,不要夸大。
除了以上,還有嚴重程度,優先級別,出現模塊,缺陷類型,發現日期等等,一般在缺陷管理系統中都會提示填寫。
BUG描述中應該注意的幾個問題
1、不要出現錯別字
我們是做測試的,就是要把錯誤找出來,我們是找BUG而不是創建BUG。
2、不要把幾個BUG錄入到同一個ID
最好一個問題一個ID,比如創建一個客戶,沒有做非空校驗,保存也出現異常。這時候需要分為2個ID錄,雖然在同個模塊同個界面,但是分開錄有利于后面可以清晰地跟蹤所有BUG的狀態,并且有利于缺陷的統計和質量的衡量。
3、附加必要的截圖和文件
有截圖或者文件,并且在截圖上框出出錯的位置,標記上問題,能讓開發更快速地定位到錯誤,高效率地修改。
4、錄入完一個BUG后自己讀一遍
如果一個BUG錄完之后連自己都讀不通,那么別想開發人員能修改高質量的產品,所以錄完之后自己讀一遍,讀通了之后再進行其他的測試。
如何跟蹤一個BUG的生命周期
創建-打開-修復(拒絕/延期)-關閉-激活
如何與開發人員溝通一個BUG
能讓開發人員解決最多的BUG的測試人員是最優秀的測試人員,如果能正確地,高質量地錄入一個BUG,那已經跟開發人員溝通了一大半關于BUG的信息,但是有些BUG字面會說不清楚,所以我們就得自己找開發談,最好演示一遍給開發看。注意的是,跟開發講BUG的時候一定要語氣平和,千萬不要趾高氣揚,指責開發等語氣,因為每個人都是不喜歡收拾爛攤子的,所以我們需要用技巧地跟開發溝通,比如說麻煩了,辛苦了之類的,這樣的話,開發會更樂意修改這個BUG,心情好修改當然質量高了。
回歸測試
一般如果系統有做其他的改動時,可能會影響到其他功能的使用。
比如我創建一個客戶,發現了保存功能有異常,于是提了個BUG。開發修改完成,我們驗證的時候,保存功能可能正常了,但是輸入功能可能因為此次的修改而影響了。
但是一般回歸測試不可能整個系統的功能都全部回歸,所以一般采用風險性的測試策略進行。
測試總結和報告
如果說測試用例是測試人員的工作直接反應方式,那么測試報告就是該項任務所有測試組的一個工作直接反應。
閱讀測試報告的人包括產品部,開發部,測試部,以及各個部門的老大。
測試報告是可以直接提現測試工作的一種表現形式,而且簡單易懂,不像缺陷列表又多又細又專業。通過測試報告,不僅可以反應近期軟件的狀態,還有利于分析系統的開發趨勢。
缺陷分類報告
缺陷分類報告是測試報告的重要組成部分,主要分為以下幾類。
缺陷類型分類報告
主要描述缺陷的類型分布情況,比如界面規范性,功能缺陷,數據顯示等等。一般使用餅圖或者柱狀圖畫出。
缺陷區域分布報告
主要描述缺陷在不同功能模塊出現的情況。有助于開發分析為什么缺陷集中在某個功能模塊,如果某個功能模塊存在大量的BUG,就得分析是否這個功能的某個工作流接口設計不合理。也可用柱狀圖或者餅圖表示。
缺陷狀態分布報告
主要描述缺陷中各種狀態的比例情況,例如open,fixed,closed,reopen,rejected,delay的BUG分別占了百分之幾。這些信息有助于評估測試和產品的現狀。
- 如果open的BUG比例太高,則可能要考慮讓開發人員停止開發新功能,先集中精力修改BUG。
- 如果fixed狀態的BUG很多,則考慮讓測試人員停止測試新功能,先集中精力做一次回歸測試把修改的BUG驗證完。
- 如果closed的BUG比較多,則意味著功能模塊趨于穩定。
- 如果reopen的BUG比較多,則需要分析開發人員的開發狀態,是什么原因造成缺陷修改不徹底。
- 如果rejected的bug比例高,則要看開發人員與測試人員是否對需求存在理解上的分歧。
- 如果Delay的BUG比例過高,則要考慮這個版本是否滿足客戶的要求,是否缺少了太多應該這個版本出現的功能特性。
缺陷狀態分布報告一般使用餅圖或柱形圖表示。
?
還有其他的缺陷分類報告可以寫在測試報告中,例如,嚴重級別分類報告、優先級別分類報告、負責人分類報告、發現人分類報告、版本分類報告等。但是要注意這些分類報告是用來說明問題的,而不是用來指責別人。
缺陷趨勢報告
缺陷趨勢報告主要描述一段時間內的缺陷情況,如果項目管理比較規范,缺陷管理和測試流程比較正常,從缺陷趨勢報告還可以估算出軟件可發布的日期。
典型缺陷和BUG模式
軟件開發有設計模式,測試其實也有模式存在,需要測試人員進行總結和歸納。從經常重復出現的BUG中學習,總結出BUG模式。
要成為經典缺陷,必須滿足以下條件:
- 重復出現、經常出現
- 能代表某種類型的錯誤
- 能通過相對固定的測試方法或手段來發現這些錯誤
總結這些典型缺陷出現的現象、出現的原因以及測試的方法,就成為一種BUG模式。
提煉BUG模式的一般步驟:
1、分析缺陷報告,找出經常出現的BUG類型。
2、分析BUG的根源,找出BUG產生的深層次原因。
3、分析找到BUG的方法,總結如何才能每次都發現這種類型的BUG。
客觀全面的測試報告
測試需要以一個完美的方式結束,編寫一份出色的測試總結報告可為一個完美的測試過程劃上一個完美的句號。
一份測試報告應該包括測試的資源使用情況:投入了多少測試人員,多長時間,執行了多少測試用例,覆蓋了多少功能模塊等等。
?