一祷蝌、軟件測試的背景
什么是軟件缺陷
- 軟件未實現(xiàn)產(chǎn)品說明書要求的功能
- 軟件出現(xiàn)了產(chǎn)品說明書指明不應(yīng)該出現(xiàn)的功能
- 軟件實現(xiàn)了產(chǎn)品說明書中未提到的功能
- 軟件未實現(xiàn)產(chǎn)品說明雖未明確提及但應(yīng)該實現(xiàn)的目標(biāo)。
- 軟件難以理解渤刃、不易使用湾碎、運行緩慢或者測試認(rèn)為用戶認(rèn)為不好
軟件缺陷產(chǎn)生的原因
主要原因是產(chǎn)品說明書,其次是因為設(shè)計過程,還有代碼錯誤等其他原因
軟件缺陷的修復(fù)費用隨時間指數(shù)級地增長
軟件測試員的工作是什么
軟件測試員的目的是盡可能早地發(fā)現(xiàn)軟件缺陷辕近,并確保其得以修復(fù)。
二匿垄、軟件開發(fā)的過程
軟件產(chǎn)品的投入
- 客戶需求
- 產(chǎn)品說明書
- 進(jìn)度表
- 軟件設(shè)計文檔(結(jié)構(gòu)文檔移宅、數(shù)據(jù)流圖归粉、狀態(tài)轉(zhuǎn)換圖、流程圖吞杭、代碼注釋)
- 測試文檔(測試計劃盏浇、測試用例、缺陷報告芽狗、測試工具和自動測試绢掰、度量,統(tǒng)計和總結(jié))
- 代碼
軟件產(chǎn)品包含哪些部分
除了軟件本身還包括幫助文件童擎、用戶手冊滴劲、樣本和實例、產(chǎn)品支持信息顾复、圖標(biāo)和標(biāo)志班挖、錯誤提示信息、廣告和宣傳材料芯砸、安裝萧芙、說明文件。
軟件項目成員
項目經(jīng)理(編寫產(chǎn)品說明書假丧、管理進(jìn)度池户、進(jìn)行重大決策)
架構(gòu)師(整個系統(tǒng)的體系結(jié)構(gòu)或軟件設(shè)計工作)
程序員(設(shè)計編寫軟件并修復(fù)軟件缺陷)
測試(找出并報告軟件產(chǎn)品的問題)
技術(shù)作者(編寫軟件產(chǎn)品附帶的文件和聯(lián)機文檔)
配置管理員(整合所有資料)
軟件開發(fā)生命周期模式
- 大爆炸模式
- 邊寫邊改模式
- 瀑布模式
- 螺旋模式
三恕沫、軟件測試的實質(zhì)
軟件測試的術(shù)語和定義
返回結(jié)果的精確和準(zhǔn)確亲怠,精確指返回結(jié)果的精密程度兔毙,準(zhǔn)確指返回結(jié)果的正確程度;
確認(rèn)和驗證渴邦,確認(rèn)指保證軟件符合產(chǎn)品說明書的過程疯趟,驗證指軟件滿足用戶要求的過程;
質(zhì)量和可靠性谋梭,可靠性是質(zhì)量的一個方面信峻;
測試和質(zhì)量保證;
四瓮床、檢查產(chǎn)品說明書
黑盒測試和白盒測試
黑盒測試又稱功能性測試或行為測試站欺,不關(guān)注軟件內(nèi)部結(jié)構(gòu)。
白盒測試又稱為透明盒測試纤垂,可以訪問程序代碼矾策,通過檢查代碼協(xié)助測試
靜態(tài)測試和動態(tài)測試
靜態(tài)測試指測試不運行的部分,只是檢查和審核峭沦,動態(tài)測試指通常意義上的使用和運行軟件進(jìn)行測試贾虽。
產(chǎn)品說明書的高層次審查
假設(shè)自己是客戶,審查說明書是否符合自己預(yù)期吼鱼;研究現(xiàn)有的規(guī)范和標(biāo)準(zhǔn)蓬豁,審查是否符合標(biāo)準(zhǔn)绰咽;研究類似軟件,積累經(jīng)驗
產(chǎn)品說明書的低層次測試技術(shù)
- 產(chǎn)品說明書屬性檢查清單
產(chǎn)品說明書應(yīng)具有8個屬性:完整地粪;準(zhǔn)確取募;精確、清晰蟆技;一致玩敏;貼切;合理质礼;代碼無關(guān)旺聚;可測試性; - 產(chǎn)品說明書用語檢查清單
產(chǎn)品說明書中出現(xiàn)絕對或肯定的描述眶蕉;出現(xiàn)因此砰粹、顯然、明顯等帶說服語氣的推斷詞造挽;出現(xiàn)有時碱璃、常常、幾乎等頻率詞饭入;出現(xiàn)等等嵌器、例如等無法測試的詞;出現(xiàn)良好圣拄、迅速等無法量化的詞嘴秸;出現(xiàn)處理毁欣、進(jìn)行等容易隱藏需要說明的功能的詞庇谆;出現(xiàn)如果---那么的結(jié)構(gòu),但沒有說明沒有如果的情況凭疮;以上情況需要額外謹(jǐn)慎檢查饭耳。
五、帶上眼罩測試軟件
軟件測試基本方法:通過性測試和失效性測試执解。
選擇測試用例方法:
- 等價類劃分:把軟件中具有相似輸入寞肖、相似輸出、相似操作的劃分在一組衰腌,進(jìn)而縮小測試用例集新蟆。
- 等價類劃分原則:邊界條件、次邊界條件右蕊、空值和無效數(shù)據(jù)琼稻。
- 對于看不到的邊界,如2的冪和ascii表等饶囚,檢查其次邊界條件帕翻。例如軟件接受用戶輸入1-1000范圍內(nèi)的數(shù)字鸠补,除其邊界1和1000外,還需注意臨近2的乘方次邊界:14嘀掸,15紫岩,16以及254,255和256睬塌。如果測試文本輸入或者文本轉(zhuǎn)換時泉蝌,假設(shè)測試的文本框只接受a-z和A-Z的輸入,其非法輸入還包含ASCII表中a-z鄰近的'和{以及A-Z鄰近的@和[衫仑,另注:0-9的ascii碼表的鄰近符號為/和:梨与。
- 默認(rèn)、空白文狱、空值粥鞋、零值和無應(yīng)作為單獨的等價類劃分。
- 非法瞄崇、錯誤呻粹、不正確和垃圾數(shù)據(jù)是失效性測試,沒有特定的規(guī)則苏研。
除了測試軟件的文字等浊、數(shù)字、輸入輸出外摹蘑,還需要進(jìn)行軟件的狀態(tài)測試筹燕,來驗證程序的邏輯流程。
軟件狀態(tài)測試步驟:(1)建立狀態(tài)轉(zhuǎn)換圖衅鹿,軟件狀態(tài)圖應(yīng)列出軟件可能進(jìn)入的每一種獨立狀態(tài)撒踪,軟件從一中狀態(tài)轉(zhuǎn)入另一種狀態(tài)所需的輸入和條件,以及軟件進(jìn)入或退出某種狀態(tài)時的設(shè)置條件及輸出結(jié)果大渤;(2)減少要測試的狀態(tài)及轉(zhuǎn)換的數(shù)量制妄,包括以下實現(xiàn)方法:每種狀態(tài)至少訪問一次;測試看起來最常見和最普遍的狀態(tài)轉(zhuǎn)換泵三;測試狀態(tài)之間最不常用的分支耕捞;測試所有錯誤狀態(tài)及返回值;測試隨機狀態(tài)轉(zhuǎn)換烫幕。(3)定義測試用例進(jìn)行具體測試俺抽,包括檢查所有的狀態(tài)變量(與進(jìn)入和退出相關(guān)的靜態(tài)條件、信息较曼、值磷斧、功能等)。
失敗狀態(tài)測試
常見的失敗狀態(tài)測試包括競爭條件、重復(fù)瞳抓、壓迫和重負(fù)測試埃疫。
競爭條件指幾個事件恰巧擠在一起,軟件未預(yù)料到運行過程會被中斷導(dǎo)致混亂孩哑;包括以下情形:兩個不同的程序同時保存和打開同一個文檔栓霜;共享同一臺打印機、通信端口或其他外圍設(shè)備横蜒;當(dāng)軟件出于讀取或改變狀態(tài)時按鍵或單擊鼠標(biāo)胳蛮;同時關(guān)閉或啟動軟件的多個實例;同時使用不同的程序訪問一個共同的數(shù)據(jù)庫丛晌。
重復(fù)測試指不斷執(zhí)行同樣的操作仅炊,以檢查是否存在內(nèi)存泄露;壓迫測試指軟件在不夠理想的條件下運行澎蛛,內(nèi)存小抚垄、磁盤空間小、cpu速度慢谋逻、調(diào)制調(diào)解器速率低等呆馁,觀察軟件對外部資源的要求和依賴程度。重負(fù)測試使軟件盡可能處理大的數(shù)據(jù)文件毁兆,發(fā)掘軟件能力浙滤。
六、檢查代碼(靜態(tài)白盒測試)
通用代碼審查清單包括:數(shù)據(jù)引用錯誤气堕;數(shù)據(jù)聲明錯誤纺腊;計算錯誤;比較錯誤茎芭;控制流程錯誤揖膜;子程序參數(shù)錯誤;輸入/輸出錯誤骗爆;其他檢查次氨。
七蔽介、帶上x光眼鏡測試軟件(動態(tài)白盒測試)
動態(tài)白盒測試又稱為結(jié)構(gòu)化測試摘投,包括以下部分:(1)直接測試底層函數(shù)、過程虹蓄、子函數(shù)和庫犀呼;(2)以完整程序的方式從頂層測試軟件;(3)從軟件獲得讀取變量和狀態(tài)信息的訪問權(quán)薇组,以確定測試與預(yù)期結(jié)果是否相同外臂,同時強制軟件以正常測試難以實現(xiàn)的方式運行;(4)估算執(zhí)行測試時命中的代碼量和具體代碼律胀,調(diào)整測試宋光,去掉多余測試用例貌矿,補充遺漏用例。
分段測試
- 單元測試和集成測試
在底層進(jìn)行的測試稱為單元測試或模塊測試罪佳,模塊組合在一起進(jìn)行測試稱為集成測試逛漫。主要有兩條途徑:自底向上和自頂向下,自底向上需要編寫稱為測試驅(qū)動的模塊調(diào)用正在測試的模塊赘艳,自頂向下需要編寫樁充當(dāng)接口模塊酌毡。 - 白盒測試的數(shù)據(jù)覆蓋及代碼覆蓋。代碼覆蓋最直接的形式稱為語句覆蓋蕾管,確保每一條語句至少執(zhí)行一次枷踏;但即使所有語句被執(zhí)行了,仍不能說遍歷了軟件所有路徑掰曾。試圖覆蓋軟件中所有路徑稱為路徑覆蓋旭蠕,最簡單的形式稱為分支覆蓋測試。
八旷坦、配置測試(硬件)
略
九下梢、兼容性測試
兼容性測試指檢查軟件之間是否能夠正確的交互和共享信息。
向后和向前兼容
向后兼容指可以使用軟件的以前版本塞蹭;向前兼容指可以使用軟件的未來版本孽江。