电竞比分网-中国电竞赛事及体育赛事平台

分享

軟件測(cè)試流程及方法詳解

 timtxu 2019-08-14
軟件測(cè)試流程及方法詳解

軟件測(cè)試類型(共19種)

1.按照測(cè)試類型劃分:

功能測(cè)試(Function Testing):測(cè)試軟件的功能是否符合功能需求,通常采用黑盒測(cè)試方式。一般由獨(dú)立測(cè)試人員執(zhí)行。

性能測(cè)試(Performance Testing):測(cè)試軟件在各種情況下的性能,如在正常情況下或者最大負(fù)載下的狀況。包括內(nèi)存測(cè)試、CPU測(cè)試、響應(yīng)時(shí)間測(cè)試、喚醒率測(cè)試、強(qiáng)度測(cè)試、容量測(cè)試、基準(zhǔn)測(cè)試等。

安全測(cè)試(Security Testing ):測(cè)試該系統(tǒng)防止非法侵入的能力。在IT軟件產(chǎn)品的生命周期中,特別是產(chǎn)品開(kāi)發(fā)基本完成到發(fā)布階段,對(duì)產(chǎn)品進(jìn)行檢驗(yàn)以驗(yàn)證產(chǎn)品是否符合安全需求定義和產(chǎn)品質(zhì)量標(biāo)準(zhǔn)的過(guò)程。(比如登錄,注冊(cè)功能等)

易用性測(cè)試:測(cè)試軟件是否易用,主觀性比較強(qiáng)。一般要根據(jù)很多用戶的測(cè)試反饋信息,才能評(píng)價(jià)易用性。

兼容性測(cè)試:測(cè)試該系統(tǒng)與其他軟件或者系統(tǒng)平臺(tái)(軟件/硬件)的兼容性。包括自身兼容性(歷史版本數(shù)據(jù),功能兼容)、平臺(tái)兼容性(window平臺(tái)、Linux平臺(tái)等的兼容)、設(shè)備兼容性(Android產(chǎn)品,iOS產(chǎn)品等的兼容)、與其他軟件兼容性等。

部署測(cè)試:也叫安裝測(cè)試,確保該軟件在正?;虍惓G闆r下都能進(jìn)行安裝(進(jìn)行首次安裝、升級(jí)、完整的或自定義的安裝--正常情況;磁盤空間不足,缺少目錄創(chuàng)建權(quán)限,安裝過(guò)程中關(guān)機(jī)重啟--異常情況)(部署方式:分布式部署,集中部署等)

文檔測(cè)試:檢驗(yàn)樣品用戶文檔的完整性,正確性,一致性,易理解性,易瀏覽性。包括用戶手冊(cè),配置手冊(cè)、安裝手冊(cè),使用說(shuō)明,用戶幫助文檔等。

本地化測(cè)試:不同區(qū)域不同版本的測(cè)試(中文版本測(cè)試,英文版本測(cè)試等)

無(wú)障礙測(cè)試:針對(duì)特定的用戶群體,比如老年人,殘疾人等類型的用戶

競(jìng)品測(cè)試:同類產(chǎn)品在功能、性能等方面的對(duì)比測(cè)試。

開(kāi)發(fā)文檔和源程序可以應(yīng)用單元測(cè)試應(yīng)用走查的方法。

2.按是否查看程序內(nèi)部結(jié)構(gòu)分類

黑盒測(cè)試(Black-Box Testing):又稱數(shù)據(jù)驅(qū)動(dòng)測(cè)試,從用戶角度出發(fā),把測(cè)試對(duì)象比作黑盒,關(guān)注程序外部結(jié)構(gòu),不關(guān)注內(nèi)部邏輯,針對(duì)輸入對(duì)應(yīng)的輸出是否正確進(jìn)行測(cè)試(是對(duì)功能的測(cè)試)。即針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試,以此來(lái)確認(rèn)軟件的功能和界面是否正確或遺漏,數(shù)據(jù)庫(kù)訪問(wèn)是否正常,會(huì)出現(xiàn)性能錯(cuò)誤,初始化錯(cuò)誤和程序終止錯(cuò)誤等bug。

灰盒測(cè)試(Gray-Box Testing): 是一種綜合測(cè)試方法,他將黑盒測(cè)試和白盒測(cè)試相結(jié)合,基于程序運(yùn)行時(shí)的外部表現(xiàn)又結(jié)合內(nèi)部邏輯結(jié)構(gòu)來(lái)設(shè)計(jì)用例,執(zhí)行程序并采集路徑執(zhí)行信息和外部用戶接口結(jié)果的測(cè)試技術(shù)。

白盒測(cè)試(White-Box Testing):結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,是一種按照程序內(nèi)部邏輯結(jié)構(gòu)和編碼結(jié)構(gòu),設(shè)計(jì)測(cè)試數(shù)據(jù)并完成測(cè)試的一種測(cè)試方法。

3.按是否運(yùn)行程序分類

靜態(tài)測(cè)試(Static Testing):指不運(yùn)行被測(cè)程序本身,僅通過(guò)分析或檢查源程序的語(yǔ)法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性。對(duì)需求規(guī)格說(shuō)明書(shū)、軟件設(shè)計(jì)說(shuō)明書(shū)、源程序做結(jié)構(gòu)分析、流程圖分析、符號(hào)執(zhí)行找錯(cuò)。技術(shù)應(yīng)用包括控制流分析技術(shù)、數(shù)據(jù)流分析技術(shù)、信息流分析技術(shù)等。

軟件質(zhì)量的衡量方面:功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可維護(hù)性(Maintainability)、可移植性(Portablity)

動(dòng)態(tài)測(cè)試(Dynamic Testing):是指通過(guò)運(yùn)行被測(cè)程序,檢查運(yùn)行結(jié)果與預(yù)期結(jié)果的差異,并分析運(yùn)行效率、正確性和健壯性等性能指標(biāo)。組成部分:構(gòu)造測(cè)試用例、執(zhí)行程序 、分析程序的輸出結(jié)果。技術(shù)應(yīng)用包括邏輯覆蓋率測(cè)試技術(shù)(分支測(cè)試技術(shù)、路徑測(cè)試技術(shù)等),程序插裝等。

4.按階段測(cè)試分類

單元測(cè)試(Unit Testing):又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位----程序模塊或功能模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于檢驗(yàn)程序各模塊是否存在各種差錯(cuò),是否能正確地實(shí)現(xiàn)了其功能,滿足其性能和接口要求。常用方法:白盒測(cè)試。

測(cè)試階段:編碼后

測(cè)試對(duì)象:最小模塊

測(cè)試人員:白盒測(cè)試工程師或開(kāi)發(fā)工程師

測(cè)試依據(jù):代碼和注釋+詳細(xì)設(shè)計(jì)文檔

測(cè)試方法:白盒測(cè)試

測(cè)試內(nèi)容:模塊接口測(cè)試、局部數(shù)據(jù)結(jié)構(gòu)測(cè)試、路徑測(cè)試、錯(cuò)誤處理測(cè)試、邊界測(cè)試

集成測(cè)試(Integration Testing):又叫組裝測(cè)試或聯(lián)合,是單元測(cè)試的多級(jí)擴(kuò)展,是在單元測(cè)試的基礎(chǔ)上進(jìn)行的一種有序測(cè)試。旨在檢驗(yàn)軟件單元之間的接口關(guān)系,以期望通過(guò)測(cè)試發(fā)現(xiàn)各軟件單元接口之間存在的問(wèn)題,最終把經(jīng)過(guò)測(cè)試的單元組成符合設(shè)計(jì)要求的軟件。常用測(cè)試方法:灰盒測(cè)試。

測(cè)試階段:一般單元測(cè)試執(zhí)行之后進(jìn)行

測(cè)試對(duì)象:模塊間的接口

測(cè)試人員:白盒測(cè)試工程師或開(kāi)發(fā)工程師

測(cè)試依據(jù):?jiǎn)卧獪y(cè)試的模塊+概要設(shè)計(jì)文檔

測(cè)試方法:灰盒測(cè)試(黑盒測(cè)試和白盒測(cè)試相結(jié)合)

測(cè)試內(nèi)容:模塊之間的數(shù)據(jù)傳輸、模塊之間的功能沖突、模塊組裝功能正確性、全局?jǐn)?shù)據(jù)結(jié)構(gòu)、單模塊缺陷對(duì)系統(tǒng)的影響。

