軟件測(cè)試實(shí)用教程-方法與實(shí)踐(第2版)課件全套 第1-11章 軟件測(cè)試核心概念-測(cè)試應(yīng)用案例實(shí)踐_第1頁(yè)
軟件測(cè)試實(shí)用教程-方法與實(shí)踐(第2版)課件全套 第1-11章 軟件測(cè)試核心概念-測(cè)試應(yīng)用案例實(shí)踐_第2頁(yè)
軟件測(cè)試實(shí)用教程-方法與實(shí)踐(第2版)課件全套 第1-11章 軟件測(cè)試核心概念-測(cè)試應(yīng)用案例實(shí)踐_第3頁(yè)
軟件測(cè)試實(shí)用教程-方法與實(shí)踐(第2版)課件全套 第1-11章 軟件測(cè)試核心概念-測(cè)試應(yīng)用案例實(shí)踐_第4頁(yè)
軟件測(cè)試實(shí)用教程-方法與實(shí)踐(第2版)課件全套 第1-11章 軟件測(cè)試核心概念-測(cè)試應(yīng)用案例實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩805頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章軟件測(cè)試核心概念高等學(xué)校計(jì)算機(jī)類系列教材軟件測(cè)試實(shí)用教程——方法與實(shí)踐01引子:獵人打鳥在正式開始介紹軟件測(cè)試之前,先來(lái)回答一個(gè)問(wèn)題:如果樹上有10只鳥,開槍打死1只,還剩幾只?看看一個(gè)聰明學(xué)生的回答。引子:獵人打鳥如果你是一個(gè)軟件測(cè)試工程師,你能像這個(gè)學(xué)生那樣給出這樣的回答嗎?這個(gè)故事是業(yè)界流行的一個(gè)笑話,說(shuō)是笑話,其實(shí)也不完全是。故事中的學(xué)生可謂是一個(gè)優(yōu)秀的軟件測(cè)試人員。面對(duì)一個(gè)要交付給用戶的軟件產(chǎn)品,你也能夠以這樣挑剔的眼光,在有限的時(shí)間內(nèi)找到軟件中盡可能多、對(duì)軟件破壞力最嚴(yán)重的那些缺陷嗎?引子:獵人打鳥02軟件測(cè)試的概念軟件的定義及特點(diǎn)軟件可表示成:軟件(Software)=程序(P)+數(shù)據(jù)(庫(kù))(DB)+文檔(D)+服務(wù)(S)其中,程序表示能夠完成預(yù)定功能和性能的指令的集合,如C語(yǔ)言程序、Java程序等;數(shù)據(jù)(庫(kù))是依照某種數(shù)據(jù)模型組織起來(lái)并存儲(chǔ)在二級(jí)存儲(chǔ)器中的數(shù)據(jù)集合;文檔指軟件在開發(fā)、使用和維護(hù)過(guò)程中產(chǎn)生的文字與圖形的集合,如《系統(tǒng)需求規(guī)格說(shuō)明書》、《系統(tǒng)測(cè)試計(jì)劃》、《用戶手冊(cè)》等;服務(wù)是指通過(guò)提供必要的手段和方法,滿足接受服務(wù)的對(duì)象需求的過(guò)程,如安裝指導(dǎo)、用戶培訓(xùn)、售后技術(shù)支持、接受投訴等。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,特別是云計(jì)算的出現(xiàn),其實(shí)質(zhì)是通過(guò)提供云端技術(shù)服務(wù)來(lái)滿足用戶的需求,軟件服務(wù)已不僅僅局限在通過(guò)人工來(lái)提供服務(wù)了,服務(wù)具有了更加廣泛的內(nèi)涵。因此,軟件測(cè)試不但包含傳統(tǒng)意義上的針對(duì)可執(zhí)行程序和源代碼的測(cè)試,還應(yīng)包括對(duì)數(shù)據(jù)、文檔和服務(wù)的測(cè)試,軟件測(cè)試工作應(yīng)貫穿在整個(gè)軟件的全生命周期中,在不同的軟件開發(fā)階段使用不同的測(cè)試策略,對(duì)應(yīng)不同的測(cè)試內(nèi)容,具有各自的側(cè)重點(diǎn)。1軟件的定義軟件的定義及特點(diǎn)軟件不同于硬件,軟件是相對(duì)無(wú)形的東西,其特點(diǎn)如下:(1)軟件必須依靠人的智力勞動(dòng)才能創(chuàng)造出來(lái),智力經(jīng)驗(yàn)往往難以傳承,且程序員在軟件開發(fā)過(guò)程中常具有較大的隨意性,使得開發(fā)的軟件也常常具有較大的隨意性。(2)軟件必須依托于具體的硬件設(shè)備才能運(yùn)行,硬件的改變很可能導(dǎo)致軟件不可用。因此,在軟件測(cè)試工作中應(yīng)針對(duì)各種主流的硬件設(shè)備支撐環(huán)境來(lái)測(cè)試軟件是否可用。(3)軟件不會(huì)如硬件一般產(chǎn)生磨損,但會(huì)隨著其依托的硬件設(shè)備的變化,以及用戶需求的不斷變化而需要進(jìn)行升級(jí),且到了某個(gè)時(shí)候,當(dāng)需求和硬件的變化使得軟件不得不改變其體系架構(gòu)的時(shí)候,該軟件就必須被淘汰而換之以全新的軟件。因此,應(yīng)測(cè)試升級(jí)后的軟件對(duì)舊版本的兼容性。2軟件的特點(diǎn)IEEE給出了關(guān)于軟件測(cè)試的標(biāo)準(zhǔn)定義:軟件測(cè)試是使用人工和自動(dòng)手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)被測(cè)軟件系統(tǒng)是否滿足規(guī)定的需要,或是弄清楚被測(cè)系統(tǒng)的預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。該定義從5個(gè)方面體現(xiàn)了測(cè)試工作的核心與實(shí)質(zhì)。軟件測(cè)試(SoftwareTesting)就是對(duì)軟件的測(cè)試,需要通過(guò)什么方式和手段、針對(duì)軟件中的哪些組成部分、按照怎樣的流程來(lái)完成測(cè)試工作,以及其工作的最終目的是什么呢?圍繞這些問(wèn)題,人們對(duì)軟件測(cè)試紛紛給出了自己的認(rèn)識(shí),在此不再詳細(xì)給出。軟件測(cè)試的定義(1)軟件測(cè)試的根本目的是確保軟件滿足用戶需求“軟件測(cè)試的目的在于檢驗(yàn)被測(cè)軟件系統(tǒng)是否滿足規(guī)定的需要”,即保證被測(cè)軟件符合用戶需求是軟件測(cè)試的最終目的,換句話說(shuō),只要軟件系統(tǒng)不符合用戶需求,就認(rèn)為其存在缺陷,必須進(jìn)行處理。因此,用戶需求是測(cè)試的唯一依據(jù),也是缺陷判定的根據(jù)。(2)軟件測(cè)試的目的是要衡量軟件產(chǎn)品是否符合預(yù)期盡管軟件測(cè)試的根本目的是確保軟件滿足用戶需求,但如何準(zhǔn)確地理解和表達(dá)用戶需求、如何驗(yàn)證軟件是否符合用戶需求呢?對(duì)于前者,顯然是以系統(tǒng)需求規(guī)格說(shuō)明書(以下簡(jiǎn)稱SRS)的形式來(lái)描述用戶需求;對(duì)于后者,則需要通過(guò)設(shè)計(jì)測(cè)試用例(TestCase),根據(jù)測(cè)試用例的執(zhí)行情況來(lái)判斷其實(shí)際輸出結(jié)果與預(yù)期結(jié)果之間是否存在差異,且這種差異是否超出用戶可以接受的范圍,若二者的差異用戶可以接受,則無(wú)須理會(huì),否則將對(duì)應(yīng)一個(gè)軟件缺陷,需對(duì)該缺陷進(jìn)行適當(dāng)?shù)奶幚?。軟件測(cè)試的定義(3)軟件測(cè)試是一個(gè)持續(xù)進(jìn)行的過(guò)程軟件測(cè)試是持續(xù)進(jìn)行的過(guò)程,不可能一蹴而就,必須重視軟件測(cè)試過(guò)程管理。圖1.2給出了軟件測(cè)試的一般過(guò)程。圖中實(shí)心箭頭表示輸入工作產(chǎn)品,空心箭頭表示各測(cè)試階段的輸出物。從該圖可以看出,軟件測(cè)試的過(guò)程主要分為5個(gè)主要的步驟,即計(jì)劃測(cè)試、設(shè)計(jì)測(cè)試、實(shí)施測(cè)試、執(zhí)行測(cè)試和評(píng)估測(cè)試。①計(jì)劃測(cè)試。計(jì)劃測(cè)試是根據(jù)軟件項(xiàng)目計(jì)劃來(lái)制訂測(cè)試計(jì)劃,即在軟件測(cè)試開始之前,必須清楚地回答一個(gè)問(wèn)題:哪些人,在何時(shí),需做哪些測(cè)試工作,使用怎樣的方法,需要哪些資源,遵循怎樣的規(guī)范來(lái)完成,可能碰到哪些風(fēng)險(xiǎn),如何解決。具體說(shuō)明如下。軟件測(cè)試的定義②設(shè)計(jì)測(cè)試。設(shè)計(jì)測(cè)試是對(duì)照測(cè)試計(jì)劃中選定的測(cè)試范圍,對(duì)測(cè)試計(jì)劃中的方法進(jìn)行細(xì)化。在測(cè)試設(shè)計(jì)階段有一個(gè)重要的概念:測(cè)試需求,即需要測(cè)試的特性,一般地,通過(guò)分析功能需求,找到每個(gè)功能點(diǎn)所需要測(cè)試的特性,從而得到測(cè)試需求,再?gòu)臏y(cè)試需求設(shè)計(jì)測(cè)試用例。③實(shí)施測(cè)試。實(shí)施測(cè)試是測(cè)試過(guò)程中最重要的環(huán)節(jié)。測(cè)試設(shè)計(jì)階段所設(shè)計(jì)的測(cè)試用例僅僅是以文檔或管理工具等多種書面形式進(jìn)行記錄的,測(cè)試用例無(wú)法自動(dòng)執(zhí)行,且在一些特殊情況下,測(cè)試用例無(wú)法獨(dú)立執(zhí)行,因此,實(shí)施測(cè)試就是根據(jù)需要,通過(guò)腳本開發(fā)、測(cè)試驅(qū)動(dòng)/測(cè)試樁模塊的開發(fā),將靜態(tài)的測(cè)試用例轉(zhuǎn)化為可以實(shí)際執(zhí)行的動(dòng)態(tài)測(cè)試用例。軟件測(cè)試的定義④執(zhí)行測(cè)試。執(zhí)行測(cè)試是采用手動(dòng)方式或通過(guò)測(cè)試腳本來(lái)運(yùn)行測(cè)試用例的過(guò)程。在測(cè)試執(zhí)行的過(guò)程中,需要注意記錄測(cè)試過(guò)程以及在測(cè)試中發(fā)現(xiàn)的缺陷。在各個(gè)測(cè)試階段都對(duì)應(yīng)有執(zhí)行測(cè)試的這個(gè)環(huán)節(jié),但單元測(cè)試與集成測(cè)試是可以同步進(jìn)行的,只有系統(tǒng)測(cè)試必須在單元測(cè)試和集成測(cè)試完成之后才能開始執(zhí)行。軟件測(cè)試的定義⑤評(píng)估測(cè)試。測(cè)試執(zhí)行過(guò)程中需要不斷的評(píng)估,主要分為兩方面工作,其一是對(duì)測(cè)試用例的執(zhí)行結(jié)果進(jìn)行評(píng)估,若測(cè)試用例的實(shí)際輸出與預(yù)期輸出相吻合,或二者之間的差異在用戶可以接受的范圍內(nèi),則測(cè)試用例的測(cè)試結(jié)果為通過(guò),否則就認(rèn)為用例的測(cè)試結(jié)果為失敗,對(duì)應(yīng)記錄下相關(guān)的缺陷,該評(píng)估是在每次測(cè)試用例執(zhí)行后必須做的事情;其二是對(duì)一段時(shí)間內(nèi)的測(cè)試過(guò)程進(jìn)行評(píng)估,這里所提的評(píng)估也主要是指階段性的測(cè)試評(píng)估工作,該評(píng)估不僅包含對(duì)測(cè)試工作效果的評(píng)價(jià),還包含對(duì)被測(cè)對(duì)象質(zhì)量的評(píng)價(jià),目的在于總結(jié)測(cè)試工作的經(jīng)驗(yàn)、發(fā)現(xiàn)測(cè)試工作的不足,以及做出后續(xù)工作決策。軟件測(cè)試的定義(4)測(cè)試既需要?jiǎng)討B(tài)執(zhí)行也需要靜態(tài)檢查定義中提到的運(yùn)行系統(tǒng)強(qiáng)調(diào)必須通過(guò)實(shí)際執(zhí)行被測(cè)軟件系統(tǒng)來(lái)發(fā)現(xiàn)缺陷,但并未提示該如何執(zhí)行軟件系統(tǒng),測(cè)試人員的作用就在于通過(guò)設(shè)計(jì)測(cè)試用例,利用特定的數(shù)據(jù)集(即輸入數(shù)據(jù))和動(dòng)作集(即軟件操作步驟)來(lái)考驗(yàn)被測(cè)系統(tǒng),判斷系統(tǒng)能否以用戶預(yù)期的方式給予正確、及時(shí)的反饋。(5)測(cè)試不僅需要手動(dòng)執(zhí)行還需要自動(dòng)執(zhí)行傳統(tǒng)的測(cè)試工作多依靠人工方式來(lái)完成,如測(cè)試計(jì)劃的制訂、測(cè)試用例的設(shè)計(jì),甚至測(cè)試用例的執(zhí)行也多依賴于人工執(zhí)行,根據(jù)軟件測(cè)試網(wǎng)在2011年所做的軟件測(cè)試行業(yè)調(diào)查(以下稱2011行業(yè)調(diào)查)可知,到目前為止,國(guó)內(nèi)軟件測(cè)試從業(yè)人員的工作類型主要集中在手動(dòng)功能測(cè)試,所占比例為89%,其次是測(cè)試用例設(shè)計(jì),所占比例為67%。軟件測(cè)試的定義總之,從軟件測(cè)試的標(biāo)準(zhǔn)定義可以看出,軟件測(cè)試包含大量復(fù)雜的工作,要想將軟件測(cè)試工作做好,需要解決至少如下3方面的問(wèn)題:①圍繞用戶需求這個(gè)最根本的測(cè)試目的,需要考慮:如何有效地獲取用戶需求,如何準(zhǔn)確理解和表達(dá)用戶需求,如何保證用戶需求的穩(wěn)定性;②圍繞軟件產(chǎn)品是否符合預(yù)期這個(gè)測(cè)試目的,需要考慮:如何高效地設(shè)計(jì)測(cè)試用例,達(dá)到對(duì)成本、質(zhì)量、進(jìn)度的均衡控制;③圍繞測(cè)試過(guò)程的管理,需要考慮:如何合理評(píng)估和控制風(fēng)險(xiǎn),如何規(guī)劃整個(gè)測(cè)試工作,如何管理包括環(huán)境、工具、人力、測(cè)試交付物在內(nèi)的所有相關(guān)資源。后續(xù)章節(jié)將針對(duì)以上部分問(wèn)題逐步展開詳細(xì)地討論。捉蟲實(shí)踐1:很簡(jiǎn)單?1功能描述第二日問(wèn)題是一個(gè)簡(jiǎn)單的計(jì)算年月日的例子,其基本功能是:根據(jù)用戶輸入的有效日期(格式為年-月-日),系統(tǒng)可以自動(dòng)計(jì)算出下一天的日期。假如這就是用戶需求,那么當(dāng)不考慮如何接受用戶輸入,如何輸出計(jì)算結(jié)果時(shí),可將該需求細(xì)化為如下形式:(1)當(dāng)用戶輸入為有效日期時(shí),系統(tǒng)應(yīng)自動(dòng)計(jì)算出下一天的日期。其中,有效日期為1800年1月1日到2050年12月31日之間的所有日期,含1800年1月1日和2050年12月31日。(2)當(dāng)用戶輸入無(wú)效時(shí),即不滿足有效輸入條件時(shí),系統(tǒng)不執(zhí)行日期的計(jì)算,而是提示輸入錯(cuò)誤。捉蟲實(shí)踐1:很簡(jiǎn)單?2開始測(cè)試根據(jù)需求描述,設(shè)計(jì)的測(cè)試如表1.1所示。特別提醒注意的是:針對(duì)2050-12-31,其預(yù)期輸出并不是提示錯(cuò)誤,而是計(jì)算出其下一天的日期,其中原因請(qǐng)仔細(xì)閱讀第二日問(wèn)題的功能描述,應(yīng)嚴(yán)格區(qū)分輸入的有效域和輸出的有效域。捉蟲實(shí)踐1:很簡(jiǎn)單?3測(cè)試分析根據(jù)第二日問(wèn)題細(xì)化后的需求,分別從有效日期和無(wú)效輸入兩方面著手,可以設(shè)計(jì)至少12個(gè)測(cè)試用例,那么,這就是測(cè)試嗎?“很簡(jiǎn)單!我不需要任何計(jì)算機(jī)方面的知識(shí),只要我有點(diǎn)常識(shí),都可以設(shè)計(jì)這些用例啊。”當(dāng)我們的嘴角浮現(xiàn)出輕蔑的微笑時(shí),不妨深入思考如下問(wèn)題。Q:這些測(cè)試是如何設(shè)計(jì)得到的,是否存在一定的規(guī)律性?如果用別的日期來(lái)測(cè)試,能得到與這些數(shù)據(jù)一樣的測(cè)試效果嗎?A:僅憑拍腦袋來(lái)測(cè)試是不行的,需要通過(guò)引入更多測(cè)試方法來(lái)指導(dǎo)測(cè)試的設(shè)計(jì),以確保測(cè)試的效率。Q:這些測(cè)試的質(zhì)量如何?1800年1月1日到2050年12月31日之間的日期那么多,為什么在此僅設(shè)計(jì)了6個(gè)測(cè)試,足夠覆蓋嗎?在有效取值范圍之外的日期那么多,也僅有6個(gè)測(cè)試,是否覆蓋率太低?能不能直接選擇有效范圍內(nèi)的所有日期進(jìn)行窮舉測(cè)試?捉蟲實(shí)踐1:很簡(jiǎn)單?A:除了需要利用測(cè)試方法來(lái)提高測(cè)試效率之外,還需要引入測(cè)試標(biāo)準(zhǔn),根據(jù)標(biāo)準(zhǔn)來(lái)衡量測(cè)試工作的充分性,控制測(cè)試的成本。Q:這些測(cè)試如何執(zhí)行?A:目前給出的需求并未包含細(xì)節(jié),所以設(shè)計(jì)得到的測(cè)試只能用于測(cè)試指導(dǎo),例如,表中沒(méi)有描述輸入的操作步驟,無(wú)法做功能測(cè)試,而其輸出中又未明確函數(shù)形式,也無(wú)法做函數(shù)層面的測(cè)試。因此,這些測(cè)試是無(wú)法對(duì)應(yīng)實(shí)際的測(cè)試執(zhí)行的。Q:這些測(cè)試內(nèi)容如何管理?發(fā)現(xiàn)了缺陷如何處理?A:這些測(cè)試是無(wú)法管理的,因?yàn)檫@些測(cè)試內(nèi)容沒(méi)有編號(hào),沒(méi)有對(duì)應(yīng)測(cè)試人,沒(méi)有被測(cè)軟件、版本等信息,無(wú)法進(jìn)行責(zé)任劃定,發(fā)現(xiàn)了缺陷也不知如何建立二者的關(guān)聯(lián)。總之,上面的測(cè)試看起來(lái)很簡(jiǎn)單,實(shí)際上測(cè)試工作才剛剛開始,測(cè)試不是一件輕而易舉的事情。0%關(guān)于軟件測(cè)試,人們常常有一些認(rèn)識(shí)的誤區(qū),下面選擇幾個(gè)典型誤區(qū)加以闡述。(1)如果有良好的設(shè)計(jì)和高水平的程序員,就不需要測(cè)試了首先,從軟件開發(fā)的全生命周期來(lái)說(shuō),任何一個(gè)開發(fā)階段都有可能引入缺陷,特別是在需求分析階段,其引入的缺陷數(shù)量最多,且其導(dǎo)致的后果往往最嚴(yán)重,而良好的設(shè)計(jì)應(yīng)滿足的一個(gè)重要前提是需求的穩(wěn)定和準(zhǔn)確。其次,高水平的程序員也不能保證零缺陷。只要是人就一定會(huì)犯錯(cuò),水平再高的程序員也不能確保在他所提交的源代碼中無(wú)任何缺陷。軟件測(cè)試的認(rèn)識(shí)誤區(qū)(2)軟件測(cè)試并不創(chuàng)造任何代碼和產(chǎn)品,可以不需要測(cè)試在軟件項(xiàng)目小組中,開發(fā)人員的作用就像是建筑工人,從打地基到建造房屋,通過(guò)編寫代碼構(gòu)建軟件產(chǎn)品,形成可以運(yùn)行的系統(tǒng),完成用戶期望的功能,開發(fā)人員認(rèn)為自己的代碼肯定是沒(méi)有問(wèn)題的。程序員對(duì)自己的程序就如同父母對(duì)待自己的子女一樣,誰(shuí)能客觀地審視凝聚了自己無(wú)數(shù)心血而寫出來(lái)的代碼呢,更進(jìn)一步來(lái)說(shuō),測(cè)試自己的代碼等同于從自己的代碼中挑刺,這無(wú)疑是在否定自己的工作、貶低自己的能力,有誰(shuí)會(huì)這樣做呢?而測(cè)試員的作用就像工程監(jiān)理,會(huì)從用戶的角度來(lái)考察軟件產(chǎn)品,相對(duì)更加客觀,也更容易發(fā)現(xiàn)軟件中的缺陷。0%(3)測(cè)試等于調(diào)試測(cè)試是發(fā)現(xiàn)缺陷的過(guò)程,其前提條件是并不知道被測(cè)系統(tǒng)中是否存在缺陷,或者某個(gè)缺陷的觸發(fā)條件究竟是什么,因此需要通過(guò)關(guān)鍵數(shù)據(jù)和步驟來(lái)挖掘潛伏的缺陷。而調(diào)試是修復(fù)缺陷的過(guò)程,其前提條件是已知缺陷的存在,即已經(jīng)清楚在怎樣的條件下會(huì)準(zhǔn)確觸發(fā)某個(gè)缺陷,但并不知道該缺陷是由哪個(gè)函數(shù)中的哪段代碼出錯(cuò)而導(dǎo)致,因此,需要通過(guò)調(diào)試來(lái)定位出錯(cuò)代碼行,從而最終修改代碼、消滅缺陷。軟件測(cè)試的認(rèn)識(shí)誤區(qū)(4)軟件需求規(guī)格說(shuō)明應(yīng)詳細(xì)地包含所有用戶需求軟件測(cè)試的最終目的是確保軟件產(chǎn)品符合用戶需求,因此,用戶需求是軟件測(cè)試的唯一標(biāo)準(zhǔn),SRS是為了開發(fā)的方便而以規(guī)范的形式展現(xiàn)的用戶需求,這存在一個(gè)質(zhì)量與成本的平衡問(wèn)題。并非所有內(nèi)容都需要寫入SRS,若需將軟件使用中遇到的約定俗成的內(nèi)容也全部寫入SRS,那么,SRS將變得異常龐大,文檔工作量會(huì)大大影響到開發(fā)的進(jìn)度,就投入產(chǎn)出比而言,回報(bào)率太低。0%(5)軟件測(cè)試可以提高軟件質(zhì)量通過(guò)軟件測(cè)試只能發(fā)現(xiàn)和匯報(bào)被測(cè)系統(tǒng)中存在的缺陷,但軟件測(cè)試不負(fù)責(zé)修復(fù)缺陷,且受到時(shí)間、成本等方面的限制,不是所有發(fā)現(xiàn)的缺陷都能在產(chǎn)品發(fā)布之前得到及時(shí)的修復(fù),因此,即使通過(guò)軟件測(cè)試發(fā)現(xiàn)了大量缺陷,但這些缺陷不經(jīng)過(guò)修復(fù)是不可能提高軟件質(zhì)量的。從這一角度出發(fā),也說(shuō)明了軟件測(cè)試只是軟件質(zhì)量保證的一個(gè)重要手段,測(cè)試可以向管理人員提供數(shù)據(jù)和事實(shí),如測(cè)試用例對(duì)功能點(diǎn)的覆蓋率、測(cè)試用例的通過(guò)率、累計(jì)打開和關(guān)閉缺陷數(shù)等,從而幫助管理人員做出正確的決策,更好地控制軟件質(zhì)量,而非提高軟件質(zhì)量。軟件測(cè)試的認(rèn)識(shí)誤區(qū)(6)測(cè)試是沒(méi)有技術(shù)含量的測(cè)試工作的特點(diǎn)決定了從事軟件測(cè)試從業(yè)人員的水平參差不齊,但測(cè)試人員與開發(fā)人員的金字塔結(jié)構(gòu)類似,高水平的測(cè)試人員除了需要掌握有關(guān)系統(tǒng)開發(fā)、數(shù)據(jù)庫(kù)、中間件、協(xié)議等多方面知識(shí),還需要熟練掌握測(cè)試用例的設(shè)計(jì)技巧、測(cè)試腳本的開發(fā)等測(cè)試相關(guān)技能,并不比開發(fā)人員遜色。實(shí)際上,2005年之后,微軟公司逐漸不再招聘太多軟件測(cè)試工程師,代之以會(huì)編寫自動(dòng)化測(cè)試工具的軟件開發(fā)測(cè)試工程師(SoftwareTestingEngineerinTest),并將大量低端測(cè)試工作外包出去,在勞動(dòng)力成本更低的國(guó)家完成。03軟件缺陷的概念1.某網(wǎng)站電話門事件

