1、問題的定義及規(guī)劃 此階段是軟件開發(fā)方與需求方共同討論澜术,主要是確定軟件的開發(fā)目標(biāo)及其可行性艺蝴。
2、需求分析 在確定軟件開發(fā)可行的情況下鸟废,對(duì)軟件需要實(shí)現(xiàn)的各個(gè)功能進(jìn)行詳細(xì)分析猜敢。需求分析階段是一個(gè)很重要的階段,這一階段做得好盒延,將為整個(gè)軟件開發(fā)項(xiàng)目的成功打下良好的基礎(chǔ)缩擂。"唯一不變的是變化本身。"添寺,同樣需求也是在整個(gè)軟件開發(fā)過程中不斷變化和深入的胯盯,因此我們必須制定需求變更計(jì)劃來應(yīng)付這種變化,以保護(hù)整個(gè)項(xiàng)目的順利進(jìn)行计露。
3博脑、軟件設(shè)計(jì) 此階段主要根據(jù)需求分析的結(jié)果,對(duì)整個(gè)軟件系統(tǒng)進(jìn)行設(shè)計(jì)票罐,如系統(tǒng)框架設(shè)計(jì)叉趣,數(shù)據(jù)庫設(shè)計(jì)等等。軟件設(shè)計(jì)一般分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)该押。好的軟件設(shè)計(jì)將為軟件程序編寫打下良好的基礎(chǔ)疗杉。
4、程序編碼 此階段是將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換成計(jì)算機(jī)可運(yùn)行的程序代碼沈善。在程序編碼中必須要制定統(tǒng)一的乡数,符合標(biāo)準(zhǔn)的編寫規(guī)范。以保證程序的可讀性闻牡,易維護(hù)性净赴,提高程序的運(yùn)行效率。
5罩润、軟件測試 在軟件設(shè)計(jì)完成后要經(jīng)過嚴(yán)密的測試玖翅,以發(fā)現(xiàn)軟件在整個(gè)設(shè)計(jì)過程中存在的問題并加以糾正。整個(gè)測試過程分單元測試、組裝測試以及系統(tǒng)測試三個(gè)階段進(jìn)行金度。測試的方法主要有白盒測試和黑盒測試兩種应媚。在測試過程中需要建立詳細(xì)的測試計(jì)劃并嚴(yán)格按照測試計(jì)劃進(jìn)行測試,以減少測試的隨意性猜极。
6中姜、運(yùn)行維護(hù) 軟件維護(hù)是軟件生命周期中持續(xù)時(shí)間最長的階段。在軟件開發(fā)完成并投入使用后跟伏,由于多方面的原因丢胚,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命受扳,就必須對(duì)軟件進(jìn)行維護(hù)携龟。軟件的維護(hù)包括糾錯(cuò)性維護(hù)和改進(jìn)性維護(hù)兩個(gè)方面。
2勘高、軟件生命周期模型
從概念提出的那一刻開始峡蟋,軟件產(chǎn)品就進(jìn)入了軟件生命周期。在經(jīng)歷需求华望、分析蕊蝗、設(shè)計(jì)、實(shí)現(xiàn)赖舟、部署后匿又,軟件將被使用并進(jìn)入維護(hù)階段,直到最后由于缺少維護(hù)費(fèi)用而逐漸消亡建蹄。這樣的一個(gè)過程,稱為"生命周期模型"(Life Cycle Model)裕偿。
典型的幾種生命周期模型包括瀑布模型洞慎、快速原型模型、迭代模型嘿棘。
瀑布模型的特點(diǎn)(文檔是主體)劲腿,很多的問題在最后才會(huì)暴露出來。迭代模型比瀑布模型問題暴露得要早鸟妙;快速原型法比瀑布模型直觀焦人。
3.軟件測試概念
廣義概念:指軟件生存周期中所有的檢查、評(píng)審和確認(rèn)工作重父,其中包括了對(duì)分析花椭、設(shè)計(jì)階段,以及完成開發(fā)后維護(hù)階段的各類文檔房午、代碼的審查和確認(rèn)
狹義概念:識(shí)別軟件缺陷的過程矿辽,即實(shí)際結(jié)果與預(yù)期結(jié)果的不一致
4.軟件測試的目的
測試的目的就是發(fā)現(xiàn)軟件中的各種缺陷
測試只能證明軟件存在缺陷,不能證明軟件不存在缺陷
測試可以使軟件中的缺陷降低到一定程度,而不是徹底消滅
以較少的用例袋倔、時(shí)間和人力找出軟件中的各種錯(cuò)誤和缺陷雕蔽,以確保軟件的質(zhì)量
5.軟件測試原則
Good-enough: 一種權(quán)衡投入/產(chǎn)出比的原則
保證測試的覆蓋程度,但窮舉測試是不可能的
所有的測試都應(yīng)追溯到用戶的需求
越早測試越好宾娜,測試過程與開發(fā)過程應(yīng)該是相結(jié)合的
測試的規(guī)模由小而大批狐,從單元測試到系統(tǒng)測試
為了盡可能地發(fā)現(xiàn)錯(cuò)誤,應(yīng)該由獨(dú)立的第三方來測試
不能為了便于測試擅自修改程序
既應(yīng)該測試軟件該做什么也應(yīng)該測試軟件不該做什么
認(rèn)真閱讀我文章的人前塔,看著粉絲一路的上漲和關(guān)注嚣艇,禮尚往來總是要有的,如果下面這些資料你用得到的話可以直接拿走
6.軟件測試的重點(diǎn)
ü 測試用例的設(shè)計(jì)
– 測試用例的設(shè)計(jì)是整個(gè)軟件測試工作的核心
– 測試用例反映對(duì)被測對(duì)象的質(zhì)量要求嘱根,決定對(duì)測試對(duì)象的質(zhì)量評(píng)估
測試工作的管理
– 尤其是對(duì)包含多個(gè)子系統(tǒng)的大型軟件系統(tǒng)髓废,其測試工作涉及大量人力和物力,有效的測試工作管理是保證有效測試工作的必要前提
測試環(huán)境的建立
– 測試環(huán)境應(yīng)該與實(shí)際測試環(huán)境一致
7.黑盒測試
ü 什么是黑盒測試
– 又稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試该抒,是針對(duì)軟件的功能需求/實(shí)現(xiàn)進(jìn)行測試慌洪,通過測試來檢測每個(gè)功能是否符合需求,不考慮程序內(nèi)部的邏輯結(jié)構(gòu)
ü 黑盒測試方法
– 功能劃分
– 等價(jià)類劃分
– 邊界值分析
– 因果圖
– 錯(cuò)誤推測等
8.什么是白盒測試
– 白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試凑保,必須知道軟件內(nèi)部工作過程冈爹,通過測試來檢測軟件內(nèi)部是否按照需求、設(shè)計(jì)正常運(yùn)行
– 白盒測試的主要方法
– 對(duì)應(yīng)于程序的一些主要結(jié)構(gòu):語句欧引、分支频伤、邏輯路徑、變量芝此;白盒測試的主要方法是:
– 語句覆蓋方法
– 分支覆蓋方法
– 邏輯覆蓋方法
9. 什么是動(dòng)態(tài)測試
動(dòng)態(tài)測試需要在開發(fā)/測試環(huán)境或?qū)嶋H運(yùn)行環(huán)境中運(yùn)行軟件憋肖,并使用測試用例去查找軟件缺陷;動(dòng)態(tài)測試包括功能確認(rèn)與接口測試婚苹、覆蓋率分析岸更、性能分析、內(nèi)存分析等
10.什么是靜態(tài)測試
靜態(tài)測試不實(shí)際運(yùn)行軟件膊升,主要是對(duì)軟件的編程格式怎炊、結(jié)構(gòu)等方面進(jìn)行評(píng)估.靜態(tài)測試包括代碼檢查、程序結(jié)構(gòu)分析廓译、代碼質(zhì)量度量等评肆。它可以由人工進(jìn)行,也可以借助軟件工具自動(dòng)進(jìn)行
11.手工測試和自動(dòng)測試
a.手工測試缺點(diǎn)在于測試工作量大非区,重復(fù)多瓜挽,回歸測試難以實(shí)現(xiàn)
b.自動(dòng)測試?yán)密浖y試工具自動(dòng)實(shí)現(xiàn)全部或部分測試工作:管理、設(shè)計(jì)院仿、執(zhí)行和報(bào)告秸抚;節(jié)省大量的測試開銷速和,并能夠完成一些手工測試無法實(shí)現(xiàn)的測試
手工完成測試的全部過程無法保證測試的科學(xué)性與嚴(yán)密性:
– 修改的缺陷越多,回歸測試就越困難
– 沒有人能向決策層提供精確的數(shù)據(jù)以度量當(dāng)前的工作進(jìn)度及工作效率
– 反復(fù)測試帶來的倦怠情緒及其他人為因素使得測試標(biāo)準(zhǔn)前后不一
– 測試花費(fèi)的時(shí)間越長剥汤,測試的嚴(yán)格性也就越低
自動(dòng)測試將測試人員從反復(fù)颠放、繁雜的測試執(zhí)行中解放出來,用更多的時(shí)間進(jìn)行測試設(shè)計(jì)和結(jié)果分析
軟件測試不可能完全自動(dòng)化
不能完成所有手工測試任務(wù)
無創(chuàng)造性且靈活性差吭敢,不能改進(jìn)測試的有效性
過程中可能會(huì)遇到許多意想不到的問題碰凶,特別是當(dāng)軟件不穩(wěn)定時(shí)
測試腳本的維護(hù)高
12. 測試流程
單元測試
集成測試
系統(tǒng)測試
用戶驗(yàn)收測試
回歸測試
13.單元測試
完成對(duì)最小的軟件設(shè)計(jì)單元—模塊的驗(yàn)證工作
目標(biāo)是確保模塊被正確地編碼
使用過程設(shè)計(jì)描述作為指南,對(duì)重要的控制路徑進(jìn)行測試以發(fā)現(xiàn)模塊內(nèi)的錯(cuò)誤
通常情況下是面向白盒的
對(duì)代碼風(fēng)格和規(guī)則鹿驼、程序設(shè)計(jì)和結(jié)構(gòu)欲低、業(yè)務(wù)邏輯等進(jìn)行靜態(tài)測試,及早地發(fā)現(xiàn)和解決不易顯現(xiàn)的錯(cuò)誤
單元測試的內(nèi)容
– 接口測試
– 內(nèi)部數(shù)據(jù)結(jié)構(gòu)
– 全局?jǐn)?shù)據(jù)結(jié)構(gòu)
– 邊界
– 語句覆蓋畜晰,錯(cuò)誤路徑
14.集成測試
通過測試發(fā)現(xiàn)與模塊接口有關(guān)的問題
目標(biāo)是把通過了單元測試的模塊拿來砾莱,構(gòu)造一個(gè)在設(shè)計(jì)中所描述的程序結(jié)構(gòu)
應(yīng)當(dāng)避免一次性的集成(除非軟件規(guī)模很小)凄鼻,而采用增量集成
集成測試主要內(nèi)容
API
API/參數(shù)組合
15.系統(tǒng)測試
根據(jù)軟件需求規(guī)范的要求進(jìn)行系統(tǒng)測試腊瑟,確認(rèn)系統(tǒng)滿足需求的要求
系統(tǒng)測試人員相當(dāng)于用戶代言人
在需求分析階段要確定軟件的可測性,保證有效完成系統(tǒng)測試工作
系統(tǒng)測試主要內(nèi)容
所有功能需求得到滿足
所有性能需求得到滿足
其他需求(例如安全性块蚌、容錯(cuò)性闰非、兼容性等)得到滿足
16.用戶驗(yàn)收/確認(rèn)測試
Alpha測試
– 是由用戶在開發(fā)者的場所來進(jìn)行的,Alpha測試是在一個(gè)受控的環(huán)境中進(jìn)行的
Beta測試
– 由軟件的最終用戶在一個(gè)或多個(gè)用戶場所來進(jìn)行的峭范,開發(fā)者通常不在現(xiàn)場财松,用戶記錄測試中遇到的問題并報(bào)告給開發(fā)者
17.壓力測試VS性能測試 性能測試的目的不是去找bugs,而是排除系統(tǒng)的瓶頸,以及為以后的回歸測試建立一個(gè)基準(zhǔn)纱控。而性能測試的操作辆毡,實(shí)際上就是一個(gè)非常小心受控的測量分析過程。在理想的情況下甜害,被測軟件在這個(gè)時(shí)候已經(jīng)是足夠穩(wěn)定了
性能測試是為了檢查系統(tǒng)的反映胚迫,運(yùn)行速度等性能指標(biāo),他的前提是要求在一定負(fù)載下唾那,如檢查一個(gè)網(wǎng)站在100人同時(shí)在線的情況下的性能指標(biāo),每個(gè)用戶是否都還可以正常的完成操作等褪尝。 概括就是:在不同負(fù)載下(負(fù)載一定)時(shí)闹获,通過一些系統(tǒng)參數(shù)(如反應(yīng)時(shí)間等)檢查系統(tǒng)的運(yùn)行情況;
壓力測試是為了發(fā)現(xiàn)系統(tǒng)能支持的最大負(fù)載河哑,他的前提是要求系統(tǒng)性能處在可以接受的范圍內(nèi)避诽,比如經(jīng)常規(guī)定的葉面3秒鐘內(nèi)響應(yīng);概括就是:在性能可以接受的前提下璃谨,測試系統(tǒng)可以支持的最大負(fù)載沙庐。
舉例說明:針對(duì)一個(gè)網(wǎng)站進(jìn)行測試鲤妥,模擬10到50個(gè)用戶就是在進(jìn)行常規(guī)性能測試,用戶增加到1000乃至上萬就變成了壓力/負(fù)載測試拱雏。如果同時(shí)對(duì)系統(tǒng)進(jìn)行大量的數(shù)據(jù)查詢操作棉安,就包含了強(qiáng)度測試铸抑。
認(rèn)真閱讀我文章的人贡耽,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的鹊汛,如果下面這些資料你用得到的話可以直接拿走:關(guān)注我
① 自學(xué)必備的完整項(xiàng)目 (包括源碼和環(huán)境蒲赂,可以自己安裝在本地使用)
② 測試計(jì)劃模板,測試用例設(shè)計(jì)模塊刁憋,功能測試報(bào)告模塊等(涵蓋了測試工作中所有模塊)
③ 軟件測試經(jīng)典面試題(筆者根據(jù)自己10多年測試經(jīng)驗(yàn)整理)
④ selenium+Python(Java)自動(dòng)化測試實(shí)戰(zhàn).pdf滥嘴,(包括了Python以及Java自動(dòng)化的所有知識(shí)點(diǎn))
⑤ 軟件測試(自動(dòng)化測試)學(xué)習(xí)路線圖(從此自學(xué)有了方向不在迷茫)
⑥ 簡歷模板
整理了我這10幾年軟件測試生涯整理的一些技術(shù)資料至耻,包括:電子書,簡歷模塊有梆,各種工作模板,面試寶典泥耀,自學(xué)項(xiàng)目等饺汹。如果在學(xué)習(xí)或工作中遇到問題,也會(huì)可以幫忙解答