確認(rèn)測(cè)試:又稱有效性測(cè)試。任務(wù)是驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。對(duì)軟件的功能和性能要求在軟件需求規(guī)格說(shuō)明書(shū)中已經(jīng)明確規(guī)定。它包含的信息就是軟件確認(rèn)測(cè)試的基礎(chǔ)。

系統(tǒng)測(cè)試(System Testing):是為判斷系統(tǒng)是否符合要求而對(duì)集成的軟、硬件系統(tǒng)進(jìn)行的測(cè)試活動(dòng)、它是將已經(jīng)集成好的軟件系統(tǒng),作為基于整個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、人員、數(shù)據(jù)等其他系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。

測(cè)試階段:集成測(cè)試通過(guò)之后

測(cè)試對(duì)象:整個(gè)系統(tǒng)(軟硬件)

測(cè)試人員:黑盒測(cè)試工程師

測(cè)試依據(jù):需求規(guī)格說(shuō)明書(shū)

測(cè)試方法:黑盒測(cè)試

測(cè)試內(nèi)容:功能、界面、可靠性、易用性、性能、兼容性、安全性等。

驗(yàn)收測(cè)試(Acceptance Testing):以用戶為主的測(cè)試,軟件開(kāi)發(fā)人員和質(zhì)量保證人員參加,由用戶設(shè)計(jì)測(cè)試用例。不是對(duì)系統(tǒng)進(jìn)行全覆蓋測(cè)試,而是對(duì)核心業(yè)務(wù)流程進(jìn)行測(cè)試。

測(cè)試階段:系統(tǒng)測(cè)試通過(guò)之后

測(cè)試對(duì)象:整個(gè)系統(tǒng)(軟硬件)

測(cè)試人員:最終用戶或需求方

測(cè)試依據(jù):用戶需求,驗(yàn)收標(biāo)準(zhǔn)

測(cè)試方法:黑盒測(cè)試

測(cè)試內(nèi)容:功能、界面、可靠性、易用性、性能、兼容性、安全性,程序設(shè)計(jì)文檔及說(shuō)明書(shū)等。

alpha測(cè)試:用戶在開(kāi)發(fā)環(huán)境下(模擬實(shí)操環(huán)境)進(jìn)行測(cè)試,受開(kāi)發(fā)方控制,用戶數(shù)量相對(duì)較少,時(shí)間比較 集中。目的是:評(píng)價(jià)軟件產(chǎn)品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持) 測(cè)試時(shí)間:軟件正式發(fā)布前。測(cè)試對(duì)象:不能有程序員或測(cè)試員完成。

beta測(cè)試:用戶公司組織各方面的典型終端用戶在生產(chǎn)環(huán)境下進(jìn)行,是一種驗(yàn)收測(cè)試。用戶不受開(kāi)發(fā)方控制,可以自由地測(cè)試,用戶數(shù)量相對(duì)較多,時(shí)間不集中。測(cè)試時(shí)間:alpha測(cè)試過(guò)后特點(diǎn):測(cè)試規(guī)模大,測(cè)試周期長(zhǎng)。

5.黑盒測(cè)試分類

功能測(cè)試:菜單、工具欄、快捷鍵、下拉框、按鈕、單選按鈕、復(fù)選按鈕、切換、鏈接(集成測(cè)試階段)、觸發(fā)鍵

1.邏輯功能測(cè)試:

2.UI界面測(cè)試:登錄界面、總界面、輸入/出界面(增刪改查)、處理界面、輸出界面、報(bào)表界面、提示界面

3.易用性測(cè)試:

4.兼容性測(cè)試:

5.接口測(cè)試:也叫業(yè)務(wù)流程測(cè)試(包括功能模塊之間、模塊與模塊之間、子系統(tǒng)之間),分為內(nèi)部接口(即函數(shù)調(diào)用[導(dǎo)入導(dǎo)出])和外部接口兩部分。服務(wù)器接口、外部接口、錯(cuò)誤處理。接口測(cè)試工具:charles,postman,jmeter等。

注:

服務(wù)端一般會(huì)提供JSON格式的數(shù)據(jù)給客戶端,所以我們?cè)诜?wù)端需要進(jìn)行接口測(cè)試,確保服務(wù)端提供的接口并轉(zhuǎn)換的JSON內(nèi)容正確,對(duì)分支、異常流有相應(yīng)的返回值。此塊測(cè)試可以采用itest框架進(jìn)行測(cè)試。最方便的是采用httpclient進(jìn)行接口測(cè)試。進(jìn)行服務(wù)端測(cè)試時(shí),需要開(kāi)發(fā)提供一份接口文檔。

6.容錯(cuò)測(cè)試:數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)類型、非法操作等

性能(時(shí)間-、空間)測(cè)試:TPS吞吐量、響應(yīng)速度、CPU占用率、內(nèi)存占用率等

名詞解釋:

平均吞吐量:?jiǎn)挝粫r(shí)間內(nèi)處理事務(wù)的個(gè)數(shù)

平均響應(yīng)速度:做一個(gè)事務(wù)處理所用時(shí)間

時(shí)間性能:軟件的一個(gè)具體事務(wù)的響應(yīng)時(shí)間

空間性能:軟件運(yùn)行時(shí)所消耗的系統(tǒng)資源

測(cè)試項(xiàng)目:

1.可靠性測(cè)試:硬件方面(材料等),如高低溫測(cè)試,防水防塵測(cè)試等。

2.穩(wěn)定性測(cè)試:稍大于業(yè)務(wù)量的一個(gè)負(fù)載,對(duì)系統(tǒng)進(jìn)行的一個(gè)持續(xù)的長(zhǎng)時(shí)間的測(cè)試,比如24*5,連續(xù)5天施加壓力,確定系統(tǒng)能在較長(zhǎng)時(shí)間運(yùn)行下的系統(tǒng)穩(wěn)定性的情況;1小時(shí)觸發(fā)600條信息,那么8個(gè)、10個(gè)等發(fā)信息的條數(shù)測(cè)試。

3.負(fù)載測(cè)試:確認(rèn)系統(tǒng)正常指標(biāo)下的最大負(fù)載。步驟:在測(cè)試過(guò)程中,逐步增加負(fù)載,并記錄被測(cè)系統(tǒng)響應(yīng)的性能表現(xiàn),最終確認(rèn)出系統(tǒng)的最大負(fù)載。

4.壓力測(cè)試:確認(rèn)系統(tǒng)所能承受的最大極限。是指在極限壓力情況下,系統(tǒng)崩潰的極限條件測(cè)試。大用戶測(cè)試(針對(duì)B/S而言)

5.容量測(cè)試:大數(shù)據(jù)量測(cè)試。

6.強(qiáng)度測(cè)試:系統(tǒng)續(xù)航量測(cè)試

7.安全性測(cè)試:

8.恢復(fù)測(cè)試:突然斷電(系統(tǒng)觸發(fā)正常啟動(dòng);數(shù)據(jù)包要在斷電的地方繼續(xù)進(jìn)行處理)

9.標(biāo)桿測(cè)試:

10.并發(fā)測(cè)試:指多個(gè)用戶在同一時(shí)間對(duì)同一條數(shù)據(jù)的刪除或者修改等處理

11.配置測(cè)試:分為最低配置和推薦配置兩種。

12.安裝測(cè)試:安裝過(guò)程和卸載過(guò)程

13.文檔測(cè)試:交給用戶的文檔。例如:系統(tǒng)幫助、用戶使用手冊(cè)、用戶安裝手冊(cè)

14.可用性測(cè)試:靠經(jīng)驗(yàn)。

15.初始化測(cè)試:是指系統(tǒng)剛剛安裝完成后,在數(shù)據(jù)位空的情況下,如果被調(diào)用的模塊為空,點(diǎn)擊調(diào)用模塊的時(shí)候,是否進(jìn)行容錯(cuò)的測(cè)試。

16.數(shù)據(jù)完整性測(cè)試:是指當(dāng)主表的某一條件信息被刪除后,和這一條相關(guān)的從表的信息都應(yīng)該被刪除。如果某些數(shù)據(jù)的主鍵是由數(shù)據(jù)庫(kù)本身而實(shí)現(xiàn)的,可以不用刪除,如果有些主從表是由程序員寫(xiě)的代碼而實(shí)現(xiàn),則要進(jìn)行數(shù)據(jù)完整性的測(cè)試。

6.是否手工執(zhí)行

