總結(jié)是對某一特定時間段內(nèi)的學(xué)習(xí)和工作生活等表現(xiàn)情況加以回顧和分析的一種書面材料,它能夠使頭腦更加清醒,目標(biāo)更加明確,讓我們一起來學(xué)習(xí)寫總結(jié)吧。那么我們該如何寫一篇較為完美的總結(jié)呢?下面是小編為大家?guī)淼目偨Y(jié)書優(yōu)秀范文,希望大家可以喜歡。
軟件測試總結(jié)與建議 軟件測試總結(jié)自己的不足之處篇一
姓名:某某 學(xué)號:20090001 在大慶浦東軟件平臺有限公司經(jīng)過一周的軟件測試實(shí)訓(xùn),從對軟件測試沒有什么經(jīng)驗(yàn)的我初步掌握了軟件測試的方法和技能,收獲頗多。
我在大學(xué)期間的專業(yè)是信息與計算科學(xué),原本打算從事網(wǎng)絡(luò)方面的工作,對活動目錄、數(shù)據(jù)庫、操作系統(tǒng)等的知識比較感興趣。經(jīng)過這次理論學(xué)習(xí),了解到要做好軟件測試,要求掌握的知識并不僅僅是測試方面的,網(wǎng)絡(luò)、數(shù)據(jù)庫、操作系統(tǒng)等的知識對做好測試也是很有幫助的。這讓我明確了以后學(xué)習(xí)的目標(biāo),在不斷學(xué)習(xí)軟件測試的同時,也應(yīng)該繼續(xù)其他相關(guān)知識的深入學(xué)習(xí)。通過此次學(xué)習(xí),對整個軟件測試行業(yè)的了解大大的加深。以前認(rèn)為軟件測試只是枯燥的反復(fù)的使用被測試軟件來發(fā)現(xiàn)異常的問題,以為軟件測試并不重要,低開發(fā)一等。現(xiàn)在認(rèn)識到了軟件測試的重要性,軟件測試是軟件產(chǎn)業(yè)向軟件工業(yè)化生產(chǎn)時代邁進(jìn)不可缺少的重要組成部分,是保證軟件質(zhì)量達(dá)到客戶需求不可缺少的環(huán)節(jié)。軟件測試在國內(nèi)是一個新的職業(yè),發(fā)展得比較晚,但它的重要性正在為行業(yè)所重視。
在學(xué)習(xí)過程中,我了解了作為一個合格的測試人員所應(yīng)具備的素質(zhì)與技能。其中個人素質(zhì)在測試工作中起到了非常重要的作用,它包括你的信心、耐心、細(xì)心和與人交流溝通的能力,它將貫穿你工作生涯的整個過程。在測試?yán)碚撋希覀兿到y(tǒng)學(xué)習(xí)了軟件測試的流程,各種測試階段和測試方法,以及測試工具的使用。通過這些課程的學(xué)習(xí),讓我們對軟件工程也有了更深刻的理解,為以后的測試工作作了很好的理論儲備和技能的提升。
軟件測試作為軟件開發(fā)過程中一個非常重要的環(huán)節(jié),越來越成為軟件開發(fā)商和用戶關(guān)注的焦點(diǎn)。完善的測試是軟件質(zhì)量的保證,因此軟件測試就成了一項重要而艱巨的工作,要做好這項工作當(dāng)然也絕非易事,我在做軟件測試工作中總結(jié)出了一些經(jīng)驗(yàn)和技巧。1.功能點(diǎn)的細(xì)化
在進(jìn)行測試前,先將所要測試的功能細(xì)分,填寫《測試用例表》,有針對性的運(yùn)行功能測試案例,逐個對每個功能細(xì)分點(diǎn)進(jìn)行測試。在每次運(yùn)行測試案例之前,明確此次運(yùn)行的目的和預(yù)期的輸出結(jié)果,并要做好記錄。2.注意測試中的錯誤集中發(fā)生的現(xiàn)象
有一些錯誤是和程序開發(fā)人員的編程水平和習(xí)慣有很大關(guān)系的。例如程序中的拼寫錯誤,習(xí)慣用法等。注意收集并記錄這些現(xiàn)象,有助于更快、更多地發(fā)現(xiàn)類似的錯誤。
3.盡可能多的使用非常規(guī)的測試 充分考慮到各種合法的輸入和不合法的輸入以及各種邊界條件。邊界值往往是最容易出現(xiàn)異常的情況,特殊的情況下甚至要制造極端的狀態(tài)和意外狀態(tài),比如網(wǎng)絡(luò)突然中斷,和電源突然斷電等情況。
4.對測試錯誤結(jié)果一定要有一個確認(rèn)的過程
一般有a測試出來的錯誤,一定要有一個b來確認(rèn)。5.制定嚴(yán)格的測試計劃
測試時間安排的盡量寬松,不要希望在極短的時間內(nèi)完成一個高水平的測試。6.回歸測試的關(guān)聯(lián)性一定要引起充分的注意
在開發(fā)人員剛修復(fù)bug之后的地方,再找一找,往往開發(fā)人員只修復(fù)報告出來的缺陷而不去考慮別的功能在修改時可能會重新造成錯誤。修改一個錯誤而引起更多的錯誤出現(xiàn)的現(xiàn)象并不少見。
7.測試文檔要盡可能詳細(xì)
《測試用例表》中的功能點(diǎn)可盡量的詳細(xì),如實(shí)、詳細(xì)地記錄每次運(yùn)行測試案例的輸入數(shù)據(jù),輸出數(shù)據(jù),出錯提示,進(jìn)行測試的時間,完成測試的時間等,便于以后對測試工作的回溯。8.重視交流和溝通
包括和程序開發(fā)人員的交流,同是測試人員之間的交流,網(wǎng)上技術(shù)論壇和網(wǎng)友的交流,和客戶的交流等。多思考,多交流,多提問,通過多種溝通交流的途徑,可以少走很多彎路,同時可以學(xué)到很多東西。9.善于總結(jié)
在測試過程中發(fā)現(xiàn)的所有問題,異常情況,發(fā)現(xiàn)程序開發(fā)人員易犯,常犯的錯誤,各種有價值的經(jīng)驗(yàn)教訓(xùn),使用系統(tǒng)和操作數(shù)據(jù)庫時發(fā)現(xiàn)或者學(xué)到的技巧,使用測試工具時的心得等等,都可以隨手記錄在筆記本或者電腦上。這些都將是今后工作中可以參照的珍貴資料,同時也會成為自己的寶貴經(jīng)驗(yàn)。10.妥善保存一切測試過程文檔。
這次軟件測試實(shí)訓(xùn)為我們以后從事軟件測試工作打下了良好的專業(yè)基礎(chǔ),為我們的進(jìn)一步學(xué)習(xí)提高打下了扎實(shí)的理論基礎(chǔ)。對測試過程有了初步的認(rèn)識,測試計劃、測試設(shè)計、測試開發(fā)、測試執(zhí)行、測試評估、測試報告貫穿整個軟件開發(fā)過程。單元測試、集成測試、系統(tǒng)測試、驗(yàn)證測試每個階段都應(yīng)以用戶需求為依據(jù)。這些基本的概念雖然比較抽象,但對以后的實(shí)踐是大有益處的??偟膩碚f,這次培訓(xùn)效果不錯,對自己有一定的提升,這完全不同與學(xué)校的學(xué)習(xí),因?yàn)樗淤N近工作,針對以后工作的內(nèi)容作了很多實(shí)例的練習(xí)與工具的使用,為我們更快的加入工作提供的很好的前提。接下來一段時間,我將利用假期進(jìn)入相關(guān)測試部門進(jìn)行實(shí)際項目的訓(xùn)練,我相信在我有了很好的理論基礎(chǔ)后,會在工作中很好的加以應(yīng)用,讓測試工作做得更好。同時,我會更加努力的學(xué)習(xí)與工作,遇到問題會及時多渠道尋找解決方法,積極上進(jìn),希望早日成為一名優(yōu)秀的測試人員。
軟件測試總結(jié)與建議 軟件測試總結(jié)自己的不足之處篇二
面向?qū)ο蟪绦虻能浖y試方法
在軟件生命周期過程中,軟件測試是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié)之一。面向?qū)ο蠓椒▽W(xué)在軟件工程中的引入極大地方便了軟件的設(shè)計、開發(fā)和維護(hù),為創(chuàng)建高可靠性的軟件系統(tǒng)提供了重要保證。但面向?qū)ο蟪绦虻姆庋b、繼承、多態(tài)和異常處理機(jī)制等新特性卻給測試帶來新的挑戰(zhàn)。一方面需要調(diào)整、改進(jìn)傳統(tǒng)的測試策略和方法;另一方面探索出適應(yīng)面向?qū)ο蟪绦蛱卣鞯臏y試?yán)碚撆c技術(shù)也尤為必要。
面向?qū)ο?object oriented,oo)是當(dāng)前計算機(jī)界關(guān)心的重點(diǎn),它是90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、cad技術(shù)、人工智能等領(lǐng)域。
面向?qū)ο蟮亩x或說明對象的定義的非常少。其初,“面向?qū)ο蟆笔菍V冈诔绦蛟O(shè)計中采用封裝、繼承、抽象等設(shè)計方法??墒牵@個定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個方面。如,面向?qū)ο蟮姆治觯╫oa,object oriented analysis),面向?qū)ο蟮脑O(shè)計(ood,object oriented design)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒?shí)現(xiàn)(oop,object oriented programming)。許多有關(guān)面向?qū)ο蟮奈恼露贾皇侵v述在面向?qū)ο蟮拈_發(fā)中所需要注意的問題或所采用的比較好的設(shè)計方法??催@些文章只有真正懂得什么是對象,什么是面向?qū)ο?,才能最大程度地對自己有所裨益。這一點(diǎn),恐怕對初學(xué)者甚至是從事相關(guān)工作多年的人員也會對它們的概念模糊不清。
1、面向?qū)ο蟮幕靖拍?/p>
(1)對象。
對象是人們要進(jìn)行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機(jī)等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。
(2)對象的狀態(tài)和行為。
對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。
對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。
對象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中
(3)類。具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實(shí)例是對象。
類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實(shí)現(xiàn)該操作的方法來描述。
(4)類的結(jié)構(gòu)。
在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系。通常有兩種主要的結(jié)構(gòu)關(guān)系,即一般--具體結(jié)構(gòu)關(guān)系,整體--部分結(jié)構(gòu)關(guān)系。
①一般——具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系,或者是“is a”關(guān)系。
②整體——部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。
(5)消息和方法。
對象之間進(jìn)行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當(dāng)一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認(rèn)識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。
類中操作的實(shí)現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。消
2、面向?qū)ο蟮奶卣?/p>
(1)對象唯一性。
每個對象都有自身唯一的標(biāo)識,通過這種標(biāo)識,可找到相應(yīng)的對象。在對象的整個生命期中,它的標(biāo)識都不改變,不同的對象不能有相同的標(biāo)識。
(2)分類性。
分類性是指將具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應(yīng)用有關(guān)的重要性質(zhì),而忽略其他一些無關(guān)內(nèi)容。任何類的劃分都是主觀的,但必須與具體的應(yīng)用有關(guān)。
(3)繼承性。
繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類之間的一種關(guān)系。在定義和實(shí)現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎(chǔ)之上來進(jìn)行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。繼承性是面向?qū)ο蟪绦蛟O(shè)計語言不同于其它語言的最重要的特點(diǎn),是其他語言所沒有的。
在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。
在軟件開發(fā)中,類的繼承性使所建立的軟件具有開放性、可擴(kuò)充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重性。
采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu)。通過類的繼承關(guān)系,使公共的特性能夠共享,提高了軟件的重用性。
(4)多態(tài)性(多形性)多態(tài)性使指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。
多態(tài)性允許每個對象以適合自身的方式去響應(yīng)共同的消息。
多態(tài)性增強(qiáng)了軟件的靈活性和重用性。
面向?qū)ο蠓椒ǖ幕舅枷胧且唬好嫦驅(qū)ο蠓椒ㄊ且环N運(yùn)用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。
二: 面向?qū)ο蠓椒ㄊ且哉J(rèn)識論為基礎(chǔ),用對象來理解和分析問題空間,并設(shè)計和開發(fā)出由對象構(gòu)成的軟件系統(tǒng)(解空間)的方法。由于問題空間和解空間都是由對象組成的,這樣可以消除由于問題空間和求解空間結(jié)構(gòu)上的不一致帶來的問題。簡言之,面向?qū)ο缶褪敲嫦蚴虑楸旧?,面向?qū)ο蟮姆治鲞^程就是認(rèn)識客觀世界的過程。
面向?qū)ο蠓椒◤膶ο蟪霭l(fā),發(fā)展出對象,類,消息,繼承等概念。
面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)是:符合人們通常的思維方式;從分析到設(shè)計再到編碼采用一致的模型表示具有高度連續(xù)性;軟件重用性好。
面向?qū)ο筌浖y試的特點(diǎn)是: 1.掌握代碼檢查、走查與評審的基本方法和技術(shù); 2.掌握白盒測試和黑盒測試的測試用例的設(shè)計原則和方法; 3.掌握單元測試和集成測試的基本策略和方法;
4.了解系統(tǒng)測試、性能測試和可靠性測試的基本概念和方法; 5.了解面向?qū)ο筌浖蛍eb應(yīng)用軟件測試的基本概念和方法; 6.掌握軟件測試過程管理的基本知識和管理方法; 7.熟悉軟件測試的標(biāo)準(zhǔn)和文檔;
8.掌握qesuite軟件測試過程管理平臺和qesat/c++軟件分析和工具的使用方法。
軟件測試總結(jié)與建議 軟件測試總結(jié)自己的不足之處篇三
1.軟件測試定義:由人工或自動方法來執(zhí)行或評價系統(tǒng)或系統(tǒng)部分的過程,以驗(yàn)證它是否滿足規(guī)定的需求,或識別出期望的結(jié)果和實(shí)際結(jié)果之間的差異。2.軟件測試的分類:
測試對象或范圍分類:需求評審、設(shè)計評審、單元測試、程序測試、系統(tǒng)
測試、文檔測試、web應(yīng)用測試、客戶端測試、數(shù)據(jù)庫測試等;
測試目的分類:集成測試、功能測試、壓力測試、性能測試等等; 靜態(tài)測試、動態(tài)測試; 白盒測試、黑盒測試。3.軟件測試的基本流程與原則
基本流程:
測試用例設(shè)計-輸入數(shù)據(jù)、預(yù)期結(jié)果; 測試執(zhí)行-輸入數(shù)據(jù)執(zhí)行被測對象; 檢查實(shí)際輸出與預(yù)期結(jié)果。基本原則:
開始測試時認(rèn)定軟件有錯,測試要證明有錯; 測試應(yīng)該由獨(dú)立的測試團(tuán)隊來完成; 測試設(shè)計必須設(shè)計對應(yīng)的預(yù)期輸出;
要對合理、不合理(有效、無效)輸入數(shù)據(jù)都進(jìn)行測試; 檢查軟件的完備性、多余; 完整保留測試文檔;
一個被測對象中有錯誤的概率與已發(fā)現(xiàn)錯誤的個數(shù)成正比。測試成熟度級別:
0級:沒有區(qū)分測試與調(diào)試;
1級:測試的目的是證明軟件能用; 2級:測試的目的是證明軟件不能用;
3級:測試的目的不是為了證明什么,而是為了降低軟件使用風(fēng)險; 4級:測試是一種智能訓(xùn)練,能夠幫助專業(yè)人員開發(fā)出更高質(zhì)量的軟件。5.軟件測試與軟件工程,軟件過程的關(guān)系:
軟件工程:在給定的條件下(成本、時間)開發(fā)出高質(zhì)量的軟件產(chǎn)品。軟件生產(chǎn)過程的特性決定了軟件產(chǎn)品中不可避免包含有錯誤。軟件測試則是盡可能多地發(fā)現(xiàn)錯誤,從而保障軟件產(chǎn)品的質(zhì)量。的質(zhì)量因素:
產(chǎn)品修改:
可維護(hù)性,靈活性,可測試性 產(chǎn)品轉(zhuǎn)移:
可移植性,可復(fù)用性,互操作性 產(chǎn)品運(yùn)行:
正確性,易用性,可靠性,效率,完整性 7.軟件質(zhì)量困境
軟件質(zhì)量必須足夠好:存在價值
軟件產(chǎn)品無法完美:需要消耗過多的資源、時間、成本
軟件開發(fā)需要在兩個極端之間進(jìn)行平衡:軟件足夠好的同時又不完美。8.質(zhì)量控制、質(zhì)量保證和質(zhì)量管理
軟件質(zhì)量控制其實(shí)是基本方法,通過一系列的技術(shù)來科學(xué)地測量過程的狀態(tài)。如缺陷率、測試覆蓋率等。
軟件質(zhì)量保證則是過程的參考、指南的集合,如iso9000、cmm/cmmi等,著重內(nèi)部的檢查,確保已獲取認(rèn)可的標(biāo)準(zhǔn)和步驟都已經(jīng)遵循。
軟件質(zhì)量管理則是實(shí)際操作的思想,質(zhì)量管理控制和協(xié)調(diào)組織的質(zhì)量活動,包括質(zhì)量控制、質(zhì)量保證和質(zhì)量改進(jìn)。應(yīng)用的屬性:
網(wǎng)絡(luò)密集型應(yīng)用;并發(fā)性;大負(fù)載量;性能;高可靠性、高可用性;安全性-內(nèi)容敏感;
10.軟件評審的目的,評審度量及其應(yīng)用
評審的目標(biāo)在于:盡早發(fā)現(xiàn)軟件過程中的錯誤,防止錯誤傳遞、蔓延至后續(xù)活動,防止錯誤轉(zhuǎn)化為缺陷。
準(zhǔn)備工作量ep-實(shí)際評審會之前所需工作量; 評估工作量ea-實(shí)際評審所花費(fèi)的工作量 返工工作量er-修改評審所發(fā)現(xiàn)錯誤的工作量 工作產(chǎn)品規(guī)模wps-評審對象的規(guī)模
發(fā)現(xiàn)的主要錯誤數(shù)errmajor-多于預(yù)期的改錯工作量的錯誤數(shù)目 發(fā)現(xiàn)的次要錯誤數(shù)errminor-少于預(yù)期的改錯工作量的錯誤數(shù)目 總評審工作量ereview = ep+ea+er 錯誤總數(shù)errtot = errmajor+errminor 錯誤密度:評審的每單位工作產(chǎn)品發(fā)現(xiàn)的錯誤數(shù)ed = errtot / wps 錯誤密度數(shù)值的含義:較小(產(chǎn)品質(zhì)量非常好或評審不夠徹底);較大(產(chǎn)品質(zhì)量存在缺陷)
11.軟件測試計劃:描述對計算機(jī)軟件配置項、子系統(tǒng)、系統(tǒng)進(jìn)行測試的計劃安排,內(nèi)容包括測試的環(huán)境、測試工作的標(biāo)識及測試工作的時間安排。
軟件測試報告:是對計算機(jī)軟件配置項、軟件系統(tǒng)或子系統(tǒng),或與軟件相關(guān)項目執(zhí)行合格性測試的記錄 12.軟件測試活動
制訂測試計劃(測試分析員)
測試設(shè)計(測試設(shè)計人員)-方案設(shè)計 測試及測試用例設(shè)計 測試過程
樁模塊、驅(qū)動模塊設(shè)計
測試實(shí)施(測試設(shè)計員)-實(shí)現(xiàn)測試設(shè)計 單元測試(測試員)集成測試(測試員)系統(tǒng)測試(測試員)
評估測試(測試設(shè)計人員)
13.無向圖的相關(guān)定義:
連接性:節(jié)點(diǎn)ni、nj是連接的,當(dāng)且僅當(dāng)ni、nj在同一條路徑上。組件:圖的組件是相連節(jié)點(diǎn)的最大集合
圖g的圈復(fù)雜度v(g)=e-n+2p,其中e為g的邊數(shù),n為節(jié)點(diǎn)數(shù),p為組件數(shù)。14.圖覆蓋:給定一個關(guān)于圖g的準(zhǔn)則c的測試需求集合tr,測試集合t在圖g上滿足準(zhǔn)則c當(dāng)且僅當(dāng)對tr中每個測試需求tr,path(t)中至少存在一條測試路徑p滿足tr。
簡單路徑:如果從ni到nj的一條路徑中,除了始節(jié)點(diǎn)和終節(jié)點(diǎn)可以相同外,沒有任何節(jié)點(diǎn)出現(xiàn)次數(shù)多于一次,則該路徑為簡單路徑。
主路徑:如果從ni到nj是一條簡單路徑,并且它不作為任何其他簡單路徑的子路徑出現(xiàn),則稱之為主路徑。
主路徑覆蓋(ppc)準(zhǔn)則:tr包含圖中每一條主路徑。
指定路徑覆蓋(spc):tr包含一個測試路徑集s,s為指定參數(shù)。15.白盒測試方法
白盒測試:根據(jù)被測對象的內(nèi)部結(jié)構(gòu)和運(yùn)行機(jī)制來設(shè)計測試用例的方法,又稱為結(jié)構(gòu)測試、邏輯驅(qū)動測試、覆蓋測試
被測對象的獨(dú)立路徑至少覆蓋一次; 所有邏輯取值測試[真、假]; 循環(huán)邊界測試;
檢查內(nèi)部數(shù)據(jù)結(jié)構(gòu)、邊界條件。16.黑盒測試方法
黑盒測試方法又稱功能測試方法、數(shù)據(jù)驅(qū)動測試方法,測試設(shè)計時不考慮被測對象的內(nèi)部結(jié)構(gòu),以檢查系統(tǒng)功能(功能的正確、完整、邏輯流程、人機(jī)界面、文檔內(nèi)容、系統(tǒng)安裝/初始化)
以被測對象的外部特征為測試依據(jù)。17.模糊測試方法
模糊測試方法:構(gòu)造大量的隨機(jī)數(shù)據(jù)作為系統(tǒng)的輸入,從而檢驗(yàn)系統(tǒng)在各種數(shù)據(jù)情況下是否出現(xiàn)問題。
18.增量測試:單元測試、調(diào)用依賴的模塊集成測試,逐步擴(kuò)展直到形成整個軟件系統(tǒng)。
19.突擊測試:所有模塊一次性集成為一個完整的系統(tǒng),然后進(jìn)行完全測試。20.等價類劃分:
等價類劃分基于對輸入或輸出數(shù)據(jù)情況的評估,劃分成兩個或多個子集(等價類),然后從每個子集中選取一定的代表進(jìn)行測試的測試用例設(shè)計方法。21.極限測試
極限編程:利用輕量、敏捷的開發(fā)過程,使開發(fā)人員能夠更快地完成應(yīng)用程序的開發(fā)。強(qiáng)調(diào)頻繁測試、測試驅(qū)動的方式保證軟件質(zhì)量。
極限測試:為滿足極限編程思想和過程而設(shè)計的一套測試策略和流程,原來的測試技術(shù)、方法均可以使用 22.配置項測試的內(nèi)容
功能: 適合性
準(zhǔn)確性:功能的準(zhǔn)確與精度要求 互操作性:與外部設(shè)備、系統(tǒng)的接口 安全保密性:數(shù)據(jù)訪問的可控制性 可靠性: 成熟性:容錯處理、平均無故障時間
容錯性:邊界條件、功能、性能的降級情況、誤操作模式、故障模式 易恢復(fù)性:自動修復(fù)能力/時間、平均宕機(jī)時間、平均恢復(fù)時間、恢復(fù)能力等 易用性
易理解性:功能描述清晰、準(zhǔn)確;界面含義精確
易學(xué)性:在線幫助、幫助定位、各類手冊的易學(xué)、易用 易操作性:數(shù)據(jù)的有效檢查、解釋信息明確、界面切換 吸引性:人機(jī)界面定制 效率
時間特性:響應(yīng)時間、平均響應(yīng)時間、響應(yīng)極限時間、吞吐量、平均吞吐量、極限吞吐量,多任務(wù)并行測試
資源利用:大量并發(fā)任務(wù)下i/o設(shè)備利用、極限負(fù)載下i/o設(shè)備的負(fù)載、大量并發(fā)任務(wù)下用戶等待時間、內(nèi)存使用情況、數(shù)據(jù)傳輸能力等
維護(hù)性
易分析性:運(yùn)行狀態(tài)數(shù)據(jù)易分析 易變更性:軟件的可配置、修改能力 易測試性:變更之后的易測試情況 可移植性
適應(yīng)性:不同軟件、硬件環(huán)境的適應(yīng)能力 易安裝性:安裝、配置的復(fù)雜程度、難以程度 共存性:與其他軟件協(xié)同的能力 易替換性:版本的替換難以程度 依從性
以上所有特性遵循標(biāo)準(zhǔn)、規(guī)范的情況測試
23系統(tǒng)測試:系統(tǒng)非功能性測試,以檢驗(yàn)系統(tǒng)在超常數(shù)據(jù)規(guī)?;蜇?fù)載下,線程、cpu、內(nèi)存資源的利用和響應(yīng)時間、數(shù)據(jù)傳輸?shù)刃阅苤笜?biāo)是否滿足要求
24.測試計劃
確定測試充分性要求:覆蓋范圍、覆蓋程度 確定測試終止要求; 確定測試所需資源; 確定測試的軟件特性; 確定測試技術(shù)、方法; 確定測試準(zhǔn)出條件; 確定測試進(jìn)度計劃; 測試風(fēng)險分析。
25.測試設(shè)計:測試設(shè)計人員、測試程序員
測試用例設(shè)計:依據(jù)測試特性; 獲取測試數(shù)據(jù);
確定測試順序:資源、被測特性; 獲取測試資源:軟硬件、工具; 編寫測試程序; 建立測試環(huán)境; 撰寫測試設(shè)計說明。
26.測試總結(jié):
測試分析員-測試報告
總結(jié)測試計劃、測試說明的變化情況; 異常終止時測試未覆蓋范圍; 未能解決的測試問題; 總結(jié)測試結(jié)果(發(fā)現(xiàn)問題); 編寫測試報告;
根據(jù)問題報告、測試記錄,編寫測試問題報告。
27.軟件可靠性:在給定的運(yùn)行時間內(nèi)和給定的系統(tǒng)配置環(huán)境下,運(yùn)行給定的軟件功能時所 表現(xiàn)出來的質(zhì)量能力 28.系統(tǒng)性能指標(biāo)
系統(tǒng)資源利用率:分析性能指標(biāo),改善性能系統(tǒng)行為指標(biāo) 請求響應(yīng)時間:一次請求完成時間
事務(wù)響應(yīng)時間:一個事務(wù)所有請求完成的總時間
數(shù)據(jù)吞吐量:單位時間內(nèi)服務(wù)器接收、發(fā)送的數(shù)據(jù)量。
29.驗(yàn)收測試:用戶執(zhí)行的、使用真實(shí)數(shù)據(jù)進(jìn)行的測試,依據(jù)需求規(guī)格中的確認(rèn)標(biāo)準(zhǔn)進(jìn)行測試?;貧w測試:驗(yàn)證已測試過的內(nèi)容不受變更影響,確認(rèn)變更沒有引入新的錯誤。
30.α測試是由一個用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操 作環(huán)境下進(jìn)行的測試。
beta測試由軟件的最終用戶在一個或多個客戶場所進(jìn)行,開發(fā)者通常不在beta測試的現(xiàn)場。
測試關(guān)注的主要內(nèi)容 web內(nèi)容測試 界面 構(gòu)件
導(dǎo)航測試 安全性 性能
32.測試用例(test case)是為某個特殊目標(biāo)而編制的一組測試輸入、執(zhí)行條件以及預(yù)期結(jié)果,以便測試某個程序路徑或核實(shí)是否滿足某個特定需求。
33.軟件生存期定義:從軟件產(chǎn)品設(shè)計到軟件被淘汰的時間段。又稱軟件生命周期、生存周期。進(jìn)一步劃分為兩個階段:開發(fā)階段和維護(hù)階段(40%+60%)。
34.軟件安全定義:一種軟件質(zhì)量保證活動,他主要用來識別和評估可能對軟件產(chǎn)生負(fù)面影響并促使整個系統(tǒng)失效的潛在災(zāi)難。
35.軟件評審的目標(biāo)在于:盡早發(fā)現(xiàn)軟件過程中的錯誤,防止錯誤傳遞、蔓延至后續(xù)活動,防止錯誤轉(zhuǎn)化為缺陷。36.v模型
優(yōu)點(diǎn):既有底層測試又有高層測試。底層:單元測試。高層:系統(tǒng)測試。
將開發(fā)階段清楚的表現(xiàn)出來,便于控制開發(fā)的過程。當(dāng)所有階段都結(jié)束時,軟件開發(fā)就結(jié)束了。
缺點(diǎn):容易讓人誤解為測試是在開發(fā)完成之后的一個階段。
由于它的順序性,當(dāng)編碼完成之后,正式進(jìn)入測試時,這時發(fā)現(xiàn)的一些bug可能不容易找到其根源。
實(shí)際中,由于需求變更較大,導(dǎo)致要重復(fù)變更需求、設(shè)計、編碼、測試,返工量大。37.w模型:
優(yōu)點(diǎn):
將測試貫穿到整個軟件生命周期中,且除了代碼要測試,需求、設(shè)計等都要測試。更早介入軟件開發(fā)中,能盡早發(fā)現(xiàn)缺陷并修復(fù)。
測試與開發(fā)獨(dú)立起來,并與開發(fā)并行。缺點(diǎn):
對有些項目,開發(fā)過程中根本沒有文檔產(chǎn)生,故w模型無法使用。
對于需求和設(shè)計的測試技術(shù)要求很高,實(shí)踐起來很困難。
從n0中某節(jié)點(diǎn)開始到nf中某節(jié)點(diǎn)結(jié)束的一條路徑稱為一條測試路徑。
1.軟件缺陷:(符合下列規(guī)則的叫軟件缺陷):
1).軟件未達(dá)到產(chǎn)品說明書的功能
2).軟件出現(xiàn)了產(chǎn)品說明書指明不會出現(xiàn)的錯誤
3).軟件功能超出產(chǎn)品說明書指明范圍
4).軟件未達(dá)到產(chǎn)品說明書雖未指出但應(yīng)達(dá)到的目標(biāo)
5).軟件測試員認(rèn)為難以理解、不易使用、運(yùn)行速度緩慢、或者最終用戶認(rèn)為不好
2.單元測試:單元測試是對軟件設(shè)計的最小單元——模塊進(jìn)行正確性檢驗(yàn)的測試工作,主要測試模塊在語法、格式和邏輯上的錯誤。3.回歸測試
指軟件系統(tǒng)被修改或擴(kuò)充(如系統(tǒng)功能增強(qiáng)或升級)后重新進(jìn)行的測試,是為了保證對軟件所做的修改沒有引入新的錯誤而重復(fù)進(jìn)行的測試。
4.等價類:指某個輸入域的子集合,在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。
軟件測試總結(jié)與建議 軟件測試總結(jié)自己的不足之處篇四
軟件測試的目的是盡可能發(fā)現(xiàn)并改正被測試軟件中的錯誤,提高軟件的可靠性。
測試的目的就是為了保證軟件質(zhì)量
使用人工或自動手段來運(yùn)行或測定某個系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。
軟件缺陷
軟件缺陷是對軟件產(chǎn)品預(yù)期屬性的偏離現(xiàn)象 1.對產(chǎn)品規(guī)格說明的偏離
2.對用戶期望的偏離,即用戶要求未體現(xiàn)在產(chǎn)品中(可能是規(guī)格說明有疏漏,也可能是實(shí)現(xiàn)中的問題)
注意:軟件缺陷不可能完全避免
軟件質(zhì)量
軟件需求是衡量軟件質(zhì)量的基礎(chǔ)
規(guī)定了的標(biāo)準(zhǔn)是軟件開發(fā)必須遵循的準(zhǔn)則
如果已開發(fā)的軟件已經(jīng)滿足了那些明文規(guī)定的需求,卻沒有滿足隱含的需求,軟件產(chǎn)品的質(zhì)量仍然是有問題的
測試目的
測試是程序執(zhí)行的過程,目的在于發(fā)現(xiàn)錯誤(缺陷)
好的測試用例能有效地發(fā)現(xiàn)別的測試用例未發(fā)現(xiàn)的錯誤(缺陷)成功的測試是發(fā)現(xiàn)了未曾發(fā)現(xiàn)的錯誤
確保軟件的功能符合用戶的需求,把盡可能多的問題在發(fā)布或交付前發(fā)現(xiàn)并改正: 確保軟件完成了它所承諾或公布的功能 確保軟件滿足性能的要求
確保軟件是健壯的和適應(yīng)用戶環(huán)境的
一些原則:
一個好的測試用例具有較高的發(fā)現(xiàn)過去未被發(fā)現(xiàn)過的錯誤的概率; 自己不能測試自己編寫的程序;
對期望結(jié)果的描述是每個測試用例的必要組成部分; 杜絕不能重現(xiàn)或匆忙的測試;
既要編寫使用有效輸入條件的測試用例,也要編寫使用非法輸入條件的測試用例; 深入細(xì)致地審查測試結(jié)果 充分注意測試中的集群現(xiàn)象:測試后程序中殘存的錯誤數(shù)目與該程序中已發(fā)現(xiàn)的錯誤數(shù)目成正比;
讓最優(yōu)秀的人員去完成測試;
保證軟件的可測試性是軟件設(shè)計的一個重要目標(biāo); 不要為了測試方便而修改程序;
測試工作必須在任務(wù)建立之初就確定目標(biāo)。good-enough: 一種權(quán)衡投入/產(chǎn)出比的原則; 保證測試的覆蓋程度,但窮舉測試是不可能的; 所有的測試都應(yīng)該追朔到用戶需求;
越早測試越好,測試過程與開發(fā)過程應(yīng)該是相結(jié)合的; 測試的規(guī)模由小而大,從單元測試到系統(tǒng)測試;
為了盡可能多的發(fā)現(xiàn)錯誤,應(yīng)該由獨(dú)立的第三方來測試; 不能為了便于測試修改程序
既應(yīng)該測試軟件該做什么,也應(yīng)該測試軟件不該做什么
測試方法
(1)測試方法分類:
根據(jù)軟件測試的策略分類:
黑盒測試與白盒測試(功能性測試和結(jié)構(gòu)性測試),靜態(tài)測試與動態(tài)測試,手工測試與自動測試
根據(jù)測試的階段分類: 單元測試,集成測試,系統(tǒng)測試
(2)功能性測試和結(jié)構(gòu)性測試 a、功能性測試 基本觀點(diǎn):任何程序都可以看作是將從輸入定義域取值映射到輸出值域的函數(shù)(工程中的黑盒)。
測試在軟件的接口處進(jìn)行,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只根據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明(也稱“數(shù)據(jù)驅(qū)動測試”)。
黑盒測試一般為了發(fā)現(xiàn)以下幾類錯誤: 是否有不正確或遺漏的功能?
在接口上,輸入能否正確地接受?能否輸出正確的結(jié)果? 是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(如數(shù)據(jù)文件)訪問錯誤? 性能上是否能夠滿足要求? 是否有初始化或終止行錯誤? ??
常用方法:邊界值分析,健壯性分析,最壞情況分析,特殊值測試,輸入(輸出)等價類,基于決策樹的測試??
功能性測試的優(yōu)點(diǎn):
功能性測試與軟件如何實(shí)現(xiàn)無關(guān),所以如果實(shí)現(xiàn)發(fā)生變化,測試用例仍然有效; 測試用例開發(fā)可以與實(shí)現(xiàn)并行,可以壓縮總的項目開發(fā)時間。缺點(diǎn):
測試用例的冗余
b 結(jié)構(gòu)性測試
對軟件的過程性細(xì)節(jié)做細(xì)致的檢查,對所有的邏輯路徑進(jìn)行測試(也稱邏輯驅(qū)動測試)。結(jié)構(gòu)性測試一般對程序模塊做如下的檢查:
對程序模塊的所有獨(dú)立的執(zhí)行路徑至少測試一次;
對所有的邏輯判定,取“真”與“假”的情況都能至少測試一次; 在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體; 測試內(nèi)部數(shù)據(jù)的有效性 ??
(3)功能性測試與結(jié)構(gòu)性測試的比較 測試用例的基礎(chǔ):
功能性測試:需求規(guī)格說明
結(jié)構(gòu)性測試:程序源代碼(實(shí)現(xiàn))兩種方法單獨(dú)使用都是不充分的
如果所有已描述行為都沒有被實(shí)現(xiàn),結(jié)構(gòu)性測試永遠(yuǎn)也發(fā)現(xiàn)不了; 如果程序?qū)崿F(xiàn)了沒有被描述的行為,功能性測試用也發(fā)現(xiàn)不了;
測試級別與功能性和結(jié)構(gòu)性測試存在現(xiàn)實(shí)的關(guān)系: 結(jié)構(gòu)性測試最適合在單元級別上進(jìn)行; 功能性測試最適合在系統(tǒng)級別上進(jìn)行;
完全測試程序是不可能的: 原因: 輸入量太大 輸出結(jié)果太多 軟件實(shí)現(xiàn)途徑太多
軟件說明書沒有客觀標(biāo)準(zhǔn)
邊界值分析 程序與函數(shù): 程序的輸入——定義域 程序的輸出——值域 程序中變量的值域: 強(qiáng)類型語言 非強(qiáng)類型語言
邊界值測試的基本原理: 錯誤更可能出現(xiàn)在輸入變量的極值附近.單缺陷假設(shè):失效極少由兩個(或多個)缺陷的同時發(fā)生引起的。min、min+、nom、max-和max。
次邊界條件:
有些邊界條件在軟件內(nèi)部,最終用戶幾乎看不到,但是軟件測試仍有必要檢查。這樣的邊界條件稱為次邊界條件或者內(nèi)部邊界條件。如2的乘方和ascⅱ。
邊界值分析的特點(diǎn)和局限性
對于一n個變量函數(shù),邊界值分析會產(chǎn)生4n+1個測試用例。邊界值的取值取決于變量本身的性質(zhì)。邊界值分析對布爾變量沒有什么意義。邊界值分析假設(shè)變量是完全獨(dú)立的。
邊界值分析的問題 測試用例存在大量冗余 存在不完備現(xiàn)象 等價類測試
希望進(jìn)行完備性測試 同時又希望避免冗余 等價類測試考慮的因素 單/多缺陷假設(shè) 健壯性
等價類劃分:
把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測試用例。希望進(jìn)行完備性測試 同時又希望避免冗余
等價類測試步驟
使用這一方法設(shè)計測試用例要經(jīng)歷劃分等價類(列出等價類表)和選取測試用例兩步。(1)劃分等價類
等價類是指某個輸入域的子集合。在該子集合中,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等效的。測試某等價類的代表值就等價于對這一類其它值的測試。等價類的劃分有兩種不同的情況:
① 有效等價類:是指對于程序的規(guī)格說明來說,是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。② 無效等價類:是指對于程序的規(guī)格說明來說,是不合理的,無意義的輸入數(shù)據(jù)構(gòu)成的集合。
在設(shè)計測試用例時,要同時考慮有效等價類和無效等價類的設(shè)計。
(2)等價類測試--等價類劃分原則 ①如果輸入條件規(guī)定了取值范圍,或值的個數(shù),則可以確立一個有效等價類和兩個無效等價類。
②如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時可確立一個有效等價類和一個無效等價類。
③如果輸入條件是一個布爾量,則可以確定一個有效等價類和一個無效等價類。④如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對每個輸入值分別進(jìn)行處理。
⑤如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個有效等價類(符合規(guī)則)和若干個無效等價類(從不同角度違反規(guī)則)。
(3)等價類測試—選取測試用例 在確立了等價類之后,建立等價類表,列出所有劃分出的等價類。再從劃分出的等價類中按以下原則選擇測試用例: ① 為每一個等價類規(guī)定一個唯一編號;
② 設(shè)計一個新的測試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價類,重復(fù)這一步,直到所有的有效等價類都被覆蓋為止;
③ 設(shè)計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重復(fù)這一步,直到所有的無效等價類都被覆蓋為止。
基于決策表的測試
在所有功能測試方法中,基于決策表的測試方法是最嚴(yán)格的,因?yàn)闆Q策表具有邏輯嚴(yán)格性。
決策表很適合描述不同條件集合下采取行動的若干組合的情況。
決策表的組成
條件樁:列出了問題的所有條件。
動作樁:列出了問題規(guī)定可能采取的操作。
條件項:列出針對它所列條件的取值,在所有可能情況下的真假值。動作項:列出在條件項的各種取值情況下應(yīng)該采取的動作。規(guī)則:任何一個條件組合的特定取值及其相應(yīng)要執(zhí)行的操作。在決策表中貫穿條件項和動作項的一列就是一條規(guī)則。
功能性測試的選擇規(guī)則
如果變量引用的是物理量,可采用定義域測試和等價類測試。如果變量是獨(dú)立的,可采用定義域測試和等價類測試。如果變量不是獨(dú)立的,可以采用決策表測試。
如果可保證是單缺陷假設(shè),可以采用邊界值分析和健壯性測試。
如果可保證是多缺陷假設(shè),可采用最壞情況測試、健壯最壞測試和決策表測試。如果程序包含大量例外處理,可采用健壯性測試和決策表測試。如果變量引用的是邏輯量,可以采用等價類測試用例和決策表測試。
結(jié)構(gòu)性測試 靜態(tài)測試: 括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。它可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢,也可以借助軟件工具自動進(jìn)行。
檢查項: * 代碼風(fēng)格和規(guī)則審核 * 程序設(shè)計和結(jié)構(gòu)的審核 * 業(yè)務(wù)邏輯的審核
靜態(tài)白盒測試是在不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計、體系結(jié)構(gòu)和代碼,從而找出軟件缺陷的過程。好處:
盡早發(fā)現(xiàn)軟件缺陷。
dd路徑測試
該測試方法的突出特點(diǎn),是它們都基于被測程序的源代碼,而不是基于定義。由于這種絕對化的基礎(chǔ),結(jié)構(gòu)性測試方法支持嚴(yán)格定義、數(shù)據(jù)分析和精確度量。
程序圖 定義
給定一個采用命令式程序設(shè)計語言編寫的程序,其程序圖是一種有向圖,其中:節(jié)點(diǎn)是程序語句,邊表示控制流。從節(jié)點(diǎn)i到節(jié)點(diǎn)j有一條邊,當(dāng)且僅當(dāng)對應(yīng)節(jié)點(diǎn)j的語句可以立即在節(jié)點(diǎn)i對應(yīng)的語句之后執(zhí)行。
dd路徑
決策到?jīng)Q策的路徑(dd-路徑)是指語句的一個序列,從決策語句的“出路”開始,到下一個決策語句的“入路”結(jié)束。在這種序列中沒有內(nèi)部分支,因此對應(yīng)的節(jié)點(diǎn)像排列起來的一行多米諾骨牌,當(dāng)?shù)谝粔K牌推倒后,序列中的其他牌也會倒下。
鏈?zhǔn)且粭l起始節(jié)點(diǎn)和終止節(jié)點(diǎn)不同的路徑,并且每個節(jié)點(diǎn)都滿足內(nèi)度=1、外度=1。初始節(jié)點(diǎn)與鏈中的所有其他節(jié)點(diǎn)有2-連接,不會存在1-連接或3-連接。(p55, 4.2.6)有一種長度為0的退化鏈情況,即鏈有一個節(jié)點(diǎn)和0條邊組成。
dd路徑測試定義 定義
dd-路徑是程序圖中的一條鏈,使得:
情況1:由一個節(jié)點(diǎn)組成,內(nèi)度=0。
情況2:由一個節(jié)點(diǎn)組成,外度=0。
情況3:由一個節(jié)點(diǎn)組成,內(nèi)度≥2或外度≥2。
情況4:由一個節(jié)點(diǎn)組成,內(nèi)度=1并且外度=1。
情況5:長度≥1的最大鏈。
對于給定的程序,可以使用多種不同的程序圖,所有這些程序圖都可以簡化為惟一的dd-路徑。
dd-路徑圖定義
給定采用命令式語言編寫的一段程序,其dd-路徑圖是有向圖。其中,節(jié)點(diǎn)表示其程序圖的dd-路徑,邊表示連續(xù)dd-路徑之間的控制流。
實(shí)際上dd-路徑圖是一種壓縮圖,在這種壓縮圖中,2-連接組件被壓縮為對應(yīng)情況5 dd-路徑的單節(jié)點(diǎn)。
如果每條dd-路徑都被遍歷(c1指標(biāo)),則我們知道每個判斷分支都被執(zhí)行,這要求遍歷dd-路徑圖中的每一條邊。
較長的dd-路徑一般代表復(fù)雜計算,可以合理地認(rèn)為是單獨(dú)的函數(shù)。對于這樣的dd-路徑,應(yīng)用多個功能性測試可能比較合適,尤其是邊界值和特殊值。
dd-路徑的依賴對偶
dd-路徑對偶之間的最常見得依賴關(guān)系是定義/引用關(guān)系,其中變量在一個dd-路徑中定義(接受值),在另一個dd-路徑中引用。這種依賴關(guān)系的重要性在于,它們與不可行路徑問題有關(guān)。
定義/使用測試覆蓋指標(biāo)
t是擁有變量集合v的程序p的程序圖g(p)中的一個路徑集合。定義
集合t滿足程序p的全定義準(zhǔn)則,當(dāng)且僅當(dāng)所有變量v∈v,t包含從v的每個定義節(jié)點(diǎn)到v的一個使用的定義清除路徑。定義
集合t滿足程序p的全使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量v∈v,t包含從v的每個定義節(jié)點(diǎn)到v的所有使用,以及到所有use(v,n)后續(xù)節(jié)點(diǎn)的定義清除路徑。定義
集合t滿足程序p全謂詞使用/部分計算使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量v∈v,t包含從v的每個定義節(jié)點(diǎn)到v的所有謂詞使用的定義清除路徑,并且如果v的一個定義沒有謂詞使用,則定義清除路徑導(dǎo)致至少一個計算使用。定義
集合t滿足程序p全計算使用/部分謂詞使用準(zhǔn)則,當(dāng)且僅當(dāng)所有變量v∈v,t包含從v的每個定義節(jié)點(diǎn)到v的所有計算使用的定義清除路徑,并且如果v的一個定義沒有計算使用,則定義清除路徑導(dǎo)致至少一個謂詞使用。定義
集合t滿足程序p的全定義-使用路徑準(zhǔn)則,當(dāng)且僅當(dāng)所有變量v∈v,t包含從v的每個定義節(jié)點(diǎn)到v的所有使用,以及到所有use(v,n)后續(xù)節(jié)點(diǎn)的定義清除路徑,并且這些路徑要么有一次的環(huán)經(jīng)過,要么沒有環(huán)路。
單元測試
單元測試時對軟件基本組成單元進(jìn)行的測試,這里的基本單元不一定是指一個具體的函數(shù)或一個類的方法。
單元具有一些基本屬性,如:明確的功能、規(guī)格定義,與其他部分明確的接口定義等,可以清晰地與同一程序的其他部分單元劃分開來。
單元測試的目的
驗(yàn)證代碼是與設(shè)計相符合的; 跟蹤需求和設(shè)計的實(shí)現(xiàn);
發(fā)現(xiàn)設(shè)計和需求中存在的錯誤; 發(fā)現(xiàn)在編碼過程中引入的錯誤。
對單元測試的錯誤認(rèn)識
單元測試?yán)速M(fèi)了太多的時間;
單元測試僅僅是證明這些代碼做了什么; 很棒的編程人員的工作不需要單元測試; 不管怎樣,集成測試將會抓住所有的bug; 單元測試的成本效率不高。
單元測試應(yīng)堅持的原則
對全新的代碼或修改過的代碼進(jìn)行單元測試; 對被測試單元需達(dá)到的一定的代碼覆蓋率要求; 當(dāng)程序進(jìn)行了修改,要進(jìn)行回歸測試。
集成測試
也叫做組裝測試、聯(lián)合測試、子系統(tǒng)測試和部件測試。是在單元測試的基礎(chǔ)上,將所有模塊按照概要設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測試。
集成測試關(guān)注的重點(diǎn)
在把各個模塊連接起來時,穿越模塊接口的數(shù)據(jù)是否會丟失。各個子功能組合起來,能否達(dá)到預(yù)期要求的父功能。
一個模塊的功能是否會對另一個模塊的功能產(chǎn)生不利的影響。全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題,會不會被異常修改。
單個模塊的誤差積累起來,是否會放大,從而達(dá)到不可以接受的程度。
集成測試策略
功能分解法,調(diào)用圖法,mm路徑法
基于功能分解的集成測試:
自頂向下集成,自底向上集成,三明治集成,大爆炸集成
自頂向下集成
自頂向下集成從主程序(樹根)開始。所有被主程序調(diào)用的下層單元都作為“樁”出現(xiàn),樁就是模擬被調(diào)用單元的一次性代碼。
自底向上集成
自底向上集成是自頂向下順序的“鏡像”,不同的是,樁由模擬功能分解樹上一層單元的驅(qū)動器模塊替代。需要編寫驅(qū)動器。
三明治集成
三明治是自頂向下和自底向上集成的組合。
樁和驅(qū)動器的開發(fā)工作都比較小,不過代價是有大爆炸的后果。
大爆炸集成
這種方法最容易:這種集成將所有單元在一起編譯并進(jìn)行一次性測試。這種方法的缺點(diǎn)是,當(dāng)發(fā)現(xiàn)缺陷時,沒有多少線索能夠用來幫助確定缺陷位置。
因果圖是從用自然語言書寫的程序規(guī)格說明的描述中找到因(輸入條件)和果(輸出或程序狀態(tài)的改變),通過因果圖轉(zhuǎn)化為判別表。因果圖方法最終生成的就是判定表。因果圖的適用范圍
如果在測試時必須考慮輸入條件的各種組合,可使用一種適合于描述對于多種條件的組合,相應(yīng)產(chǎn)生多個動作的形式來設(shè)計測試用例,這就需要利用因果圖。因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況。
用因果圖生成測試用例的基本步驟:(1)分析軟件規(guī)格說明描述中,哪些是原因(即輸入條件或輸入條件的等價類),哪些是結(jié)果(即輸出條件),并給每個原因和結(jié)果賦予一個標(biāo)識符。
(2)分析軟件規(guī)格說明描述中的語義,找出原因與結(jié)果之間,原因與原因之間對應(yīng)的是什么關(guān)系? 根據(jù)這些關(guān)系,畫出因果圖。
(3)由于語法或環(huán)境限制,有些原因與原因之間,原因與結(jié)果之間的組合情況不可能出現(xiàn)。為表明這些特殊情況,在因果圖上用一些記號標(biāo)明約束或限制條件。(4)把因果圖轉(zhuǎn)換成判定表。
(5)把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例。