精读-软件测试的艺术之模块测试及更高级别的测试
本文是關(guān)于精讀書籍《軟件測試的藝術(shù)》的一些學(xué)習(xí)筆記和分享
本書共有九章包括測試思想(心理,經(jīng)濟(jì)),代碼檢查,測試用例設(shè)計(jì),模塊測試,更高級別的測試,調(diào)試,極限測試和因特爾應(yīng)用系統(tǒng)的測試。
本文主要介紹了一些介紹了一些模塊測試和一些更高級別的測試,并結(jié)合《軟件測試》這本書對這兩方面進(jìn)行補(bǔ)充。
模塊(單元)測試
模塊測試的目的是將模塊的功能與定義模塊的功能過個(gè)說明或接口規(guī)格進(jìn)行說明比較。
測試用例的設(shè)計(jì)方式
模塊測試總體上是面向白盒測試的。具體的白盒測試方法已經(jīng)在上一章節(jié)進(jìn)行了討論。在模塊測試中主要需要模塊的規(guī)格說明和模塊的源代碼。
增量(集成)測試及集成的順序
非增量測試:先獨(dú)立的測試每一個(gè)模塊,然后再將這些模塊組裝成完整的程序
增量測試:將下一步要進(jìn)行測試的模塊組裝到測試完成的模塊集合中,然后在進(jìn)行測試
對比:
- 非增量測試所需的工作量量要多一點(diǎn)
- 增量測試可以較早地發(fā)現(xiàn)模塊中與不匹配接口、不正確假設(shè)相關(guān)的編程錯(cuò)誤。
- 增量測試會(huì)更容易一點(diǎn)
- 增量測試會(huì)進(jìn)行的更徹底
- 非增量測試多占用的機(jī)器時(shí)間更少一點(diǎn)
- 模塊測試階段開始時(shí),如果使用的是非增量測試,就會(huì)有更多的機(jī)會(huì)進(jìn)行并行操作(所有模塊可以同時(shí)進(jìn)行)
對比之后,基于計(jì)算機(jī)行業(yè)當(dāng)前的趨勢(硬件成本已經(jīng)降低而且勢必持續(xù)下去,硬件成功會(huì)不斷增加,而人力成本和軟件錯(cuò)誤的的代價(jià)在不斷增長),所以錯(cuò)誤發(fā)現(xiàn)得越早,改正它的成本就越低。進(jìn)而我們可以得到結(jié)論,增量測試要更好一點(diǎn)。
驅(qū)動(dòng)模塊是用來模擬被測試模塊的上一級模塊,相當(dāng)于被測模塊的主程序。它接收數(shù)據(jù),將相關(guān)數(shù)據(jù)傳送給被測模塊,啟用被測模塊,并打印出相應(yīng)的結(jié)果。
樁模塊是指模擬被測試的模塊所調(diào)用的模塊,而不是軟件產(chǎn)品的組成的部分。
自頂向下測試
自頂向下的測試是從程序的頂部或初始模塊開始。自頂向下測試包含兩種測試策略,分別是深度優(yōu)先和廣度優(yōu)先。
廣度優(yōu)先:
測試順序:A,B,C,D,E,F,G,H,I,J,K,L
深度優(yōu)先:
?測試順序:A,B,E,F,J,C,G,K,D,H,L,I
總體的測試策略就是:
- 設(shè)計(jì)模塊序列時(shí)應(yīng)將這些關(guān)鍵模塊盡早的添加進(jìn)去
- 應(yīng)將I/O模塊盡可能早的添加進(jìn)來
自底向上測試
自底向上的策略開始于程序中的終端模塊,是從系統(tǒng)層次結(jié)構(gòu)圖的最底層模塊開始進(jìn)行組裝和集成測試的方式。對于某一個(gè)層次的特定模塊,因?yàn)樗淖幽K(包括子模塊的所有下屬模塊)已經(jīng)組裝并測試完成,所以不再需要樁模塊。在測試過程中,如果想要從子模塊得到信息可以通過直接運(yùn)行子模塊得到。
同樣的如果我們可以將上面的圖進(jìn)行分解,找到相應(yīng)的樁模塊
對比:
| 優(yōu)點(diǎn) | 缺點(diǎn) | |
| 自頂向下 |
|
|
| 自底向上 |
|
|
我們可以發(fā)現(xiàn),無論是自頂向下還是自底向上都會(huì)各自的優(yōu)缺點(diǎn),所以有這一種“三明治”集成測試的方式可以分別利用這兩種測試方法的有點(diǎn)。“三明治”集成測試通過分層將各自分層的部分可以分別采用自頂向下和自底向上的方法。
對執(zhí)行模塊測試的建議
當(dāng)測試用例造成模塊輸出的實(shí)際結(jié)果與預(yù)期結(jié)果不匹配的情況時(shí),存在兩種可能的解釋。要么是測試用例不正確,要么是模塊存在錯(cuò)誤。為了避免這樣的混亂,我們在執(zhí)行測試之前,應(yīng)對測試用例集進(jìn)行審核和檢查。
使用自動(dòng)化測試工具可以使測試過程中的枯燥勞動(dòng)減至最低。
更高級別的測試
在更高級測試中,主要討論了功能測試,系統(tǒng)測試,驗(yàn)收測試和安裝測試。
功能測試
功能測試就是一個(gè)試圖發(fā)現(xiàn)程序與其外部規(guī)格說明之間存在不一致的過程。這里外部規(guī)格說明就是一份從最終用戶的角度對程序行為的精確描述。
功能測試通常是黑盒測試,所以在黑盒測試方法中等價(jià)類劃分,邊界值分析,因果圖分析法和錯(cuò)誤猜測的方法都很適用于功能測試。
系統(tǒng)測試
系統(tǒng)測試主要包括能力測試,容量測試,強(qiáng)度測試,易用性測試,安全性測試,存儲(chǔ)測試,配置測試。兼容性/配置/轉(zhuǎn)換測試,安裝測試,可靠性測試,可恢復(fù)性測試,適用性測試,文檔測試,過程測試等
1.能力測試
判斷目標(biāo)文檔提及的每一項(xiàng)能力是否都確實(shí)得到實(shí)現(xiàn)。過程就是逐條語句地檢查目標(biāo)文檔。此類測試常常可以在不適用計(jì)算機(jī)的情況下進(jìn)行。
2.容量測試
使程序經(jīng)受大容量數(shù)據(jù)的檢驗(yàn)。由于容量測試顯然需要大量的資源,鑒于對機(jī)器和工時(shí)考慮,不可進(jìn)行過多的容量測試。
3.強(qiáng)度測試(壓力測試)
強(qiáng)度測試就是使程序承受高負(fù)載或強(qiáng)度的檢驗(yàn)。高強(qiáng)度是指在很短的時(shí)間間隔內(nèi)達(dá)到的數(shù)據(jù)或操作峰值。強(qiáng)度測試適用于在可變負(fù)載下運(yùn)行的程序,例如對于一些Web的并發(fā)量測試。
4.易用性測試
- 易用性測試通常要考慮的問題:
- 用戶界面是否要根據(jù)用戶的智力,教育背景和環(huán)境進(jìn)行調(diào)整
- 程序的輸出是否有意義、不模糊且沒有計(jì)算機(jī)的雜亂信息
- 錯(cuò)誤診斷是否直接
- 整體的用戶界面是否存在語法,格式,風(fēng)格等問題
- 在準(zhǔn)確性要求高的環(huán)境中,輸入中是否有足夠的確認(rèn)信息
- 對于所有的輸入,系統(tǒng)是否返回了某些即時(shí)確認(rèn)信息
- 程序是否包含過多或不太可能用到的選項(xiàng)
- 程序是否易用
5.安全性測試
安全性測試是設(shè)計(jì)測試用例來突破程序安全檢查的過程。
6.性能測試
描述為在特定負(fù)載和配置環(huán)境下程序的響應(yīng)時(shí)間和吞吐率。注:設(shè)計(jì)測試用例來說明程序不能滿足其性能標(biāo)準(zhǔn)
7.存儲(chǔ)測試
描述程序使用的內(nèi)存和輔存的容量以及臨時(shí)文件或溢出文件的大小。同樣,設(shè)計(jì)測試用例來證明這些存儲(chǔ)目標(biāo)沒有得到滿足
8.配置測試
一些配置的因素比如操作系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)和信息交換系統(tǒng)等都支持多種硬件配置,包括不同類型和數(shù)量的I/O設(shè)備和通信線路,或不同的儲(chǔ)存容量。
9.兼容性/配置/轉(zhuǎn)換測試
對于一些涉及對現(xiàn)有系統(tǒng)的兼容以及從現(xiàn)有系統(tǒng)轉(zhuǎn)換的過程,測試其兼容性目標(biāo)和轉(zhuǎn)換過程
10.安裝測試
安裝程序如果出現(xiàn)故障,會(huì)影響用戶對軟件的成功體驗(yàn)。所以測試安裝過程是系統(tǒng)的一個(gè)重要的部分。
11.可靠性測試
可靠性測試是為了保證產(chǎn)品在規(guī)定的壽命期間內(nèi),在預(yù)期的使用、運(yùn)輸或儲(chǔ)存等所有環(huán)境下,保持功能可靠性而進(jìn)行的活動(dòng)。進(jìn)一步可以研究歸納斷言的概念。
12.可恢復(fù)性測試
對系統(tǒng)如何從程序錯(cuò)誤,硬件失效和數(shù)據(jù)錯(cuò)誤中恢復(fù)出來的測試
13.適用性測試
幫助您的產(chǎn)品符合法律安全與性能要求,同時(shí)提高用戶體驗(yàn),滿足當(dāng)?shù)厣盍?xí)慣和消費(fèi)習(xí)慣需求
14.文檔測試
對用戶文檔的正確定,完整性和清晰性進(jìn)行檢查
15.過程測試
對多有依規(guī)定的人工過程,如系統(tǒng)操作員,數(shù)據(jù)庫管理員或最終用戶的操作過程進(jìn)行測試。
驗(yàn)收測試
驗(yàn)收測試是將程序與其最初的需求及最終用戶當(dāng)前的需要進(jìn)行比較的過程,該測試通常是由程序的客戶或最終用戶來進(jìn)行。
測試的計(jì)劃與控制
測試計(jì)劃應(yīng)包括:
目標(biāo):必須定義每個(gè)測試階段的目標(biāo)
結(jié)束準(zhǔn)則:制定準(zhǔn)則以規(guī)定每一個(gè)測試階段何時(shí)可以結(jié)束
進(jìn)度:每個(gè)階段都須有時(shí)間表
責(zé)任:確定設(shè)計(jì),編寫,和驗(yàn)證測試用例的人和發(fā)現(xiàn)軟件錯(cuò)誤的人
測試用例庫及標(biāo)準(zhǔn):確定、編寫以及存儲(chǔ)測試用例的系統(tǒng)方法
工具:確定需要使用的測試工具
計(jì)算機(jī)時(shí)間:計(jì)劃每個(gè)測試階段所需要的計(jì)算機(jī)時(shí)間
硬件配置:描述特別需要的硬件配置或設(shè)備
集成:定義程序如歌組裝在一起的方法(如自定向下的增量測試)
跟蹤步驟:跟蹤測試的方方面面,包括對錯(cuò)誤易發(fā)模塊的定位,以及有關(guān)進(jìn)度、資源和結(jié)束準(zhǔn)則的估計(jì)
調(diào)試步驟:制定上報(bào)已發(fā)現(xiàn)錯(cuò)誤、跟蹤錯(cuò)誤修改進(jìn)程以及修改部分加入系統(tǒng)中去的機(jī)制
回歸測試:回歸測試在對程序作了功能改進(jìn)或進(jìn)行了修改之后,判斷程序的改動(dòng)是否引起其他程序其他方面的退步。
測試結(jié)束準(zhǔn)則
三個(gè)參考原則:
總結(jié)
以上是生活随笔為你收集整理的精读-软件测试的艺术之模块测试及更高级别的测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《那些年啊,那些事——一个程序员的奋斗史
- 下一篇: redis数据批量导入导出