手工測(cè)試(Manual Testing):由人一個(gè)一個(gè)的輸入用例,然后觀察結(jié)果,和機(jī)器測(cè)試相對(duì)應(yīng),屬于比較原始但是必須的一個(gè)步驟。

優(yōu)點(diǎn):自動(dòng)化無(wú)法替代探索性測(cè)試、發(fā)散思維類無(wú)既定結(jié)果的測(cè)試

缺點(diǎn):執(zhí)行效率慢,量大易錯(cuò)。

自動(dòng)化測(cè)試(Automation Testing):在預(yù)設(shè)條件下運(yùn)行系統(tǒng)或應(yīng)用程序,評(píng)估運(yùn)算結(jié)果,預(yù)先條件應(yīng)包括正常條件和異常條件。即模仿人的動(dòng)作和行為。一般常用的自動(dòng)化測(cè)試如功能測(cè)試自動(dòng)化(默認(rèn))、性能測(cè)試自動(dòng)化、安全測(cè)試自動(dòng)化等

7.其他測(cè)試類型

回歸測(cè)試(Regresson Testing ):對(duì)軟件版本的新版本進(jìn)行測(cè)試時(shí),重復(fù)執(zhí)行上一個(gè)版本測(cè)試時(shí)的用例。在發(fā)生修改后重新測(cè)試新版本的軟件以保證修改的正確性,以及修改后沒(méi)有引發(fā)新的錯(cuò)誤。回歸測(cè)試是開(kāi)發(fā)人員修改已提交的bug后,測(cè)試人員進(jìn)行再一輪的測(cè)試,主要是檢測(cè)bug是否被修復(fù),bug相關(guān)功能是否被影響。

冒煙測(cè)試(Smoke Testing):對(duì)一個(gè)系統(tǒng)進(jìn)行大規(guī)模的測(cè)試之前,先驗(yàn)證一下軟件的基本功能是否實(shí)現(xiàn),是否具備可測(cè)性。冒煙測(cè)試又稱為版本驗(yàn)證測(cè)試,他的對(duì)象是每一個(gè)新編譯的需要正式測(cè)試的軟件版本,目的是確認(rèn)軟件的基本功能正常,可以進(jìn)行后續(xù)的正式測(cè)試工作。煙測(cè)試是在開(kāi)發(fā)人員交付軟件時(shí)進(jìn)行的大體預(yù)測(cè),主要是針對(duì)整體流程和主體功能進(jìn)行測(cè)試。

隨機(jī)測(cè)試(Ad-hoc Testing):

恢復(fù)測(cè)試():

探索性測(cè)試(Exploratory Tesing):是一種測(cè)試思維技術(shù)(方式)。他強(qiáng)調(diào)的是測(cè)試人員的主觀能動(dòng)性,拋棄繁雜的測(cè)試計(jì)劃和測(cè)試用例設(shè)計(jì)過(guò)程,強(qiáng)調(diào)在碰到問(wèn)題時(shí)及時(shí)改變測(cè)試策略。

返測(cè):針對(duì)程序員修改的錯(cuò)誤進(jìn)行測(cè)試,驗(yàn)證錯(cuò)誤是否被修正。

注:

1.單元測(cè)試

  • 模塊接口的測(cè)試

  • 局部數(shù)據(jù)結(jié)構(gòu)的測(cè)試

  • 獨(dú)立路徑測(cè)試

  • 錯(cuò)誤處理測(cè)試

  • 邊界測(cè)試

單元測(cè)試的模塊

  • 被測(cè)模塊:被測(cè)試的程序的模塊

  • 驅(qū)動(dòng)模塊:用來(lái)模擬測(cè)試模塊的上一級(jí)模塊,相當(dāng)于被測(cè)模塊的主程序

  • 樁模塊:用來(lái)模擬被測(cè)模塊工作過(guò)程中所調(diào)用的模塊

  • 單元測(cè)試的工具:Junit相關(guān)的概念:以插入斷言的方式進(jìn)行測(cè)試(類似黑盒測(cè)試)

  • 針對(duì)被測(cè)代碼或者被測(cè)的功能點(diǎn)先創(chuàng)建測(cè)試類,然后在類里面創(chuàng)建一個(gè)個(gè)測(cè)試方法。通過(guò)實(shí)例化對(duì)象調(diào)用被測(cè)方法,用斷言進(jìn)行實(shí)際值預(yù)期值比較。

  • 單元測(cè)試的方法:以白盒測(cè)試法為主(覆蓋),先靜態(tài)檢查代碼是否符合規(guī)范,再動(dòng)態(tài)運(yùn)行代碼,檢查結(jié)果。除了需要驗(yàn)證結(jié)果是否正確,還需要檢查程序的容錯(cuò)能力、邊界值處理等問(wèn)題。

2.集成測(cè)試

  • 一次性的集成big-bang:把所有通過(guò)了單元測(cè)試的模塊按設(shè)計(jì)要求一次全部組裝起來(lái),然后進(jìn)行整體測(cè)試。時(shí)間隨變短了但急于求成。

  • 漸進(jìn)地集成

  • 自上而下:從主程序模塊開(kāi)始按深度或廣度優(yōu)先策略邊組裝邊測(cè)試

  • 自下而上:從最底層模塊開(kāi)始組裝和集成測(cè)試

  • 漢堡包:兩者進(jìn)行結(jié)合,樹(shù)狀圖每層畫(huà)線,頂層采用自頂向下,底層采用自底向上

  • 相鄰的集成:上下三層進(jìn)行集成

  • 成對(duì)集成:先成對(duì)再相鄰

  • 基于MM路徑的集成:MM路徑不是可執(zhí)行路徑,描述單元之間的控制轉(zhuǎn)移。

  • 最終得到調(diào)用圖,然后就會(huì)到基本路徑測(cè)試,找復(fù)雜度,找路徑,得到測(cè)試用例的套路


3.系統(tǒng)測(cè)試

  • 方法:黑盒測(cè)試

  • 內(nèi)容:易用性、國(guó)際化本地化、性能、功能、界面、兼容性、安全性、文檔、安裝

白盒測(cè)試用例設(shè)計(jì)方法

1.基本路徑測(cè)試

2.邊界值分析

3.邏輯覆蓋率測(cè)試(分支測(cè)試、路徑測(cè)試)

4.循環(huán)測(cè)試

5.數(shù)據(jù)流分析技術(shù)測(cè)試

6.程序插樁測(cè)試

7.變異測(cè)試

8.控制流分析技術(shù)測(cè)試

9.信息流分析技術(shù)測(cè)試

依據(jù):詳細(xì)設(shè)計(jì)說(shuō)明書(shū)及其代碼構(gòu)架。

優(yōu)點(diǎn):1.迫使測(cè)試人員去仔細(xì)的思考軟件的實(shí)現(xiàn);2.可以檢測(cè)代碼中的每條分支和路徑;3.揭示隱藏在代碼中的錯(cuò)誤;4.對(duì)代碼的測(cè)試比較徹底;5.實(shí)現(xiàn)代碼最優(yōu)化。

缺點(diǎn):1.價(jià)格昂貴;2.無(wú)法檢測(cè)代碼中遺漏的路徑和數(shù)據(jù)敏感性錯(cuò)誤;3.不驗(yàn)證規(guī)格的正確性。

注:

1.邏輯覆蓋

語(yǔ)句覆蓋->判定覆蓋->判定/條件覆蓋->條件組合覆蓋->路徑覆蓋 \_條件覆蓋/
  • 語(yǔ)句覆蓋:每條語(yǔ)句執(zhí)行一次

  • 判定覆蓋:每個(gè)判定分支至少執(zhí)行一次

  • 條件覆蓋:每個(gè)判定條件應(yīng)取到各種可能的值

  • 判定/條件覆蓋:同時(shí)滿足判定和條件

  • 條件組合覆蓋:每個(gè)判定條件的每一種組合各出現(xiàn)一次

  • 路徑覆蓋:每一條可能的路徑至少執(zhí)行一次

關(guān)系:

  • 條件組合覆蓋>判定覆蓋>語(yǔ)句覆蓋(即如果達(dá)到條件組合覆蓋,就達(dá)到判定覆蓋和語(yǔ)句覆蓋:如果達(dá)到判定覆蓋,就達(dá)到語(yǔ)句覆蓋,下面類似理解)。

  • 條件組合覆蓋>條件覆蓋。

  • 條件覆蓋不一定包含判定覆蓋、語(yǔ)句覆蓋。

  • 判定覆蓋不一定包含條件覆蓋。

  • 路徑覆蓋,判定覆蓋>語(yǔ)句覆蓋。

