提高軟件測(cè)試效率方法探討
摘要:軟件測(cè)試是保證軟件質(zhì)量的重要手段。如何組織軟件測(cè)試,耗費(fèi)最少時(shí)間與最小工作量完成軟件測(cè)試,使軟件質(zhì)量滿足用戶要求,是軟件研發(fā)單位需要解決的問(wèn)題。本文結(jié)合工程實(shí)踐,從軟件的可測(cè)試性及測(cè)試組織等方面探討提高軟件測(cè)試效率的方法。
關(guān)鍵詞:可測(cè)試性;軟件測(cè)試;測(cè)試人員;
引言
自從上世紀(jì)七八十年代全面爆發(fā)軟件危機(jī)起,軟件產(chǎn)業(yè)的發(fā)展過(guò)程中始終伴隨著巨大的管理難題。整個(gè)軟件產(chǎn)業(yè)存在著軟件代價(jià)高、難于控制開發(fā)進(jìn)度、軟件工作量估計(jì)困難、質(zhì)量低,以及軟件修改、維護(hù)困難等問(wèn)題。而要解決這些問(wèn)題,在很大程度上取決于提高軟件的設(shè)計(jì)、開發(fā)和測(cè)試質(zhì)量。
隨著軟件開發(fā)規(guī)模的增大,軟件的質(zhì)量問(wèn)題越來(lái)越突出。軟件測(cè)試是提高軟件質(zhì)量的有效途徑,在軟件測(cè)試工作中投入的人力、物力、財(cái)力逐漸加大,國(guó)外有些軟件公司的測(cè)試人員和開發(fā)人員的比例甚至達(dá)到1:1或2:1的程度,因此如何提高軟件測(cè)試效率是每個(gè)軟件研發(fā)單位和研發(fā)項(xiàng)目面臨的嚴(yán)峻問(wèn)題。
本文結(jié)合工程實(shí)踐,從軟件的可測(cè)試性和軟件測(cè)試組織兩個(gè)方面進(jìn)行分析,探討提高軟件測(cè)試效率的方法。
1、影響軟件測(cè)試效率的因素
影響軟件測(cè)試效率的因素很多,本文只論述被測(cè)軟件質(zhì)量和軟件測(cè)試組織對(duì)軟件測(cè)試效率的影響。通過(guò)軟件測(cè)試可以發(fā)現(xiàn)軟件中的某些問(wèn)題,軟件中存在的某些潛在問(wèn)題由于受測(cè)試工具、測(cè)試方法和測(cè)試時(shí)間的限制而無(wú)法發(fā)現(xiàn),測(cè)試中發(fā)現(xiàn)的問(wèn)題最終需要通過(guò)軟件開發(fā)人員進(jìn)行糾正,從某種角度來(lái)看,軟件測(cè)試并不能從根本上提高軟件質(zhì)量,軟件質(zhì)量的高低直接取決于軟件開發(fā)人員的設(shè)計(jì)與編程水平,好的軟件開發(fā)人員編寫完成的軟件具有問(wèn)題少、易維護(hù)等特點(diǎn),但有時(shí)會(huì)出現(xiàn)修改完成了一個(gè)軟件缺陷,同時(shí)又引人多個(gè)軟件缺陷的情況,需經(jīng)過(guò)多輪回歸測(cè)試才能夠完成問(wèn)題歸零。所以,雖然軟件測(cè)試是提高軟件質(zhì)量的有效途徑,但提高軟件開發(fā)人員的水平,提高反映軟件設(shè)計(jì)質(zhì)量和開發(fā)質(zhì)量的軟件的可測(cè)試性是提高軟件質(zhì)量的根本途徑。
軟件測(cè)試人員對(duì)項(xiàng)目需求的理解程度,對(duì)測(cè)試?yán)碚摗y(cè)試工具和測(cè)試方法的掌握程度,以及對(duì)被測(cè)軟件模塊在項(xiàng)目中的重要程度和成熟程度的認(rèn)識(shí),對(duì)軟件測(cè)試效率同樣有很大的影響,所以在工程中需合理組織軟件測(cè)試,提高軟件測(cè)試效率。
2、軟件的可測(cè)試性
2.1 可測(cè)試性軟件的特征
可測(cè)試軟件具有以下特征:
(1)可操作性。可操作性是指:被測(cè)軟件的錯(cuò)誤很少,可以避免重復(fù)測(cè)試的開銷;沒(méi)有阻礙測(cè)試連續(xù)執(zhí)行的錯(cuò)誤;在軟件設(shè)計(jì)時(shí)應(yīng)允許在開發(fā)階段進(jìn)行部分測(cè)試活動(dòng)。
(2)可觀察性。可觀察性包括:每個(gè)輸入有唯一的輸出;系統(tǒng)狀態(tài)和變量可見,或在運(yùn)行中可查詢;過(guò)去的系統(tǒng)狀態(tài)和變量可見,或在運(yùn)行中可查詢;所有影響輸出的因素都可見;容易識(shí)別錯(cuò)誤輸出;自動(dòng)報(bào)告內(nèi)部錯(cuò)誤;可獲取源代碼。
(3)可控制性。可控制性是指:所有可能的輸出都產(chǎn)生于某種輸入組合;通過(guò)某種輸入組合,所有代碼都可能被執(zhí)行;軟件測(cè)試人員可直接控制軟件和硬件的狀態(tài)及變量;輸入和輸出格式保持一致且有規(guī)范的結(jié)構(gòu);能夠便利地對(duì)測(cè)試進(jìn)行說(shuō)明,以及方便地執(zhí)行和重構(gòu)測(cè)試。
(4)可分解性。軟件系統(tǒng)由眾多獨(dú)立模塊構(gòu)成,每個(gè)軟件模塊均可獨(dú)立進(jìn)行測(cè)試。
(5)簡(jiǎn)單性。簡(jiǎn)單性包括功能簡(jiǎn)單性、結(jié)構(gòu)簡(jiǎn)單性、代碼簡(jiǎn)單性。
(6)穩(wěn)定性。軟件的變化是不經(jīng)常的,變化是可控制的,軟件的變化不影響已有的測(cè)試,失效后能夠得到良好恢復(fù)。
(7)易理解性。易理解性包括:設(shè)計(jì)能夠被很好地理解;內(nèi)部、外部和共享構(gòu)件之間的依賴性能夠被很好地理解;測(cè)試人員可方便獲取技術(shù)文檔,并及時(shí)掌握設(shè)計(jì)更改情況;技術(shù)文檔組織合理、明確詳細(xì)。
2.2 提高軟件可測(cè)試性的途徑
在實(shí)際工作中,可通過(guò)以下幾個(gè)途徑提高軟件的可測(cè)試性:減少并控制需求的變更;加強(qiáng)軟件可測(cè)試性的設(shè)計(jì);重視并規(guī)范技術(shù)文檔的編寫。
2.2.1 減少并控制需求的變更
用戶需求可分為如下三個(gè)層次:基本需求、預(yù)期需求和擴(kuò)展需求三類。其中預(yù)期需求是明示的,而基本需求和擴(kuò)展需求是非明示的。所謂擴(kuò)展需求是指這些特征在用戶的期望范圍之外,并且當(dāng)其存在時(shí)將是非常令人滿意的。由于種種原因,軟件的需求不確定性是客觀存在的,是不可避免的,軟件規(guī)模越大,研制周期越長(zhǎng),需求的不確定性就越大。軟件需求不確定性原因主要包括:用戶在表述需求時(shí)常常帶有不確定性與模糊性;隨著開發(fā)進(jìn)程的推進(jìn),用戶對(duì)所建應(yīng)用系統(tǒng)理解的不斷深入,對(duì)原來(lái)模糊的或非明示的需求有了新的認(rèn)識(shí),隨時(shí)會(huì)提出需求的變更;由于開發(fā)人員的領(lǐng)域知識(shí)的局限性,導(dǎo)致引發(fā)對(duì)需求的誤解;用戶需求的獲取過(guò)程與描述形式往往采用非形式化的自然語(yǔ)言,以及自然概念中存在的本質(zhì)矛盾,使需求的規(guī)范描述發(fā)生困難。
(1)識(shí)別項(xiàng)目需求
識(shí)別項(xiàng)目需求是項(xiàng)目成功的關(guān)鍵,為了減少需求的不確定性,首先應(yīng)充分認(rèn)識(shí)確定需求的重要性,通過(guò)與用戶的溝通,使用戶能充分認(rèn)識(shí)到軟件需求的變更對(duì)軟件質(zhì)量、進(jìn)度和成本的影響,積極參與到確定軟件需求的活動(dòng)中,達(dá)到在進(jìn)行軟件設(shè)計(jì)前盡量確定軟件需求的目的。同時(shí)在識(shí)別項(xiàng)目需求時(shí),除了用戶明示的需求外,還需關(guān)注用戶基本需求,用戶基本需求常常體現(xiàn)在項(xiàng)目的領(lǐng)域知識(shí)、項(xiàng)目所在行業(yè)的相關(guān)標(biāo)準(zhǔn)等方面。實(shí)踐證明,開發(fā)人員對(duì)領(lǐng)域知識(shí)掌握的程度直接影響到項(xiàng)目需求的確定,開發(fā)人員通過(guò)對(duì)領(lǐng)域知識(shí)的積累有助于項(xiàng)目需求的確定。
(2)需求文檔化及需求評(píng)審
按照軟件工程化要求,用戶應(yīng)該向研制方正式提交需求文檔,研制方根據(jù)用戶需求進(jìn)行需求分析形成產(chǎn)品需求,用戶需求及產(chǎn)品需求均需文檔化并經(jīng)過(guò)評(píng)審,以盡早發(fā)現(xiàn)不合理的需求。
(3)需求管理、需求變更的控制
在系統(tǒng)研制過(guò)程中應(yīng)對(duì)需求進(jìn)行管理,首先建立需求庫(kù)及需求跟蹤矩陣,在需求跟蹤矩陣中反映研制各階段工作產(chǎn)品與需求的對(duì)應(yīng)關(guān)系,并對(duì)需求進(jìn)行需求的雙向跟蹤。
(4)采用軟件需求管理工具
采用需求管理工具,可以提高需求管理工作流程的自動(dòng)化程度,使需求管理可以在項(xiàng)目實(shí)施過(guò)程中得到有效地推行。需求管理工具可以在整個(gè)項(xiàng)目生命周期內(nèi),幫助團(tuán)隊(duì)有效地協(xié)作,將需求的變更信息及時(shí)傳送到團(tuán)隊(duì)的每個(gè)成員,可以使跨項(xiàng)目團(tuán)隊(duì)的所有成員都能掌握必要的需求詳細(xì)信息,并對(duì)軟件項(xiàng)目規(guī)劃、項(xiàng)目跟蹤與監(jiān)督實(shí)施管理。
2.2.2 加強(qiáng)軟件可測(cè)試性設(shè)計(jì)
在項(xiàng)目設(shè)計(jì)階段應(yīng)注重對(duì)軟件可測(cè)試性的設(shè)計(jì)。項(xiàng)目負(fù)責(zé)人可根據(jù)項(xiàng)目具體情況對(duì)軟件可測(cè)試性提出具體要求,對(duì)軟件注釋率、軟件模塊規(guī)模、模塊圈復(fù)雜度、基本圈復(fù)雜度、操作數(shù)的個(gè)數(shù)以及過(guò)程出口個(gè)數(shù)等進(jìn)行規(guī)定,在軟件設(shè)計(jì)及編程階段嚴(yán)格按照規(guī)范執(zhí)行,可有效地提高軟件測(cè)試效率。實(shí)踐證明,如果在項(xiàng)目設(shè)計(jì)階段不進(jìn)行軟件可測(cè)試性的設(shè)計(jì),待軟件完成后再根據(jù)可測(cè)試性要求對(duì)軟件進(jìn)行修改完善常常需要花費(fèi)巨大的人力和物力,同時(shí)大量修改對(duì)軟件質(zhì)量也會(huì)帶來(lái)不利影響。
2.2.3 重視并規(guī)范技術(shù)文檔的編寫
技術(shù)文檔不僅是開發(fā)人員進(jìn)行信息交流的手段,也是測(cè)試人員進(jìn)行測(cè)試的依據(jù)。所以軟件相關(guān)文檔應(yīng)描述明確詳細(xì),組織合理,并根據(jù)需求和設(shè)計(jì)的變更及時(shí)更新。同時(shí)為了給獨(dú)立測(cè)試人員提供更多的信息,在技術(shù)文檔中可增加各軟件模塊的重要程度、重用性及測(cè)試歷史等信息,使得獨(dú)立測(cè)試人員可以合理分配精力,對(duì)重要軟件進(jìn)行重點(diǎn)測(cè)試,減少不必要的重復(fù)勞動(dòng),提高測(cè)試效率。
3、軟件測(cè)試方法與組織
3.1 軟件測(cè)試方法
軟件模塊級(jí)測(cè)試分為白盒測(cè)試和黑盒測(cè)試。黑盒測(cè)試注重于測(cè)試軟件的功能性需求,試圖發(fā)現(xiàn)功能缺陷或遺漏、界面錯(cuò)誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤、性能錯(cuò)誤及初始化和中止等類型的錯(cuò)誤。白盒測(cè)試依賴對(duì)程序細(xì)節(jié)的嚴(yán)密檢驗(yàn),對(duì)軟件的邏輯路徑進(jìn)行測(cè)試,在不同的程序點(diǎn)檢驗(yàn)“程序的狀態(tài)”以判定預(yù)期狀態(tài)或待驗(yàn)證狀態(tài)與真實(shí)狀態(tài)是否相符。在軟件測(cè)試中,常常結(jié)合黑盒和白盒兩種測(cè)試方法,相互補(bǔ)充。
3.2 軟件測(cè)試人員
軟件測(cè)試可由軟件開發(fā)人員、獨(dú)立測(cè)試人員或用戶進(jìn)行。在組織軟件測(cè)試時(shí),可根據(jù)不同人員的特點(diǎn)進(jìn)行組織,使得各類測(cè)試相互補(bǔ)充。
軟件開發(fā)人員熟悉軟件需求及被測(cè)軟件,清楚各軟件模塊的重要程度和相互關(guān)系,了解各軟件模塊以前的測(cè)試及修改等歷史情況,可以有針對(duì)性地進(jìn)行測(cè)試;軟件開發(fā)人員和用戶交流較為方便,在測(cè)試中能夠發(fā)現(xiàn)與需求不一致的軟件錯(cuò)誤。但是開發(fā)人員急于證明他們的程序是毫無(wú)錯(cuò)誤的,是按照用戶的需求開發(fā)的,而且完全能夠按照預(yù)定的進(jìn)度和預(yù)算完成,這將影響開發(fā)人員完成相關(guān)測(cè)試任務(wù)。
獨(dú)立測(cè)試人員應(yīng)具備較強(qiáng)的測(cè)試?yán)碚撍胶蜏y(cè)試經(jīng)驗(yàn),熟練掌握軟件測(cè)試工具,并知悉被測(cè)軟件的功能需求才能夠?qū)浖M(jìn)行系統(tǒng)全面的測(cè)試。但獨(dú)立測(cè)試人員有時(shí)會(huì)缺乏相應(yīng)領(lǐng)域的專業(yè)知識(shí),主要測(cè)試依據(jù)是用戶的技術(shù)要求及開發(fā)人員在軟件研制過(guò)程中形成的文檔,一方面這些文檔中缺乏對(duì)用戶基本需求的描述;另一方面,獨(dú)立測(cè)試人員常常需通過(guò)開發(fā)人員來(lái)進(jìn)行需求的理解,因此在軟件測(cè)試中有時(shí)無(wú)法發(fā)現(xiàn)軟件不滿足需求方面的錯(cuò)誤。但這種錯(cuò)誤往往從用戶角度來(lái)看是最嚴(yán)重的。同時(shí),獨(dú)立測(cè)試人員由于對(duì)各軟件模塊的重要性及相互關(guān)系了解不深。有時(shí)會(huì)影響測(cè)試效率。
在條件允許的情況下,軟件完成后可提交用戶試用。用戶在試用中根據(jù)實(shí)際使用需求進(jìn)行操作,其中包括各種正常操作流程和非正常操作流程。用戶試用可有效檢驗(yàn)軟件是否滿足用戶需求,同時(shí)在用戶試用中對(duì)軟件的可靠性等方面也同步進(jìn)行了測(cè)試。因?yàn)橛脩粼囉梅绞酵瑢?shí)際使用方式非常接近,所以通過(guò)用戶試用獲得好評(píng)的軟件基本可以滿足今后的實(shí)際使用要求。
3.3 提高軟件測(cè)試效率的方法
為了提高軟件測(cè)試效率,測(cè)試人員需要熟悉掌握軟件涉及的領(lǐng)域知識(shí),了解軟件各項(xiàng)功能的重要程度和成熟程度,掌握測(cè)試?yán)碚摵凸ぞ撸挥脩羰球?yàn)證需求正確性的主導(dǎo)力量,應(yīng)充分發(fā)揮用戶的積極作用。
在組織軟件測(cè)試時(shí),可通過(guò)以下幾個(gè)方面提高軟件測(cè)試效率:
● 根據(jù)不同測(cè)試人員的特點(diǎn)進(jìn)行測(cè)試分工,單元測(cè)試應(yīng)以軟件開發(fā)人員為主進(jìn)行,以保證每個(gè)單元能夠完成設(shè)計(jì)的功能。在很多情況下,集成測(cè)試也可以開發(fā)人員為主進(jìn)行。當(dāng)軟件體系結(jié)構(gòu)完成后,獨(dú)立測(cè)試機(jī)構(gòu)介人;
● 軟件測(cè)試人員應(yīng)注重與用戶的溝通,及早發(fā)現(xiàn)需求分析、理解不合理的問(wèn)題,避免今后花費(fèi)大量的資源和時(shí)間進(jìn)行改正;
● 對(duì)于軟件開發(fā)人員,需加強(qiáng)測(cè)試方法的培訓(xùn),提高自我測(cè)試的效率;
● 在選擇獨(dú)立測(cè)試人員時(shí),盡量選擇比較熟悉了解被測(cè)軟件相關(guān)領(lǐng)域知識(shí)的人員;
● 獨(dú)立測(cè)試人員應(yīng)該在軟件開發(fā)的需求階段就參與項(xiàng)目的研制,以便更好地制定測(cè)試計(jì)劃、確定測(cè)試目標(biāo)及編寫測(cè)試用例。通過(guò)找出項(xiàng)目中關(guān)鍵的模塊和出錯(cuò)率高的模塊,可使測(cè)試首先集中在最重要的部分,避免發(fā)生把過(guò)多時(shí)間花費(fèi)在非重要模塊的測(cè)試而沒(méi)有時(shí)間測(cè)試重要的模塊的情況;
● 被測(cè)軟件在測(cè)試中發(fā)現(xiàn)了問(wèn)題,要進(jìn)行有組織的分析研究,然后權(quán)衡利弊進(jìn)行規(guī)范化修改,避免反復(fù)修改,反復(fù)測(cè)試;
● 規(guī)范軟件配置管理,通過(guò)管理及技術(shù)手段,對(duì)軟件和文檔版本進(jìn)行控制,保障軟件測(cè)試的有效性。
4、結(jié)束語(yǔ)
實(shí)踐證明,通過(guò)提高被測(cè)軟件的可測(cè)試性,以及合理組織軟件測(cè)試工作,可以有效地提高軟件測(cè)試效率。隨著軟件測(cè)試的重要性得以承認(rèn),軟件測(cè)試階段在整個(gè)軟件開發(fā)周期中所占的比重也日益增大。為了將缺陷和錯(cuò)誤消滅在萌芽之中,軟件測(cè)試將逐步發(fā)展成為軟件開發(fā)每一階段都要進(jìn)行而且需要反復(fù)進(jìn)行的活動(dòng)。軟件測(cè)試中大量的工作是機(jī)械的、重復(fù)的、枯燥的和非智力的,但逐步加強(qiáng)軟件自動(dòng)化測(cè)試的研究和推廣將是今后軟件產(chǎn)業(yè)的發(fā)展趨勢(shì)。
posted on 2013-01-16 13:35 順其自然EVO 閱讀(543) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄 、管理方向