先前自己網(wǎng)上整理的一些資料——其中包括測試定義番官、測試方法分類、測試原則裆蒸、測試策略、測試模型糖驴,希望對和我一樣剛剛?cè)腴T的小伙伴有些許幫助??理論知識還是基礎僚祷,重點還是要在項目實戰(zhàn)里懂的運用貫通知識點
1.定義(目的):發(fā)現(xiàn)軟件程序中的錯誤而執(zhí)行程序的過程
1)軟件測試為了發(fā)現(xiàn)程序存在的代碼或業(yè)務邏輯錯誤;2)軟件測試為了檢驗產(chǎn)品是否符合用戶需求贮缕;3)軟件測試為了提高用戶的體驗
2.測試方法分類(能按照不同的維度區(qū)分軟件測試方法的分類辙谜,熟悉每一個方法的特點):
按開發(fā)階段分{? ? 單元測試:對軟件組成單元進行測試,目的是驗證軟件基本組成單位的正確性感昼,測試對象是軟件設計的最小單位:模塊/? ? 集成測試:也稱聯(lián)合測試装哆、組裝測試,將程序模塊采用適當?shù)募刹呗越M裝起來,對系統(tǒng)接口集成后的功能進行檢測蜕琴,驗證軟件單位間接口是否正確萍桌。? ? 系統(tǒng)測試:就是一個系統(tǒng)的測試。包括功能凌简、性能上炎、軟件運行軟硬件環(huán)境的進行測試,大部分時間是在這個階段号醉。? ? 驗收測試:確保軟件準備就緒反症,按照項目合同、任務書畔派、雙方約定的驗收依據(jù)文檔铅碍,展示系統(tǒng)的原始需求是否滿足。??}
按是否運行{? ? 靜態(tài)測試:指不運行被測程序线椰,僅僅通過分析或者檢查源程序的語法胞谈、結(jié)構(gòu)、過程憨愉、接口等來檢查程序的正確性烦绳。? ? 對需求規(guī)格說明書、軟件設計說明書配紫、對源程序做結(jié)構(gòu)分析径密、流程圖分析、符號執(zhí)行來找bug躺孝。? ?? ???動態(tài)測試:通過運行被測程序享扔,檢查運行結(jié)果與預期結(jié)果的差異,并分析運行效率植袍、正確性惧眠、健壯性。這種方法? ? 通過三部分組成:構(gòu)造測試用例于个、執(zhí)行程序氛魁、分析程序的輸出結(jié)果。}
按是否查看代碼{? ? 白盒測試:結(jié)構(gòu)測試厅篓、透明測試秀存、邏輯驅(qū)動測試、基于代碼測試羽氮,即研究源代碼和程序的結(jié)果? ?? ???黑盒測試:只關心軟件的輸入輸出{? ?? ???功能測試? ?? ???{功能測試:測試軟件功能是否符合需求应又、? ?? ???界面測試:UI測試,系統(tǒng)界面是否合理乏苦,整體風格是否一致株扛,界面文字是否正確尤筐,圖片是否美觀、? ?? ???冒煙測試:對象是每一個新編譯的需要正式測試的軟件版本洞就,確認基本功能正常盆繁,后續(xù)可以正式測試工作、? ?? ???回歸測試:錯誤修正后或功能環(huán)境發(fā)生變化后進行的重新測試旬蟋,確認修改不會影響其他功能油昂、? ?? ???業(yè)務邏輯測試:側(cè)重在業(yè)務流程,基本功能已合格的基礎上倾贰,準備組合多種測試數(shù)據(jù)冕碟,來驅(qū)動或輔助各種約束條件下的業(yè)務流程,確定最終數(shù)據(jù)結(jié)果是否符合預期匆浙、? ?? ???兼容性測試:測試系統(tǒng)與其他軟硬件的兼容性(APP安寺、C/S架構(gòu)、B/S架構(gòu))首尼、? ?? ???易用性測試:測試軟件在使用是用戶是否使用覺得方便挑庶、主觀性較強}? ?? ?? ?? ?? ?? ?? ?? ?性能測試? ?? ???{性能測試:為獲取驗證系統(tǒng)的性能指標而進行的測試,一般會在不同的負載情況進行软能、? ?? ???負載測試:通過改變系統(tǒng)負載的方式迎捺,增加負載來發(fā)現(xiàn)系統(tǒng)性能存在的問題、? ?? ???壓力測試:強度測試查排,主要是確定系統(tǒng)的穩(wěn)定性凳枝,高負載長時間穩(wěn)定性壓力測試,極限負載情況下導致系統(tǒng)崩潰的破壞性壓力測試跋核、? ?? ???容量測試:確定系統(tǒng)可以處理同時在線用戶數(shù)的最大數(shù)量范舀,使系統(tǒng)承受超額的數(shù)據(jù)容量來發(fā)現(xiàn)它是否能夠正確處理、? ?? ???并發(fā)測試:測試多用戶并發(fā)訪問同一個應用了罪,模塊,數(shù)據(jù)時是否產(chǎn)生隱藏的并發(fā)問題聪全,如內(nèi)存泄漏泊藕,線程鎖,資源爭用难礼,而幾乎所有的性能測試都會用到并發(fā)測試娃圆、? ?? ???配置測試:對被測系統(tǒng)的軟硬件環(huán)境調(diào)整,了解不同環(huán)境對系統(tǒng)性能影響程度蛾茉,從而找到系統(tǒng)各項資源的最優(yōu)分配原則讼呢、? ?? ???可靠性測試:評估產(chǎn)品在規(guī)定的壽命期限內(nèi),預期使用谦炬,存儲悦屏,運輸?shù)人协h(huán)境节沦,保持功能可靠性而進行活動}? ? }? ?? ?? ?? ?灰盒測試:介于白盒黑盒之間的測試,多用于集成測試階段础爬,不僅關注輸入輸出的正確性甫贯,同時也關注程序內(nèi)部的情況。}
是否手工執(zhí)行{? ? 手工測試:手工的一個個去輸入用例看蚜,然后觀察結(jié)果叫搁,和機器測試相對應? ?? ???自動化測試(Automation Testing):在預設條件下運行系統(tǒng)或應用程序,評估運行結(jié)果供炎,預先條件應包括正常和異常條件渴逻,? ? 就是把人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的過程。}
其他{? ? 隨機測試:音诫、? ? 冒煙測試:是在將代碼更改嵌入到產(chǎn)品的源樹中之前對這些更改進行驗證的過程惨奕,? ? 冒煙測試設計用于確認代碼中的更改會按預期運行,且不會破壞整個版本的穩(wěn)定性纽竣、? ? 安全測試:測試系統(tǒng)防范非法入侵的能力墓贿、? ? 探索性測試:測試思維技術,沒有很多實際測試方法蜓氨,技術聋袋,工具,是測試人員應該具有? ? 的一種能力穴吹,探索性測試強調(diào)人員的主觀能動性幽勒,能夠摒棄復雜的測試計劃,測試用例設計? ? 過程港令,強調(diào)在碰到問題時及時改變測試策略啥容。? ? 回歸測試:錯誤修正后,軟件功能顷霹、環(huán)境發(fā)生變化后的重新測試咪惠,確認修改不會對其他功能造成影響。? ? Alpha測試:前期用戶測試淋淀,公司內(nèi)部員工與部分用戶模擬實際操作環(huán)境下進行的驗收測試遥昧,也稱為內(nèi)測、? ? Beta測試:后期測試朵纷,系統(tǒng)已經(jīng)通過內(nèi)部測試大部分的錯誤已經(jīng)修正即將正式發(fā)行炭臭,在一個、多個真實環(huán)境下發(fā)布版本袍辞,進行測試鞋仍,也稱為公測。}
3.軟件測試原則(熟悉基本約定):
1)測試應該盡早介入搅吁;----需求分析2)所有的測試都應追溯到用戶需求威创;3)程序員應該避免檢查自己的程序落午。除了單元測試。因為程序員對于自己的作品那婉,思維具有局限性板甘。無法保證測試質(zhì)量。交給第三方或者專業(yè)測試详炬,運用各種測試技術盐类,利用豐富的測試經(jīng)驗和對bug的敏感,去提高軟件的質(zhì)量呛谜;4)設計測試用例時應考慮到合法的輸入和不合法的輸入以及各種邊界條件在跳,特殊情況下還要制造極端狀態(tài)和意外狀態(tài)。5)二八原則隐岛,測試發(fā)現(xiàn)的錯誤中80%很可能起源于20%的模塊中猫妙;6)對錯誤結(jié)果要進行一個確認過程;7)制定嚴格的測試計劃聚凹;8)完全測試是不可能的割坠,測試需要終止;9)妥善保存測試過程中的所有文檔
4.軟件測試策略(高效合理的安排測試任務):
測試策略在結(jié)構(gòu)上可以包括:(1)測試級別:常見的測試級別有單元測試妒牙,集成測試和系統(tǒng)測試彼哼。大部分的測試組織里面,單元測試由開發(fā)負責湘今,而集成測試和系統(tǒng)測試由測試部門或者質(zhì)量保證部門負責敢朱。(2)角色與職責:需要在測試策略里面明確定義各個角色,以及該角色的職責摩瞎。比如項目經(jīng)理拴签,測試組長,測試工程師…(3)環(huán)境需求:這一點非常重要旗们,它將描述測試時需要的系統(tǒng)環(huán)境蚓哩,包括軟硬件以及網(wǎng)絡環(huán)境等等。在澄清環(huán)境需求的時候上渴,測試組織可以識別出資源方面的風險岸梨。(4)風險分析:影響測試過程的風險都應該盡早被識別出來,而且必須有相應的解決辦法以便消除或者減輕這些風險驰贷。(5)測試進度:測試進度將會評估完成測試所需要的時間。在設定進度的時候洛巢,首先需要明確測試范圍括袒,然后根據(jù)測試資源的多少來制定能被各方面認可的測試進度計劃。做一個非常準確的進度計劃是困難的事情稿茉,因為測試過程中充滿了各種不確定性锹锰,所以一般計劃者需要考慮增加一定的buffer芥炭。當然,制定進度計劃的時候可以參考已有的項目的數(shù)據(jù)恃慧。如果是一個全新的軟件項目园蝠,專家認為將初始計劃的時間翻倍比較靠譜!(6)回歸測試方法:回歸測試用來保證之前fix bug的代碼不會影響軟件的其他部分痢士,這樣需要我們選擇已經(jīng)執(zhí)行過的測試用例重新運行彪薛。測試人員需要找到一個方法來確定哪些測試用例應該在回歸測試中運行,用例不能太多怠蹂,因為資源有限善延,用例也不能太少,否則會達不到必須的測試強度城侧。不過易遣,如果測試部門對待測系統(tǒng)以及軟件架構(gòu)非常了解的話,就比較容易找到合適的回歸測試集合嫌佑。(7)測試范圍:要測試的內(nèi)容豆茫,可能是某些模塊,可能是某些指標屋摇,比如功能揩魂,性能,易用性…(8)測試優(yōu)先級:測試范圍內(nèi)的東西不會都是一樣重要的摊册,加上測試資源各種有限肤京,所以為測試排定優(yōu)先級是十分的必要。
5.軟件測試模型(了解軟件測試在項目研發(fā)過程中的定位):
V模型
[img=522,0]D:\YNote\m13489136960@163.com(1)\4ba87e21bc14458bb9e719ca7728315d\clipboard.png[/img]
V模型(測試 )1茅特、單元測試又稱模塊測誠忘分,針對軟件設計中的最小單位—程莊模塊,進行正確性檢查的測試工作白修。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設計測試用例妒峦。多個模塊可以平行地獨立進行單元測試。單元定義:C中指一個函數(shù)兵睛,Java中指一個類肯骇,在圖形化的軟件中,單元一般指1個窗口祖很,1個菜單笛丙。2、集成測試又叫組裝測試假颇,通常在單元測試的基礎上胚鸯,將所有程序模塊進行有序的、遞增的測試笨鸡。重點測試不同模塊的接口部分姜钳。3坦冠、系統(tǒng)測試(system testing):指的是將整個軟件系統(tǒng)看為一個整體進行測試,包括對功能哥桥、性能辙浑、以及軟件所運行的軟硬件環(huán)境進行測試。系統(tǒng)測試在系統(tǒng)集成完畢后進行測試拟糕,前期主要測試系統(tǒng)的功能是否滿足需求判呕,后期主要測試系統(tǒng)運行的性能是否滿足需求,以及系統(tǒng)在不同的軟硬件環(huán)境中的兼容性等已卸。4佛玄、驗收測試α測試:Alpha是內(nèi)測版本,即現(xiàn)在所說的C8累澡,比版本表示該軟件僅僅是一個初步完成品梦抢,通常只在軟件開發(fā)者內(nèi)部交流,也有很少一部分發(fā)布給專業(yè)測試人員愧哟。一般而言奥吩,該版本軟件的bug較多,普通用戶最好不要安裝蕊梧。β測試:Beta是公測版本霞赫,是對所有用戶開放的測試版本。該版本相對于a顏已有了很大的改進肥矢,消除了嚴重的錯誤端衰,但還是存在著一些陷需要經(jīng)過大規(guī)模的發(fā)布試來進一步消除。這一版本通常由軟件公司免費發(fā)布甘改,用戶可從相關的站點下載旅东。通過一些專業(yè)愛好者的測試,將結(jié)果反饋給開發(fā)者十艾,開發(fā)者們再進行有針對性的修改抵代。該版本也不適合一般用戶安裝。λ測試:Camma版本忘嫉,指的是軟件版本正式發(fā)行的候選版荤牍。該版本已經(jīng)相當成熟了,與即將發(fā)行的正式版相差無幾庆冕,成為正式反布的候選版本康吵。軟件正式版本推出之前的幾個版本,需要有人測試一下访递,看看是不是有問題晦嵌。在開發(fā)該軟件的公司內(nèi)部的由該公司內(nèi)部人員式的稱為:Alpha測試,Alpha 測式主要看有沒有功能缺失或系統(tǒng)錯誤,Alpha 測試完后一般不會有大問題了耍铜。然后巴軟件拿給用戶測試稱為:beta 測試,主要是看用戶對軟件外觀跌前、使用方便等的反應棕兼。這么多的式版一方面為了最終產(chǎn)品盡可能地滿足用戶的需要,另一方面也盡量成少了軟件中的bug抵乓。然后做過一些修改伴挚,成為正式發(fā)布的候選版本時,叫做gamma(現(xiàn)在叫做RC-ReleaseCandidate)灾炭。簡單來說茎芋,阿爾法測試主要是測試人員在開發(fā)環(huán)境下的測試,貝塔測試是在實際環(huán)境中的測試蜈出,或者公司內(nèi)部人員在模擬真實環(huán)境中的測試田弥。V模型的優(yōu)缺點(測試重點)1、優(yōu)點:包含了底層測試(單元測試)和高層測試(系統(tǒng)測試)铡原; ??清楚的標識了開發(fā)和測試的各個階段偷厦; ??自上而下逐步求精,每個階段分工明確燕刻,便于整體項目的把控只泼。2、缺點:自上而下的順序?qū)е铝寺严矗瑴y試工作在編碼之后请唱,就導致錯誤不能及時的進行修改; ? ?? ?? ?實際工作中过蹂,需求經(jīng)常變化十绑,導致v模型步驟,反復執(zhí)行榴啸,返工量很大孽惰,靈活度較低∨赣。 改良:每個步驟都可以進行小的迭代工作
W模型(重要)
定義:開發(fā)一個v勋功;測試一個v也叫雙V模型
[img=515,0]D:\YNote\m13489136960@163.com(1)\a18c1e494612402b8a2516656dbfb42f\clipboard.png[/img]
優(yōu)點: ? ?開發(fā)伴隨著整個開發(fā)周期,需求和設計同樣要測試库说; ? ?更早的介入測試狂鞋,可以發(fā)現(xiàn)初期的缺陷,修復成本低潜的; ? ?分階段工作骚揍,方便項目整體管理。缺點: ? ?開發(fā)和測試依然是線性的關系,需求的變更和調(diào)整信不,依然不方便嘲叔; ? ?如果沒有文檔,根本無法執(zhí)行w模型抽活;對于項目組成員的技術要求更高硫戈!
H模型
[img=331,0]D:\YNote\m13489136960@163.com(1)\29324bcd3209411ba1369934e016ac91\clipboard.png[/img]
?H模型的優(yōu)點:
>開發(fā)的H模型揭示了軟件測試除測試執(zhí)行外,還有很多工作下硕; >軟件測試完全獨立丁逝,貫穿整個生命周期,且與其他流程并發(fā)進行梭姓; >軟件測試活動可以盡早準備霜幼、盡早執(zhí)行,具有很強的靈活性誉尖; >軟件測試可以根據(jù)被測物的不同而分層次罪既、分階段、分次序的執(zhí)行铡恕,同時也是可以被迭代的萝衩。H模型的缺點: >管理型要求高:由于模型很靈活,必須要定義清晰的規(guī)則和管理制度没咙,否則測試過程將非常難以管理和控制猩谊; >技能要求高:H模型要求能夠很好的定義每個迭代的規(guī)模,不能太大也不能太屑栏铡牌捷; >測試就緒點分析困難:測試很多時候,你并不知道測試準備到什么時候是合適的涡驮,就緒點在哪里暗甥,就緒點的標準是什么,這就對后續(xù)的測試執(zhí)行的啟動帶來很大困難捉捅; >對于整個項目組的人員要求非常高:在很好的規(guī)范制度下撤防,大家都能高效的工作,否則容易混亂棒口。例如:你分了一個小的迭代寄月,但是因為人員技能不足,使得無法有效完成无牵,那么整個項目就會受到很大的干擾漾肮。