2.基本路徑測(cè)試

  • 基于程序圈復(fù)雜度產(chǎn)生的測(cè)試方法,畫(huà)出控制流程圖,算圈復(fù)雜度,找到獨(dú)立路徑并壓縮為基本路徑集合,根據(jù)集合中每條路徑設(shè)計(jì)用例。把復(fù)合邏輯表達(dá)式拆成單個(gè)表達(dá)式

  • 圈復(fù)雜度用于計(jì)算程序的基本的獨(dú)立路徑數(shù)目(每條新的獨(dú)立路徑都必須包含一條新的有向邊,從入口到出口互不相同的路徑數(shù))

  • 圈復(fù)雜的V(G) = e - n + 2p【邊-節(jié)點(diǎn)+2*連接區(qū)域數(shù),連接區(qū)域p通常為1】=P+1【判定節(jié)點(diǎn)數(shù)+1】

  • 一般來(lái)說(shuō),一個(gè)單元模塊的最大復(fù)雜度V(G)<10

  • 如果把覆蓋的路徑數(shù)壓縮到一定限度內(nèi),例如程序中的循環(huán)體只執(zhí)行0次和1次,就成為基本路徑測(cè)試,通過(guò)導(dǎo)出基本路徑集合,從而設(shè)計(jì)測(cè)試用例,保證這些路徑至少通過(guò)一次

3.基于數(shù)據(jù)流的測(cè)試

  • 基于真的數(shù)據(jù)定義到數(shù)據(jù)的使用來(lái)進(jìn)行測(cè)試,需要找到定義的節(jié)點(diǎn)(包括賦值的和比較的)和使用的節(jié)點(diǎn)。

  • 定義節(jié)點(diǎn)DEF:輸入語(yǔ)句、賦值語(yǔ)句、循環(huán)語(yǔ)句和過(guò)程調(diào)用;變量的值會(huì)發(fā)生變化的語(yǔ)句

  • 使用節(jié)點(diǎn)USE:數(shù)出語(yǔ)句、賦值語(yǔ)句、條件語(yǔ)句、循環(huán)控制語(yǔ)句、過(guò)程調(diào)用

  • 需要找到所有這段功能代碼從哪里開(kāi)始定義,到哪里開(kāi)始執(zhí)行,把路徑找出來(lái)。什么是定義使用路徑(某一變量在最初節(jié)點(diǎn)定義到最終節(jié)點(diǎn)被使用)、定義清除路徑(某一個(gè)變量從它的定義節(jié)點(diǎn)到使用節(jié)點(diǎn)這個(gè)過(guò)程中沒(méi)有對(duì)這個(gè)變量進(jìn)行二次定義)

4.循環(huán)測(cè)試

  • 前提是程序是結(jié)構(gòu)化的。

  • 簡(jiǎn)單循環(huán)測(cè)試

  • 0次通過(guò)循環(huán)

  • 1次通過(guò)循環(huán)

  • 2次通過(guò)循環(huán)

  • m次通過(guò)循環(huán)(m<=循環(huán)最大次數(shù))

  • m-1,m,m+1次通過(guò)循環(huán)

黑盒測(cè)試用例設(shè)計(jì)方法

1.基于用于需求的測(cè)試

2.功能圖分析方法

3.等價(jià)類劃分方法

4.邊界值分析方法

5.錯(cuò)誤推測(cè)方法

6.因果圖方法

6.判定表驅(qū)動(dòng)分析方法

7.正交試驗(yàn)設(shè)計(jì)方法

依據(jù):用戶需求規(guī)格說(shuō)明書(shū)和詳細(xì)設(shè)計(jì)說(shuō)明書(shū)

注:

1.常見(jiàn)的邊界值

  • 16bit整數(shù)32767~-32768

  • 報(bào)表第一行和最后一行

  • 屏幕光標(biāo)最左上和最右下

  • 數(shù)組的第一個(gè)和最后一個(gè)

  • 循環(huán)的第0、1、倒數(shù)第一、倒數(shù)第二次

2.決策表

適合于問(wèn)題有多個(gè)條件,條件有多種組合執(zhí)行不同操作

判定表| 條件樁 | 條件項(xiàng) | ... | 動(dòng)作項(xiàng) || 動(dòng)作樁 | 動(dòng)作項(xiàng) | ... | 動(dòng)作項(xiàng) |

規(guī)則:條件的任意組合,判定表中的一列(貫穿條件項(xiàng)和動(dòng)作項(xiàng))。判定表有多少列就代表有多少條規(guī)則。

規(guī)則的化簡(jiǎn):有的規(guī)則相互包含,可以化簡(jiǎn)

3.因果圖

找出所有的原因,找出結(jié)果,可能還有中間結(jié)果的產(chǎn)生,在畫(huà)因果圖時(shí)注意。

從輸入考慮

I:連虛線出去,如連到ab,表示ab中至少有一個(gè)必須成立

E:連虛線出去,如連到ab,表示ab不能同時(shí)成立

R:如處于a指向b的虛線三角箭頭上,表示a出現(xiàn)時(shí)b也必須出現(xiàn),不可能一個(gè)出現(xiàn)一個(gè)不出現(xiàn)

從輸出考慮

M:如處于a指向b的虛線三角箭頭上,表示a為1時(shí)b必須為0,a為0時(shí)b值不定

連線:恒等

~:非

∨:或

∧:且

ci:原因

ei:結(jié)果

畫(huà)出因果圖后,根據(jù)圖得到?jīng)Q策表從而得到相應(yīng)的測(cè)試數(shù)據(jù):原因節(jié)點(diǎn)+中間節(jié)點(diǎn)為條件樁,結(jié)果結(jié)點(diǎn)為動(dòng)作樁。

什么是軟件?

軟件=文檔+程序+數(shù)據(jù)

文檔: 是與開(kāi)發(fā)、維護(hù)和使用有關(guān)的圖文資料。

程序: 是按實(shí)現(xiàn)設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。

系統(tǒng)軟件

window、Linux、DOS系統(tǒng)、ios系統(tǒng)等。

應(yīng)用軟件

王者榮耀、wechat、淘寶、圖書(shū)館管理系統(tǒng)等。

軟件缺陷(Enhancemental--Bug)

1.未實(shí)現(xiàn)產(chǎn)品說(shuō)明書(shū)要求功能

2.出現(xiàn)說(shuō)明書(shū)中指明不應(yīng)出現(xiàn)的錯(cuò)誤

3.實(shí)現(xiàn)了說(shuō)明書(shū)中未提及的功能(畫(huà)蛇添足)

4.未實(shí)現(xiàn)產(chǎn)品說(shuō)明書(shū)未提及,但是應(yīng)實(shí)現(xiàn)的功能

5.難以理解,不易使用,運(yùn)行緩慢

軟件BUG等級(jí)劃分標(biāo)準(zhǔn)

測(cè)試BUG等級(jí)劃分標(biāo)準(zhǔn)

1.Blocker(崩潰)【Fatal致命的】:阻礙開(kāi)發(fā)或測(cè)試工作的問(wèn)題;造成系統(tǒng)崩潰、死機(jī)、非法退出、死循環(huán),導(dǎo)致數(shù)據(jù)庫(kù)數(shù)據(jù)丟失,與數(shù)據(jù)庫(kù)連接錯(cuò)誤,主要功能喪失,基本模塊缺失等問(wèn)題。如:代碼錯(cuò)誤、死循環(huán)、數(shù)據(jù)庫(kù)發(fā)生死鎖、系統(tǒng)關(guān)鍵性能不達(dá)標(biāo),數(shù)據(jù)通信錯(cuò)誤或接口不通等

2.Critical(嚴(yán)重):系統(tǒng)主要功能部分喪失、數(shù)據(jù)庫(kù)保存調(diào)用錯(cuò)誤、用戶數(shù)據(jù)丟失,一級(jí)功能菜單不能使用但是不影響其他功能的測(cè)試。功能設(shè)計(jì)與需求嚴(yán)重不符,模塊無(wú)法啟動(dòng)或調(diào)用,程序重啟、自動(dòng)退出,關(guān)聯(lián)程序間調(diào)用沖突,安全問(wèn)題、穩(wěn)定性等。如:軟件中數(shù)據(jù)保存后數(shù)據(jù)庫(kù)中顯示錯(cuò)誤,用戶所要求的功能缺失,程序接口錯(cuò)誤,數(shù)值計(jì)算統(tǒng)計(jì)錯(cuò)誤、服務(wù)程序頻繁需要重啟(每天2次或以上)、周邊接口出現(xiàn)故障(需考慮接口時(shí)效/數(shù)量等綜合情況)等(該等級(jí)問(wèn)題出現(xiàn)在不影響其他功能測(cè)試的情況下可以繼續(xù)該版本測(cè)試)。