2012年2月,某全國(guó)性的申請(qǐng)工作又開始了,在指定的時(shí)間內(nèi),大家紛紛按照要求登錄該申請(qǐng)網(wǎng)站進(jìn)行網(wǎng)上報(bào)名,但是,網(wǎng)站剛剛開放申報(bào)后的24小時(shí)內(nèi),網(wǎng)站上所留的熱線電話就因用戶投訴幾乎被打爆而不得不關(guān)閉。緊接著,在開放申報(bào)的第二天,網(wǎng)站上臨時(shí)給出了一個(gè)幫助頁(yè)面,針對(duì)各種能夠解決的用戶投訴給出了解決的辦法,但是更多的缺陷只能依靠用戶自己碰運(yùn)氣來(lái)解決了。慘痛的教訓(xùn):小蟲子,大問(wèn)題慘痛的教訓(xùn):小蟲子,大問(wèn)題(1)選擇考試種類后,需填入的各單科成績(jī)項(xiàng)(包括聽力成績(jī)、口試成績(jī)、閱讀成績(jī)、寫作成績(jī))與實(shí)際發(fā)放給考生的成績(jī)單不一致,考生成績(jī)單僅包含聽力、口試和筆試成績(jī),因此,填寫網(wǎng)站信息時(shí)只能將閱讀和寫作成績(jī)填為零分,且提交后“考試種類”這一項(xiàng)總是自動(dòng)清空。(2)申請(qǐng)表在填寫時(shí)的效果與打印預(yù)覽的效果不一致。(3)申請(qǐng)表的預(yù)覽效果與最終打印效果不一致。(4)申請(qǐng)書的提交在9:30到11:00的高峰期無(wú)法成功執(zhí)行,在其他時(shí)間則可能需重復(fù)嘗試十幾次之后才能成功。2.鋼水外溢事件

2005年,某鋼廠的一座鋼塔發(fā)生鋼水外溢事件,現(xiàn)場(chǎng)工作的工人全部當(dāng)場(chǎng)遇難。這一事件的起因是:為了保證鋼塔的正常工作,車間現(xiàn)場(chǎng)安裝了監(jiān)控設(shè)備,主要用于控制鋼塔的工作環(huán)境,即通過(guò)傳感器采集鋼塔內(nèi)的溫度、壓力等數(shù)據(jù),并傳給監(jiān)控設(shè)備中的監(jiān)控軟件進(jìn)行處理,一旦發(fā)現(xiàn)有偏高或偏低的情況,就通過(guò)采取相應(yīng)措施來(lái)調(diào)整鋼塔環(huán)境,使之一直保持正常工作狀態(tài)。然而監(jiān)控設(shè)備中安裝的監(jiān)控軟件由于受到生產(chǎn)現(xiàn)場(chǎng)其他設(shè)備的電磁于擾影響,未及時(shí)對(duì)采集的原始數(shù)據(jù)進(jìn)行去噪處理,導(dǎo)致鋼塔內(nèi)的工作狀態(tài)超標(biāo)且未及時(shí)發(fā)現(xiàn),最終釀成了這一重大安全事故。導(dǎo)致這一事件的主要原因應(yīng)該是需求分析不完善,未深入了解用戶的實(shí)際使用環(huán)境,而導(dǎo)致軟件需求存在重大的功能遺漏,這一遺漏單純依靠測(cè)試人員是難以發(fā)現(xiàn)的。慘痛的教訓(xùn):小蟲子,大問(wèn)題3.客輪超載事件

