哈工大软件构造课程知识点总结(一)
系列文章目錄
哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(一)
 哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(二)
 哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(三)
 哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(四)
 哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(五)
 哈工大軟件構(gòu)造課程知識點(diǎn)總結(jié)(六)
文章目錄
- 系列文章目錄
- 簡介
- Chapter 1:Views and Quality Objectives of Software Construction
- 概述
- 軟件的多維度視圖
- 多維視圖表
- 視圖間關(guān)系
 
- 軟件系統(tǒng)的質(zhì)量
- 內(nèi)、外部質(zhì)量因素
- 五個(gè)關(guān)鍵的質(zhì)量指標(biāo)
 
 
- Chapter 2:Testing and Test-First Programming
- 概述
- 軟件測試
- 黑盒測試
- 等價(jià)類劃分
- 邊界值分析方法
- 等價(jià)類覆蓋的極限方式
 
- 白盒測試
- 代碼覆蓋度
 
- 測試優(yōu)先的編程
 
簡介
此文章是2021春哈工大軟件構(gòu)造課程Chapter 1、Chapter 2的知識點(diǎn)總結(jié)。
Chapter 1:Views and Quality Objectives of Software Construction
概述
本章首先展示了軟件構(gòu)造過程中的多維度視圖,對此圖的各部分進(jìn)行了詳細(xì)的解讀,并簡要介紹了各維度視圖之間的聯(lián)系。隨后列出了軟件系統(tǒng)的內(nèi)、外部質(zhì)量因素。最后提出了五個(gè)關(guān)鍵質(zhì)量指標(biāo)。
軟件的多維度視圖
多維視圖表
| Moment | Period | |||
| Code-level | Component-level | Code-level | Component-level | |
| Build-time | Source code, AST, Interface-Class-Attribute-Method (Class Diagram) | Package, File, Static Linking, Library, Test Case, Build Script (Component Diagram) | Code Churn | Configuration Item, Version | 
| Run-time | Code Snapshot, Memory dump | Package, Library, Dynamic linking, Configuration, Database, Middleware, Network | Execution stack trace, Concurrent multithreads | Event log, Multi-processes, Distributed processes | 
以下為個(gè)人理解:
- Moment維度關(guān)注于程序在某一特定時(shí)刻的表現(xiàn),而Period維度關(guān)注于程序在某一段特定時(shí)間內(nèi)的表現(xiàn);
- Build-time維度聚焦于程序被運(yùn)行前構(gòu)造階段的表現(xiàn),而Run-time維度聚焦于程序運(yùn)行時(shí)的表現(xiàn);
- Code-level維度注重程序代碼本身、邏輯實(shí)體在內(nèi)存中的呈現(xiàn)等細(xì)節(jié)方面,Component-level維度注重系統(tǒng)模塊及整體以及物理實(shí)體在內(nèi)存中的呈現(xiàn)等較大方面。
表格中具體各部分如下:
視圖間關(guān)系
如下圖:
 
軟件系統(tǒng)的質(zhì)量
內(nèi)、外部質(zhì)量因素
外部質(zhì)量因素影響用戶,內(nèi)部質(zhì)量因素影響軟件本身和它的開發(fā)者,外部質(zhì)量取決于內(nèi)部質(zhì)量。
 外部質(zhì)量因素包括:
注意:以上質(zhì)量因素不可能同時(shí)完美滿足,性能常常要與其他質(zhì)量因素相折中,但正確性絕不能與其他質(zhì)量因素折中。
 內(nèi)部質(zhì)量因素包括:
 可讀性(Readability)、可理解性(Understandability)、簡潔性(Clearness)、大小(Size)等等。