3.Major(一般):功能沒(méi)有完全實(shí)現(xiàn)但是不影響使用,功能菜單存在缺陷但不會(huì)影響系統(tǒng)穩(wěn)定性。如:操作時(shí)間長(zhǎng)、查詢時(shí)間長(zhǎng)、格式錯(cuò)誤、邊界條件錯(cuò)誤,刪除沒(méi)有確認(rèn)框、數(shù)據(jù)庫(kù)表中字段過(guò)多、 數(shù)據(jù)來(lái)源不正確;、無(wú)數(shù)據(jù)有效性檢查或檢查不合理等(該問(wèn)題實(shí)際測(cè)試中存在最多,合理安排解決BUG,解決率關(guān)系版本的優(yōu)化程度)

4.Minor(次要):界面、菜單布局錯(cuò)誤或不合理、焦點(diǎn)控制不合理、性能缺陷,光標(biāo),滾動(dòng)條定位錯(cuò)誤,建議類問(wèn)題,不影響操作功能的執(zhí)行,可以優(yōu)化性能的方案等。如:錯(cuò)別字、界面格式不規(guī)范,頁(yè)面顯示重疊、不該顯示的要隱藏,描述不清楚,提示語(yǔ)丟失,文字排列不整齊,光標(biāo)位置不正確,用戶體驗(yàn)感受不好,可以優(yōu)化性能的方案等(此類問(wèn)題在測(cè)試初期較多,優(yōu)先程度較低;在測(cè)試后期出現(xiàn)較少,應(yīng)及時(shí)處理)

5.Negligible(輔助性缺陷): 建議優(yōu)化類、缺少產(chǎn)品使用、幫助文檔、系統(tǒng)安裝或配置方面需要信息、長(zhǎng)時(shí)間操作未給用戶進(jìn)度提示、顯示格式不規(guī)范、長(zhǎng)時(shí)間操作未給用戶進(jìn)度提示等

BUG狀態(tài)標(biāo)準(zhǔn)

待處理(new):測(cè)試人員或用戶發(fā)現(xiàn)新問(wèn)題后提交的狀態(tài)

已確認(rèn)(open):經(jīng)測(cè)試人員及研發(fā)人員討論后確認(rèn)是BUG,提交的狀態(tài),由測(cè)試人員來(lái)設(shè)置。

已處理(fixed):經(jīng)研發(fā)人員確認(rèn)是BUG后修復(fù)的狀態(tài),修改還沒(méi)有驗(yàn)證,由開(kāi)發(fā)人員來(lái)設(shè)置。

已修改(closed):測(cè)試人員認(rèn)為問(wèn)題已經(jīng)修改,通過(guò)驗(yàn)證,由測(cè)試人員設(shè)置。

仍存在(reopened):測(cè)試人員認(rèn)為BUG未修復(fù)成功,問(wèn)題仍然存在,由測(cè)試人員設(shè)置。

不是問(wèn)題(reject):研發(fā)人員確認(rèn)不是BUG,或者建議與意見(jiàn)決定不采納。

暫不處理(hold):當(dāng)前版本不做修改,后續(xù)版本再考慮,由研發(fā)人員或測(cè)試人員設(shè)置。

(1)激活狀態(tài)(Active或Open)。

(2)已修正狀態(tài)(Fixed或Resolved)。

(3)關(guān)閉或非激活狀態(tài)(Close或Inactive)。

軟件測(cè)試前期重點(diǎn)工作

正確評(píng)估和區(qū)分軟件缺陷的嚴(yán)重性和優(yōu)先級(jí)。

嚴(yán)重性:

A類:Blocker(崩潰)【Fatal致命的】

B類:Critical(嚴(yán)重)

C類:Major(一般)

D類:Minor(次要)

E類:Negligible(可忽略的)

優(yōu)先級(jí):

P1類:立即解決

P2類:高優(yōu)先級(jí)

P3類:正常排隊(duì)

P4類:低優(yōu)先級(jí)

優(yōu)先級(jí)確定方法:

1.二八原則

2.ABC原則

3.四象限原則(輕重緩急)

軟件缺陷類型:

1.功能缺陷

2.系統(tǒng)缺陷

3.加工缺陷

4.數(shù)據(jù)缺陷

5.代碼缺陷

軟件測(cè)試

為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程,即對(duì)軟件(程序)的漏洞進(jìn)行檢查發(fā)現(xiàn),衡量軟件質(zhì)量,并對(duì)其能否滿足規(guī)定的需求或弄清預(yù)期結(jié)果和實(shí)際結(jié)果的差別。

測(cè)試對(duì)象

程序、數(shù)據(jù)、文檔

測(cè)試過(guò)程模型

缺陷具有放大的特點(diǎn),隨著階段的推進(jìn)發(fā)現(xiàn)bug的成本會(huì)指數(shù)型上升,所以并不是代碼級(jí)的測(cè)試才叫測(cè)試,而是開(kāi)發(fā)過(guò)程各個(gè)階段越早開(kāi)始測(cè)試越好。

1.瀑布模型:1.需求分析->2.設(shè)計(jì)(概要、詳細(xì))->3.編程->4.測(cè)試(單元、集成、系統(tǒng))->5.維護(hù)

2.V模型(瀑布-改):1.需求分析--2.概要設(shè)計(jì)--3.詳細(xì)設(shè)計(jì)--4.軟件編碼--5.單元測(cè)試--6.集成測(cè)試--7.系統(tǒng)測(cè)試--8.驗(yàn)收測(cè)試

3.W模型:1.需求分析--需求測(cè)試--2.概要設(shè)計(jì)--功能測(cè)試--3.詳細(xì)設(shè)計(jì)--設(shè)計(jì)測(cè)試--4.軟件編碼--5.單元測(cè)試--6.集成測(cè)試--7.系統(tǒng)測(cè)試--確認(rèn)測(cè)試--8.驗(yàn)收測(cè)試

4.H模型:無(wú)實(shí)際意義,僅說(shuō)明可以獨(dú)立測(cè)試。

軟件測(cè)試原則

1.測(cè)試來(lái)源于需求原則

2. 8-2原則:

  • 測(cè)試中發(fā)現(xiàn)的錯(cuò)誤80%很可能起源于程序中的20%

  • 提前測(cè)試可發(fā)現(xiàn)80%,系統(tǒng)測(cè)試找出剩余bug的80%(總體的16%),最后的4%可能只有用戶大范圍長(zhǎng)時(shí)間使用后才暴露出來(lái)

  • 80%的工程用在20%的需求上(即關(guān)鍵需求)

3.軟件缺陷的寄生蟲(chóng)性:找到的缺陷越多說(shuō)明軟件遺留的缺陷越多

4.避免自己測(cè)試自己的程序

5.回歸測(cè)試:避免引入新的錯(cuò)誤。

軟件測(cè)試注意事項(xiàng)

  • 測(cè)試不是開(kāi)發(fā)后期的一個(gè)階段

  • 測(cè)試入門其實(shí)稍容易,但要求技術(shù)一樣高

  • 測(cè)試多數(shù)情況下不能覆蓋所有輸入

  • 不要“有時(shí)間多測(cè),沒(méi)時(shí)間少測(cè)”

  • 軟件測(cè)試不止是測(cè)試人員的事,也是開(kāi)發(fā)人員的事

  • 調(diào)試和測(cè)試不一樣

  • 測(cè)試絕非只運(yùn)行一下軟件看結(jié)果對(duì)不對(duì)

  • L10N:本地化測(cè)試

  • I18N:國(guó)際化測(cè)試

交互對(duì)象

1.系統(tǒng)管理或是運(yùn)維人員

2.開(kāi)發(fā)人員

3.測(cè)試人員

4.其他對(duì)測(cè)試環(huán)境或相關(guān)技術(shù)有影響的人員

5.用戶對(duì)象

常見(jiàn)軟件測(cè)試錯(cuò)誤情況占比

