本文通過(guò)軟件測(cè)試基礎(chǔ)、測(cè)試用例設(shè)計(jì)狼电、測(cè)試的種類、互聯(lián)網(wǎng)應(yīng)用測(cè)試弦蹂、敏捷中的測(cè)試肩碟、調(diào)試六個(gè)方面進(jìn)行總結(jié)。
一. 測(cè)試的基礎(chǔ)
定義:測(cè)試是為發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序(文檔測(cè)試就不是執(zhí)行程序)的過(guò)程凸椿。
目標(biāo):通過(guò)有限的測(cè)試(用例)削祈,最大限度的提高發(fā)現(xiàn)問(wèn)題的數(shù)量,以取得最好的測(cè)試效果脑漫。
軟件測(cè)試最普遍的兩種手段
黑盒測(cè)試:數(shù)據(jù)驅(qū)動(dòng)的測(cè)試或者輸入/輸出驅(qū)動(dòng)的測(cè)試髓抑,’窮舉輸入’;
白盒測(cè)試:邏輯驅(qū)動(dòng)的測(cè)試优幸,檢查程序的內(nèi)部結(jié)構(gòu)
軟件測(cè)試10項(xiàng)原則
- 測(cè)試用例中一個(gè)必須的部分是對(duì)預(yù)期輸出或結(jié)果的定義
- 程序員應(yīng)當(dāng)避免測(cè)試自己編寫的程序
- 編寫軟件的組織不應(yīng)當(dāng)測(cè)試自己編寫的軟件
- 應(yīng)當(dāng)徹底檢查每個(gè)測(cè)試的執(zhí)行結(jié)果
- 測(cè)試用例的編寫不僅應(yīng)當(dāng)根據(jù)有效和預(yù)期的輸入情況吨拍,而且也應(yīng)當(dāng)根據(jù)無(wú)效和未預(yù)料到的輸入情況
- 檢查程序是否’未做其應(yīng)該做的’僅是測(cè)試的一半,測(cè)試的另一半是檢查程序是否‘做了其不應(yīng)該做的’
- 應(yīng)避免測(cè)試用例用后即棄劈伴,除非軟件本身就是一個(gè)一次性的軟件
- 計(jì)劃測(cè)試工作時(shí)不應(yīng)默許假定不會(huì)發(fā)生錯(cuò)誤
- 程序某部分存在更多錯(cuò)誤的可能性密末,與該部分已發(fā)生錯(cuò)誤的數(shù)量成正比
- 軟件測(cè)試是一項(xiàng)極富創(chuàng)造性,極具智力挑戰(zhàn)性的工作
二. 測(cè)試用例的設(shè)計(jì)
包括白盒測(cè)試跛璧,黑盒測(cè)試严里,錯(cuò)誤猜測(cè),測(cè)試組合策略
- 白盒測(cè)試:語(yǔ)句覆蓋追城,判定覆蓋刹碾,條件覆蓋,判定/條件覆蓋座柱,多重條件覆蓋
If A and B then Action1
If C or D then Action2
語(yǔ)句覆蓋:保證程序中的語(yǔ)句都執(zhí)行一遍即可
A=true B=true C=true
判定覆蓋:保證程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次迷帜,即判斷的真假均曾被滿足
(1)A=true,B=true色洞,C=true戏锹,D=false(2)A=true,B=false火诸,C=false锦针,D=false
條件覆蓋:保證每個(gè)判斷中的每個(gè)條件的可能取值至少滿足一次
A=true/false B=true/false C=true/false D=true/false, so (1)A=true,B=true,C=true奈搜,D=true(2)A=false悉盆,B=false,C=false馋吗,D=false
判定/條件覆蓋:保證判斷中每個(gè)條件的可能結(jié)果至少執(zhí)行一次焕盟,每個(gè)判斷的所有可能結(jié)果至少執(zhí)行一次
(1)A=true,B=true宏粤,C=true脚翘,D=false(2)A=true,B=false商架,C=false堰怨,D=false (3)A=false,B=true蛇摸,C=false,D=true
多重條件覆蓋:將每個(gè)判定中的所有可能的條件結(jié)果的組合灿巧,以及所有入口點(diǎn)都至少執(zhí)行一次
(1)A=true赶袄,B=true,C=true抠藕,D=false(2)A=true饿肺,B=false,C=false盾似,D=false (3)A=false敬辣,B=true,C=false零院,D=true(4)A=false溉跃,B=false,C=true告抄,D=true
-
黑盒測(cè)試:等價(jià)劃分撰茎,邊界值分析,因果圖
等價(jià)劃分:1)確定等價(jià)類(‘有效’打洼,‘無(wú)效’)龄糊;2)生成測(cè)試用例
邊界條件:輸入和輸出等價(jià)類中那些恰好處于邊界,或者超過(guò)邊界募疮,或在邊界值以下的狀態(tài)
檢查結(jié)果空間的邊界很重要炫惩,因?yàn)檩斎敕秶倪吔绮⒉豢偰艽磔敵龇秶倪吔缜闆r(三角正弦函數(shù)sin)
因果圖:從用自然語(yǔ)言書寫的程序規(guī)格說(shuō)明的描述中找出因(輸入條件)和果(輸出或程序狀態(tài)的改變),可
以通過(guò)因果圖轉(zhuǎn)換為判定表阿浓,從而設(shè)計(jì)相應(yīng)的測(cè)試用例他嚷。
- 錯(cuò)誤猜測(cè):利用直覺(jué)和經(jīng)驗(yàn)猜測(cè)出錯(cuò)的可能類型,然后編寫測(cè)試用例來(lái)暴露這些錯(cuò)誤
- 測(cè)試組合策略:多種測(cè)試用例設(shè)計(jì)組合而成的一個(gè)整體的策略(例如白盒和黑盒測(cè)試用例設(shè)計(jì)的組合測(cè)試)。
組合策略要求:
- 規(guī)格說(shuō)明中包含條件組合的情況爸舒,應(yīng)首先使用因果圖分析方法
- 任何情況下都應(yīng)使用邊界值分析方法
- 應(yīng)為輸入和輸出確定有效和無(wú)效等價(jià)類
- 使用錯(cuò)誤猜測(cè)技術(shù)增加更多的測(cè)試用例
三. 測(cè)試的種類
從傳統(tǒng)的開(kāi)發(fā)模式蟋字,執(zhí)行測(cè)試的順序和粒度,分為單元測(cè)試扭勉,集成測(cè)試鹊奖,功能測(cè)試,系統(tǒng)測(cè)試涂炎,驗(yàn)收測(cè)試忠聚,安裝測(cè)試
開(kāi)發(fā)過(guò)程與測(cè)試過(guò)程的對(duì)應(yīng)關(guān)系:
1. 模塊(單元)測(cè)試
單元測(cè)試:是對(duì)程序中的單個(gè)子程序,子函數(shù)或過(guò)程進(jìn)行測(cè)試的過(guò)程唱捣。
目前大多數(shù)的單元測(cè)試其實(shí)都是黑盒測(cè)試两蟀,包括開(kāi)發(fā)人員自己寫的單元測(cè)試也是黑盒測(cè)試,只有像自動(dòng)掃描這種對(duì)每行代碼邏輯的測(cè)試才是真正使用的白盒測(cè)試 震缭,徹底的單元測(cè)試需要使用增量策略
2. 集成測(cè)試(增量測(cè)試):
分為自頂向下的增量測(cè)試與自底向上的增量測(cè)試
測(cè)試單獨(dú)的模塊需要有個(gè)特殊的驅(qū)動(dòng)模塊和一個(gè)或多個(gè)樁模塊赂毯。自頂向下測(cè)試更側(cè)重于編寫樁模塊,自底向上測(cè)試更側(cè)重于編寫驅(qū)動(dòng)模塊
增量測(cè)試的優(yōu)缺點(diǎn):
1)非增量測(cè)試所需的工作量要多一些(需要更多的驅(qū)動(dòng)模塊和樁模塊拣宰,而自頂而下的增量測(cè)試只需要樁模塊党涕,自底而上的增量測(cè)試只需要驅(qū)動(dòng)模塊)
2)增量測(cè)試可以盡早發(fā)現(xiàn)模塊中與不匹配接口,不正確假設(shè)相關(guān)的編程錯(cuò)誤巡社,容易調(diào)試(由于可以盡早地對(duì)模塊組合進(jìn)行集成測(cè)試)
3)增量測(cè)試使用先前測(cè)試過(guò)的模塊膛堤,取代了非增量測(cè)試中使用的樁模塊或驅(qū)動(dòng)模塊,所以實(shí)際模塊經(jīng)受了更多的檢驗(yàn)
4)模塊測(cè)試階段開(kāi)始時(shí)晌该,若使用非增量測(cè)試肥荔,就會(huì)有更多機(jī)會(huì)進(jìn)行并行操作
3. 功能測(cè)試
功能測(cè)試通常是一項(xiàng)黑盒操作。用來(lái)發(fā)現(xiàn)程序與其外部規(guī)格說(shuō)明之間存在不一致的過(guò)程朝群。常用等價(jià)類劃分燕耿,邊界值分析,因果圖分析和錯(cuò)誤猜測(cè)方法潜圃。
4. 系統(tǒng)測(cè)試
系統(tǒng)測(cè)試的目的就是將系統(tǒng)或程序與其初始目標(biāo)進(jìn)行比較缸棵。含義:
- 系統(tǒng)測(cè)試不局限于系統(tǒng),可能是一個(gè)程序谭期,那么系統(tǒng)測(cè)試就是一個(gè)試圖說(shuō)明程序作為一個(gè)整體是如何不滿足其目標(biāo)的過(guò)程
- 根據(jù)定義堵第,如果產(chǎn)品沒(méi)有一組書面的,可度量的目標(biāo)隧出,系統(tǒng)測(cè)試也就無(wú)法進(jìn)行踏志。
系統(tǒng)測(cè)試分類:
分類 | 說(shuō)明 |
---|---|
能力測(cè)試 | 確保程序的目標(biāo)功能實(shí)現(xiàn)(目標(biāo)和用戶文檔進(jìn)行比較) |
性能測(cè)試 | 評(píng)估程序的響應(yīng)時(shí)間及吞吐量瓶頸 |
強(qiáng)度測(cè)試 | 發(fā)現(xiàn)在大規(guī)模負(fù)載,高強(qiáng)度不間斷持續(xù)的數(shù)據(jù)處理中的異常 |
容量測(cè)試 | 發(fā)現(xiàn)處理大容量數(shù)據(jù)時(shí)的程序異常 |
安全性測(cè)試 | 試圖攻破程序的安全防線 |
兼容性測(cè)試 | 評(píng)估新版本能否兼容老的版本 |
可用性/用戶體驗(yàn)測(cè)試 | 評(píng)估最終用戶在使用軟件與軟件交互時(shí)的可用性問(wèn)題 |
存儲(chǔ)測(cè)試 | 確保程序可以正常處理其對(duì)存儲(chǔ)的需求胀瞪,包括系統(tǒng)的存儲(chǔ)和物理上的存儲(chǔ) |
可靠性測(cè)試 | 評(píng)估程序能達(dá)到規(guī)格說(shuō)明中運(yùn)行時(shí)長(zhǎng)和平均故障間隔時(shí)間要求 |
可恢復(fù)性測(cè)試 | 測(cè)試系統(tǒng)恢復(fù)相關(guān)的功能是否按照設(shè)計(jì)要求實(shí)現(xiàn) |
可維護(hù)性/服務(wù)測(cè)試 | 評(píng)估系統(tǒng)是否擁有良好的數(shù)據(jù)處理和日志機(jī)制针余,以備技術(shù)支持和調(diào)試之需 |
配置測(cè)試 | 檢查程序是否能在推薦配置上流暢運(yùn)行 |
安裝測(cè)試 | 確保能夠在所有支持的平臺(tái)上安裝軟件 |
文檔測(cè)試 | 校驗(yàn)所有的用戶文檔是否準(zhǔn)確 |
過(guò)程測(cè)試 | 對(duì)軟件系統(tǒng)操作或維護(hù)所設(shè)計(jì)的流程進(jìn)行評(píng)估和確定 |
三種測(cè)試的區(qū)別:
- 模塊測(cè)試的目的是發(fā)現(xiàn)程序模塊與其接口規(guī)格說(shuō)明之間的不一致
- 功能測(cè)試的目的是為了證明程序未能符合其外部規(guī)格說(shuō)明
- 系統(tǒng)測(cè)試的目的是為了證明軟件產(chǎn)品與其初始目標(biāo)不一致
系統(tǒng)測(cè)試中的可用性(用戶體驗(yàn))測(cè)試
是一種黑盒測(cè)試饲鄙。測(cè)試從功能缺陷到不符合人機(jī)工程學(xué)的設(shè)計(jì)失誤。
準(zhǔn)備真實(shí)圆雁、可重復(fù)的試驗(yàn)場(chǎng)景 -> 測(cè)試人員選取(優(yōu)秀的測(cè)試員忍级、用戶) -> 數(shù)據(jù)采集(溝通、調(diào)查問(wèn)卷等)
目標(biāo):
- 是否容易上手
- 對(duì)用戶操作是否及時(shí)作出反應(yīng)
- 系統(tǒng)是否存在太多選項(xiàng)(流程的簡(jiǎn)易性)
- 是否有助于用戶的準(zhǔn)確輸入
- 是否在眾多的功能和菜單中來(lái)回切換不發(fā)生意外
5. 驗(yàn)收測(cè)試
驗(yàn)收測(cè)試是將程序與其最初的需求及最終用戶當(dāng)前的需要進(jìn)行比較的過(guò)程伪朽。該測(cè)試通常是由程序的客戶或最終用戶來(lái)進(jìn)行轴咱。
6. 安裝測(cè)試
安裝測(cè)試的目的不是為了發(fā)現(xiàn)軟件中的錯(cuò)誤,而是為了發(fā)現(xiàn)在安裝過(guò)程中出現(xiàn)的錯(cuò)誤烈涮。
四. 互聯(lián)網(wǎng)應(yīng)用測(cè)試
基于web的應(yīng)用系統(tǒng)基本結(jié)構(gòu)分為表現(xiàn)層朴肺,業(yè)務(wù)層,數(shù)據(jù)層
- 挑戰(zhàn)
- 用戶群龐大而五花八門(能力坚洽、使用瀏覽器戈稿、操作系統(tǒng)、設(shè)備種類讶舰、訪問(wèn)網(wǎng)站的信道速率等)鞍盗。
- 業(yè)務(wù)環(huán)境(電商網(wǎng)站考慮計(jì)算稅率,判斷運(yùn)輸成本跳昼,跟蹤用戶資料等問(wèn)題)橡疼。
- 地點(diǎn)(國(guó)際化問(wèn)題,語(yǔ)言翻譯庐舟、時(shí)差及貨幣兌換等)。
- 安全性(防止黑客攻擊住拭,導(dǎo)致系統(tǒng)癱瘓挪略,丟失信息等)。
- 測(cè)試環(huán)境(使用和軟件運(yùn)行相同的環(huán)境)滔岳。
- 測(cè)試策略
表現(xiàn)層
- 內(nèi)容測(cè)試杠娱。包括字體,色彩谱煤,內(nèi)容摊求,布局,分辨率等刘离。
- web站點(diǎn)結(jié)構(gòu)室叉。檢查無(wú)效的link或者image。
- 用戶環(huán)境硫惕。測(cè)試不同瀏覽器版本茧痕,系統(tǒng)配置,兼容性等恼除。
業(yè)務(wù)層
- 性能踪旷。能夠滿足規(guī)格說(shuō)明,包括響應(yīng)時(shí)間和吞吐量等。
- 數(shù)據(jù)有效性令野。發(fā)現(xiàn)從客戶那采集到的數(shù)據(jù)的有效性舀患。
- 事務(wù)。發(fā)現(xiàn)事務(wù)處理過(guò)程中的錯(cuò)誤气破。包括信用卡處理聊浅,電子郵件驗(yàn)證等。
不僅需要測(cè)試內(nèi)部業(yè)務(wù)過(guò)程堵幽,也要測(cè)試外部接口
數(shù)據(jù)層
- 響應(yīng)時(shí)間狗超。量化查詢語(yǔ)言SQL語(yǔ)句的消耗時(shí)間。
- 數(shù)據(jù)完整性朴下。驗(yàn)證數(shù)據(jù)存儲(chǔ)適當(dāng)且正確努咐。
- 容錯(cuò)性和可恢復(fù)性。驗(yàn)證最大化的平均故障間隔時(shí)間(MTBF)和最小化的平均故障恢復(fù)時(shí)間(MTTR)殴胧。
五. 敏捷中的測(cè)試
敏捷:無(wú)固定的開(kāi)發(fā)過(guò)程渗稍。三個(gè)特性:依賴客戶參與、測(cè)試驅(qū)動(dòng)团滥、緊湊的開(kāi)發(fā)周期
敏捷中的測(cè)試:通過(guò)持續(xù)的測(cè)試反饋推動(dòng)項(xiàng)目前行竿屹,幫助開(kāi)發(fā)這修復(fù)bug,改變需求設(shè)計(jì)以及其他一般性質(zhì)量提升灸姊。敏捷測(cè)試依賴于自動(dòng)化測(cè)試(及時(shí)反饋拱燃,更可靠)。
極限開(kāi)發(fā)中的測(cè)試:?jiǎn)卧獪y(cè)試和驗(yàn)收測(cè)試(自動(dòng)或者非自動(dòng)化)組成(在創(chuàng)建開(kāi)發(fā)代碼庫(kù)之前創(chuàng)建)
六. 調(diào)試
執(zhí)行測(cè)試用例成功捕獲錯(cuò)誤之后需要進(jìn)行調(diào)試力惯,找到錯(cuò)誤根源碗誉。
調(diào)試種類
- 蠻力調(diào)試。程序中插入打印語(yǔ)句或debug工具等
- 歸納調(diào)試父晶。從錯(cuò)誤癥狀或線索起步哮缺,進(jìn)行全局歸納分析
- 演繹法調(diào)試。通過(guò)排除法甲喝,逐層分析尝苇,定位錯(cuò)誤
- 回溯法調(diào)試。從程序錯(cuò)誤的地方往前回溯埠胖,定位錯(cuò)誤
- 測(cè)試法調(diào)試糠溜。通過(guò)測(cè)試用例來(lái)發(fā)現(xiàn)錯(cuò)誤所在。通常和歸納法或演繹法一起使用押袍。