軟件測試定義
在規(guī)定的條件下對(duì)程序進(jìn)行操作匣缘,以發(fā)現(xiàn)程序錯(cuò)誤猖闪,衡量軟件質(zhì)量,并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過程肌厨。換句話說培慌,軟件測試是一種實(shí)際輸出與預(yù)期輸出之間的審核或者比較過程。
測試流程
軟件測試按照研發(fā)階段一般分為5個(gè)部分:單元測試柑爸、集成測試吵护、確認(rèn)測試、系統(tǒng)測試表鳍、驗(yàn)收測試馅而、回歸測試;
單元測試:白盒為主譬圣,黑盒為輔
單元測試又稱模塊測試瓮恭,是就是對(duì)程序代碼中最小的涉及模塊單元進(jìn)行測試。目的是檢測軟件模塊單元的正確性厘熟。單元測試需要從程序內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例屯蹦,多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測試。
? ? ? ? 接口測試:通過所測試模塊的數(shù)據(jù)進(jìn)行測試绳姨。調(diào)用所測模i模塊輸入的參數(shù)的個(gè)數(shù)登澜、順序和屬性是否匹配;
? ? ? ? 局部數(shù)據(jù)測試:局部數(shù)據(jù)結(jié)構(gòu)是為了保證臨時(shí)存儲(chǔ)在模塊內(nèi)的數(shù)據(jù)在程序執(zhí)行過程中完整飘庄、正確脑蠕,模塊的局部數(shù)據(jù)結(jié)構(gòu)往往是錯(cuò)誤的根源;
? ? ? ? 路徑測試:對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測試跪削;
? ? ? ? 錯(cuò)誤處理測試:比較完善的模塊設(shè)計(jì)要求能遇見出錯(cuò)的條件谴仙,并設(shè)置適當(dāng)?shù)某鲥e(cuò)處理,以便在一旦程序出錯(cuò)時(shí)切揭,能對(duì)出錯(cuò)程序重做安排狞甚,保證其邏輯上的正確性;
? ? ? ? 邊界測試:軟件經(jīng)常在邊界上失效廓旬,邊界條件測試是一項(xiàng)基礎(chǔ)測試哼审,也是后面系統(tǒng)測試中的功能測試的重點(diǎn);
? ? ? ? 增量測試與非增量測試
集成測試:黑盒為主孕豹,白盒為輔
集成測試又稱組裝測試涩盾,是將軟件產(chǎn)品各個(gè)模塊組裝起來,目的是檢驗(yàn)軟件接口中是否正確性励背,以及組裝后的整體功能春霍、性能表現(xiàn)。
模塊組裝成系統(tǒng)的方式:一次性組裝方式(非增式集成)和增殖式組裝方式叶眉。
非增式集成:
? ??????先對(duì)模塊分別進(jìn)行測試址儒,再把所有模塊組裝進(jìn)行測試芹枷,但是發(fā)現(xiàn)錯(cuò)誤不容易定位。
增殖式集成:自頂向下莲趣;自底向上鸳慈;分層集成;三明治集成喧伞;基層集成走芋;高頻集成;
????????先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測試潘鲫,然后將這些模塊逐步組裝成系統(tǒng)翁逞。
? ? ? ? 1,自頂向下的增殖方式(不需要驅(qū)動(dòng)模塊)
????????將模塊銨系統(tǒng)程序結(jié)構(gòu)溉仑,嚴(yán)控制層次自頂向下進(jìn)行組裝挖函。
? ? ? ? 首先以主模塊作為被測模塊兼驅(qū)動(dòng)模塊,所有直屬主模塊的下屬模塊全部用樁模塊代替浊竟,對(duì)主模塊進(jìn)行測試挪圾。再采用深度優(yōu)先或廣度優(yōu)先的策略,用實(shí)際模塊代替樁模塊逐沙,再用樁模塊代替它們的直接下屬模塊,與已經(jīng)測試的模塊構(gòu)成新的子系統(tǒng)洼畅。然后進(jìn)行回歸測試吩案。
? ??????優(yōu)點(diǎn):能夠較早的發(fā)現(xiàn)主要控制方面的問題
????????缺點(diǎn):需要建立樁模塊,增加了一些附加的測試帝簇,涉及算法和輸入輸出的模塊一般在底層徘郭,這些底層模塊要到組裝和測試的后期才能發(fā)現(xiàn)。一旦發(fā)現(xiàn)問題就會(huì)出現(xiàn)過多的回歸測試丧肴。
? ? ? ? 2残揉,自底向上的增殖方式(不需要驅(qū)動(dòng)模塊)
? ??????由驅(qū)動(dòng)模塊控制最底層模塊的并行測試。
? ??????優(yōu)點(diǎn):不需要建立樁模塊芋浮,建立驅(qū)動(dòng)模塊要比建立樁模塊要簡單得多抱环,同時(shí)涉及到算法已近輸入輸出的模塊要先測試,把最容易出現(xiàn)問題的部分在早期解決纸巷。
????????缺點(diǎn):程序一直未能作為一個(gè)實(shí)體存在镇草,直到最后一個(gè)模塊加上才能形成一個(gè)實(shí)體,控制方面最后才能接觸。
? ? ? ? 3瘤旨,混合增殖式
集成測試層次:子系統(tǒng)內(nèi)集成測試梯啤;子系統(tǒng)間集成測試;模塊間集成測試存哲。
在集成測試中因宇,我們主要關(guān)注以下內(nèi)容:
????????1. 把各個(gè)模塊連接起來時(shí)七婴,穿越模塊接口的數(shù)據(jù)據(jù)是否會(huì)丟失。??
????????2.各個(gè)了模塊組合起來察滑,能否達(dá)到預(yù)期要求的功能打厘。
????????3.一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利影響。?
????????4.全局?jǐn)?shù)據(jù)據(jù)結(jié)構(gòu)是否有問題杭棵。?
????????5.單個(gè)模塊的誤差積累起來是否會(huì)被放大婚惫,從而達(dá)到不可接受的程序。
集成測試完成的標(biāo)志:
????1魂爪、成功執(zhí)行了測試計(jì)劃中規(guī)定的所有集成測試
????2先舷、修改了所發(fā)現(xiàn)的錯(cuò)誤
????3、測試結(jié)果通過專門小組的評(píng)審
????4滓侍、集成測試需要提交的測試報(bào)告:
????5蒋川、集成測試計(jì)劃、集成測試規(guī)格說明書以及集成測試分析報(bào)告
確認(rèn)測試:黑盒.
確認(rèn)測試的目標(biāo)是驗(yàn)證軟件的功能和性能以及其他特性是否與用戶的要求一致撩笆。確認(rèn)測試一般包括有效性測試和軟件配置復(fù)查捺球。一般有第三方測試機(jī)構(gòu)進(jìn)行。
系統(tǒng)測試:黑盒
系統(tǒng)測試是對(duì)已經(jīng)集成的好的系統(tǒng)進(jìn)行徹底的測試夕冲,以驗(yàn)證軟件系統(tǒng)的正確性和性能是否滿足其所指定的要求氮兵。此階段軟件作為計(jì)算機(jī)系統(tǒng)的一部分,與硬件歹鱼、網(wǎng)絡(luò)泣栈、外設(shè)、支撐軟件弥姻、數(shù)據(jù)以及人員結(jié)合在一起南片,在實(shí)際或模擬環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行測試庭敦,目的在于與系統(tǒng)需求比較疼进,發(fā)現(xiàn)問題。
解決問題:各個(gè)組成但源代碼是否符合開發(fā)規(guī)范秧廉?接口是否存在問題伞广?整體功能有無錯(cuò)誤?界面是否符合設(shè)計(jì)規(guī)范定血?性能是否滿足用戶需求赔癌?
一般系統(tǒng)的主要測試工作都集中系統(tǒng)測試階段。根據(jù)不同的系統(tǒng)澜沟,所進(jìn)行的測試種類也很多灾票。一般包括:
功能測試:功能測試是對(duì)產(chǎn)品的各功能進(jìn)行驗(yàn)證,以檢查是否滿足需求的要求茫虽。?
性能測試:以系統(tǒng)設(shè)計(jì)初期規(guī)劃的性能指標(biāo)為預(yù)期目標(biāo)刊苍,對(duì)系統(tǒng)不斷施加壓力既们,驗(yàn)證系統(tǒng)在資源可接受范圍內(nèi),是否能達(dá)到性能預(yù)期正什。
????????強(qiáng)度測試(Stress Testing = Too many users, too much data, too little time and too little room)
????????是一種性能測試啥纸,他在系統(tǒng)資源特別低的情況下軟件系統(tǒng)運(yùn)行情況,目的是找到系統(tǒng)在哪里失效以及如何失效的地方婴氮。包括:
? ??????Spiketesting:短時(shí)間的極端負(fù)載測試
????????Extreme testing:在過量用戶下的負(fù)載測試
????????Hammer testing:連續(xù)執(zhí)行所有能做的操作
????????壓力測試:超過安全負(fù)載的情況下斯棒,對(duì)系統(tǒng)繼續(xù)施加壓力,直到系統(tǒng)崩潰或不能再處理任何請求主经,以此獲得系統(tǒng)最大壓力承受能力荣暮。關(guān)注崩潰時(shí)間點(diǎn)。
? ??????容量測試:(Volume Testing = Large amounts of data)
????????確定系統(tǒng)可處理同時(shí)在線的最大用戶數(shù)罩驻。,使系統(tǒng)承受超額的數(shù)據(jù)容量來發(fā)現(xiàn)它是否能夠正確處理穗酥。
? ??????負(fù)載測試:(Load Testing = Large amount of users)
????????對(duì)系統(tǒng)不斷地增加并發(fā)請求以增加系統(tǒng)壓力,直到系統(tǒng)的某項(xiàng)或多項(xiàng)性能指標(biāo)達(dá)到安全臨界值惠遏,如某種資源已經(jīng)呈飽和狀態(tài)砾跃,這時(shí)繼續(xù)對(duì)系統(tǒng)施加壓力,系統(tǒng)的處理能力不但不能提高节吮,反而會(huì)下降抽高。關(guān)注how much。
安全測試:
容錯(cuò)測試:
性能測試的曲線如上圖透绩,測試目標(biāo)是評(píng)估系統(tǒng)性能是否符合需要及設(shè)計(jì)目標(biāo)厨内;
隨著壓力的持續(xù)增加,系統(tǒng)處理能力增加變緩渺贤,直到達(dá)到一個(gè)最大值(c點(diǎn)),這是系統(tǒng)的最大負(fù)載點(diǎn)请毛,這一段被稱作負(fù)載測試志鞍。測試目標(biāo)是評(píng)估當(dāng)系統(tǒng)因?yàn)橥话l(fā)事件超出日常訪問壓力的情況下,保證系統(tǒng)正常運(yùn)行情況下能夠承受的最大訪問負(fù)載壓力方仿;
超過這個(gè)點(diǎn)后固棚,再增加壓力,系統(tǒng)的處理能力反而下降仙蚜,而資源消耗缺更多此洲,知道資源消耗達(dá)到極限(d點(diǎn)),這個(gè)點(diǎn)可以看做是系統(tǒng)的崩潰點(diǎn)委粉,超過這個(gè)點(diǎn)極限加大并發(fā)請求數(shù)目呜师,系統(tǒng)不能再處理任何請求,這一段被稱作壓力測試贾节,測試目標(biāo)是評(píng)估可能導(dǎo)致系統(tǒng)崩潰的最大訪問負(fù)載壓力汁汗。
性能測試反應(yīng)的是系統(tǒng)在實(shí)際生產(chǎn)環(huán)境中使用時(shí)衷畦,隨著用戶并發(fā)訪問數(shù)量的增加,系統(tǒng)的處理能力與性能曲線相對(duì)應(yīng)的是用戶訪問的等待實(shí)際(系統(tǒng)響應(yīng)時(shí)間)知牌,如下圖:
驗(yàn)收測試
以用戶為主的測試祈争,軟件開發(fā)人員和質(zhì)量保證人員參加,由用戶設(shè)計(jì)測試用例角寸。不是對(duì)系統(tǒng)進(jìn)行全覆蓋測試菩混,而是對(duì)核心業(yè)務(wù)流程進(jìn)行測試。
根據(jù)合同扁藕、《需求規(guī)格說明書》或《驗(yàn)收測試計(jì)劃》對(duì)產(chǎn)品進(jìn)行驗(yàn)收測試沮峡。對(duì)于通過驗(yàn)收測試的軟件產(chǎn)品/參照《配置管理規(guī)范》中所規(guī)定的標(biāo)識(shí)方法更改測試狀態(tài),同時(shí)項(xiàng)目經(jīng)理負(fù)責(zé)編制《驗(yàn)收報(bào)告》纹磺。
非正式驗(yàn)收測試之前帖烘,還可能有α測試和β測試。
α測試:一般在開發(fā)環(huán)境下進(jìn)行橄杨,也可以是開發(fā)機(jī)構(gòu)內(nèi)部用戶在模擬實(shí)際操作環(huán)境下進(jìn)行秘症。
β測試:用戶在實(shí)際使用環(huán)境下進(jìn)行的測試,開發(fā)者通常不在現(xiàn)場式矫。
回歸測試
回歸測試是對(duì)軟件進(jìn)行修改之后進(jìn)行的測試乡摹。其目的是檢驗(yàn)對(duì)軟件進(jìn)行的修改是否正確,可以發(fā)生在任何一個(gè)階段采转。
——知識(shí)點(diǎn)——
黑盒測試:把軟件測試看作一個(gè)黑盒子聪廉,我們不關(guān)心盒子的是什么的樣子,只關(guān)心軟件輸入的數(shù)據(jù)和輸出的結(jié)果故慈。
它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用板熊,程序能否接收輸入數(shù)據(jù)而產(chǎn)生正確的輸出信息。
黑盒測試著眼于程序外部結(jié)構(gòu)察绷,不考慮內(nèi)部邏輯結(jié)構(gòu)干签,主要針對(duì)軟件界面和軟件功能進(jìn)行測試。?
白盒測試:把盒子蓋子打開拆撼,去研究里面的源代碼和程序結(jié)果容劳。
它是按照程序內(nèi)部的結(jié)構(gòu)測試程序,通過測試來檢測產(chǎn)品內(nèi)部動(dòng)作是否按照設(shè)計(jì)規(guī)格說明書的規(guī)定正常進(jìn)行闸度,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作竭贩。
關(guān)注源代碼的正確性和邏輯性。