软件测试知识点大全
而如何入門軟件測試并針對找工作呢?
需要以下知識:
測試的理論,還有測試驅(qū)動開發(fā)是怎么用的,為什么要用測試驅(qū)動開發(fā)、linux和數(shù)據(jù)庫、計(jì)算機(jī)網(wǎng)絡(luò)(可刷牛客網(wǎng)來提升)。
單元測試->集成測試->確認(rèn)測試->系統(tǒng)測試->驗(yàn)收測試
(1)單元測試:
?單元測試又稱為模塊測試,是針對軟件設(shè)計(jì)的最小單位程序模塊進(jìn)行正確性檢查的測試工作,單元測試需要從程序內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例,多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測試。Junit?測試是程序員測試,即所謂?白盒測試?,因?yàn)槌绦騿T知道被測試的軟件如何(?How?)完成功能和完成什么樣(?What?)的功能。?Junit?是一套框架,繼承TestCase?類,就可以用?Junit?進(jìn)行自動測試了。
?
工件是加工過程中的生產(chǎn)對象。
(2)集成測試
又稱為組裝測試或聯(lián)合測試,在單元測試的基礎(chǔ)上,需要將所有模塊按照概要設(shè)計(jì)說明書和詳細(xì)設(shè)計(jì)說明書的要求進(jìn)行組裝。
(3)確認(rèn)測試
確認(rèn)測試的目標(biāo)是驗(yàn)證軟件的功能和性能以及其他特性是否與用戶的要求一致。確認(rèn)測試一般包括有效性測試和軟件配置復(fù)查。一般由第三方測試機(jī)構(gòu)進(jìn)行。
(4)系統(tǒng)測試
?軟件作為計(jì)算機(jī)系統(tǒng)的一部分,與硬件、網(wǎng)絡(luò)、外設(shè)、支撐軟件、數(shù)據(jù)以及人員結(jié)合在一起,在實(shí)際或模擬環(huán)境下,對計(jì)算機(jī)系統(tǒng)進(jìn)行測試,
目的在于與系統(tǒng)需求比較,發(fā)現(xiàn)問題
(5)驗(yàn)收測試
以用戶為主的測試,軟件開發(fā)人員和質(zhì)量保證人員參加,由用戶設(shè)計(jì)測試用例。不是對系統(tǒng)進(jìn)行全覆蓋測試,而是對核心業(yè)務(wù)流程進(jìn)行測試。
?
Alpha測試在Beta測試之前,由一個(gè)用戶在開發(fā)環(huán)境下進(jìn)行的測試,也叫做驗(yàn)證測試。
alpha測試是由一個(gè)用戶在開發(fā)環(huán)境下進(jìn)行的測試,也可以是公司內(nèi)部用戶在模擬實(shí)際操作環(huán)境進(jìn)行的受控測試,不能由程序員或測試員完成。Alpha測試可以從軟件產(chǎn)品編碼結(jié)束之后開始,或在模塊(子系統(tǒng))測試完成后開始,也可以在確認(rèn)測試過程中產(chǎn)品達(dá)到一定的穩(wěn)定和可靠程度之后再開始。
Beta測試:軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用環(huán)境下進(jìn)行的測試。開發(fā)者通常不在測試現(xiàn)場,Beta測試不能由程序員或測試員完成。因而,Beta測試是在開發(fā)者無法控制的環(huán)境下進(jìn)行的軟件現(xiàn)場應(yīng)用。在Beta測試中,由用戶記下遇到的所有問題,包括真實(shí)的以及主管認(rèn)定的,定期向開發(fā)者報(bào)告,開發(fā)者在綜合用戶的報(bào)告后,做出修改,最后將軟件產(chǎn)品交付給全體用戶使用。Beta測試著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品的生產(chǎn)能力。只有當(dāng)Alpha測試達(dá)到一定的可靠程度后,才能開始Beta測試。由于Beta測試的主要目標(biāo)是測試可支持性,所以Beta測試應(yīng)該盡可能由主持產(chǎn)品發(fā)行的人員來管理。
區(qū)別:A測試是一個(gè)用戶,可以是內(nèi)部人員也可以是用戶,開發(fā)人員在場,測試現(xiàn)場立刻反饋給開發(fā)人員,由開發(fā)人員及時(shí)分析和處理。目的是評價(jià)軟件產(chǎn)品的功能、可使用性、可靠性、性能和支持。尤其注重產(chǎn)品的界面和特色。
???????? ??B測試是多個(gè)用戶在一個(gè)或多個(gè)實(shí)際使用環(huán)境下進(jìn)行,完全是用戶,開發(fā)人員不在場。著重于產(chǎn)品的支持性,包括文檔、客戶培訓(xùn)和支持產(chǎn)品的生產(chǎn)能力。
?
針對手機(jī)應(yīng)用軟件的系統(tǒng)測試,我們通常從如下幾個(gè)角度開展:功能模塊測試,交叉事件測試,壓力測試,容量測試,兼容性測試,易用性/用戶體驗(yàn)測試等.
對手機(jī)可以施加的壓力測試類型主要有:存儲壓力、邊界壓力、響應(yīng)能力壓力、網(wǎng)絡(luò)流量壓力
?
設(shè)計(jì)測試用例時(shí),應(yīng)注意測試用例的代表性、測試結(jié)果的可判定性和可重現(xiàn)性。???
1、測試用例的代表性:能夠代表并覆蓋各種合理的和不合理、合法的和非法的、邊界的和越界的、以及極限的輸入數(shù)據(jù)、操作和環(huán)境設(shè)置等。
2、測試結(jié)果的可判定性:即測試執(zhí)行結(jié)果的正確性是可判定的,每一個(gè)測試用例都應(yīng)有相應(yīng)的期望結(jié)果。
3、測試結(jié)果的可再現(xiàn)性:即對同樣的測試用例,系統(tǒng)的執(zhí)行結(jié)果應(yīng)當(dāng)是相同的。
?
什么是靜態(tài)測試?
答:通過運(yùn)行程序測試軟件稱為動態(tài)測試.通過評審文檔、閱讀代碼等方式測試軟件稱為靜態(tài)測試,在動態(tài)測試中,通常使用白盒測試和黑盒測試從不同的角度設(shè)計(jì)測試用例,查找軟件代碼中的錯(cuò)誤.ddddddd????????????????????
靜態(tài)測試方法是指不運(yùn)行被測程序本身,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性。對需求規(guī)格說明書、軟件設(shè)計(jì)說明書、源程序做結(jié)構(gòu)分析、流程圖分析、符號執(zhí)行來找錯(cuò)。靜態(tài)方法通過程序靜態(tài)特性的分析,找出欠缺和可疑之處,例如不匹配的參數(shù)、不適當(dāng)?shù)难h(huán)嵌套和分支嵌套、不允許的遞歸、未使用過的變量、空指針的引用和可疑的計(jì)算等。靜態(tài)測試結(jié)果可用于進(jìn)一步的查錯(cuò),并為測試用例選取提供指導(dǎo)。
?
什么是白盒測試?
答:白盒測試(White-box Testing,又稱邏輯驅(qū)動測試,結(jié)構(gòu)測試),它是知道產(chǎn)品內(nèi)部工作過程,可通過測試來檢測產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測試的主要方法有邏輯驅(qū)動、基路測試等,主要用于軟件驗(yàn)證。
對開發(fā)語言的支持:白盒測試工具是對源代碼進(jìn)行的測試,測試的主要內(nèi)容包括詞法分析與語法分析、靜態(tài)錯(cuò)誤分析、動態(tài)檢測等。
?
白盒測試主要應(yīng)用在單元測試階段,主要是對代碼級的測試,針對程序內(nèi)部邏輯結(jié)構(gòu),測試手段有:語句覆蓋、判定覆蓋、條件覆蓋、路徑覆蓋、條件組合覆蓋
1.語句覆蓋:可執(zhí)行語句至少被執(zhí)行一次;
2.判斷覆蓋:每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次;
3.條件覆蓋:每個(gè)條件的取值至少滿足一次;
4.路徑測試:執(zhí)行所有可能的執(zhí)行路徑;
5.條件組合覆蓋:每個(gè)條件的所有可能都至少出現(xiàn)一次,并且判定結(jié)果至少出現(xiàn)一次 ;
6.判斷/條件覆蓋:判斷和條件都滿足;
與條件覆蓋的區(qū)別:他不是簡單要求每個(gè)條件出現(xiàn)“真”和“假”兩種結(jié)果,而是要求這些結(jié)果所有可能至少出現(xiàn)一次;
7.基本路徑測試:路徑測試執(zhí)行了每個(gè)路徑,每個(gè)判定的結(jié)果肯定經(jīng)歷過一次
?
黑盒技術(shù)設(shè)計(jì)測試用例的方法有:等價(jià)類劃分、邊界值分析、錯(cuò)誤推測、決策表和綜合策略。
?
設(shè)計(jì)系統(tǒng)測試計(jì)劃需要參考的項(xiàng)目文擋有:軟件測試計(jì)劃、軟件需求規(guī)范、迭代計(jì)劃?
系統(tǒng)測試有負(fù)載測試、易用性測試、強(qiáng)度測試、安全測試。
(1)負(fù)載測試:數(shù)據(jù)在超負(fù)荷環(huán)境中運(yùn)行,看程序是否能承擔(dān)。目的是確定并確保系統(tǒng)在超出最大預(yù)期工作量的情況下仍能正常運(yùn)行。
(2)強(qiáng)度測試:在一定的負(fù)荷條件下,在較長時(shí)間跨度內(nèi)的系統(tǒng)連續(xù)運(yùn)行給系統(tǒng)性能所造成的影響。 (3)容量測試:容量測試目的是通過測試預(yù)先分析出反映軟件系統(tǒng)應(yīng)用特征的某項(xiàng)指標(biāo)的極限值(如最大并發(fā)用戶數(shù)、數(shù)據(jù)庫記錄數(shù)等),系統(tǒng)在其極限值狀態(tài)下沒有出現(xiàn)任何軟件故障或還能保持主要功能正常運(yùn)行。面向數(shù)據(jù)的,并且它的目的是顯示系統(tǒng)可以處理目標(biāo)內(nèi)確定的數(shù)據(jù)容量。?
單元測試能發(fā)現(xiàn)約80%的軟件缺陷。
?
邏輯測試覆蓋中,測試覆蓋最強(qiáng)的是條件組合覆蓋。
?
測試方法可以分成個(gè)人復(fù)查、抽查和會審、黑盒測試、白盒測試。
?
軟件測試的原則之一是測試應(yīng)該盡早進(jìn)行,最好在需求階段就開始介入。
?
??? 測試驅(qū)動開發(fā)(Test-DrivenDevelopment)是敏捷開發(fā)中的一項(xiàng)核心實(shí)踐和技術(shù),也是一種設(shè)計(jì)方法論。TDD得原理是在開發(fā)功能代碼之前,先編寫單元測試用例代碼,測試代碼確定需要編寫什么產(chǎn)品代碼。TDD雖是敏捷方法的核心實(shí)踐,但不只適用于XP(Extreme Programming),同樣可以適用于敏感詞開發(fā)方法和過程。TDD得基本思路就是通過測試來推動整個(gè)開發(fā)得進(jìn)行,但測試驅(qū)動開發(fā)并不只是單純的測試工作,而是把需求分析,設(shè)計(jì),質(zhì)量控制量化的過程。TDD的重要目的不僅僅是測試軟件,測試工作保證代碼質(zhì)量僅僅是其中一部分,而且是在開發(fā)過程中幫助客戶和程序員去除模棱兩可的需求。TDD首先考慮使用需求(對象、功能、過程、接口等),主要是編寫測試用例框架對功能的過程和接口進(jìn)行設(shè)計(jì),而測試框架可以持續(xù)進(jìn)行驗(yàn)證。
優(yōu)點(diǎn):在任意一個(gè)開發(fā)節(jié)點(diǎn)都可以拿出一個(gè)可以使用,含少量bug并具一定功能的產(chǎn)品。
缺點(diǎn):增加代碼量。測試代碼是系統(tǒng)代碼的兩倍或更多。
?
什么是驅(qū)動模塊?
答:驅(qū)動模塊在大多數(shù)場合稱為"主程序",它接收測試數(shù)據(jù)并將這些數(shù)據(jù)傳遞到被測試模塊.單元測試一個(gè)函數(shù)單元時(shí),被測單元本身是不能獨(dú)立運(yùn)行的,需要為其傳送數(shù)據(jù),為此寫驅(qū)動
驅(qū)動模塊主要完成以下事情:
1、接受測試輸入;
2、對輸入進(jìn)行判斷;
3、將輸入傳給被測單元,驅(qū)動被測單元執(zhí)行;
4、接受被測單元執(zhí)行結(jié)果,并對結(jié)果進(jìn)行判斷;
5、將判斷結(jié)果作為用例執(zhí)行結(jié)果輸出測試報(bào)告。
?
什么是樁模塊?
答:比如對函數(shù)A做單元測試時(shí),被測的函數(shù)單元下還包括了一個(gè)函數(shù)B,為了更好的錯(cuò)誤,定位錯(cuò)誤,就要為函數(shù)B寫樁,來模擬函數(shù)B的功能,保證其正確。
?
需求文檔測試:測試需求中是否存在邏輯矛盾以及需求在技術(shù)上是否可以實(shí)現(xiàn);
設(shè)計(jì)文檔測試: 測試設(shè)計(jì)是否符合全部需求以及設(shè)計(jì)是否合理。
?
測試工具:
loadrunner?包括腳本編輯工具、測試執(zhí)行工具、結(jié)果分析工具?
性能測試:主要檢驗(yàn)軟件是否達(dá)到需求規(guī)格說明書中規(guī)定的各類性能指標(biāo),并滿足一些性能相關(guān)的約束和限制條件。
目的是通過測試,確認(rèn)軟件是否滿足產(chǎn)品的性能需求,同時(shí)發(fā)現(xiàn)系統(tǒng)中存在的性能瓶頸,并對系統(tǒng)進(jìn)行優(yōu)化。
壓力測試:模擬巨大的工作負(fù)荷,以查看系統(tǒng)在峰值使用情況下是否可以正常運(yùn)行,以此來獲得系統(tǒng)性能提供的最大服務(wù)級別的一種測試。
負(fù)載測試:通過逐步增加系統(tǒng)工作量,測試系統(tǒng)能力的變化,并最終確定在滿足功能指標(biāo)的情況下,系統(tǒng)所能承受的最大工作量的測試。壓力測試實(shí)質(zhì)上就是一種特定類型的負(fù)載測試。
自動化測試和手工測試的適用場景:
自動化測試適用場景:
1.產(chǎn)品需求變更較少。
2.項(xiàng)目開發(fā)周期較長。
3.測試用例執(zhí)行頻繁。比如大量的回歸測試工作
4.手工測試無法勝任。比如高并發(fā)操作,持續(xù)收集設(shè)備資源,長時(shí)間穩(wěn)定性測試,多用戶操作等手工操作或測試無法勝任的工作。
5.人物財(cái)力資源充足。
手工測試適用場景:
1.產(chǎn)品需求變更較多。
2.項(xiàng)目開發(fā)周期較短,需要迅速交付。
3.測試用例執(zhí)行不是很頻繁,需要人為觀察,需要靈活測試。
自動化測試和手工測試的優(yōu)缺點(diǎn):
自動化測試的優(yōu)點(diǎn):
1、對回歸測試更方便:周期較長的回歸測試工作量大,測試比較頻繁,適合自動化測試。由于測試的腳本和用例都是設(shè)計(jì)好的,測試期望的結(jié)果也可以預(yù)料,將回歸測試自動化可以極大的提高效率縮短回歸時(shí)間。
2、模擬真實(shí)情況:可以執(zhí)行手工測試無法執(zhí)行的測試,比如同時(shí)并發(fā)上千用戶測試系統(tǒng)的負(fù)載量,測試人員無法達(dá)到測試目的,而使用自動化測試工具可以模擬多用戶的并發(fā)過程。
3、有效的利用人力物力資源:頻繁地機(jī)器化的動作可以用自動化測試執(zhí)行,減少錯(cuò)誤的發(fā)生,更好的利用人力資源。
4、測試的重復(fù)利用:由于自動測試通常使用的是自動化腳本技術(shù),這樣就可以只需要做較少的甚至是不修改就可以實(shí)現(xiàn)在不同的測試過程中使用相同的用例。
5、減少人為的錯(cuò)誤:自動化測試是機(jī)器完成,不存在執(zhí)行過程中人為的疏忽和錯(cuò)誤。
自動化測試的缺點(diǎn):
1、自動化測試是工具執(zhí)行,沒有思維,無法進(jìn)行主觀判斷,對界面色彩、布局和系統(tǒng)的奔潰現(xiàn)象無法發(fā)現(xiàn),這些錯(cuò)誤通過人眼很容易發(fā)現(xiàn)。
2、自動化測試工具本身是一個(gè)產(chǎn)品,在不同的系統(tǒng)平臺或硬件平臺可能會受影響,在運(yùn)行時(shí)可能影響被測程序的測試結(jié)果。
3、對于需求更改頻繁的軟件,測試腳本的維護(hù)和設(shè)計(jì)比較空難。
4、自動化測試是機(jī)器執(zhí)行,手工測試比自動測試發(fā)現(xiàn)的缺陷更多。
5、自動化測試要編寫測試腳本,設(shè)計(jì)場景,這些對測試人員的要求比較高,測試的設(shè)計(jì)直接影響測試的結(jié)果。
綜上所述,可以歸結(jié)自動化完成不了的,手工測試都能彌補(bǔ),兩者有效的結(jié)合是測試質(zhì)量保證的關(guān)鍵。
總結(jié)
- 上一篇: android 通讯录恢复,安卓手机通讯
- 下一篇: 统计假设测验------(二)平均数的假