我們用電腦的每個(gè)人,不都是軟件測(cè)試人員,但都是某些軟件的用戶。一般情況用戶都會(huì)覺得買到的軟件是沒有問題的,不會(huì)去想這樣的軟件可能會(huì)有問題,用戶只要使用這些軟件來解決他們需要解決的問題就可以了。當(dāng)他們發(fā)現(xiàn)問題的時(shí)候,甚至?xí)械秸痼@。存在的問題很多都和測(cè)試的成效有關(guān)系,一般的軟件產(chǎn)品存在的問題確實(shí)比較少,但我覺得即使是以前買的正版的金山快譯2000都有著一些顯而易見的bug。如果測(cè)試不充分,那么這些問題會(huì)潛伏在軟件中,等到用戶發(fā)現(xiàn)以后,再有開發(fā)人員進(jìn)行維護(hù),改正錯(cuò)誤的費(fèi)用一般是開發(fā)階段的40倍到60倍。
人們對(duì)測(cè)試存在著一些誤區(qū),例如: 1 測(cè)試是想象到可能出現(xiàn)的問題,然后試圖驗(yàn)證這些問題。 實(shí)際上能想象到的只是一部分的情況,隨意性太大,還要取決于開發(fā)人員的經(jīng)驗(yàn),對(duì)業(yè)務(wù)的熟悉程度和他想象到的程度。 2 讓時(shí)間有富裕的員工去做一些測(cè)試 表面上看這體現(xiàn)了管理的效率和靈活性,但實(shí)際上也體現(xiàn)了管理者對(duì)測(cè)試的輕視。測(cè)試和測(cè)試的人有很大關(guān)系。測(cè)試工作人員應(yīng)該是勤奮并富有耐心,善于學(xué)習(xí)、思考和發(fā)現(xiàn)問題,細(xì)心有條理,總結(jié)問題,如果具備這樣的優(yōu)點(diǎn),做其它工作同樣也會(huì)很出色,因此這里還有一個(gè)要求,就是要喜歡測(cè)試這項(xiàng)工作。如果他是專職的,那么肯定更有經(jīng)驗(yàn)和信心。國(guó)內(nèi)的小伙子好象都喜歡做程序員,兩者工作性質(zhì)不同,待遇不同,地位不同,對(duì)自我實(shí)現(xiàn)的價(jià)值的認(rèn)識(shí)也不同,這是行業(yè)的一個(gè)需要改善的問題。如果只是為了完成任務(wù)而完成任務(wù),或者發(fā)現(xiàn)了幾個(gè)問題就覺得滿意了,這在任何其它工作中都是不行的。 3 測(cè)試是相對(duì)簡(jiǎn)單的工作。 實(shí)際上并非如此,要真正做好一件事都不容易。測(cè)試也有很多相關(guān)技術(shù)和工具。而對(duì)測(cè)試的輕視問題,也許要通過痛苦的經(jīng)歷和結(jié)果才可能確切體會(huì)到。很多專家都在對(duì)測(cè)試的理論進(jìn)行深入的探討和研究。 測(cè)試的基本知識(shí) 讓我們一起快速過一遍: 什么是軟件測(cè)試:在軟件投入運(yùn)行前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。 測(cè)試的目標(biāo):以較少的用例、時(shí)間和人力找出軟件中潛在的各種錯(cuò)誤和缺陷,以確保系統(tǒng)的質(zhì)量。 從測(cè)試的類型來看,測(cè)試分為2種:黑盒測(cè)試和白盒測(cè)試。 黑盒測(cè)試又稱為功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,把系統(tǒng)看成一個(gè)黑盒子,不考慮程序的內(nèi)在邏輯,只根據(jù)需求規(guī)格說明書的要求來檢查程序的功能是否符合它的功能說明。 白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試和邏輯驅(qū)動(dòng)測(cè)試,允許測(cè)試人員對(duì)程序內(nèi)部邏輯結(jié)構(gòu)及有關(guān)信息來設(shè)計(jì)和選擇測(cè)試用例,對(duì)程序的邏輯路徑進(jìn)行測(cè)試。 測(cè)試用例由測(cè)試輸入數(shù)據(jù)以及與之對(duì)應(yīng)的輸出結(jié)果組成。測(cè)試用例設(shè)計(jì)的好壞直接決定了測(cè)試的效果和結(jié)果。 從測(cè)試實(shí)際的前后過程來看,軟件測(cè)試上是由一系列的不同測(cè)試所組成,這些軟件測(cè)試的步驟分為:單元測(cè)試、組裝測(cè)試(集成測(cè)試)、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。軟件開發(fā)的過程是自頂向下的,測(cè)試則正好相反,以上這些過程就是自底向上,逐步集成的。 單元測(cè)試(模塊測(cè)試):針對(duì)每個(gè)模塊進(jìn)行的測(cè)試,可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例,多個(gè)模塊可以平行地對(duì)立地測(cè)試。通常在編碼階段進(jìn)行,必要的時(shí)候要制作驅(qū)動(dòng)模塊和樁模塊。 集成測(cè)試:在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng),必須精心計(jì)劃,應(yīng)提交集成測(cè)試計(jì)劃、集成測(cè)試規(guī)格說明和集成測(cè)試分析報(bào)告。 確認(rèn)測(cè)試:驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。 系統(tǒng)測(cè)試:將軟件放在整個(gè)計(jì)算機(jī)環(huán)境下,包括軟硬件平臺(tái)、某些支持軟件、數(shù)據(jù)和人員等,在實(shí)際運(yùn)行環(huán)境下進(jìn)行一系列的測(cè)試。 測(cè)試工作的文檔主要有:測(cè)試計(jì)劃、測(cè)試模型和用例設(shè)計(jì)或規(guī)格說明、測(cè)試分析報(bào)告等。從軟件工程上說,這是屬于軟件配置的一部分。(我不知道,如果什么報(bào)告都沒有,只是不斷地?cái)[弄執(zhí)行程序,看到錯(cuò)誤和問題就記下來,算不算真正的測(cè)試?) 測(cè)試需要一定的技術(shù)和工具 在用例設(shè)計(jì)過程中,可以考慮到很多方面,并且也有很多的指導(dǎo)方法和技術(shù)。 黑盒測(cè)試用例設(shè)計(jì)包括: 等價(jià)類劃分:劃分等價(jià)類--確立測(cè)試用例--設(shè)計(jì)用例 邊界值分析:通過分析,考慮如何確立邊界情況 錯(cuò)誤推測(cè)法:靠經(jīng)驗(yàn)和直覺來推測(cè)程序中可能存在的各種錯(cuò)誤,從而有針對(duì)性地編寫用例??梢粤信e出可能的錯(cuò)誤和可能發(fā)生錯(cuò)誤的地方,然后選擇用例。 因果圖:通過畫因果圖,在圖上標(biāo)明約束和限制,轉(zhuǎn)換成判定表,然后設(shè)計(jì)測(cè)試用例。這適合于檢查程序輸入條件的各種組合情況。 功能圖FD:通過形式化地表示程序的功能說明,并機(jī)械地生成功能圖的測(cè)試用例。 白盒測(cè)試用例設(shè)計(jì)包括: 1 邏輯覆蓋,以程序內(nèi)在邏輯結(jié)構(gòu)為基礎(chǔ)的測(cè)試,包括以下5種類型: 1.1 語(yǔ)句覆蓋:每一條可執(zhí)行語(yǔ)句至少覆蓋一次; 1.2 判定覆蓋(分支覆蓋):設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的取真分支和取假分支至少執(zhí)行一次; 1.3 條件覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的每個(gè)條件的每個(gè)可能取值至少執(zhí)行一次; 1.4 判定-條件覆蓋:設(shè)計(jì)足夠多的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的每個(gè)條件的所有可能取值至少執(zhí)行一次,并且每個(gè)可能的判斷結(jié)果也至少執(zhí)行一次; 1.5 條件組合測(cè)試:設(shè)計(jì)足夠多的測(cè)試用例,運(yùn)行所測(cè)程序,使程序中每個(gè)判斷的所有可能的條件取值至少執(zhí)行一次; 1.6 路徑測(cè)試:設(shè)計(jì)足夠多的測(cè)試用例,運(yùn)行所測(cè)程序,要覆蓋程序中所有可能的路徑。 2 基本路徑測(cè)試 在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本可執(zhí)行路徑集合,從而設(shè)計(jì)測(cè)試用例。包括以下5個(gè)方面: 2.1 程序的控制流圖:描述程序控制流的一種圖示方法。 2.2 程序環(huán)境復(fù)雜性:McCabe復(fù)雜性度量。從程序的環(huán)路復(fù)雜性可導(dǎo)出程序基本路徑集合中的獨(dú)立路徑條數(shù),這是確定程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行依次所必須的測(cè)試用例數(shù)目的上界。 2.3 導(dǎo)出測(cè)試用例 2.4 準(zhǔn)備測(cè)試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行 2.5 圖形矩陣:是在基本路徑測(cè)試中起輔助作用的軟件工具,利用它可以實(shí)現(xiàn)自動(dòng)地確定一個(gè)基本路徑集。 程序的靜態(tài)分析方法: 1 生成各種引用表、靜態(tài)錯(cuò)誤分析 2 人工測(cè)試:桌前檢查、代碼評(píng)審等 3 軟件測(cè)試工具:包括靜態(tài)分析工具、動(dòng)態(tài)測(cè)試工具、測(cè)試數(shù)據(jù)自動(dòng)化生成工具、模塊測(cè)試臺(tái)、測(cè)試合成環(huán)境 3.1 靜態(tài)分析工具:語(yǔ)言程序的預(yù)處理器、數(shù)據(jù)庫(kù)工具、錯(cuò)誤分析器和報(bào)告生成器。直接掃描所測(cè)試的正文,對(duì)程序的數(shù)據(jù)流和控制流進(jìn)行分析,然后送出測(cè)試報(bào)告。 3.2 動(dòng)態(tài)測(cè)試工具:通過選擇適當(dāng)?shù)臏y(cè)試用例,實(shí)際運(yùn)行所測(cè)程序,比較實(shí)際運(yùn)行結(jié)果和預(yù)期結(jié)果,發(fā)現(xiàn)錯(cuò)誤。 3.3 測(cè)試數(shù)據(jù)自動(dòng)化生成工具:包括路徑測(cè)試數(shù)據(jù)生成程序、隨機(jī)測(cè)試數(shù)據(jù)生成程序以及根據(jù)數(shù)據(jù)規(guī)格說明生成測(cè)試數(shù)據(jù) 3.4 模塊測(cè)試臺(tái)是一種專門的測(cè)試用例描述語(yǔ)言,負(fù)責(zé)將輸入數(shù)據(jù)傳送到所測(cè)試模塊中,然后將實(shí)際輸出結(jié)果與在描述測(cè)試用例的語(yǔ)言中所表述的期望結(jié)果進(jìn)行比較,發(fā)現(xiàn)錯(cuò)誤。另外,也包括其它的功能:語(yǔ)句跟蹤、動(dòng)態(tài)斷句、覆蓋度量、用戶自定義符號(hào)表、內(nèi)容表和輸出格式。 3.5 測(cè)試合成環(huán)境:包括環(huán)境模擬程序,代碼檢查程序,測(cè)試文檔生成程序,測(cè)試執(zhí)行嚴(yán)整程序,輸出比較程序,程序正確性證明程序等,以及各種調(diào)試工具。而且還有集成系統(tǒng),集成了多種工具,如SADAT、Microsoft Test for Windows和PureArtria等。 |
|