某客運(yùn)碼頭曾為了提高單位的信息化水平,特地開發(fā)了一套自動(dòng)售票系統(tǒng),即通過(guò)該系統(tǒng)來(lái)方便旅客購(gòu)買船票,并嚴(yán)格控制船只的載客量,一旦達(dá)到某船只的規(guī)定載客量,系統(tǒng)將不再出售船票。但系統(tǒng)中存在一個(gè)小Bug,且在系統(tǒng)投入使用后很長(zhǎng)時(shí)間都沒(méi)有發(fā)現(xiàn),險(xiǎn)些導(dǎo)致重大事故。該Bug是把某類小型船只的載客量誤算成大型船只的載客量,使得該類船只的實(shí)際出售船票數(shù)遠(yuǎn)遠(yuǎn)大于應(yīng)出售的船票數(shù),并直接導(dǎo)致船只的實(shí)際載客人數(shù)比核定載客人數(shù)大大超員。慘痛的教訓(xùn):小蟲子,大問(wèn)題慘痛的教訓(xùn):小蟲子,大問(wèn)題這一Bug是由海上巡邏艇在一次海上巡查任務(wù)中無(wú)意發(fā)現(xiàn)的,當(dāng)時(shí)巡警發(fā)現(xiàn)某小型船只的吃水很深,靠上去檢查后才發(fā)現(xiàn)該船實(shí)際載客量早已超過(guò)核定載客量,經(jīng)后續(xù)調(diào)查才最終發(fā)現(xiàn)是自動(dòng)售票系統(tǒng)原始代碼中存在一個(gè)小Bug而造成的??雌饋?lái)這是系統(tǒng)自身缺陷造成的安全隱患,所幸并未出事故,然而也從一個(gè)側(cè)面反映出相關(guān)驗(yàn)收部門監(jiān)管不利,未對(duì)系統(tǒng)進(jìn)行嚴(yán)格的驗(yàn)收測(cè)試。因此,對(duì)于軟件測(cè)試人員來(lái)說(shuō),一個(gè)小小的Bug是很可能會(huì)帶來(lái)巨大災(zāi)難的,測(cè)試人員和開發(fā)人員都責(zé)任重大。4.服務(wù)器頻繁崩潰事件

某公司于2011年8月投入運(yùn)行一個(gè)支持問(wèn)題解決的Web應(yīng)用系統(tǒng),作為內(nèi)部員工工作使用,上線后一段時(shí)間內(nèi)該系統(tǒng)隨著數(shù)據(jù)量的迅速增加一直運(yùn)行良好,并未出現(xiàn)明顯的性能下降情況,但從2012年4月開始卻頻繁出現(xiàn)服務(wù)器崩潰的情況,且為不定期崩潰,有時(shí)相隔5、6天,有時(shí)相隔10來(lái)天,并無(wú)明顯的規(guī)律,服務(wù)器崩潰對(duì)員工的正常工作帶來(lái)了不良影響,導(dǎo)致工作效率下降。慘痛的教訓(xùn):小蟲子,大問(wèn)題慘痛的教訓(xùn):小蟲子,大問(wèn)題通過(guò)測(cè)試發(fā)現(xiàn),系統(tǒng)日志記錄為內(nèi)存溢出問(wèn)題,而對(duì)于基于Java開發(fā)的系統(tǒng)來(lái)說(shuō),Java語(yǔ)言本身的內(nèi)存回收機(jī)制不應(yīng)導(dǎo)致內(nèi)存溢出的問(wèn)題,經(jīng)進(jìn)一步調(diào)試才找到最終原因是由于在實(shí)現(xiàn)下載功能的程序代碼中用到ByteArrayOutputStream類作為數(shù)據(jù)緩存流,在htp流輸出前將關(guān)閉緩存流,而Apache和Tomcat通信協(xié)議AJP本身是一個(gè)二進(jìn)制流協(xié)議,導(dǎo)致在htp流輸出數(shù)據(jù)時(shí)越界,且數(shù)據(jù)長(zhǎng)度無(wú)法確定,這樣modjk(Apache的一個(gè)模塊,負(fù)責(zé)與Tomcat通信)在接收下載數(shù)據(jù)時(shí)內(nèi)存瞬間撐大,而modjk本身存在一個(gè)bug,即如果它的內(nèi)存在瞬間撐大,則modjk可能回收不了這些內(nèi)存,使得Apache內(nèi)存無(wú)限制的增加(每下載一個(gè)附件就會(huì)增長(zhǎng)1~2MB),最終崩潰。慘痛的教訓(xùn):小蟲子,大問(wèn)題在該系統(tǒng)上線運(yùn)行的初期,用戶使用量不是很大,文件下載功能使用較少,且經(jīng)常重啟服務(wù)器,因此,并未出現(xiàn)該缺陷,隨著用戶使用量的不斷增大才發(fā)現(xiàn)該缺陷。由此可見,在軟件產(chǎn)品交付給用戶之前要想發(fā)現(xiàn)所有的缺陷往往是不可能的,部分缺陷要在特定的使用條件下才能觸發(fā)。同時(shí)也說(shuō)明,雖然開源代碼是大家所歡迎的,但在自己的產(chǎn)品中加入開源代碼往往是有風(fēng)險(xiǎn)的,不能因其開源就對(duì)其完全放心,開源代碼也可能是植入產(chǎn)品中的定時(shí)炸彈。5.豐田汽車黑匣子閱讀器缺陷

2010年9月中旬,日本頭號(hào)汽車制造商豐田汽車開始在全球大規(guī)模召回包括卡羅拉、凱美瑞、威馳、雅力士在內(nèi)的4款車型1100多萬(wàn)輛車,接到的相關(guān)訴訟達(dá)到數(shù)百起,起因源于豐田車突然加速時(shí)的黑匣子閱讀器軟件缺陷導(dǎo)致撞車事故。而在此之前的一年中,豐田公司已經(jīng)因?yàn)橛烷T踏板等問(wèn)題在全球范圍內(nèi)召回了超過(guò)800萬(wàn)輛汽車。豐田汽車表示,用于對(duì)黑匣子(即事故數(shù)據(jù)記錄器,EventDataRecorders)進(jìn)行讀取的閱讀器存在一個(gè)軟件方面的故障,該故障可能導(dǎo)致數(shù)據(jù)記錄模塊出現(xiàn)記錄錯(cuò)誤,誤導(dǎo)了事故發(fā)生時(shí)司機(jī)對(duì)于車速的判斷,使車輛突然失去控制地加速到時(shí)速100英里以上,并導(dǎo)致司機(jī)無(wú)法在突然的加速中控制車輛而造成事故。慘痛的教訓(xùn):小蟲子,大問(wèn)題慘痛的教訓(xùn):小蟲子,大問(wèn)題自2010年3月份開始大規(guī)模爆發(fā)豐田汽車突然加速事故后的幾個(gè)月,豐田汽車一直持不配合的態(tài)度,并想方設(shè)法逃避責(zé)任,例如,故意不公開汽車黑匣子資料、將責(zé)任歸咎為駕駛?cè)藛T誤將油門當(dāng)成剎車使用的人為因素等。然而,在各方面的調(diào)查壓力下,豐田汽車不得不承認(rèn)事實(shí)真相,并在9月份開始全球的大規(guī)模召回存在黑匣子缺陷的車輛。至2011年1月,美國(guó)國(guó)家公路交通安全局表示已收到約3000份關(guān)于豐田汽車駕駛?cè)送蝗患铀俚膱?bào)告,包括93例死亡報(bào)告。美國(guó)7家保險(xiǎn)公司起訴豐田汽車公司,索賠至少23萬(wàn)美元,以補(bǔ)償保險(xiǎn)商因豐田車突然加速造成事故而增加的賠償金。但是,豐田汽車的麻煩并未結(jié)束,多起事件導(dǎo)致對(duì)豐田汽車質(zhì)量的懷疑才是豐田汽車需要面對(duì)的最大問(wèn)題。軟件缺陷的定義RonPatton給出了軟件缺陷的經(jīng)典定義,他認(rèn)為,出于軟件行業(yè)的原因,只有符合下列5條規(guī)則才能叫軟件缺陷(注:作者根據(jù)自己的理解對(duì)原始定義進(jìn)行了少許改動(dòng)):(1)軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢,或者最終用戶認(rèn)為不好。(2)軟件未達(dá)到需求規(guī)格說(shuō)明書中指明的功能。(3)軟件出現(xiàn)了需求規(guī)格說(shuō)明書中指明不會(huì)出現(xiàn)的錯(cuò)誤。(4)軟件功能超出需求規(guī)格說(shuō)明書中指明的范圍。(5)軟件未達(dá)到需求規(guī)格說(shuō)明書中雖未指出但應(yīng)達(dá)到的目標(biāo)。軟件缺陷,簡(jiǎn)單地說(shuō),就是Bug,即小蟲子,1945年9月9日下午3點(diǎn)時(shí),美國(guó)海軍編程員、編譯器的發(fā)明者GraceHopper(當(dāng)時(shí)是Hopper中尉)正率領(lǐng)著他的小組構(gòu)造“MarkII型”計(jì)算機(jī)這個(gè)龐然大物,該計(jì)算機(jī)使用了大量的繼電器,被放置在一棟老建筑中,在9月的炎熱天氣里,房間內(nèi)沒(méi)有空調(diào),所有窗戶都敞開著散熱。軟件缺陷的定義(2)軟件未達(dá)到需求規(guī)格說(shuō)明書中指明的功能該規(guī)則是指若被測(cè)系統(tǒng)不能提供在SRS中所指明應(yīng)提供的功能,則對(duì)應(yīng)一個(gè)軟件缺陷。該規(guī)則對(duì)應(yīng)的是遺漏缺陷,主要針對(duì)系統(tǒng)有效輸入或有效操作下的功能的測(cè)試。用戶最關(guān)心的往往是當(dāng)其按照正確的流程、正確的操作輸入正確的數(shù)據(jù)時(shí),系統(tǒng)向其提供的功能能否達(dá)到用戶所期望的結(jié)果。該規(guī)則的達(dá)成包含兩方面的含義:①基本功能的保證,即應(yīng)確保能實(shí)現(xiàn)有效輸入下的基本功能;②性能的保證,即在保證提供基本功能之外,還能確保達(dá)到相關(guān)的性能指標(biāo)。下面簡(jiǎn)單談?wù)勔陨弦?guī)則的具體含義。(1)軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢,或者最終用戶認(rèn)為不好從軟件測(cè)試的標(biāo)準(zhǔn)定義可知,軟件測(cè)試的最終目的是確保軟件滿足用戶需求,因此,只要最終用戶認(rèn)為軟件不好,當(dāng)然對(duì)應(yīng)到一個(gè)缺陷。軟件缺陷的定義(3)軟件出現(xiàn)了需求規(guī)格說(shuō)明書中指明不會(huì)出現(xiàn)的錯(cuò)誤該規(guī)則是指若被測(cè)系統(tǒng)不能提供在SRS中所要求的容錯(cuò)性,即無(wú)法識(shí)別用戶的無(wú)效輸入或無(wú)效操作,并給予正確的反饋,則對(duì)應(yīng)一個(gè)軟件缺陷。該規(guī)則對(duì)應(yīng)的是過(guò)錯(cuò)缺陷,主要針對(duì)系統(tǒng)無(wú)效輸入或無(wú)效操作下的功能的測(cè)試。該規(guī)則的達(dá)成也包含兩方面的含義:①系統(tǒng)能否應(yīng)對(duì)所有可能的無(wú)效用戶輸入情況,包括無(wú)效輸入數(shù)據(jù)和無(wú)效操作;②系統(tǒng)對(duì)每種無(wú)效輸入情況,應(yīng)以怎樣的合理方式進(jìn)行響應(yīng)。軟件缺陷的定義(4)軟件功能超出需求規(guī)格說(shuō)明書中指明的范圍該條規(guī)則看似很奇怪,既然是SRS中沒(méi)有提到的功能,是屬于不給錢的部分,開發(fā)人員為何會(huì)去實(shí)現(xiàn)呢?且軟件要完成的功能越多,引入缺陷的風(fēng)險(xiǎn)越大,將帶來(lái)更大的測(cè)試工作量并提高軟件開發(fā)成本,這種吃力不討好的事情,誰(shuí)會(huì)主動(dòng)去做?這里有兩種可能性。①開發(fā)人員認(rèn)為SRS不完善,因此而自行添加某些自認(rèn)為用戶需要的功能;②開發(fā)人員為了自己開發(fā)和調(diào)試的方便而加入的功能,如一些快捷鍵功能、測(cè)試代碼等。軟件缺陷的定義(5)軟件未達(dá)到需求規(guī)格說(shuō)明書中雖未指出但應(yīng)達(dá)到的目標(biāo)該規(guī)則是指,有些目標(biāo)是SRS中沒(méi)有明確指出,而實(shí)際上被測(cè)系統(tǒng)又應(yīng)該達(dá)到的。總之,從以上5方面的缺陷定義可以看出,軟件測(cè)試員的主要任務(wù)是:①根據(jù)用戶的意見和反饋執(zhí)行測(cè)試;②依據(jù)SRS的描述,針對(duì)系統(tǒng)在有效輸入及有效操作下的正常功能進(jìn)行測(cè)試;③依據(jù)SRS的描述或個(gè)人經(jīng)驗(yàn),針對(duì)系統(tǒng)在無(wú)效輸入或無(wú)效操作下的軟件容錯(cuò)能力進(jìn)行測(cè)試;④開發(fā)人員應(yīng)遵循良好的開發(fā)習(xí)慣,與用戶和項(xiàng)目組成員及時(shí)溝通,避免植入無(wú)依據(jù)的軟件缺陷;⑤需求分析階段強(qiáng)調(diào)測(cè)試專家的介入,從測(cè)試的視角完善SRS,提高系統(tǒng)的外部環(huán)境容錯(cuò)能力。捉蟲實(shí)踐2:蟲子捉完了嗎?1.功能描述第一次測(cè)試嘗試中沒(méi)有明確給出一個(gè)待測(cè)的軟件系統(tǒng),現(xiàn)在用一個(gè)Windows類型的軟件系統(tǒng)來(lái)實(shí)現(xiàn)第二日問(wèn)題的功能。第二日問(wèn)題軟件(以下簡(jiǎn)稱NextDateV1系統(tǒng))的運(yùn)行界面如圖1.4所示。捉蟲實(shí)踐2:蟲子捉完了嗎?其功能簡(jiǎn)述如下:(1)有效日期的正確計(jì)算功能名稱;有效日期的正確計(jì)算功能編號(hào):F01功能說(shuō)明:用戶輸入有效的年份、月份和日期,單擊“計(jì)算”按鈕,系統(tǒng)將自動(dòng)計(jì)算并輸出下一天的日期,輸出文本框中的文字形式為“Tomorrow'sdateis:X-X-X.”。其中有效日期為1800年1月1日到2050年12月31日之間的所有日期。(2)無(wú)效日期的合理提示功能名稱:無(wú)效日期的合理提示功能編號(hào):F02功能說(shuō)明:年份、月份和日期這3個(gè)輸入條件中只要任意一個(gè)輸入條件無(wú)效,則系統(tǒng)不執(zhí)行日期的計(jì)算,清除輸出文本框的文字,并彈出消息提示輸入無(wú)效。捉蟲實(shí)踐2:蟲子捉完了嗎?(3)無(wú)條件文本清除功能名稱:無(wú)條件文本清除功能編號(hào):F03功能說(shuō)明:在任何時(shí)候單擊“清除輸入”按鈕,系統(tǒng)所有編輯框中的文字都將清除,即顯示為空白。(4)無(wú)條件確定功能名稱:無(wú)條件確定功能編號(hào):F04功能說(shuō)明:在任何時(shí)候單擊“確定”按鈕,系統(tǒng)窗口將關(guān)閉。(5)無(wú)條件取消功能名稱:無(wú)條件取消功能編號(hào):F05功能說(shuō)明:在任何時(shí)候單擊“取消”按鈕,系統(tǒng)窗口將關(guān)閉。捉蟲實(shí)踐2:蟲子捉完了嗎?2.開始測(cè)試