屬于需求分析和軟件設(shè)計(jì)錯(cuò)誤的約占64%,屬于程序編寫(xiě)錯(cuò)誤的僅占36%。

軟件快速應(yīng)用開(kāi)發(fā)模型

V模型:又叫RAD模型(Rap Application Development Model,快速應(yīng)用開(kāi)發(fā)模型),構(gòu)型類似V。其開(kāi)發(fā)階段為:1.需求分析--2.概要設(shè)計(jì)--3.詳細(xì)設(shè)計(jì)--4.軟件編碼--5.單元測(cè)試--6.集成測(cè)試--7.系統(tǒng)測(cè)試--8.驗(yàn)收測(cè)試

測(cè)試意義

1.解放程序員和售后服務(wù)人員

2.軟件測(cè)試可以降低軟件質(zhì)量風(fēng)險(xiǎn),使程序員能夠更專心于解決程序的算法和效率;同時(shí)經(jīng)過(guò)嚴(yán)格檢驗(yàn)的完整產(chǎn)品也減輕了售后服務(wù)人員的工作量。

測(cè)試設(shè)備

PC 、手機(jī)、平板、嵌入式設(shè)備等

測(cè)試網(wǎng)絡(luò)

1.本地網(wǎng)絡(luò)

2.云平臺(tái)網(wǎng)絡(luò)

3.本地和云的混合網(wǎng)絡(luò)

4.WiFi網(wǎng)絡(luò)

軟件開(kāi)發(fā)環(huán)境

1.開(kāi)發(fā)環(huán)境(開(kāi)發(fā)人員)

2.測(cè)試環(huán)境(測(cè)試人員)

3.生產(chǎn)環(huán)境(又叫正式環(huán)境,是指客戶使用的環(huán)境)

軟件測(cè)試的目的

1.為了發(fā)現(xiàn)程序員在開(kāi)發(fā)中存在的代碼以及邏輯錯(cuò)誤。

2.為了審核產(chǎn)品的完成是符合用戶的需求的。

3.為了提高客戶的體驗(yàn)。

4.為了交付更高質(zhì)量的產(chǎn)品。

測(cè)試結(jié)果書(shū)面材料

測(cè)試報(bào)告

測(cè)試數(shù)據(jù)管理方法

測(cè)試數(shù)據(jù)包括業(yè)務(wù)測(cè)試數(shù)據(jù)、基礎(chǔ)數(shù)據(jù)(配置數(shù)據(jù)等)

1.測(cè)試基礎(chǔ)數(shù)據(jù)可備份和還原

2.測(cè)試數(shù)據(jù)的原子化,可高度復(fù)用

3.測(cè)試數(shù)據(jù)的可定制

4.測(cè)試數(shù)據(jù)的可自動(dòng)化維護(hù)(包括但不限于配置、業(yè)務(wù)測(cè)試數(shù)據(jù)等等)

測(cè)試環(huán)境管理的難點(diǎn)

1.高效的規(guī)劃好可用的資源(團(tuán)隊(duì)資源利用率)

2.混合環(huán)境的管理(云技術(shù)、云+私有服務(wù))

3.復(fù)雜環(huán)境管理(業(yè)務(wù)、服務(wù)、部署、跨團(tuán)隊(duì)協(xié)作等)

4.復(fù)雜的配置(基礎(chǔ)環(huán)境更多和技術(shù)應(yīng)用更廣)

管理測(cè)試環(huán)境的技巧

1.在初始化測(cè)試環(huán)境前,應(yīng)當(dāng)全面的檢測(cè)環(huán)境的連通性

2.檢查所有的硬件、軟件、需求、配置等,并形成checklist

3.確定所有測(cè)試設(shè)備、瀏覽器等版本信息,并形成checklist

4.嚴(yán)格規(guī)劃測(cè)試環(huán)境的使用計(jì)劃,例如準(zhǔn)入準(zhǔn)出原則,什么適合更新,什么時(shí)候發(fā)布,什么節(jié)點(diǎn)清理等等

5.盡可能的自動(dòng)化進(jìn)行管理維護(hù)

軟件測(cè)試的流程

需求分析

制定測(cè)試計(jì)劃

設(shè)計(jì)測(cè)試用例與編寫(xiě)(一個(gè)好的高質(zhì)量的測(cè)試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤,一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試)

實(shí)施測(cè)試

提交缺陷報(bào)告

生成測(cè)試總結(jié)和報(bào)告

Web程序bug分析定位技巧

web前端包括:JavaScript、ActionScript、CSS、HTML、Flash、交互式設(shè)計(jì)、視覺(jué)設(shè)計(jì)等。

bug定位通用思路:現(xiàn)象-->原因-->驗(yàn)證字段-->結(jié)論-->現(xiàn)象。

bug定位歸因

1.測(cè)試環(huán)境方面

  • 是否安裝了flash及flash的版本--可能導(dǎo)致部分頁(yè)面顯示出問(wèn)題,目前常用的版本為flash10

  • 是否開(kāi)啟了瀏覽器插件--插件可能導(dǎo)致瀏覽器行為的變化,除非測(cè)試要求,否則一律禁用插件。

  • 是否開(kāi)啟了安全軟件--可能會(huì)截包、彈窗攔截、防釣魚(yú)等。

2.瀏覽器方面

  • 不同瀏覽器的支持標(biāo)準(zhǔn)--不同內(nèi)核的瀏覽器對(duì)js及各種標(biāo)準(zhǔn)的支持不同,因此頁(yè)面解析出來(lái)的效果可能不同。如【IE:trident】、【Firefox:gecko】、【Chrome:webkit】、【Safari:webkit】。

  • 瀏覽器的設(shè)置--禁用js;禁用彈窗;禁用cookie等。

  • 瀏覽器cache策略---js,css,圖片 等都有可能被cache住。CTRL+F5:強(qiáng)制刷新請(qǐng)求。

  • cookie問(wèn)題----跨域,過(guò)期等。

3.網(wǎng)絡(luò)方面

  • 是否發(fā)出了正確的請(qǐng)求--請(qǐng)求url、參數(shù)變量。content數(shù)據(jù)。

  • 是否得到了正確的應(yīng)答---HTTP的返回值:200-正確;302--對(duì)象已移動(dòng);404--沒(méi)找到頁(yè)面。返回?cái)?shù)據(jù)體。

  • 是否性能問(wèn)題--異步請(qǐng)求的數(shù)量過(guò)多;網(wǎng)速過(guò)慢。

4.字符編碼方面

  • 頁(yè)面亂碼--百度后端存儲(chǔ)基本上使用的是GBK編碼,前端提交可能是UTF-8編碼,后端對(duì)非GBK編碼一般采取實(shí)體儲(chǔ)存??赡艹霈F(xiàn)編碼沒(méi)有轉(zhuǎn)換。轉(zhuǎn)換的時(shí)候沒(méi)有判斷半個(gè)漢字(轉(zhuǎn)掉了半個(gè)漢字導(dǎo)致崩潰)

  • url錯(cuò)誤---URL路徑中漢字編碼使用的shi是UTF-8編碼,參數(shù)中使用系統(tǒng)默認(rèn)編碼,flash腳本中使用的都是UTF-8編碼。

安全方面

  • Xss漏洞--輸入一些特定的字符頁(yè)面出現(xiàn)錯(cuò)亂或有惡意代碼被執(zhí)行,RD未對(duì)特殊字符轉(zhuǎn)義完整。

性能方面

  • 圖片數(shù)量---頁(yè)面中同一個(gè)域的圖片的數(shù)量控制在16個(gè)以下,IE會(huì)控制同一個(gè)域圖片并行的下載數(shù)量。

  • 頁(yè)面抖動(dòng)--異步請(qǐng)求的數(shù)量過(guò)多

  • 加載失敗--限速情況下,超時(shí)。

bug定位常用工具:

Firfox--firebug、web developer、live http headers、http fox ;

IE插件--HTTPwatch

第三方工具---fiddler

慢速網(wǎng)模擬工具---firefox throttle.

Web后端bug分析

后端包含運(yùn)行在服務(wù)器上的程序、腳本和服務(wù)。例:各種羅及處理系統(tǒng)、數(shù)據(jù)存儲(chǔ)系統(tǒng)等。

后端可能發(fā)現(xiàn)的問(wèn)題--邏輯、數(shù)據(jù)、策略、接口、性能等。

測(cè)試bug定位歸因

