第七章 測試
1.編碼和測試統(tǒng)稱為實(shí)現(xiàn)。
2.編碼:把軟件設(shè)計(jì)結(jié)果翻譯成程序。
3.測試:檢測程序并改正錯(cuò)誤的過程
7.1 編碼
7.1.1 選擇程序設(shè)計(jì)語言
1. 計(jì)算機(jī)程序設(shè)計(jì)語言基本上可以分為匯編語言和高級(jí)語言
2. 從應(yīng)用特點(diǎn)看,高級(jí)語言可分為基礎(chǔ)語言、結(jié)構(gòu)化語言、專用語言
01 有理想的模塊化機(jī)制;
02 可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);
03 便于調(diào)試和提高軟件可靠性;
04 編譯程序發(fā)現(xiàn)程序錯(cuò)誤的能力強(qiáng);
05 有良好的獨(dú)立編譯機(jī)制。
7.1.2 編碼風(fēng)格
- 程序內(nèi)部的文檔
- 恰當(dāng)?shù)臉?biāo)識(shí)符
- 語句構(gòu)造
- 輸入/輸出
- 效率
① 程序運(yùn)行時(shí)間
② 存儲(chǔ)器效率
③ 輸入/輸出效率
7.2 軟件測試基礎(chǔ)
7.2.1 軟件測試的目標(biāo)
(1)測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程;
(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案;
(3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試
測試的定義:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。
7.2.2 軟件測試準(zhǔn)則
為了能設(shè)計(jì)出有效的測試方案,軟件工程師必須深入理解并運(yùn)用指導(dǎo)軟件測試的基本準(zhǔn)則。
7.2.3 測試方法
黑盒測試
如果已經(jīng)知道軟件應(yīng)該具有的功能,可以通過測試來檢驗(yàn)是否每個(gè)功能都能正常使用,這種測試稱黑盒測試。也稱功能測試。
白盒測試
也稱結(jié)構(gòu)測試。
如果知道軟件內(nèi)部工作過程,可以通過測試來檢驗(yàn)軟件內(nèi)部動(dòng)作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,這種測試稱為白盒測試。
7.2.4 軟件測試的步驟
- 模塊測試
模塊測試又稱單元測試,它把每個(gè)模塊作為單獨(dú)的實(shí)體來測試。 - 子系統(tǒng)測試
子系統(tǒng)測試是把經(jīng)過單元測試的模塊放在一起形成一個(gè)子系統(tǒng)來測試。 - 系統(tǒng)測試
系統(tǒng)測試是把經(jīng)過測試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測試。 - 驗(yàn)收測試
驗(yàn)收測試把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測試(利用用戶的實(shí)際數(shù)據(jù)測試)。 - 平行運(yùn)行
平行運(yùn)行是同時(shí)運(yùn)行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個(gè)系統(tǒng)的處理結(jié)果。
7.2.5 測試階段的信息流
軟件測試步驟
7.3 單元測試
7.3.1 測試重點(diǎn)
- 模塊接口
- 局部數(shù)據(jù)結(jié)構(gòu)
- 重要的執(zhí)行路徑
- 出錯(cuò)處理通路
- 邊界條件
7.3.2 代碼審查
7.3.3 計(jì)算機(jī)測試
驅(qū)動(dòng)程序或存根程序
1. 對(duì)“編輯”功能的測試(存根模塊)
2. 對(duì)“編輯”功能的測試(驅(qū)動(dòng)模塊)
例題
7.4 集成測試
1)非漸增式測試方法
先分別測試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序。
2)漸增式測試方法
每次增加一個(gè)待測試模塊,把它同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試,反復(fù)進(jìn)行直到完成所有模塊測試的方法
7.4.1 自頂向下集成
1)深度優(yōu)先策略
2)寬度優(yōu)先策略
7.4.2 自底向上集成
自底向上集成方法是從軟件結(jié)構(gòu)最底層模塊開始進(jìn)行組裝和測試,它與自頂向下結(jié)合方法相反,需要驅(qū)動(dòng)程序,不需要存根程序
7.4.3 不同集成測試策略的比較
7.4.4 回歸測試
回歸測試用于保證由于調(diào)試或其他原因引起的程序變化,不會(huì)導(dǎo)致額外錯(cuò)誤的測試活動(dòng)。
7.5 確認(rèn)測試
7.5.1 確認(rèn)測試的范圍
? 也稱為驗(yàn)收測試,目標(biāo)是驗(yàn)證軟件的有效性。
? 如果軟件的功能和性能符合用戶的期待,軟件就是有效的。
? 軟件規(guī)格說明書是進(jìn)行確認(rèn)測試的基礎(chǔ)。
7.5.2 軟件配置復(fù)查
確認(rèn)測試一般使用黑盒測試法。
目的:保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,而且已經(jīng)編好
目錄。
7.5.3 Alpha和Beta測試
Alpha測試:用戶在開發(fā)者的場所進(jìn)行測試,并且在開發(fā)者的指導(dǎo)下進(jìn)行,測試在受控環(huán)境中進(jìn)行,開發(fā)者記錄發(fā)現(xiàn)的錯(cuò)誤和問題;
Beta測試:用戶在一個(gè)或多個(gè)客戶場所進(jìn)行測試,不受開發(fā)者控制,測試者記錄發(fā)現(xiàn)的問題和錯(cuò)誤,定期將問題報(bào)告發(fā)送給開發(fā)者。
7.6 白盒測試技術(shù)
7.6.1 邏輯覆蓋
1. 語句覆蓋
設(shè)計(jì)的測試用例能使程序中每條語句至少執(zhí)行一次。如果遵循這個(gè)規(guī)定則說明達(dá)到了100%的語句覆蓋。
語句覆蓋是最弱的邏輯覆蓋準(zhǔn)則,它發(fā)現(xiàn)不了判斷中邏輯運(yùn)算符的錯(cuò)誤。
2. 判定覆蓋
判定覆蓋是指:選取足夠的測試用例,使得程序中每個(gè)判斷的可能結(jié)果都至少執(zhí)行一次,也就是說使
程序的每個(gè)判斷分支至少通過一次。
比語句覆蓋稍強(qiáng)的邏輯覆蓋準(zhǔn)則,它任然發(fā)現(xiàn)不了判斷中邏輯運(yùn)算符的錯(cuò)誤。
3. 條件覆蓋
條件覆蓋是指:選擇足夠的測試用例,使得程序中每個(gè)判定表達(dá)式的每個(gè)條件都取到各種可能的結(jié)果。即每個(gè)判定中的所有條件取值組合都被至少執(zhí)行一次。
4. 判定/條件覆蓋
選取足夠的測試用例使得同時(shí)滿足判定覆蓋和條件覆蓋的要求。
5. 條件組合覆蓋
條件組合覆蓋指:選取足夠的測試用例,使得每個(gè)判定表達(dá)式中條件的各種可能的組合都至少出現(xiàn)一次。
測試
7.7 黑盒測試技術(shù)
測試對(duì)象看做一個(gè)黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明,又叫做功能測試或數(shù)據(jù)驅(qū)動(dòng)測試。
7.7.1 等價(jià)劃分(等價(jià)類劃分)
等價(jià)類劃分是一種黑盒測試技術(shù)。
等價(jià)類某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。
7.7.2 邊界值分析
- 程序通常在處理邊緣情況時(shí)容易出現(xiàn)錯(cuò)誤,如等價(jià)類與等價(jià)類之間的邊界值。
- 邊界值分析測試法屬黑盒測試
7.7.3 錯(cuò)誤推測
- 錯(cuò)誤推測法在很大程度上靠直覺和經(jīng)驗(yàn)進(jìn)行。
- 基本思想:列舉出程序中可能的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,且根據(jù)它們選擇測試方案。如:輸入、輸出為0時(shí)容易出錯(cuò);輸出記錄為0條時(shí)容易出錯(cuò);等等。
- 在進(jìn)一步測試時(shí)要著重測試哪些發(fā)現(xiàn)了較多錯(cuò)誤的組合情況。
例題
7.8 調(diào)試
7.8.1 調(diào)試過程
7.8.2 調(diào)試途徑
- 蠻干法:打印內(nèi)存的內(nèi)容,從中尋找錯(cuò)誤的線索,是效率最低的程序調(diào)試方法。
- 回溯法:從發(fā)現(xiàn)問題的程序段開始人工地往回追蹤分析程序代碼,直到找到錯(cuò)誤。
- 原因排除法包括:對(duì)分查找法、歸納法、演繹法
7.9 軟件可靠性
7.9.1 基本概念
對(duì)故障可修復(fù)系統(tǒng),應(yīng)同時(shí)使用可靠性和可用性來衡量。
- 軟件可靠性定義
軟件可靠性:是程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運(yùn)行的概率。 - 軟件的可用性
軟件可用性是:程序在給定的時(shí)間點(diǎn),按照規(guī)格說明書的規(guī)定,成功地運(yùn)行的概率。
可靠性和可用性的區(qū)別是:可靠性是在0到t時(shí)間間隔內(nèi),系統(tǒng)沒有失效的概率。而可用性是在t時(shí)刻,
系統(tǒng)是正常運(yùn)行的概率。
如果引入系統(tǒng)平均無故障時(shí)間MTTF和平均維修時(shí)間MTTR的概念,則上面公式的系統(tǒng)穩(wěn)態(tài)可靠性變成:
平均維修時(shí)間MTTR是修復(fù)一個(gè)故障平均需要用的時(shí)間,取決于維護(hù)人員的技術(shù)水平和對(duì)系統(tǒng)熟悉程度。
平均無故障時(shí)間MTTF是系統(tǒng)按照規(guī)格說明書規(guī)定成功地運(yùn)行的平均時(shí)間,取決于系統(tǒng)中潛伏的錯(cuò)誤數(shù)量。
7.9.2 估算平均無故障時(shí)間MTTF的方法
1. 符號(hào)
估算MTTF時(shí)使用到下列符號(hào)
ET——測試之前程序中故障總數(shù);
IT——程序長度(機(jī)器指令總數(shù));
τ——測試(包括調(diào)試)時(shí)間;
Ed(τ) ——在0至τ期間發(fā)現(xiàn)的錯(cuò)誤數(shù);
Ec(τ) ——在0至τ期間改正的錯(cuò)誤數(shù);
2. 基本假定
3. 估算平均無故障時(shí)間MTTF
4. 估計(jì)故障總數(shù)ET的方法
1)植入故障法
2)分別測試法文章來源:http://www.zghlxwxcb.cn/news/detail-481032.html
小結(jié)
1.實(shí)現(xiàn)包括編碼和測試兩個(gè)階段。
2.高級(jí)程序設(shè)計(jì)語言較匯編語言有很多優(yōu)點(diǎn)。
3.通常軟件測試至少分為單元測試、集成測試和驗(yàn)收測試3個(gè)基本階段。
4.軟件測試不僅僅指利用計(jì)算機(jī)進(jìn)行的測試,還包括人工進(jìn)行的測試(例如,代碼審查)。
5.白盒測試和黑盒測試是軟件測試的兩類基本方法,設(shè)計(jì)白盒測試方案的技術(shù)主要有,邏輯覆蓋和控
制結(jié)構(gòu)測試;設(shè)計(jì)黑盒測試方案的技術(shù)主要有,等價(jià)劃分、邊界值分析和錯(cuò)誤推測。
7.及時(shí)改正測試過程中發(fā)現(xiàn)的軟件錯(cuò)誤就是調(diào)試的任務(wù)。
7.程序中潛藏的錯(cuò)誤的數(shù)目,直接決定了軟件的可靠性。通過測試可以估算出程序中剩余的錯(cuò)誤數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-481032.html
到了這里,關(guān)于第七章 測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!