針對(duì)需求中提到的5個(gè)功能點(diǎn),設(shè)計(jì)的測(cè)試見表1.2。表中“N/A”表示不需要輸入數(shù)據(jù)。捉蟲實(shí)踐2:蟲子捉完了嗎?3.測(cè)試分析

與第一次測(cè)試相比,本次測(cè)試有了一定的改進(jìn),體現(xiàn)在如下方面:①針對(duì)需求進(jìn)行明確和細(xì)化,在每個(gè)測(cè)試中有明確的操作步驟和輸入數(shù)據(jù),測(cè)試可以執(zhí)行;②對(duì)照SRS設(shè)計(jì)測(cè)試,至少可以滿足測(cè)試完全覆蓋所有功能點(diǎn)。軟件缺陷的來(lái)源及代價(jià)軟件缺陷產(chǎn)生的原因有很多,部分典型原因包括:(1)軟件及系統(tǒng)本身的復(fù)雜性不斷增長(zhǎng),使得測(cè)試的范圍和難度也隨之增大;(2)與用戶的溝通不暢使得無(wú)法及時(shí)獲取最真實(shí)的用戶需求;(3)需求不斷變化,特別是敏捷開發(fā)模式下,測(cè)試開發(fā)和執(zhí)行更難以跟上需求變化的步伐;(4)開發(fā)人員的自大、勞累和追求個(gè)性化,導(dǎo)致不斷植入各種缺陷;(5)進(jìn)度壓力導(dǎo)致測(cè)試被壓縮,無(wú)法進(jìn)行充分的測(cè)試;(6)對(duì)文檔的輕視致使測(cè)試缺乏依據(jù),帶來(lái)測(cè)試的漏洞。軟件缺陷的來(lái)源及代價(jià)實(shí)際上,在軟件開發(fā)的各階段均可能引入缺陷,并導(dǎo)致不同程度的損失,如圖1.5所示。04測(cè)試用例的概念測(cè)試用例的定義IEEEStandard610(1990)對(duì)測(cè)試用例(TestCase,TC)給出的定義為:測(cè)試用例是一組測(cè)試輸入、執(zhí)行條件和預(yù)期結(jié)果,目的是要滿足一個(gè)特定的目標(biāo),如執(zhí)行一條特定的程序路徑或檢驗(yàn)是否符合一個(gè)特定的需求的用例??杀硎境桑簻y(cè)試用例=輸入+輸出+測(cè)試環(huán)境其中,輸入是指測(cè)試數(shù)據(jù)和操作步驟,輸出指系統(tǒng)的預(yù)期執(zhí)行結(jié)果,測(cè)試環(huán)境是系統(tǒng)環(huán)境設(shè)置,即進(jìn)行軟件測(cè)試所必需的工作平臺(tái)和前提條件。測(cè)試用例的定義注意:軟件測(cè)試環(huán)境與資源規(guī)劃是測(cè)試計(jì)劃中的一項(xiàng)重要內(nèi)容,測(cè)試環(huán)境的配置是測(cè)試實(shí)施的重要環(huán)節(jié),測(cè)試環(huán)境是否適合將嚴(yán)重影響測(cè)試結(jié)果的真實(shí)性和正確性。受篇幅限制,在此僅對(duì)其進(jìn)行簡(jiǎn)要說(shuō)明,有關(guān)測(cè)試環(huán)境的更多內(nèi)容,可查閱其他書籍。測(cè)試環(huán)境包括硬件環(huán)境、軟件環(huán)境、網(wǎng)絡(luò)環(huán)境和歷史數(shù)據(jù),其中:(1)硬件環(huán)境指進(jìn)行測(cè)試所必需的服務(wù)器、客戶端、網(wǎng)絡(luò)連接設(shè)備,以及打印機(jī)、掃描儀等輔助硬件設(shè)備所構(gòu)成的環(huán)境,它是軟件運(yùn)行及提供部分功能的必要條件;(2)軟件環(huán)境指被測(cè)軟件運(yùn)行時(shí)的操作系統(tǒng)、數(shù)據(jù)庫(kù)及其他應(yīng)用軟件等構(gòu)成的環(huán)境,它是應(yīng)用軟件運(yùn)行的基礎(chǔ);(3)網(wǎng)絡(luò)環(huán)境主要指針對(duì)C/S和B/S架構(gòu)的軟件;(4)歷史數(shù)據(jù)是指測(cè)試用例執(zhí)行所需初始化的各項(xiàng)數(shù)據(jù)。測(cè)試用例的設(shè)計(jì)對(duì)于某個(gè)測(cè)試對(duì)象(如一個(gè)函數(shù)),其輸入數(shù)據(jù)大致可分為以下3類:(1)正常數(shù)據(jù)符合SRS,合理、有效的輸入數(shù)據(jù),即被測(cè)對(duì)象可以接受的數(shù)據(jù),例如函數(shù)的某個(gè)輸入?yún)?shù)的有效取值范圍。(2)錯(cuò)誤數(shù)據(jù)不符合SRS,無(wú)意義、無(wú)效的輸入數(shù)據(jù),即被測(cè)對(duì)象不能接受的數(shù)據(jù),例如函數(shù)的某個(gè)輸入?yún)?shù)的無(wú)效取值范圍。測(cè)試用例由輸入數(shù)據(jù)、操作步驟、預(yù)期執(zhí)行結(jié)果及測(cè)試環(huán)境所構(gòu)成,測(cè)試用例的設(shè)計(jì)主要也針對(duì)這幾方面展開。一個(gè)原始而自然的設(shè)計(jì)方法就是對(duì)輸入和輸出進(jìn)行窮舉,針對(duì)每一種有效和無(wú)效的組合情況進(jìn)行測(cè)試。測(cè)試用例的設(shè)計(jì)設(shè)計(jì)測(cè)試用例就是分別從以上3類數(shù)據(jù)中選擇典型的測(cè)試數(shù)據(jù)來(lái)測(cè)試被測(cè)對(duì)象,為確保測(cè)試效率,基本原則如下:①測(cè)試用例的數(shù)量越少越好。測(cè)試用例越少,用例記錄、執(zhí)行、結(jié)果檢查、管理所對(duì)應(yīng)的工作量越少。②測(cè)試用例的典型性越高越好。測(cè)試用例具有典型性體現(xiàn)在每個(gè)測(cè)試用例代表被測(cè)對(duì)象對(duì)某一類數(shù)據(jù)的處理方式。③測(cè)試用例對(duì)缺陷的定位性越強(qiáng)越好。當(dāng)一組測(cè)試用例執(zhí)行后發(fā)現(xiàn)不通過(guò)時(shí),應(yīng)能快速推測(cè)缺陷原因,利于程序員快速定位缺陷。(3)邊界數(shù)據(jù)介于正常數(shù)據(jù)與錯(cuò)誤數(shù)據(jù)之間的臨界數(shù)據(jù),邊界數(shù)據(jù)可能是有效的輸入數(shù)據(jù),也有可能是無(wú)效的輸入數(shù)據(jù),這要根據(jù)SRS的具體規(guī)定而定。捉蟲實(shí)踐3:如何提高效率?1.功能描述本次實(shí)踐主要側(cè)重測(cè)試數(shù)據(jù)的選擇,功能描述仍參照1.2.3節(jié),不考慮具體的操作和系統(tǒng)界面。2.開始測(cè)試考慮用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)第二日問(wèn)題的核心功能,該函數(shù)主要設(shè)計(jì)3個(gè)整型輸入?yún)?shù)Year、Month、Day,根據(jù)3個(gè)參數(shù)的有效取值范圍可分析得到3類數(shù)據(jù),并從每類數(shù)據(jù)中選擇若干典型值,見表1.3。捉蟲實(shí)踐3:如何提高效率?以3個(gè)參數(shù)的3組典型值,分別構(gòu)造測(cè)試用例的輸入,可得部分測(cè)試用例如表1.4所示。受篇幅所限,表1.4僅給出了27個(gè)測(cè)試,若按照全組合的方式,可以計(jì)算出測(cè)試用例的總數(shù)為9×9×9,即729個(gè)測(cè)試(即每個(gè)輸入?yún)?shù)取9個(gè)典型值)。捉蟲實(shí)踐3:如何提高效率?3.測(cè)試分析本次測(cè)試在第二次測(cè)試的基礎(chǔ)上又有了明顯的改進(jìn),體現(xiàn)在如下方面:①?gòu)恼?shù)據(jù)、錯(cuò)誤數(shù)據(jù)和邊界數(shù)據(jù)的角度,設(shè)計(jì)了更多具有更好典型性的測(cè)試用例,針對(duì)普通日期、月末日期、不存在的日期和無(wú)效輸入均有用例的覆蓋;②每個(gè)測(cè)試用例給出了唯一的標(biāo)識(shí),便于測(cè)試用例的查找和管理。捉蟲實(shí)踐3:如何提高效率?(1)測(cè)試用例的有效性測(cè)試用例之間存在嚴(yán)重的冗余。(2)測(cè)試用例的規(guī)模僅從3類數(shù)據(jù)的角度設(shè)計(jì)測(cè)試用例,得到的測(cè)試用例數(shù)量太多,對(duì)于這個(gè)簡(jiǎn)單的函數(shù)層面的測(cè)試,就得到了幾百個(gè)測(cè)試用例,如果全部手動(dòng)執(zhí)行,測(cè)試人員會(huì)瘋掉的。(3)缺陷定位問(wèn)題在本次測(cè)試中,設(shè)計(jì)的部分測(cè)試用例對(duì)缺陷的定位性較差。捉蟲實(shí)踐3:如何提高效率?(4)缺陷管理問(wèn)題對(duì)于失敗的測(cè)試用例,將對(duì)應(yīng)存在軟件缺陷,該如何記錄這些缺陷?怎樣通過(guò)清晰簡(jiǎn)潔的方式向開發(fā)人員報(bào)告所發(fā)現(xiàn)的缺陷?是否能夠確保所有缺陷在產(chǎn)品交付給用戶之前都能夠得到良好的修復(fù)?從經(jīng)濟(jì)學(xué)的角度來(lái)說(shuō),在最短的時(shí)間內(nèi)、以最少的人力發(fā)現(xiàn)最嚴(yán)重和最多的缺陷才能保證測(cè)試的效率。一方面,需要針對(duì)正常數(shù)據(jù)、邊界數(shù)據(jù)、錯(cuò)誤數(shù)據(jù),以及系統(tǒng)業(yè)務(wù)流程等不同的方面,進(jìn)行測(cè)試方法研究,利用規(guī)范的測(cè)試方法,在測(cè)試用例的規(guī)模、有效性、缺陷定位能力等方面提高測(cè)試的效率。另一方面,需要引入自動(dòng)化測(cè)試,將測(cè)試人員從枯燥的測(cè)試執(zhí)行工作中解放出來(lái),讓機(jī)器自動(dòng)、準(zhǔn)確地完成測(cè)試的執(zhí)行。05自動(dòng)化測(cè)試自動(dòng)化測(cè)試的定義自動(dòng)化測(cè)試涉及測(cè)試流程、測(cè)試體系、自動(dòng)化編譯及自動(dòng)化測(cè)試等多方面內(nèi)容,而不僅僅是一個(gè)技術(shù)和工具的問(wèn)題。隨著軟件規(guī)模和復(fù)雜度的不斷攀升,軟件測(cè)試的難度和工作量不斷增大,單純依靠手動(dòng)測(cè)試已經(jīng)無(wú)法滿足項(xiàng)目進(jìn)度、風(fēng)險(xiǎn)及成本控制的需要,必須引入自動(dòng)化測(cè)試。自動(dòng)化測(cè)試不僅能夠提供測(cè)試成功經(jīng)驗(yàn),提供對(duì)完整的測(cè)試流程的支持和各種測(cè)試的自動(dòng)化實(shí)現(xiàn),其本身也是支持盡早測(cè)試和連續(xù)測(cè)試的強(qiáng)有力的手段,包括支持測(cè)試指標(biāo)的實(shí)時(shí)提取、項(xiàng)目質(zhì)量的實(shí)時(shí)監(jiān)控、支持每個(gè)迭代周期的增量測(cè)試和回歸測(cè)試等。所謂自動(dòng)化測(cè)試是相對(duì)手動(dòng)測(cè)試而存在的,它是通過(guò)測(cè)試工具、測(cè)試腳本(TestScripts)等手段,按照測(cè)試工程師的預(yù)定計(jì)劃對(duì)軟件產(chǎn)品進(jìn)行自動(dòng)的測(cè)試,從而驗(yàn)證軟件是否滿足用戶的需求。自動(dòng)化測(cè)試具有良好的可重復(fù)性、可操作性和高效率等特點(diǎn),是提高測(cè)試覆蓋率和可靠性的重要手段。自動(dòng)化測(cè)試的任務(wù)自動(dòng)化測(cè)試到底能做什么?在回答這個(gè)問(wèn)題之前,確實(shí)需要認(rèn)真思考一下,希望自動(dòng)化測(cè)試為我們做什么?對(duì)于不同的項(xiàng)目,在不同的階段,自動(dòng)化測(cè)試的目標(biāo)是不同的,例如希望改進(jìn)測(cè)試過(guò)程,提高測(cè)試執(zhí)行效率,或者希望提高測(cè)試覆蓋率等。進(jìn)一步來(lái)說(shuō),針對(duì)各個(gè)開發(fā)階段,必須明確的問(wèn)題包括:共需完成哪些工作,有哪些工作是適于采用自動(dòng)化測(cè)試來(lái)完成的,受到測(cè)試團(tuán)隊(duì)的條件限制,可以采用怎樣的方式、利用哪些工具來(lái)實(shí)現(xiàn)這些自動(dòng)化測(cè)試內(nèi)容。自動(dòng)化測(cè)試的任務(wù)以單元測(cè)試為例,如果是以函數(shù)為單元,針對(duì)重要或復(fù)雜的函數(shù)進(jìn)行單元測(cè)試,那么希望自動(dòng)化測(cè)試做些什么呢?首先來(lái)看看采用手動(dòng)測(cè)試時(shí),需要做的測(cè)試工作有哪些:(1)對(duì)源代碼進(jìn)行走讀,查找源代碼中的常見缺陷,如變量未聲明就使用、不同數(shù)據(jù)類型變量之間的比較等;(2)查看程序結(jié)構(gòu),對(duì)源代碼的質(zhì)量進(jìn)行評(píng)價(jià),如判斷程序的復(fù)雜性是否符合要求、程序邏輯設(shè)計(jì)是否合理等;(3)使用多種測(cè)試方法,針對(duì)函數(shù)設(shè)計(jì)測(cè)試用例,執(zhí)行測(cè)試用例,記錄測(cè)試結(jié)果和缺陷;(4)根據(jù)測(cè)試用例和發(fā)現(xiàn)的缺陷對(duì)程序測(cè)試覆蓋程度和被測(cè)函數(shù)質(zhì)量進(jìn)行分析,得出結(jié)論。自動(dòng)化測(cè)試的任務(wù)接下來(lái),從這些手動(dòng)測(cè)試工作中可以得到相應(yīng)的測(cè)試需求,即希望自動(dòng)化測(cè)試所做的工作:(1)自動(dòng)對(duì)源代碼進(jìn)行走讀,查找源代碼中的部分典型缺陷;(2)通過(guò)某些復(fù)雜度模型,計(jì)算基于結(jié)構(gòu)、代碼行、變量數(shù)等可量化的指標(biāo),自動(dòng)對(duì)源代碼的質(zhì)量進(jìn)行評(píng)價(jià);(3)針對(duì)函數(shù)自動(dòng)生成測(cè)試用例,自動(dòng)執(zhí)行和校驗(yàn)測(cè)試用例;(4)針對(duì)函數(shù)自動(dòng)控制其測(cè)試過(guò)程,并自動(dòng)生成測(cè)試報(bào)告;(5)自動(dòng)就測(cè)試覆蓋率和函數(shù)質(zhì)量等進(jìn)行分析,得出測(cè)試分析報(bào)告。自動(dòng)化測(cè)試的任務(wù)根據(jù)測(cè)試需求,接著需要逐一分析,找到那些無(wú)法實(shí)現(xiàn)和只能有限實(shí)現(xiàn)自動(dòng)化測(cè)試的需求,包括如下方面(不包含完全能實(shí)現(xiàn)的測(cè)試需求):(1)只能針對(duì)特定編程語(yǔ)言和特定的缺陷類型,進(jìn)行源代碼的自動(dòng)走讀,通過(guò)分析源代碼來(lái)提取某些類型的缺陷的特性,并予以提示;(2)通過(guò)工具是無(wú)法自動(dòng)生成測(cè)試用例的,因?yàn)楹瘮?shù)的預(yù)期輸出只能由人設(shè)計(jì)得到,但自動(dòng)化測(cè)試可以支持通過(guò)對(duì)程序的執(zhí)行來(lái)達(dá)到某種程度的遍歷(如對(duì)程序分支的遍歷)。最后,根據(jù)自動(dòng)化測(cè)試框架實(shí)現(xiàn)自動(dòng)化測(cè)試。自動(dòng)化測(cè)試技術(shù)1錄制/回放技術(shù)錄制/回放技術(shù)是早期較為流行的測(cè)試腳本生成技術(shù)。使用該技術(shù)的測(cè)試過(guò)程是:(1)通過(guò)自動(dòng)錄制測(cè)試人員對(duì)被測(cè)系統(tǒng)所做的操作,形成一個(gè)包含多個(gè)功能點(diǎn)的業(yè)務(wù)流程,將這些操作自動(dòng)轉(zhuǎn)換為工具可以識(shí)別的測(cè)試腳本;(2)測(cè)試人員根據(jù)測(cè)試的需要,在腳本中插入鍵盤輸入、鼠標(biāo)操作和測(cè)試數(shù)據(jù),還需插入各種指令,用于支持對(duì)被測(cè)系統(tǒng)中重要對(duì)象屬性的測(cè)試,如在某個(gè)按鈕上設(shè)置檢查點(diǎn)(CheckPoint),判斷該按鈕在特定條件下是否為禁止?fàn)顟B(tài)(Disable)等;(3)測(cè)試工具通過(guò)讀取腳本,執(zhí)行腳本中由測(cè)試人員插入的預(yù)定義指令,在測(cè)試人員執(zhí)行的基本業(yè)務(wù)流程的基礎(chǔ)上,重復(fù)執(zhí)行指定的測(cè)試用例。自動(dòng)化測(cè)試技術(shù)1錄制/回放技術(shù)錄制/回放技術(shù)的局限性在于:(1)腳本使用效果嚴(yán)重依賴用戶界面的穩(wěn)定性。錄制的腳本與所錄制的對(duì)象緊密相關(guān),腳本可能與特定字符串或位圖的位置緊密相關(guān),一旦用戶界面發(fā)生變化,需要手動(dòng)修改已錄制好的測(cè)試腳本,甚至重新錄制?;胤艜r(shí)被測(cè)程序常出現(xiàn)很多不期望的窗口導(dǎo)致回放失敗,需重新修改腳本,由此帶來(lái)的工作量往往比手動(dòng)測(cè)試還繁瑣。(2)腳本識(shí)別的對(duì)象有限。隨著編程語(yǔ)言和插件等的不斷增加,腳本無(wú)法識(shí)別所有的界面控件,這些不能被腳本識(shí)別的對(duì)象將無(wú)法支持其測(cè)試。(3)腳本難以維護(hù)。手動(dòng)錄制的腳本只能作為測(cè)試用例設(shè)計(jì)的初始原型,僅依靠簡(jiǎn)單地錄制/回放所包含的測(cè)試點(diǎn)非常有限。自動(dòng)化測(cè)試技術(shù)2腳本技術(shù)腳本技術(shù)應(yīng)提供的常見功能包括:(1)支持多種常用變量和數(shù)據(jù)類型。界面控件、鼠標(biāo)或鍵盤操作等均可對(duì)應(yīng)不同的數(shù)據(jù)類型,而放置在不同窗口中不同位置處的同類控件則用不同變量予以區(qū)別。(2)支持?jǐn)?shù)組、列表、結(jié)構(gòu)和其他混合數(shù)據(jù)類型。對(duì)于固定長(zhǎng)度或未知數(shù)量的同類對(duì)象可用數(shù)組、列表等表示,對(duì)于復(fù)雜對(duì)象則可用結(jié)構(gòu)或混合數(shù)據(jù)類型來(lái)表示。(3)支持各種條件邏輯和循環(huán)結(jié)構(gòu)。當(dāng)腳本需根據(jù)某些控件的狀態(tài)或用戶輸入的有效性執(zhí)行不同的分支和循環(huán)時(shí),需使用條件邏輯和循環(huán)。(4)支持函數(shù)的創(chuàng)建和調(diào)用。為了支持腳本的復(fù)用和易維護(hù)性,需采用函數(shù)調(diào)用的形式。(5)支持文件讀/寫和數(shù)據(jù)源連接。為了實(shí)現(xiàn)測(cè)試數(shù)據(jù)與腳本的分離,需通過(guò)文件讀/寫操作和數(shù)據(jù)源連接操作,從外部讀取測(cè)試數(shù)據(jù),或?qū)y(cè)試結(jié)果寫入外部文件。自動(dòng)化測(cè)試技術(shù)2腳本技術(shù)根據(jù)腳本支持的功能的不同,腳本技術(shù)可分為線性腳本、結(jié)構(gòu)化腳本、共享腳本、數(shù)據(jù)驅(qū)動(dòng)腳本、關(guān)鍵字驅(qū)動(dòng)腳本等,簡(jiǎn)要說(shuō)明如下:(1)線性腳本。線性腳本是順序執(zhí)行的測(cè)試用例,即每個(gè)測(cè)試用例可以通過(guò)腳本完整地被回放。(2)結(jié)構(gòu)化腳本。結(jié)構(gòu)化腳本是包含指令的腳本,指令可用于控制腳本的執(zhí)行,典型的控制結(jié)構(gòu)包括順序、選擇和循環(huán),指令還可用于調(diào)用腳本,相當(dāng)于函數(shù)調(diào)用的過(guò)程。結(jié)構(gòu)化腳本可以批量執(zhí)行類似功能。(3)共享腳本。共享腳本是指可以被多個(gè)測(cè)試用例所使用的腳本,其思想來(lái)源于測(cè)試用例的包含關(guān)系。(4)數(shù)據(jù)驅(qū)動(dòng)腳本。(5)關(guān)鍵字驅(qū)動(dòng)腳本。關(guān)鍵字驅(qū)動(dòng)腳本不僅將數(shù)據(jù)獨(dú)立于腳本,而且可將測(cè)試邏輯以關(guān)鍵字(一般包括被測(cè)對(duì)象、操作步驟和值)的形式封裝在數(shù)據(jù)文件中,隨著測(cè)試用例數(shù)量的變化,測(cè)試腳本保持不變。捉蟲實(shí)踐4:如何消滅所有的蟲子?1.功能描述本次實(shí)踐仍采用Windows類型的軟件系統(tǒng)來(lái)實(shí)現(xiàn)第二日問(wèn)題的功能,核心功能描述參見1.3.3節(jié)。所不同的是,系統(tǒng)界面添加了兩個(gè)按鈕,即“讀取測(cè)試數(shù)據(jù)”和“自動(dòng)測(cè)試”按鈕,用于實(shí)現(xiàn)對(duì)系統(tǒng)核心函數(shù)的自動(dòng)化測(cè)試,同時(shí)刪去了原來(lái)的“確定”和“取消”按鈕。NextDateV2系統(tǒng)的運(yùn)行界面如圖1.6所示捉蟲實(shí)踐4:如何消滅所有的蟲子?2.開始測(cè)試(1)測(cè)試用例第二日問(wèn)題的核心函數(shù)功能是計(jì)算下一天的日期,針對(duì)該核心功能,從完整的測(cè)試用例集合中隨便抽取了部分測(cè)試用例,如表1.5所示。捉蟲實(shí)踐4:如何消滅所有的蟲子?(2)原始代碼說(shuō)明第二日問(wèn)題以VisualStudio2008為開發(fā)平臺(tái),采用C++語(yǔ)言,通過(guò)基于對(duì)話框的工程編寫代碼。主界面為對(duì)話框,對(duì)應(yīng)類名CNEXTDAYDlg,在該類中聲明的變量和方法分別見表1.6和表1.7。捉蟲實(shí)踐4:如何消滅所有的蟲子?(3)測(cè)試需求在第二日問(wèn)題中,需要測(cè)試的是提供核心功能的函數(shù),即CNEXTDAYDIg類的AddOneDay方法,為了對(duì)該函數(shù)實(shí)現(xiàn)自動(dòng)化單元測(cè)試,測(cè)試需求可細(xì)化為如下內(nèi)容:①自動(dòng)讀取每個(gè)測(cè)試用例的輸入和預(yù)期輸出;②自動(dòng)執(zhí)行測(cè)試用例;③自動(dòng)校驗(yàn)測(cè)試用例執(zhí)行結(jié)果;④自動(dòng)控制測(cè)試過(guò)程;⑤自動(dòng)生成測(cè)試報(bào)告。同時(shí),還需要確保測(cè)試腳本獨(dú)立、測(cè)試輸入輸出便于管理、所有文檔統(tǒng)一管理。(4)測(cè)試腳本開發(fā)捉蟲實(shí)踐4:如何消滅所有的蟲子?(5)執(zhí)行測(cè)試對(duì)測(cè)試腳本調(diào)試通過(guò)之后,就可以開始執(zhí)行測(cè)試了。只需選擇一個(gè)數(shù)據(jù)文件,用鼠標(biāo)輕輕單擊按鈕,結(jié)果就出來(lái)了。若使用如圖1.7所示的測(cè)試數(shù)據(jù),將得到如圖1.8所示的測(cè)試結(jié)果。捉蟲實(shí)踐4:如何消滅所有的蟲子?3.測(cè)試分析上面的核心函數(shù)AddOneDay()至少存在兩方面問(wèn)題:(1)函數(shù)未做很好的有效性校驗(yàn),對(duì)于1800年1月1日到2050年12月31日之間的日期,當(dāng)用戶輸入為4、6、9月的31號(hào),以及2月的29、30、31號(hào)時(shí),該函數(shù)無(wú)法正確處理;(2)函數(shù)中存在多余的語(yǔ)句,導(dǎo)致孤立節(jié)點(diǎn),形成不可行路徑(有關(guān)內(nèi)容將在第5章繼續(xù)討論)。捉蟲實(shí)踐4:如何消滅所有的蟲子?4.進(jìn)一步分析從上面的自動(dòng)化測(cè)試的實(shí)例可以看出,為了全面實(shí)現(xiàn)一個(gè)函數(shù)的自動(dòng)化單元測(cè)試,需要撰寫大量的代碼,并確保其調(diào)試通過(guò),能正確執(zhí)行指定的測(cè)試功能。盡管單擊一個(gè)按鈕,眨眼之間所有測(cè)試都自動(dòng)完成了,看起來(lái)很爽。但是,當(dāng)為了分析、設(shè)計(jì)和編寫自動(dòng)化測(cè)試腳本而汗流浹背的時(shí)候,那感覺(jué)真是痛苦極了。自動(dòng)化測(cè)試也不能殺死所有的蟲子,但是,通過(guò)實(shí)施自動(dòng)化測(cè)試,有可能有助于提高測(cè)試的效率,這才是自動(dòng)化。自動(dòng)化測(cè)試實(shí)施1.自動(dòng)化測(cè)試的實(shí)質(zhì)