1.數(shù)據(jù)流方面

  • 上下游模塊是否正常連接---模塊的ip和端口的配置,白/黑名單配置,session授權(quán)等。

  • 模塊的數(shù)據(jù)發(fā)送接收是否正常--日志是否有滾動(dòng),是否顯示發(fā)送了數(shù)據(jù)或接收到數(shù)據(jù),數(shù)據(jù)是否完整,跨機(jī)房,負(fù)載均衡算法(從哪些機(jī)器上獲取數(shù)據(jù))。

  • 非socket的數(shù)據(jù)傳輸--共享內(nèi)存(是否分配,key的配置等),cache(是否創(chuàng)建、臟數(shù)據(jù)等),數(shù)據(jù)庫(kù)(配置,連接,表,觸發(fā)器,存儲(chǔ)過(guò)程)、文件(大小、訪問(wèn)權(quán)限)

  • 模塊之間的接口--協(xié)議的一致性(mcpack1,mcpack2等),字段的一致性(一個(gè)按signed解析,一個(gè)按unsigned解析),字段復(fù)用等。

2.處理邏輯方面

  • 程序的各種配置--功能是否kai開(kāi)啟/關(guān)閉,詞表是否加載,各種閾值的配置,超時(shí)配置等。

  • 程序日志--日志級(jí)別,交互的流程,處理的流程等。

  • 各種邊界--數(shù)據(jù)邊界(int,long),文件邊界(空文件,分文件的邊界),時(shí)間邊界等。

  • 各種資源的使用--cache是否遺留臟數(shù)據(jù),并發(fā)和鎖死。

3.系統(tǒng)和環(huán)境方面

  • 系統(tǒng)資源--CPU、IO、句柄、內(nèi)存、網(wǎng)絡(luò)狀態(tài)、數(shù)據(jù)庫(kù)狀態(tài),數(shù)據(jù)庫(kù)連接數(shù)。

  • 環(huán)境資源---程序版本、內(nèi)核版本,網(wǎng)絡(luò)(外網(wǎng))訪問(wèn)權(quán)限,系統(tǒng)動(dòng)態(tài)庫(kù)不一致等

