第五章 軟件測試基礎(chǔ)
一庭瑰、軟件測試的定義:
- 使用人工或自動(dòng)的檢測方法星持,檢測被測對象(軟件文檔、軟件數(shù)據(jù)弹灭、運(yùn)行程序)是否滿足用戶需求督暂,若不滿足,則為錯(cuò)誤穷吮。找出預(yù)期結(jié)果與實(shí)際結(jié)果之間的差異逻翁。
二、軟件測試的目的:
1捡鱼、需求階段:對需求文檔進(jìn)行評審八回,檢查需求文檔是否有錯(cuò)誤、描述不清楚的情況;
2缠诅、軟件設(shè)計(jì)階段:檢查軟件運(yùn)行的環(huán)境是否合理溶浴,業(yè)務(wù)功能模塊之間組織是否合理;
3管引、編碼階段:測試對應(yīng)的代碼和程序士败;
4、驗(yàn)收階段:檢查軟件是否符合用戶要求褥伴;
5谅将、運(yùn)維階段:檢測軟件更新和補(bǔ)丁修復(fù),是否會因?yàn)橹鞍l(fā)生的問題引入新的問題重慢。
- 無論哪個(gè)階段戏自,目的都是通過測試活動(dòng),檢驗(yàn)被測對象是否與預(yù)期一致伤锚。測試工程師是希望證明被測對象存在缺陷,而開發(fā)人員則希望被測對象無錯(cuò)誤志衣。
三屯援、軟件缺陷定義:
- 任何與用戶需求不一致的軟件表現(xiàn)。包括錯(cuò)誤念脯、bug狞洋、缺陷、失效(如無法開機(jī)绿店、突然斷線)吉懊。
四、缺陷產(chǎn)生的主要原因:
1假勿、需求表述借嗽、理解、編寫引起的錯(cuò)誤转培;
2恶导、開發(fā)過程缺乏有效的溝通和監(jiān)督,甚至沒有溝通和監(jiān)督浸须;
3惨寿、程序員編程中產(chǎn)生的錯(cuò)誤;
4删窒、軟件復(fù)雜度越來越高裂垦。
五、常見缺陷種類:
1肌索、遺漏:軟件沒有實(shí)現(xiàn)用戶需求:記錄需求時(shí)遺漏蕉拢;開發(fā)故意遺漏,為了提前交付或做不完,甩鍋給測試企量,利用改bug的時(shí)間補(bǔ)需求测萎,如若多次出現(xiàn)此情況應(yīng)向領(lǐng)導(dǎo)反映;開發(fā)非故意遺漏届巩。
2硅瞧、錯(cuò)誤:軟件的實(shí)現(xiàn)與用戶需求(期望)不一致
3、冗余:軟件的實(shí)現(xiàn)超出用戶需求恕汇,如果不影響正常功能使用或者是比較好的就保留腕唧。
4、不滿意:用戶覺得不符合使用習(xí)慣瘾英、審美等問題枣接。
六、軟件缺陷報(bào)告遵循原則:
1缺谴、Correct(準(zhǔn)確):每個(gè)組成部分描述需準(zhǔn)確但惶,不會引起誤解;
2湿蛔、Clear(清晰):每個(gè)組成部分描述需清晰膀曾,易于理解;
3阳啥、Concise(簡潔):只包含必要的信息添谊;
4、Complete(完整):包含復(fù)現(xiàn)該缺陷的完整步驟和其他本質(zhì)信息察迟;
5斩狱、Consistent(一致):按照一致的格式編寫全部缺陷報(bào)告。
七扎瓶、缺陷管理流程:
八所踊、軟件測試原則:
1、測試證明軟件存在缺陷栗弟;
2污筷、不可能執(zhí)行窮盡測試:一個(gè)軟件有很多維度,測試不可能覆蓋所有乍赫。因此通過風(fēng)險(xiǎn)分析瓣蛀、被測對象測試點(diǎn)優(yōu)先級分析、軟件質(zhì)量模型及不同測試方法的運(yùn)用來確定測試點(diǎn)雷厂,從而替代窮盡測試惋增,提高測試覆蓋率。
3改鲫、測試應(yīng)盡早啟動(dòng)诈皿、盡早介入林束;
4、缺陷存在群集現(xiàn)象:群集現(xiàn)象是指在測試中發(fā)現(xiàn)缺陷越多的地方稽亏,存在的未被發(fā)現(xiàn)的缺陷也就越多壶冒。
5、殺蟲劑悖論:測試用例經(jīng)過多次迭代測試后截歉,將不再發(fā)現(xiàn)缺陷胖腾。因此測試用例應(yīng)定期評審、及時(shí)調(diào)整瘪松,還可進(jìn)行交叉測試咸作。
6、不同的測試活動(dòng)依賴于不同的測試背景宵睦;
7记罚、不存在缺陷的謬論。
九壳嚎、軟件測試級別;
1桐智、需求測試:重點(diǎn)是檢查需求規(guī)格說明書中是否存在描述不準(zhǔn)確、定義模糊烟馅、需求用例不正確酵使、語言存在二義性等問題。主要考慮方面:
1)完整性焙糟;2)正確性;3)一致性样屠;4)可行性穿撮;5)無二義性;6)健壯性(容錯(cuò)性)痪欲;7)必要性悦穿;8)可測試性;9)可修改性业踢。
2栗柒、組件/單元測試:針對軟件基本組成單元來進(jìn)行正確性檢驗(yàn)。
3知举、集成測試:對組件/單元之間及組件/單元與第三方接口之間進(jìn)行測試瞬沦,使用自底向上或自頂向下漸增式策略。目的是檢測軟件模塊對《概要設(shè)計(jì)說明書》的符合程度雇锡,關(guān)注模塊間接口和接口數(shù)據(jù)傳遞關(guān)系逛钻,以及模塊組合后的整體功能。
4锰提、系統(tǒng)測試:將通過集成測試的軟件曙痘,部署到某種較為復(fù)雜的計(jì)算機(jī)用戶環(huán)境進(jìn)行測試芳悲。目的是測試整個(gè)系統(tǒng)對于用戶需求的符合程度。主要采用黑盒測試边坤,考察被測軟件的功能和性能名扛。
5、驗(yàn)收測試:根據(jù)合同茧痒、《需求規(guī)格說明書》或《驗(yàn)收測試計(jì)劃》對成品進(jìn)行驗(yàn)收測試肮韧。此階段目的不是在于發(fā)現(xiàn)缺陷,而是使用戶建立對即將交付應(yīng)用的軟件系統(tǒng)的信心文黎。有Alpha測試惹苗、Beta測試、UAT測試等形式耸峭。
1)Alpha測試:用戶在開發(fā)環(huán)境下測試桩蓉,用戶模擬實(shí)際操作環(huán)境測試。需開發(fā)者陪同劳闹,記錄錯(cuò)誤情況和使用問題院究。主要是評價(jià)軟件的功能、局域性本涕、可用性业汰、可靠性、性能和技術(shù)支持等是否達(dá)標(biāo)菩颖。
2)Beta測試:由軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用環(huán)境下進(jìn)行的測試样漆。開發(fā)者通常不在場,測試者發(fā)現(xiàn)問題后晦闰,統(tǒng)一收集提交至開發(fā)人員修復(fù)放祟。
3)UAT測試:User Acceptance Test,用戶接受度測試呻右。一般用于商業(yè)用戶驗(yàn)證系統(tǒng)的可用性跪妥,會安排一些實(shí)際使用軟件或項(xiàng)目人員來驗(yàn)收。
十声滥、軟件測試類型:
1眉撵、功能測試:驗(yàn)證軟件在指定條件下使用時(shí),提供滿足明確和隱含功能需求的能力情況落塑。主要檢測情況:
1)是否有不正確纽疟、遺漏或多余的功能憾赁;
2)是否滿足用戶需求和系統(tǒng)設(shè)計(jì)的隱藏需求仰挣;
3)是否對輸入做出正確的響應(yīng),輸出結(jié)果能否正確展示缠沈。
- 注意點(diǎn):一般來說膘壶,功能測試是其他測試類型開展的基礎(chǔ)错蝴,功能實(shí)現(xiàn)不正常,其他測試開展的意義不大颓芭。
2顷锰、性能測試:通過模擬系統(tǒng)運(yùn)行業(yè)務(wù)壓力和使用場景組合,驗(yàn)證系統(tǒng)性能是否滿足預(yù)先定義的性能要求亡问。
特點(diǎn):
1)主要目的是驗(yàn)證系統(tǒng)是否具有宣稱具有的能力官紫;
2)需了解測試系統(tǒng)典型場景,并具有確定的性能目標(biāo)州藕;
3)要求在真實(shí)的運(yùn)行環(huán)境下執(zhí)行束世。常用性能監(jiān)控指標(biāo):
1)并發(fā)數(shù):單位時(shí)間內(nèi)某個(gè)業(yè)務(wù)場景或綜合業(yè)務(wù)場景有多個(gè)用戶同時(shí)發(fā)送業(yè)務(wù)請求;
2)響應(yīng)時(shí)間:用戶發(fā)起請求到接收到正確響應(yīng)所花費(fèi)的時(shí)間床玻;
3)吞吐量:網(wǎng)絡(luò)消耗的數(shù)據(jù)量毁涉,包括響應(yīng)和請求數(shù)據(jù);
4)TPS:每秒完成的用戶事務(wù)數(shù)(每秒成功登陸的數(shù)量)锈死;
5)硬件資源耗用:CPU使用率贫堰、內(nèi)存使用率、硬盤等待牵;注意點(diǎn):性能測試一般只需關(guān)注軟件系統(tǒng)的典型或者重要的業(yè)務(wù)場景其屏。性能測試中,包含了性能缨该、負(fù)載偎行、壓力、容量贰拿、兼容性睦优、可恢復(fù)性等測試類型,這些測試類型都會在執(zhí)行性能測試中提到壮不,按照用戶需求來測試。
3皱碘、負(fù)載測試:在超過被測對象標(biāo)準(zhǔn)性能負(fù)荷指標(biāo)下询一,驗(yàn)證系統(tǒng)的負(fù)載承受能力,并要求在超負(fù)荷時(shí)癌椿,被測對象依然能夠正常實(shí)現(xiàn)業(yè)務(wù)功能健蕊,關(guān)注的是不同負(fù)載。
- 特點(diǎn):
1)主要目的是找到系統(tǒng)處理能力極限和性能臨界點(diǎn)踢俄,便于設(shè)定閾值缩功;
2)在超過被測對象性能負(fù)荷情況下實(shí)施;
3)一般用來了解系統(tǒng)性能容量都办,或者配合性能調(diào)優(yōu)來使用嫡锌。
4虑稼、壓力測試:在性能負(fù)荷指標(biāo)峰值,系統(tǒng)處理業(yè)務(wù)的能力情況势木,以及系統(tǒng)是否會出現(xiàn)錯(cuò)誤蛛倦,關(guān)注的是不同周期。
- 特點(diǎn):
1)主要目的是檢查被測對象在峰值情況下應(yīng)用的表現(xiàn)啦桌;
2)一般使用負(fù)載測試的思想實(shí)施壓力測試溯壶,持續(xù)關(guān)注被測對象持續(xù)服務(wù)的能力;
3)一般用于系統(tǒng)的穩(wěn)定性測試甫男。
5且改、容量測試:檢測軟件在單位時(shí)間內(nèi)處理數(shù)據(jù)的能力,用戶在并發(fā)情況下請求數(shù)據(jù)板驳,看數(shù)據(jù)能否正確使用又跛。可與負(fù)載笋庄、壓力測試一同進(jìn)行效扫,關(guān)注的是數(shù)據(jù)。
6直砂、安全測試:驗(yàn)證被測對象的安全保護(hù)機(jī)制能否在實(shí)際應(yīng)用中保護(hù)系統(tǒng)不受非法入侵菌仁,用來保證系統(tǒng)本身數(shù)據(jù)的完整性和保密性。
7静暂、兼容性測試:驗(yàn)證被測對象與硬件济丘、其他其他軟件之間的兼容情況。
8洽蛀、可靠性測試(穩(wěn)定性測試):軟件系統(tǒng)在一定壓力下摹迷,穩(wěn)定運(yùn)行一定時(shí)長,運(yùn)行期間不會出現(xiàn)宕機(jī)等故障郊供。
衡量指標(biāo):平均故障間隔時(shí)間(MTBF)峡碉、平均故障修復(fù)時(shí)間(MTTR),MTBF越長越好驮审,MTTE越短越好鲫寄。
9、可用性測試:檢測軟件是否容易被用戶群學(xué)習(xí)疯淫、方便使用地来。
10、移植測試:業(yè)務(wù)功能基本不變的情況下熙掺,根據(jù)用戶需求安裝到新的硬件或平臺上未斑。從適應(yīng)性、易安裝性币绩、共享性蜡秽、易替換性等方面考慮府阀。
11、維護(hù)測試:軟件系統(tǒng)在部署運(yùn)行交付使用后载城,在實(shí)際使用過程中肌似,因改正錯(cuò)誤或需求變更而引發(fā)的確認(rèn)驗(yàn)證測試活動(dòng)。
- 根據(jù)引起軟件維護(hù)的原因诉瓦,分為以下類型:
1)改正性維護(hù)測試川队;
2)移植性維護(hù)測試;
3)完善性維護(hù)測試睬澡;
4)預(yù)防性維護(hù)測試固额。
12、確認(rèn)測試:測試工程師發(fā)現(xiàn)缺陷煞聪,開發(fā)人員修復(fù)生成新的版本后斗躏,測試工程師需要確認(rèn)是否已經(jīng)修復(fù)了該缺陷。
13昔脯、回歸測試:對已測對象在修復(fù)缺陷后進(jìn)行的重復(fù)測試啄糙,目的是驗(yàn)證修復(fù)缺陷后是否引發(fā)新的缺陷或問題。
- 回歸測試的策略:
1)完全回歸:需執(zhí)行被測對象的所有用例云稚,不僅僅執(zhí)行缺陷對應(yīng)的用例隧饼。
2)選擇性回歸:
A、基于風(fēng)險(xiǎn)回歸静陈,根據(jù)項(xiàng)目或產(chǎn)品的風(fēng)險(xiǎn)大小燕雁,確定回歸用例。除了確認(rèn)缺陷是否成功修復(fù)外鲸拥,還要執(zhí)行風(fēng)險(xiǎn)較高的用例拐格;
B、基于操作剖面回歸刑赶,根據(jù)項(xiàng)目或產(chǎn)品功能捏浊、業(yè)務(wù)的使用頻率確定回歸用例。除了確認(rèn)缺陷是否成功修復(fù)外撞叨,還要執(zhí)行使用頻率較高的業(yè)務(wù)或功能金踪。
C、缺陷覆蓋回歸谒所,僅回歸已修復(fù)缺陷對應(yīng)的用例,此方法適用于經(jīng)過風(fēng)險(xiǎn)分析的被測對象沛申。
十一劣领、軟件測試方法:
1、黑盒測試:手工測試的一種铁材,只關(guān)注輸入和輸出數(shù)據(jù)尖淘、展示數(shù)據(jù)奕锌、按鈕等實(shí)際結(jié)果與期望結(jié)果(需求文檔)是否一致。只能用在系統(tǒng)測試和驗(yàn)收測試階段村生。
2惊暴、白盒測試:關(guān)注實(shí)現(xiàn)邏輯、覆蓋情況趁桃。
3辽话、灰盒測試:更多關(guān)注內(nèi)部功能模塊的接口實(shí)現(xiàn)。性能測試與自動(dòng)化測試就采用灰盒測試卫病。
4油啤、靜態(tài)測試:包含閱讀程序代碼、文檔資料等蟀苛,與需求規(guī)格說明書進(jìn)行比較益咬,找出測試對象設(shè)計(jì)、描述帜平、編碼等方面的錯(cuò)誤幽告。
5、動(dòng)態(tài)測試:運(yùn)行被測對象的程序代碼裆甩,執(zhí)行測試用例冗锁,檢查軟件系統(tǒng)運(yùn)行結(jié)果與預(yù)期結(jié)果的差異。
6淑掌、手工測試:模擬終端用戶的業(yè)務(wù)流程應(yīng)用軟件系統(tǒng)蒿讥。
7、自動(dòng)化測試抛腕。