自動(dòng)化測(cè)試的最終目標(biāo)是什么?是消滅手動(dòng)勞動(dòng)者(即手動(dòng)測(cè)試員)嗎?如果自動(dòng)化測(cè)試是手動(dòng)測(cè)試員的終結(jié)者,那么軟件工廠是不是早就可以建成,大家早就開始忙著推廣新時(shí)代的軟件工業(yè)革命了呢?至少目前還沒(méi)有看到有任何這樣的跡象。請(qǐng)?zhí)鎿Q文字內(nèi)容,點(diǎn)擊添加相關(guān)內(nèi)容文字,修改文字內(nèi)容,也可以直接復(fù)制你的內(nèi)容到此。自動(dòng)化測(cè)試的實(shí)質(zhì)是為了快速、高效地發(fā)現(xiàn)和預(yù)防回歸缺陷,而不是為了使用測(cè)試工具,因此,自動(dòng)化測(cè)試(特別是基于UI的自動(dòng)化測(cè)試)不是萬(wàn)能的,也不是測(cè)試的全部,更不是沒(méi)有成本的。那為什么測(cè)試人員乃至部分領(lǐng)導(dǎo)特別熱衷于搞自動(dòng)化測(cè)試呢?主要原因在于:(1)自尊心在作怪。與開發(fā)人員相比,測(cè)試人員常被認(rèn)為是低人一等,因?yàn)樗麄儾幌耖_發(fā)人員那樣經(jīng)常寫程序,測(cè)試人員希望通過(guò)自動(dòng)化測(cè)試來(lái)編寫大量的測(cè)試自動(dòng)化代碼,從而證明自己也有編寫程序的能力,結(jié)果往往導(dǎo)致測(cè)試自動(dòng)化框架越來(lái)越復(fù)雜,并不能實(shí)際解決測(cè)試效率和成本的問(wèn)題。自動(dòng)化測(cè)試實(shí)施請(qǐng)?zhí)鎿Q文字內(nèi)容,點(diǎn)擊添加相關(guān)內(nèi)容文字,修改文字內(nèi)容,也可以直接復(fù)制你的內(nèi)容到此。(2)績(jī)效的需要。手動(dòng)測(cè)試通常被認(rèn)為是沒(méi)有技術(shù)含量的,為了向管理層展示自己的業(yè)績(jī)(事實(shí)上,很多領(lǐng)導(dǎo)也喜歡看那些數(shù)字證明的業(yè)績(jī)),測(cè)試組不得不實(shí)施自動(dòng)化測(cè)試,通過(guò)注入測(cè)試自動(dòng)化達(dá)到80%,程序覆蓋率達(dá)到90%之類的措辭來(lái)吸引眼球??傊詣?dòng)化測(cè)試非常重要,但并非萬(wàn)能,必須掌握自動(dòng)化測(cè)試與手動(dòng)測(cè)試的時(shí)機(jī),才能達(dá)到最佳效果。這一點(diǎn)從一個(gè)經(jīng)驗(yàn)數(shù)據(jù)可見一斑,測(cè)試人員一般會(huì)用30%的時(shí)間來(lái)閱讀代碼,20%的時(shí)間編寫測(cè)試代碼,50%的時(shí)間用于編寫測(cè)試用例和執(zhí)行測(cè)試用例。自動(dòng)化測(cè)試實(shí)施請(qǐng)?zhí)鎿Q文字內(nèi)容,點(diǎn)擊添加相關(guān)內(nèi)容文字,修改文字內(nèi)容,也可以直接復(fù)制你的內(nèi)容到此。2.自動(dòng)化測(cè)試的時(shí)機(jī)