4.程序和代碼方面

  • 確認(rèn)問(wèn)題出現(xiàn)的位置--日志中的代碼行,gdb中的代碼行,拋出異常顯示的代碼行

  • 獲取當(dāng)時(shí)的運(yùn)行時(shí)信息--Gdb core文件 ,gdb attach到進(jìn)程,查看堆棧,查看寄存器,設(shè)置breakpoint,watchpoint ,查看內(nèi)部數(shù)據(jù)。

  • 獲取程序和系統(tǒng)信息---Strace查看系統(tǒng)調(diào)用,系統(tǒng)狀態(tài)獲?。╬s,top,/proc/pid/*,vmstat,netstat)

  • 更深入的手段--反匯編(IL Spy)、查看寄存器,gdb高級(jí)應(yīng)用

注:

gdb工具: UNIX及UNIX-like下的調(diào)試工具, 像VC、BCB等IDE的調(diào)試。

后端測(cè)試bug定位

日志查看命令

  • 查看壓力--tail -f as. log | grep '^NOTICE' | awk '{print $3}' |uniq -c

  • 排除日志中的特定內(nèi)容——grep -v 'pattern' as.log

  • 只輸出感興趣的內(nèi)容——grep -o 'proctime:toal:\d+' as.log;grep -o 'proctime:toal:\d+' as.log | grep -o '\d+ ';grep -o 'proctime:toal:\d+' as.log | grep -o '\d+ ' | sort -n | uniq -c

  • 將wf日志歸類——grep -o '\w+\.(cpp|h):\d+' as.log.wf | sort | uniq -c

gdb常用命令

  • bt——查看堆棧信息

  • print——打印某變量值

  • break——設(shè)置斷點(diǎn)

  • x/i——翻譯當(dāng)前指令為匯編

  • info thread——查看所有線程,星號(hào)*標(biāo)記的是當(dāng)前線程

  • thread num——切換到線程號(hào)為num的線程

  • set scheduler -locking on——鎖定在線程:輸入continue命令以后,當(dāng)前線程繼續(xù)執(zhí)行,其它線程不執(zhí)行

  • set scheduler-locking off——這是默認(rèn)設(shè)置,輸入continue命令以后,所有線程都繼續(xù)執(zhí)行

性能測(cè)試

  • 旨在獲取系統(tǒng)在特定一種或多種環(huán)境下,在不同的外部輸入壓力(包含極限)的條件下的系統(tǒng)各項(xiàng)指標(biāo)的測(cè)試

  • 進(jìn)程相關(guān)——ps,top,/proc/pid/*

  • 系統(tǒng)相關(guān)——vmstat,top,iostat,sar,df,lsof

  • 網(wǎng)絡(luò)相關(guān)——netstat

bug定位歸因:

1.壓力工具方面

  • 工具的功能和性能--能否達(dá)到預(yù)期壓力,啟動(dòng)壓力的機(jī)械性能,壓力工具是否有異常連接關(guān)閉,壓力工具如何處理異常,長(zhǎng)連接短連接,并發(fā)個(gè)數(shù)

  • 工具運(yùn)行環(huán)境--壓力機(jī)器的帶寬,是否跨機(jī)房。

2.被測(cè)試系統(tǒng)方面

  • 機(jī)器性能--系統(tǒng)所在機(jī)器性能,機(jī)器網(wǎng)絡(luò)帶寬,機(jī)器的內(nèi)存,SD卡,硬盤等

  • 系統(tǒng)本身--系統(tǒng)的下游模塊的性能,系統(tǒng)的配置,系統(tǒng)的數(shù)據(jù)量,系統(tǒng)的特點(diǎn)狀態(tài)(cache、dump、merge),系統(tǒng)的部署,程序的bug等

3.環(huán)境方面

  • 操作系統(tǒng)相關(guān)---是否和線上一致,內(nèi)核版本,刷臟葉時(shí)間,有沒(méi)有調(diào)用directIO

  • 查看系統(tǒng)狀態(tài)--Ps,top,/proc/pid/*,vmstat,netstat.

注:

正確的思路+豐富的業(yè)務(wù)知識(shí)+豐富的技術(shù)背景知識(shí)+較好的調(diào)試和開(kāi)發(fā)能力 = 強(qiáng)大的bug定位能力。

Web測(cè)試流程

功能測(cè)試

1.鏈接測(cè)試:鏈接測(cè)試必須在集成測(cè)試階段完成

2.表單測(cè)試:提交信息

3.Cookies測(cè)試:Cookie是指網(wǎng)站用于辨別身份,進(jìn)行會(huì)話(session)跟蹤而存儲(chǔ)在客戶端的數(shù)據(jù)。源頭:服務(wù)器產(chǎn)生并發(fā)送給客戶端的。用途:提供一個(gè)方便的功能以簡(jiǎn)化用戶輸入,節(jié)省訪問(wèn)頁(yè)面的時(shí)間。

cookies創(chuàng)建對(duì)象類型:JavaScript、VBScript等HTLM頁(yè)面中的客戶端腳本,使用MS win32 Internet函數(shù)(Internetsetcookie和Internetgetcookie)的win32程序、JSP/ASP等頁(yè)面中的服務(wù)器端腳本。

禁用Cookie:1.可能會(huì)導(dǎo)致某些web系統(tǒng)無(wú)法正常運(yùn)行 2.使用戶無(wú)法進(jìn)行匿名訪問(wèn)3.使web系統(tǒng)無(wú)法跟蹤用戶的瀏覽習(xí)慣。

第三方Cookie和第一方Cookie:1.第一方cookie是與宿主域名相關(guān)聯(lián)的cookie2.第三方cookie是來(lái)自任何其他域名的cookie

持久Cookie和會(huì)話Cookie:會(huì)話cookie是Cookie存儲(chǔ)在內(nèi)存中,持久cookie是cookie儲(chǔ)存在硬盤中,被寫(xiě)入用戶配置文件夾下的cookie文件夾,瀏覽器臨時(shí)文件索引會(huì)使用指向cookie文件的指針進(jìn)行更新。

cookie測(cè)試:

a.會(huì)話cookie測(cè)試:重新登錄時(shí)沒(méi)有上次操作的痕跡。

b.持久cookie測(cè)試的常規(guī)測(cè)試:重新登錄時(shí)保留上次操作的痕跡。

c.持久cookie測(cè)試的更新測(cè)試:重新登錄前進(jìn)行其他操作,檢查是否仍保留上次操作的痕跡。

d.持久cookie測(cè)試的設(shè)置測(cè)試:在瀏覽器中對(duì)cookie是否禁用或者cookie的使用級(jí)別進(jìn)行測(cè)試。如在IE瀏覽器的“選項(xiàng)”功能中,“安全”選項(xiàng)卡和“隱私”選項(xiàng)卡就可以對(duì)cookie進(jìn)行設(shè)置。

4.設(shè)計(jì)語(yǔ)言測(cè)試:版本的差異可以引起客戶端或服務(wù)器端嚴(yán)重的問(wèn)題。除了 HTML 的版本問(wèn)題外,不同的腳本語(yǔ)言,例如 Java 、 JavaScript、 ActiveX 、 VBScript 或 Perl 等也要進(jìn)行驗(yàn)證。

5.數(shù)據(jù)庫(kù)測(cè)試:數(shù)據(jù)庫(kù)為Web提供空間,在 Web 應(yīng)用中,最常用的數(shù)據(jù)庫(kù)類型是關(guān)系型數(shù)據(jù)庫(kù),可以使用 SQL 對(duì)信息進(jìn)行處理。兩大錯(cuò)誤類型:數(shù)據(jù)一致性錯(cuò)誤和數(shù)據(jù)輸出錯(cuò)誤。

數(shù)據(jù)一致性錯(cuò)誤:主要是由于用戶提交的表單信息不正確而造成的

輸出錯(cuò)誤:主要是由于網(wǎng)絡(luò)速度或程序設(shè)計(jì)問(wèn)題等引起的。

性能測(cè)試(測(cè)試工具:LoadRunner)

1.連接速度測(cè)試:用戶連接到 Web 應(yīng)用系統(tǒng)的速度根據(jù)上網(wǎng)方式(電話撥號(hào)、寬帶上網(wǎng))的變化而變化。另有超時(shí)限制等。

2.負(fù)載測(cè)試:測(cè)量 Web 系統(tǒng)在某一負(fù)載級(jí)別上的性能,以保證 Web 系統(tǒng)在需求范圍內(nèi)能正常工作。負(fù)載級(jí)別可以是某個(gè)時(shí)刻同時(shí)訪問(wèn) Web 系統(tǒng)的用戶數(shù)量,也可以是在線數(shù)據(jù)處理的數(shù)量。

3.壓力測(cè)試:壓力測(cè)試是測(cè)試系統(tǒng)的限制和故障恢復(fù)能力,也就是測(cè)試 Web 應(yīng)用系統(tǒng)會(huì)不會(huì)崩潰,在什么情況下會(huì)崩潰。黑客常常提供錯(cuò)誤的數(shù)據(jù)負(fù)載,直到 Web 應(yīng)用系統(tǒng)崩潰,接著當(dāng)系統(tǒng)重新啟動(dòng)時(shí)獲得存取權(quán)。壓力測(cè)試的區(qū)域包括表單、登陸和其他信息傳輸頁(yè)面等

4.網(wǎng)頁(yè)性能Firefox插件:Yslow,F(xiàn)indbug,PageSpeed

5.Dynatrace檢查網(wǎng)頁(yè)性能(性能分析工具)

6.LoadRunner性能測(cè)試工具原理:錄制+回放模擬用戶實(shí)際操作場(chǎng)景,監(jiān)控并分析運(yùn)行結(jié)果。

可用性測(cè)試

1.導(dǎo)航測(cè)試: Web 應(yīng)用系統(tǒng)的用戶趨向于目的驅(qū)動(dòng),很快地掃描一個(gè) Web 應(yīng)用系統(tǒng),看是否有滿足自己需要的信息,如果沒(méi)有,就會(huì)很快地離開(kāi)。導(dǎo)航的另一個(gè)重要方面是 Web 應(yīng)用系統(tǒng)的頁(yè)面結(jié)構(gòu)、導(dǎo)航、菜單、連接的風(fēng)格是否一致。確保簡(jiǎn)潔明了。

2.圖形測(cè)試:一個(gè) Web 應(yīng)用系統(tǒng)的圖形可以包括圖片、動(dòng)畫(huà)、邊框、顏色、字體、背景、按鈕等,確保圖形有明確的用途。作用: 廣告宣傳、美化頁(yè)面。格式:一般用JPG或GIF壓縮。

3.內(nèi)容測(cè)試:用來(lái)檢驗(yàn) Web 應(yīng)用系統(tǒng)提供信息的正確性、準(zhǔn)確性和相關(guān)性。(商品價(jià)目表、office糾錯(cuò)功能、網(wǎng)頁(yè)拓展鏈接功能)

4.整體界面測(cè)試:指整個(gè) Web 應(yīng)用系統(tǒng)的頁(yè)面結(jié)構(gòu)設(shè)計(jì),是給用戶的一個(gè)整體感。方式:調(diào)查問(wèn)卷形式。

兼容性測(cè)試

1.平臺(tái)兼容性測(cè)試:操作系統(tǒng)類型Windows 、 Unix 、 Macintosh 、 Linux等,與用戶系統(tǒng)的配置有關(guān)。

2.瀏覽器測(cè)試:瀏覽器是 Web 客戶端最核心的構(gòu)件,來(lái)自不同廠商的瀏覽器對(duì) Java 、 JavaScript 、 ActiveX 、 plug-ins 或不同的 HTML 規(guī)格有不同的支持。包括瀏覽器類型及版本測(cè)試。另外,框架和層次結(jié)構(gòu)風(fēng)格在不同的瀏覽器中也有不同的顯示,甚至根本不顯示。不同的瀏覽器對(duì)安全性和 Java 的設(shè)置也不一樣。方式:創(chuàng)建兼容性矩陣。

ActiveX 是 Microsoft 的產(chǎn)品,是為 Internet Explorer 而設(shè)計(jì)的;JavaScript 是 Netscape 的產(chǎn)品;Java 是 Sun 的產(chǎn)品

安全性測(cè)試

1.測(cè)試區(qū)域:Web 應(yīng)用系統(tǒng)基本采用先注冊(cè),后登陸的方式。測(cè)試重點(diǎn)內(nèi)容:必須測(cè)試有效和無(wú)效的用戶名和密碼,要注意到是否大小寫(xiě)敏感,可以試多少次的限制,是否可以不登陸而直接瀏覽某個(gè)頁(yè)面等。

2. Web 應(yīng)用系統(tǒng)是否有超時(shí)的限制,即登錄超時(shí)提醒。

3.保證 Web 應(yīng)用系統(tǒng)的安全性,保留日志文件。實(shí)現(xiàn)測(cè)試信息記錄及可追蹤性。

4.當(dāng)使用了安全套接字時(shí),還要測(cè)試加密是否正確,檢查信息的完整性。

5.服務(wù)器端的腳本常常構(gòu)成安全漏洞,這些漏洞又常常被黑客利用。需測(cè)試沒(méi)有經(jīng)過(guò)授權(quán),就不能在服務(wù)器端放置和編輯腳本的問(wèn)題。

自動(dòng)化測(cè)試

主要方式:錄制+回放+腳本。

常用的自動(dòng)化測(cè)試工具:

功能測(cè)試工具:QTP

性能測(cè)試工具:LoadRunner

  • 寫(xiě)腳本或者錄制腳本

  • 使用用戶自定義參數(shù)

  • 場(chǎng)景設(shè)計(jì)

  • 產(chǎn)生虛擬用戶的機(jī)制:使用控制器,來(lái)控制模擬多少用戶。

  • 使用監(jiān)聽(tīng)器,查看測(cè)試結(jié)果

(1)、驅(qū)動(dòng)模塊(driver):相當(dāng)于所測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給所測(cè)模塊,最后再輸出實(shí)際測(cè)試結(jié)果;

(2)、樁模塊(stub):用于代替所測(cè)模塊調(diào)用的子模塊。樁模塊可以做少量的數(shù)據(jù)操作,不需要把子模塊所有功能都帶進(jìn)來(lái),但不容許什么事情也不做。

打樁:一般在做單元或集成測(cè)試時(shí),如果某個(gè)程序單元的某條語(yǔ)句,需要調(diào)用的一個(gè)外部函數(shù)還沒(méi)有設(shè)計(jì)、編碼、調(diào)試完成的話,可以只讓它簡(jiǎn)單地返回幾個(gè)支持測(cè)試用例的值就可以了,這種狀態(tài)的外部函數(shù)一般就叫做“打樁”。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多