五個(gè)關(guān)鍵的質(zhì)量指標(biāo)
- 易于理解(Easy to understand)
- 易維護(hù)、修改(Ready for change)
- 可復(fù)用(Cheap for develop)
- 健壯性(Safe from bugs)
- 高效性(Efficient to run)
Chapter 2:Testing and Test-First Programming
概述
本章主要講解軟件測試與測試優(yōu)先的編程,要求重點(diǎn)掌握黑盒測試。
軟件測試
軟件測試是提高軟件質(zhì)量的重要手段。測試跟其他活動(dòng)的目標(biāo)相反,測試往往是破壞、證錯(cuò)、“負(fù)能量”的。好的測試具有以下幾個(gè)特點(diǎn):
- 能發(fā)現(xiàn)錯(cuò)誤
- 不冗余
- 最佳特性
- 別太復(fù)雜也別太簡單
軟件測試能在一定程度上提高軟件的質(zhì)量,但即使是最好的測試,也無法達(dá)到100%的無錯(cuò)誤。
測試分為如下四個(gè)階段:
一旦程序被修改,重新執(zhí)行之前的所有測試(回歸測試)。
測試用例 = 輸入+執(zhí)行條件+期望結(jié)果
黑盒測試
黑盒測試用于檢查程序是否符合規(guī)約(程序功能正確性),不關(guān)心內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。理想情況是用盡可能少的測試用例,盡快運(yùn)行,并盡可能大的發(fā)現(xiàn)程序的錯(cuò)誤。
等價(jià)類劃分
基于等價(jià)類劃分的測試:針對每個(gè)輸入數(shù)據(jù)需要滿足的約束條件劃分等價(jià)類,從等價(jià)類中導(dǎo)出測試用例。
例:設(shè)計(jì)max: int × int → int的測試用例。
 劃分為三個(gè)等價(jià)類: a < b, a = b, a > b。
 設(shè)計(jì)對應(yīng)的測試用例,可以是:
 (a, b) = (1, 2) to cover a < b
 (a, b) = (9, 9) to cover a = b
 (a, b) = (-5, -6) to cover a > b
邊界值分析方法
大量的錯(cuò)誤發(fā)生在輸入域的“邊界”而非中央,邊界值分析方法是對等價(jià)類劃分方法的補(bǔ)充。故可在等價(jià)類劃分時(shí),將邊界作為等價(jià)類之一加入考慮。
例:重新設(shè)計(jì)max: int × int → int的測試用例。
 考慮a或b取邊界值的情況,如0, INT_MAX, INT_MIN等等,添加到等價(jià)類中。
等價(jià)類覆蓋的極限方式
笛卡爾積:全覆蓋,多個(gè)劃分維度上的多個(gè)取值,要組合起來,每個(gè)組合都要有一個(gè)用例。測試完備,但用例數(shù)量多,測試代價(jià)高。
覆蓋每個(gè)取值:每個(gè)維度的每個(gè)取值至少被1個(gè)測試用例覆蓋一次即可,測試用例少,代價(jià)低,但測試覆蓋度未必高。
白盒測試
白盒測試要考慮內(nèi)部實(shí)現(xiàn)細(xì)節(jié),根據(jù)程序執(zhí)行路徑設(shè)計(jì)測試用例。通常由開發(fā)人員完成,一般較早執(zhí)行。針對功能(實(shí)現(xiàn))進(jìn)行測試,但測不出未實(shí)現(xiàn)的需求。
獨(dú)立/基本路徑測試:對程序所有執(zhí)行路徑進(jìn)行等價(jià)類劃分,找出有代表性的最簡單的路徑(例如循環(huán)只需執(zhí)行1次),設(shè)計(jì)測試用例使每一條基本路徑被至少覆蓋1次。
代碼覆蓋度
代碼覆蓋度:已有的測試用例有多大程度覆蓋了被測程序。
 代碼覆蓋度越低,測試越不充分;要達(dá)到很高的代碼覆蓋度需要大量的測試用例,測試代價(jià)高。
評判代碼覆蓋度的幾個(gè)方面:
- 函數(shù)覆蓋:所有的方法是否都被測試一次
- 語句覆蓋:所有的語句都被測試一次
- 分支覆蓋:所有的分支都被測試一次
- 條件覆蓋:所有的條件的真假組合都被執(zhí)行一次
- 路徑覆蓋:所有的路徑都被執(zhí)行一次,這是測試中最強(qiáng)的覆蓋標(biāo)準(zhǔn)
測試效果:路徑覆蓋>分支覆蓋>語句覆蓋
 測試難度:路徑覆蓋>分支覆蓋>語句覆蓋
注意:條件覆蓋與分支覆蓋無可比性!
測試優(yōu)先的編程
過程為先寫規(guī)約,然后寫符合規(guī)約的測試用例,最后寫代碼、執(zhí)行測試、有問題再改、再執(zhí)行測試用例,直到通過它。
總結(jié)
以上是生活随笔為你收集整理的哈工大软件构造课程知识点总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 鸢尾花线性判别分析
- 下一篇: 网络云存储技术Windows serve