簡(jiǎn)單地說(shuō),除非被測(cè)試的軟件需要重復(fù)測(cè)試7次以上,否則沒(méi)有做自動(dòng)化測(cè)試的意義。即自動(dòng)化測(cè)試主要用于回歸測(cè)試,其最大的作用在于提高回歸測(cè)試的效率。具體來(lái)說(shuō),實(shí)施自動(dòng)化測(cè)試的時(shí)機(jī)如下:

(1)項(xiàng)目沒(méi)有嚴(yán)格的時(shí)間壓力。(2)具有良好定義的測(cè)試策略和測(cè)試計(jì)劃。(3)被測(cè)系統(tǒng)支持自動(dòng)化測(cè)試。(4)有充足的硬件來(lái)運(yùn)行測(cè)試程序。(5)被測(cè)系統(tǒng)的缺陷數(shù)量穩(wěn)定在較低的水平。自動(dòng)化測(cè)試的局限性一看到自動(dòng)化測(cè)試,很多人就會(huì)發(fā)出“哇喔”的驚嘆,短短幾秒內(nèi),上百個(gè)測(cè)試用例可以全部跑完,并自動(dòng)生成測(cè)試統(tǒng)計(jì)報(bào)告,而那些圖形化的結(jié)果展示更讓人相信,自動(dòng)化測(cè)試是將測(cè)試人員從無(wú)聊透頂?shù)氖謩?dòng)測(cè)試中解放出來(lái)的銀彈。然而,要做到這些,必須將測(cè)試人員也變成開發(fā)人員,來(lái)編寫測(cè)試代碼,調(diào)試測(cè)試代碼,甚至重寫測(cè)試代碼,此時(shí)的測(cè)試問(wèn)題已經(jīng)變成一個(gè)開發(fā)項(xiàng)目,測(cè)試人員將花費(fèi)絕大部分的時(shí)間和精力來(lái)構(gòu)建和維護(hù)自動(dòng)化測(cè)試代碼,而不是放在對(duì)軟件的測(cè)試,軟件測(cè)試似乎已經(jīng)偏離了其原始的正確方向。因此,自動(dòng)化測(cè)試不是萬(wàn)能機(jī)器人,不能過(guò)度依賴于自動(dòng)化測(cè)試。只有手動(dòng)測(cè)試才能最大限度地發(fā)揮人的主觀能動(dòng)性,根據(jù)真實(shí)的用戶情況,在真實(shí)的用戶環(huán)境中使用真實(shí)的用戶數(shù)據(jù),識(shí)別出各種與軟件業(yè)務(wù)邏輯密切相關(guān),以及與軟件特性相關(guān)的軟件缺陷。06本章小結(jié)本章小結(jié)本章介紹了軟件和軟件測(cè)試的幾個(gè)最重要的概念,包括軟件、軟件測(cè)試、軟件缺陷、測(cè)試用例和自動(dòng)化測(cè)試,其中,通過(guò)軟件測(cè)試的概念讓大家初步認(rèn)識(shí)到軟件測(cè)試的全過(guò)程和涉及的工作內(nèi)容,軟件缺陷和測(cè)試用例是兩個(gè)讓測(cè)試工程師終日忙碌的重要對(duì)象,自動(dòng)化測(cè)試則是幫助軟件測(cè)試人員提高工作效率的利器。同時(shí),本章以第二日問(wèn)題為案例,通過(guò)4次測(cè)試實(shí)踐,幫助讀者逐步了解測(cè)試方法,熟悉測(cè)試流程,糾正對(duì)測(cè)試的錯(cuò)誤認(rèn)識(shí)。更多有關(guān)測(cè)試方法和流程的內(nèi)容將在第二、三部分逐步展開討論。謝謝觀看第2章軟件測(cè)試背景高等學(xué)校計(jì)算機(jī)類系列教材軟件測(cè)試實(shí)用教程——方法與實(shí)踐01引子:一個(gè)中國(guó)黑客高手找茬是指吹毛求疵地進(jìn)行挑剔和批評(píng),雞蛋里挑骨頭算不算找茬?讀者肯定會(huì)說(shuō),“當(dāng)然算,雞蛋里挑骨頭,這都不算找茬的話,就沒(méi)有啥事情可稱為找茬啦”,但是,這種“找茬”充其量是小兒科水平,真正的骨灰級(jí)“找茬”是要讓別人哭著喊著求你來(lái)找茬,找完之后還要特虔誠(chéng)地對(duì)你說(shuō)聲“謝謝”,并額外付給你一大筆酬金。哇哦,還有這么好的事情?先來(lái)看看中國(guó)學(xué)生黑客劉蝶雨的故事吧。引子:一個(gè)中國(guó)黑客高手軟件測(cè)試就是軟件行業(yè)的這種“找茬”職業(yè),它位居2007年IT熱門職業(yè)的榜首,與3G人才、動(dòng)漫人才并列目前國(guó)家重點(diǎn)培養(yǎng)對(duì)象的前3甲,軟件測(cè)試工程師認(rèn)證成為IT認(rèn)證新貴。您也想如劉蝶雨一樣成為一名測(cè)試黑客嗎?那么,還猶豫什么,現(xiàn)在就開始測(cè)試之旅吧。引子:一個(gè)中國(guó)黑客高手02軟件測(cè)試的發(fā)展歷程及現(xiàn)狀軟件測(cè)試的發(fā)展歷程20世紀(jì)70年代以前是軟件測(cè)試發(fā)展第一階段,由于軟件規(guī)模很小,軟件開發(fā)過(guò)程中軟件測(cè)試的含義較狹窄,測(cè)試等同于“調(diào)試”,目的是修復(fù)軟件中已發(fā)現(xiàn)的缺陷,常由開發(fā)人員自行完成,該階段對(duì)測(cè)試的投入少,且一般需等軟件編寫完成時(shí)才進(jìn)行簡(jiǎn)單的測(cè)試。直至1957年,軟件測(cè)試才開始與調(diào)試區(qū)別開來(lái)。但人們潛意識(shí)里認(rèn)為軟件測(cè)試的目的是“使自己確信產(chǎn)品能工作”,并形成一種“為了讓我們看到產(chǎn)品在工作,就得將測(cè)試工作往后推一點(diǎn)”的錯(cuò)誤認(rèn)識(shí)。因此,測(cè)試活動(dòng)始終相對(duì)滯后于開發(fā)活動(dòng)。隨著軟件規(guī)模的日益擴(kuò)大和軟件復(fù)雜度的不斷提升,這種模式已無(wú)法適應(yīng)軟件行業(yè)發(fā)展的需要。1.第1階段:初始階段軟件測(cè)試的發(fā)展歷程進(jìn)入20世紀(jì)70年代,軟件工程開始受到廣泛關(guān)注,人們開始針對(duì)軟件測(cè)試方法和過(guò)程展開探索,并產(chǎn)生一些有效的測(cè)試方法,初步建立軟件測(cè)試基礎(chǔ)理論,形成了分別以BillHetzel和GlenfordJMyers為代表的兩大思想流派:(1)BillHetzel,代表著作TheCompleteGuidetoSofwareTesting,提出軟件測(cè)試的第一類方法:軟件測(cè)試的目的是驗(yàn)證軟件是工作的,即軟件功能是按預(yù)先設(shè)計(jì)執(zhí)行的,以正向思維逐個(gè)驗(yàn)證被測(cè)軟件系統(tǒng)所有功能點(diǎn)的正確性。第一類方法是主流和行業(yè)標(biāo)準(zhǔn),以需求和設(shè)計(jì)為本,有利于界定測(cè)試工作的范疇,便于部署測(cè)試重點(diǎn)。2.第2階段:定義階段軟件測(cè)試的發(fā)展歷程(2)GlenfordJMyers,代表著作TheArtofSofwwareTesting,提出軟件測(cè)試的第二類方法:軟件測(cè)試的目的是證偽,即測(cè)試就是驗(yàn)證軟件是“不工作的”,以逆向思維發(fā)現(xiàn)被測(cè)軟件系統(tǒng)中的缺陷。第二類方法更強(qiáng)調(diào)測(cè)試人員發(fā)揮主觀能動(dòng)性,用逆向思維方式思考開發(fā)人員理解的誤區(qū)、不良的習(xí)慣、程序代碼邊界等,試圖破壞系統(tǒng),有助于發(fā)現(xiàn)更多軟件系統(tǒng)中的缺陷。該階段最重要的里程碑事件包括:①1972年,BillHetzel博士在美國(guó)北卡羅來(lái)納大學(xué)組織舉行了歷史上第一次以軟件測(cè)試為主題的正式學(xué)術(shù)會(huì)議②1979年,GlenfordJMyers博士出版了軟件測(cè)試領(lǐng)域第一本最重要的專著TheAntofSoftwareTesting。2.第2階段:定義階段軟件測(cè)試的發(fā)展歷程20世紀(jì)80年代初,軟件快速趨向大型化和高復(fù)雜度,軟件質(zhì)量越來(lái)越重要。該階段出現(xiàn)了軟件測(cè)試行業(yè)標(biāo)準(zhǔn)(IEEE/ANSI)和ISO國(guó)際標(biāo)準(zhǔn)。該階段最重要的里程碑事件包括:(1)1981年,BillHetzel首次在大學(xué)中開設(shè)SruchuredSofiwareTesting公共課,標(biāo)志著軟件測(cè)試走下神壇,成為更多IT技術(shù)人員需要掌握的核心技術(shù);(2)1988年,DavidGelperin和BillHetzel在CommunicationsofACM上發(fā)表論文TheGrowhofSoftwareTesting,首次介紹系統(tǒng)化的軟件測(cè)試和評(píng)估流程;(3)開始出現(xiàn)QA(質(zhì)量保證)和SQA(軟件質(zhì)量保證)部門。3集成階段軟件測(cè)試的發(fā)展歷程進(jìn)入20世紀(jì)90年代,軟件測(cè)試進(jìn)入全面發(fā)展時(shí)期。一方面軟件測(cè)試工具開始盛行,針對(duì)單元測(cè)試、系統(tǒng)測(cè)試等不同階段的各種測(cè)試工具逐漸在多種軟件測(cè)試活動(dòng)中使用,軟件測(cè)試工具廠商逐漸崛起。另一方面,軟件測(cè)試技術(shù)研究取得較大的突破,形成多種測(cè)試過(guò)程模型,如:(1)Gelper博士提出的測(cè)試支持模型(TestingSupportModel,TSM),用于評(píng)估測(cè)試小組所處環(huán)境對(duì)于測(cè)試人員的支持程度;(2)Burnstein博士提出的測(cè)試成熟度模型(TestingManturityModel,TMM),依據(jù)軟件能力成熟度模型(CapabilityMaturityModel,CMM)框架提出測(cè)試的5個(gè)不同級(jí)別。4.第4階段:管理、測(cè)量和最佳化階段1.國(guó)外現(xiàn)狀在軟件業(yè)發(fā)達(dá)國(guó)家(如美國(guó)),軟件測(cè)試已發(fā)展得相當(dāng)成熟,并成為一個(gè)獨(dú)立的產(chǎn)業(yè),主要體現(xiàn)在如下方面:(1)軟件測(cè)試在公司中的地位非常重要。公司內(nèi)部軟件測(cè)試人員與開發(fā)人員的比例一般高于1:1,必要時(shí)會(huì)達(dá)到1.5:1的比例。軟件測(cè)試的現(xiàn)狀(2)軟件測(cè)試的理論研究蓬勃發(fā)展。國(guó)際上每年都舉辦各種有關(guān)軟件測(cè)試的學(xué)術(shù)年會(huì),涌現(xiàn)出大量相關(guān)研究論文,并以美國(guó)卡耐基·梅隆大學(xué)的軟件工程研究所最為著名。(3)軟件測(cè)試市場(chǎng)繁榮。針對(duì)軟件測(cè)試各階段的自動(dòng)化測(cè)試需求,不少專業(yè)公司致力于開發(fā)軟件測(cè)試標(biāo)準(zhǔn)和自動(dòng)化測(cè)試工具,并形成較大的產(chǎn)業(yè),如HP的QTP和LR工具、IBM的Rational系列工具,也有不少專業(yè)人士提供了大量開源測(cè)試工具,如BugFree、BugZilla、JMeter等。2.國(guó)內(nèi)現(xiàn)狀中國(guó)的軟件測(cè)試技術(shù)研究起步于20世紀(jì)80年代,隨軟件工程的研究而逐步發(fā)展起來(lái),因起步較晚,導(dǎo)致相比歐美發(fā)達(dá)國(guó)家仍存在很大差距。進(jìn)入20世紀(jì)90年代以后,隨著國(guó)內(nèi)經(jīng)濟(jì)持續(xù)快速增長(zhǎng),軟件行業(yè)得到快速發(fā)展,國(guó)家大大提高了對(duì)軟件產(chǎn)業(yè)的重視程度,也帶動(dòng)軟件測(cè)試領(lǐng)域朝著正確的方向發(fā)展。軟件測(cè)試的現(xiàn)狀目前國(guó)內(nèi)測(cè)試行業(yè)的現(xiàn)狀主要體現(xiàn)在如下方面:(1)對(duì)軟件測(cè)試的認(rèn)識(shí)和重視程度在不斷提高。因企業(yè)承接的項(xiàng)目規(guī)模偏小,對(duì)測(cè)試資金投入估計(jì)不足;且企業(yè)為爭(zhēng)奪項(xiàng)目,承接項(xiàng)目時(shí)承諾的開發(fā)時(shí)間很緊,導(dǎo)致測(cè)試時(shí)間不夠。(2)對(duì)軟件產(chǎn)品化測(cè)試的技術(shù)研究從手動(dòng)向自動(dòng)化方式轉(zhuǎn)變。國(guó)內(nèi)軟件企業(yè)規(guī)模偏小,往往通過(guò)關(guān)系得到企業(yè)訂單,缺乏對(duì)企業(yè)的長(zhǎng)遠(yuǎn)規(guī)劃,對(duì)產(chǎn)品質(zhì)量要求不嚴(yán),對(duì)測(cè)試不肯投資,導(dǎo)致產(chǎn)品得不到嚴(yán)格測(cè)試就交付客戶使用。(3)軟件測(cè)試人員需求大,人員素質(zhì)不斷提高。從軟件測(cè)試網(wǎng)連續(xù)5年來(lái)的測(cè)試從業(yè)人員調(diào)查報(bào)告可以看出,軟件測(cè)試人員多為職場(chǎng)新手,很多對(duì)測(cè)試一無(wú)所知的人在從事基礎(chǔ)的測(cè)試工作,無(wú)法保證測(cè)試工作的質(zhì)量。(4)測(cè)試服務(wù)體系初步形成規(guī)模。隨著用戶對(duì)軟件質(zhì)量的要求越來(lái)越高,信息系統(tǒng)驗(yàn)收必須通過(guò)第三方測(cè)試機(jī)構(gòu)的嚴(yán)格測(cè)試進(jìn)行判定。軟件測(cè)試的現(xiàn)狀外包軟件測(cè)試是指軟件企業(yè)將軟件項(xiàng)目中的全部或部分測(cè)試工作交給提供軟件外包測(cè)試服務(wù)的公司(簡(jiǎn)稱外包公司),由這些公司來(lái)為軟件進(jìn)行專門的測(cè)試,在技術(shù)和管理上提高軟件測(cè)試的有效性,并使軟件企業(yè)可以更好地專注于核心競(jìng)爭(zhēng)力業(yè)務(wù),降低軟件項(xiàng)目成本。從為軟件公司提供外包測(cè)試服務(wù)的業(yè)務(wù)模式看,外包測(cè)試主要存在現(xiàn)場(chǎng)測(cè)試、公司內(nèi)部測(cè)試、設(shè)立聯(lián)合研發(fā)中心3種模式。(1)現(xiàn)場(chǎng)測(cè)試模式(On-Site)即人員外派模式,外包公司將自己的測(cè)試人員派到客戶現(xiàn)場(chǎng)提供包括測(cè)試計(jì)劃制訂、測(cè)試用例編寫、測(cè)試腳本開發(fā)、測(cè)試流程優(yōu)化等整個(gè)過(guò)程在內(nèi)的測(cè)試技術(shù)服務(wù),可派整個(gè)測(cè)試團(tuán)隊(duì)獨(dú)立測(cè)試,也可將測(cè)試技術(shù)員分散在客戶測(cè)試團(tuán)隊(duì)。外包測(cè)試的現(xiàn)狀文思創(chuàng)新、博彥科技等是國(guó)內(nèi)較為知名的提供外包測(cè)試服務(wù)的企業(yè),這類公司主要為歐美和日韓的知名軟件公司(如Microsoft、HP、IBM等)以及國(guó)內(nèi)大型IT公司(如華為等)提供測(cè)試外包和人力外包服務(wù)。這類企業(yè)對(duì)員工的外語(yǔ)水平、綜合素質(zhì)和專業(yè)素質(zhì)要求較高。(2)內(nèi)部測(cè)試模式(In-House)內(nèi)部測(cè)試模式又分為:完全離岸外包模式(OffShore)、現(xiàn)場(chǎng)增援與離岸結(jié)合模式(OnSitetOffShore),其中,前者是指承接客戶的軟件測(cè)試任務(wù)后,在外包公司內(nèi)部進(jìn)行軟件測(cè)試工作,按照約定提交軟件測(cè)試工件或者軟件測(cè)試報(bào)告,服務(wù)費(fèi)用按軟件測(cè)試外包的工作量收費(fèi),該模式適用于外包項(xiàng)目較成熟、定義明確的情況;后者則指部分人員需外派到客戶處進(jìn)行現(xiàn)場(chǎng)測(cè)試,其他人員留在外包公司內(nèi)部做測(cè)試。一些本地化產(chǎn)品的測(cè)試多采用這種模式。外包測(cè)試的現(xiàn)狀(3)設(shè)立聯(lián)合研發(fā)中心模式該模式下,外包公司與客戶設(shè)立聯(lián)合研發(fā)中心和測(cè)試實(shí)驗(yàn)室,使外包公司與客戶關(guān)系更加緊密,形成在供應(yīng)商和客戶關(guān)系基礎(chǔ)之上的戰(zhàn)略合作伙伴關(guān)系。這種模式多被大公司所采用,如IBM、神州數(shù)碼等,該模式也是測(cè)試外包公司的發(fā)展方向。外包軟件測(cè)試行業(yè)的前景非常看好,近年來(lái),我國(guó)軟件外包產(chǎn)業(yè)年均增長(zhǎng)率為36.5%,處于快速發(fā)展階段,軟件外包測(cè)試的興起意味著更多機(jī)會(huì),通過(guò)提供軟件測(cè)試服務(wù),國(guó)內(nèi)軟件本地化公司可擴(kuò)展服務(wù)業(yè)務(wù)范圍,不斷擴(kuò)大發(fā)展規(guī)模。外包測(cè)試的現(xiàn)狀03軟件測(cè)試的研究熱點(diǎn)軟件測(cè)試的研究熱點(diǎn)當(dāng)前軟件測(cè)試的研究熱點(diǎn)主要體現(xiàn)在4個(gè)方面。(1)針對(duì)軟件特點(diǎn)而展開的實(shí)用軟件測(cè)試技術(shù)和方法的研究隨著當(dāng)前軟件應(yīng)用行業(yè)的日益廣泛,針對(duì)不同應(yīng)用的軟件(如Web應(yīng)用、嵌入式系統(tǒng)、游戲軟件等)具有各自的特點(diǎn),對(duì)應(yīng)也有特殊的測(cè)試重點(diǎn)和測(cè)試方法。Web應(yīng)用程序的特殊性主要體現(xiàn)在:①整體結(jié)構(gòu)為多層結(jié)構(gòu),表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層處于不同系統(tǒng)平臺(tái);②Web應(yīng)用程序多由典型實(shí)體構(gòu)成,如HTML、CGI、JSP、XML等;③從運(yùn)行機(jī)制上看具有分布式、并發(fā)、動(dòng)態(tài)、實(shí)時(shí)交互等特征;④綜合使用多種編程技術(shù),如CGI、PHP、ASP、JSP、數(shù)據(jù)庫(kù)等,導(dǎo)致系統(tǒng)實(shí)現(xiàn)復(fù)雜;⑤程序運(yùn)行性能與環(huán)境和負(fù)載具有復(fù)雜的關(guān)系,如客戶端瀏覽器緩存的設(shè)置、網(wǎng)絡(luò)情況、服務(wù)器配置、用戶訪問(wèn)方式、用戶分布特性等,均影響到Web應(yīng)用程序的性能。軟件測(cè)試的研究熱點(diǎn)(2)針對(duì)新的軟件開發(fā)技術(shù)展開的軟件測(cè)試技術(shù)研究20世紀(jì)60、70年代因大型軟件系統(tǒng)開發(fā)引起的軟件危機(jī)促成了Yourdon和DeMarco的結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計(jì)的軟件工程方法的盛行,針對(duì)這種開發(fā)過(guò)程,對(duì)應(yīng)的基本測(cè)試方法有黑盒測(cè)試和白盒測(cè)試方法,并分單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試3個(gè)不同的階段展開測(cè)試活動(dòng)。隨著軟件復(fù)雜度和規(guī)模的不斷提高,傳統(tǒng)的從需求分析→設(shè)計(jì)→實(shí)現(xiàn)→測(cè)試的開發(fā)模式將導(dǎo)致大量重復(fù)勞動(dòng),只有引入軟件復(fù)用機(jī)制才能提高軟件生產(chǎn)效率并掌控軟件產(chǎn)品的質(zhì)量,20世紀(jì)80年代出現(xiàn)了面向?qū)ο蠓椒?Object-orientedMethod,OOM),用對(duì)象作為描述客觀世界的基本單元,通過(guò)類的實(shí)例化、繼承和多態(tài)的特性實(shí)現(xiàn)復(fù)用。在面向?qū)ο箝_發(fā)方式下,測(cè)試也發(fā)生了變化,對(duì)應(yīng)有面向?qū)ο蠓治龅臏y(cè)試、面向?qū)ο笤O(shè)計(jì)的測(cè)試及面向?qū)ο缶幋a的測(cè)試,特別地,繼承導(dǎo)致的父子關(guān)系、多態(tài)導(dǎo)致的對(duì)象的不確定性和對(duì)象所具有的狀態(tài)性質(zhì)等,都是面向過(guò)程的開發(fā)中所沒(méi)有的,對(duì)應(yīng)需找到新的測(cè)試方法。軟件測(cè)試的研究熱點(diǎn)(3)軟件自動(dòng)化測(cè)試技術(shù)的研究自動(dòng)化測(cè)試是軟件測(cè)試領(lǐng)域一個(gè)長(zhǎng)期研究的方向,人們期望最大限度地通過(guò)自動(dòng)化測(cè)試提高測(cè)試效率,支持各階段的自動(dòng)化測(cè)試,內(nèi)容包括:①如何通過(guò)讀取源代碼或需求文檔,自動(dòng)生成測(cè)試用例;②如何通過(guò)讀取和分析源代碼,自動(dòng)計(jì)算相關(guān)度量指標(biāo),從而對(duì)源代碼的質(zhì)量進(jìn)行測(cè)量;③如何自動(dòng)選擇測(cè)試用例包,自動(dòng)執(zhí)行回歸測(cè)試;④如何針對(duì)特定應(yīng)用軟件進(jìn)行自動(dòng)化測(cè)試;⑤自動(dòng)化測(cè)試腳本技術(shù)研究等。軟件測(cè)試的研究熱點(diǎn)(4)軟件可信性研究互聯(lián)網(wǎng)的普及和發(fā)展為信息資源的廣泛共享和利用提供了可能,但也導(dǎo)致安全性、可靠性、可用性等問(wèn)題日益凸顯,信息系統(tǒng)常無(wú)法以人們所信任的方式工作,并直接或間接對(duì)用戶和社會(huì)造成損害。ISO/EC15408標(biāo)準(zhǔn)指出:一個(gè)可信的組件、操作或過(guò)程的行為,在任意操作條件下是可預(yù)測(cè)的,并能很好地抵抗應(yīng)用軟件、病毒及一定物理干擾造成的破壞。軟件可信性是軟件質(zhì)量的一種特殊表現(xiàn)形式,重點(diǎn)關(guān)注使用層面的綜合化質(zhì)量屬性及保障。人們從軟件可信性度量與建模、可信軟件構(gòu)造與驗(yàn)證、可信軟件演化與維護(hù)等方面展開了多方面研究。在可信的概念和結(jié)構(gòu)研究方面,Avizienis等人提出可信安全計(jì)算的基本概念和分類方法;David等人對(duì)大規(guī)?;ヂ?lián)網(wǎng)服務(wù)的體系結(jié)構(gòu)與可信問(wèn)題進(jìn)行了深入研究。目前關(guān)于軟件可信性的度量研究主要集中在軟件的可靠性度量和安全性評(píng)估。軟件測(cè)試的研究熱點(diǎn)在可信軟件構(gòu)造與驗(yàn)證方面,可信軟件構(gòu)造主要借助已有軟件工程的方法,面對(duì)開放的網(wǎng)絡(luò)環(huán)境,將服務(wù)計(jì)算與工程作為一種重要的研究途徑。在服務(wù)組合研究中,采用工作流作為典型構(gòu)造方法,采用基于服務(wù)間依賴關(guān)系的軟件構(gòu)造方式,以提高軟件組件的復(fù)用能力、靈活性和可信性,較少涉及對(duì)網(wǎng)絡(luò)化軟件的可擴(kuò)展性和動(dòng)態(tài)演化性的研究。對(duì)可信軟件的驗(yàn)證,多采用基于概率統(tǒng)計(jì)、模糊數(shù)學(xué)和主觀邏輯及證據(jù)理論的可信模型等工具,從模型檢測(cè)和測(cè)試的角度,研究如何驗(yàn)證軟件可信性??尚跑浖难莼途S護(hù)則是一個(gè)分布、多方協(xié)作和維護(hù)的過(guò)程,服務(wù)軟件具有高度自治性和動(dòng)態(tài)性,當(dāng)前研究主要針對(duì)分布自治的服務(wù)軟件組合運(yùn)行,且主要針對(duì)多源軟件的組合與運(yùn)行模式來(lái)研究軟件可擴(kuò)展性、可用性問(wèn)題。對(duì)于自適應(yīng)演化問(wèn)題,則基于人工智能和自動(dòng)控制的方法,通過(guò)對(duì)人類智能和控制方法的模擬,獲取產(chǎn)生自適應(yīng)演化能力的方法。當(dāng)前的研究較少涉及網(wǎng)絡(luò)化服務(wù)軟件的運(yùn)行問(wèn)題。04國(guó)內(nèi)軟件測(cè)試職業(yè)現(xiàn)狀國(guó)內(nèi)軟件測(cè)試職業(yè)現(xiàn)狀根據(jù)軟件測(cè)試網(wǎng)()從2007年到2011年所做的軟件測(cè)試行業(yè)從業(yè)人員調(diào)查報(bào)告可以看出,國(guó)內(nèi)軟件測(cè)試從業(yè)人員總體職業(yè)特點(diǎn)是:人才需求大,職業(yè)穩(wěn)定,無(wú)性別歧視,但仍需掌握一定的業(yè)務(wù)和技術(shù)能力。表2.1、表2.2給出了2011年軟件測(cè)試行業(yè)從業(yè)人員調(diào)查報(bào)告中的部分統(tǒng)計(jì)數(shù)據(jù),表中僅給出占比前3位的選項(xiàng),單位為%。不妨對(duì)照表中的部分技術(shù)要求,看自己在哪些方面仍然有欠缺以作為學(xué)習(xí)努力的方向。國(guó)內(nèi)軟件測(cè)試職業(yè)現(xiàn)狀05本章小結(jié)本章小結(jié)本章主要介紹了軟件測(cè)試的發(fā)展歷程、國(guó)內(nèi)外軟件測(cè)試技術(shù)現(xiàn)狀、軟件測(cè)試當(dāng)前研究熱點(diǎn)和測(cè)試行業(yè)現(xiàn)狀等內(nèi)容,對(duì)軟件測(cè)試有進(jìn)一步研究興趣的讀者和有意致力于從事軟件測(cè)試工作的讀者,不妨選擇自己感興趣的研究方向做深入了解,或者從軟件測(cè)試從業(yè)人員現(xiàn)狀中了解一些自己需要掌握的相關(guān)專業(yè)基礎(chǔ)知識(shí),為今后進(jìn)入軟件測(cè)試行業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。謝謝觀看第3章黑盒測(cè)試技術(shù)高等學(xué)校計(jì)算機(jī)類系列教材軟件測(cè)試實(shí)用教程——方法與實(shí)踐01概述黑盒測(cè)試是最重要的一類軟件測(cè)試方法,其原理如圖3.1所示。從該圖可以看出,黑盒測(cè)試僅需知道被測(cè)對(duì)象的輸入和預(yù)期輸出,不需要了解其實(shí)現(xiàn)的細(xì)節(jié),例如,程序的實(shí)現(xiàn)邏輯如何、源代碼如何撰寫等。基本原理和特點(diǎn)(1)黑盒測(cè)試方法對(duì)測(cè)試人員的技術(shù)要求相對(duì)較低,測(cè)試人員甚至可以是對(duì)軟件開發(fā)完全不懂的非計(jì)算機(jī)專業(yè)的人員,只要對(duì)照SRS或用戶手冊(cè),按照文檔中描述的軟件操作步驟和特性執(zhí)行軟件,觀察輸出結(jié)果就可以了。(2)黑盒測(cè)試不需要了解程序?qū)崿F(xiàn)的細(xì)節(jié),因此,測(cè)試團(tuán)隊(duì)與開發(fā)團(tuán)隊(duì)可以并行完成各自的任務(wù),一旦SRS確定后,開發(fā)團(tuán)隊(duì)就可以開始系統(tǒng)設(shè)計(jì)工作,而與此同時(shí),測(cè)試團(tuán)隊(duì)也可以開始著手測(cè)試計(jì)劃的制訂和測(cè)試的設(shè)計(jì)工作,二者相互并不干擾,從而提高團(tuán)隊(duì)開發(fā)進(jìn)度?;驹砗吞攸c(diǎn)黑盒測(cè)試方法簡(jiǎn)單有效,可以整體測(cè)試系統(tǒng)的行為,可以從頭到尾(End-to-End)進(jìn)行數(shù)據(jù)完整性測(cè)試。但是,測(cè)試結(jié)果的覆蓋度不容易度量,測(cè)試的潛在風(fēng)險(xiǎn)較高,還需要通過(guò)白盒測(cè)試來(lái)評(píng)估黑盒方法的測(cè)試覆蓋率。這方面的內(nèi)容將在第5章進(jìn)行討論。適用階段

