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