隨著被測(cè)對(duì)象粒度的變化,黑盒測(cè)試方法可以用于不同的測(cè)試階段:(1)當(dāng)被測(cè)對(duì)象為函數(shù)時(shí),黑盒測(cè)試方法完成的是對(duì)函數(shù)功能的測(cè)試,此時(shí)不需要查看函數(shù)代碼如何編寫,只需要了解函數(shù)的接口和返回值就可以利用黑盒測(cè)試方法設(shè)計(jì)測(cè)試用例和執(zhí)行測(cè)試,對(duì)應(yīng)的是單元測(cè)試階段。(2)當(dāng)被測(cè)對(duì)象為功能時(shí),黑盒測(cè)試方法完成的是對(duì)整個(gè)軟件系統(tǒng)的功能和易用性等特性的測(cè)試,此時(shí),也不需要查看每個(gè)功能點(diǎn)是如何編程實(shí)現(xiàn)的,只需要對(duì)照SRS關(guān)于輸入和輸出的規(guī)定,就可以設(shè)計(jì)測(cè)試用例和執(zhí)行測(cè)試,此時(shí)對(duì)應(yīng)的是系統(tǒng)測(cè)試階段,或有用戶共同參與的驗(yàn)收測(cè)試階段。測(cè)試方法的評(píng)價(jià)

典型的黑盒測(cè)試方法包括等價(jià)類測(cè)試、邊界值測(cè)試、基于決策表的測(cè)試方法等,可從如下方面來(lái)評(píng)價(jià)某種測(cè)試方法的質(zhì)量:(1)測(cè)試用例對(duì)被測(cè)對(duì)象的覆蓋率測(cè)試最怕漏洞,采用某測(cè)試方法設(shè)計(jì)的測(cè)試用例對(duì)被測(cè)對(duì)象的覆蓋程度越高,遺漏缺陷的風(fēng)險(xiǎn)就越低。(2)測(cè)試用例的冗余每種測(cè)試方法實(shí)際上都是對(duì)被測(cè)對(duì)象的某個(gè)關(guān)鍵問(wèn)題進(jìn)行建模,該模型通常是被測(cè)關(guān)鍵問(wèn)題的簡(jiǎn)化,因此,設(shè)計(jì)得到的測(cè)試用例可能存在冗余,導(dǎo)致測(cè)試用例的數(shù)量雖多,卻無(wú)法提高缺陷的發(fā)現(xiàn)率,反而大大增加測(cè)試工作量。因此,測(cè)試用例的冗余越低越好。測(cè)試方法的評(píng)價(jià)

(3)測(cè)試用例的數(shù)量在滿足測(cè)試用例無(wú)漏洞和無(wú)冗余的前提下,采用某測(cè)試方法所得到的測(cè)試用例數(shù)量越少,對(duì)應(yīng)測(cè)試用例報(bào)告的撰寫、測(cè)試用例的管理、測(cè)試用例的腳本開發(fā)、測(cè)試用例執(zhí)行和結(jié)果檢驗(yàn)的工作量越低。(4)測(cè)試用例對(duì)缺陷的定位能力每個(gè)或每批測(cè)試用例都是對(duì)應(yīng)某類缺陷而設(shè)計(jì)的,如某個(gè)輸入條件的邊界,或某類等價(jià)數(shù)據(jù)等,好的測(cè)試方法能確保當(dāng)一批測(cè)試用例失敗時(shí),可快速隔離和定位導(dǎo)致測(cè)試用例失敗的缺陷。(5)測(cè)試用例設(shè)計(jì)的復(fù)雜度測(cè)試方法的復(fù)雜度越低,測(cè)試用例的設(shè)計(jì)越簡(jiǎn)單,對(duì)測(cè)試人員的經(jīng)驗(yàn)依賴性越低,設(shè)計(jì)測(cè)試用例所花費(fèi)的工作量越低。02邊界值測(cè)試基本原理人們從長(zhǎng)期的測(cè)試工作中總結(jié)出一個(gè)經(jīng)驗(yàn):大量缺陷發(fā)生在被測(cè)對(duì)象的輸入域或輸出域的邊界(即極值)上,而非輸入或輸出域的內(nèi)部。設(shè)計(jì)測(cè)試用例時(shí),如果針對(duì)邊界附近重點(diǎn)加以檢驗(yàn),常常可取得良好的測(cè)試效果,取得較高的測(cè)試回報(bào)率。邊界值測(cè)試符合人們的一個(gè)基本假設(shè):如果軟件在能力達(dá)到極限的時(shí)候能夠運(yùn)行,那么其在正常情況下一般也不會(huì)有什么問(wèn)題。由此得到邊界值測(cè)試的基本原理是:在被測(cè)對(duì)象的邊界及邊界附近設(shè)計(jì)測(cè)試用例。測(cè)試用例設(shè)計(jì)邊界值測(cè)試的核心和難點(diǎn)在于:(1)如何選擇輸入域或輸出域,以進(jìn)行后續(xù)的邊界值測(cè)試用例設(shè)計(jì);(2)如何確定輸入域或輸出域的邊界,確保覆蓋被測(cè)對(duì)象所有可能的邊界;(3)如何確定輸入域或輸出域邊界附近的鄰域范圍,便于及時(shí)發(fā)現(xiàn)所有潛伏在邊界附近的缺陷;(4)如何根據(jù)被測(cè)對(duì)象的邊界及其鄰域設(shè)計(jì)測(cè)試用例。下面先以輸入域的邊界值測(cè)試為例,說(shuō)明如何設(shè)計(jì)測(cè)試用例,針對(duì)輸出域的測(cè)試見3.2.4節(jié)。1.邊界值測(cè)試的難點(diǎn)測(cè)試用例設(shè)計(jì)原始輸入域往往是由多個(gè)輸入條件共同構(gòu)成的具有一定實(shí)際意義的輸入域(以下稱整體輸入域),整體輸入域的邊界通常很清晰,很容易展開測(cè)試,但邊界點(diǎn)太少,難以覆蓋所有隱含的邊界情況,尤其是各個(gè)輸入條件之間存在較為復(fù)雜的約束關(guān)系時(shí)更是如此,因此,可將整體輸入域拆分成由各個(gè)輸入條件分別構(gòu)成的單個(gè)輸入域的集合(以下稱個(gè)體輸入域)。2.輸入域的確定測(cè)試用例設(shè)計(jì)對(duì)于某個(gè)輸入條件而言,邊界的確定可參照如下原則:(1)若輸入條件規(guī)定了取值范圍,則以該范圍作為邊界;(2)若輸入條件規(guī)定了值的個(gè)數(shù),則以值的個(gè)數(shù)為邊界;(3)若輸入域是有序集合(如有序表、順序文件等),則選取集合中特定次序的數(shù)據(jù)作為邊界,如第一個(gè)或最后一個(gè)數(shù)據(jù)等。3.邊界的確定測(cè)試用例設(shè)計(jì)在邊界點(diǎn)及其附近均可能存在缺陷,因此,對(duì)于每個(gè)輸入條件的每個(gè)邊界點(diǎn)(設(shè)為P點(diǎn)),需在該點(diǎn)附近確定大小為1的鄰域,并基于所有輸入條件的所有邊界點(diǎn)及其鄰域來(lái)設(shè)計(jì)測(cè)試用例。注意:這里的“1”是指1個(gè)單位長(zhǎng)度,并未數(shù)字意義上的“1”。因此,該鄰域應(yīng)根據(jù)測(cè)試分析的結(jié)果靈活設(shè)置。4邊界點(diǎn)附近鄰域的設(shè)置測(cè)試用例設(shè)計(jì)已知每個(gè)輸入條件的邊界點(diǎn)集合及其鄰域,只需在這些邊界和鄰域中選擇適當(dāng)規(guī)模的數(shù)據(jù)(稱測(cè)試數(shù)據(jù)),即可構(gòu)造一批針對(duì)邊界的測(cè)試用例,關(guān)鍵在于如何選擇測(cè)試數(shù)據(jù)、如何選擇邊界組合方式,來(lái)保證測(cè)試用例的質(zhì)量。(1)測(cè)試數(shù)據(jù)的選擇①窮舉法。一個(gè)最簡(jiǎn)單的方法就是在每個(gè)邊界點(diǎn)的鄰域范圍內(nèi)取所有數(shù)據(jù)構(gòu)成測(cè)試數(shù)據(jù)的集合。②典型值法。針對(duì)窮舉法數(shù)據(jù)量大的不足,可選擇邊界鄰域內(nèi)的典型值作為測(cè)試數(shù)據(jù),一般地,對(duì)于某個(gè)邊界

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論