软件测试笔记
@[DOC]
- 軟件=程序+文檔+數(shù)據(jù)
- 程序:指的是能夠?qū)崿F(xiàn)某種功能的指令集合,如C語(yǔ)言程序。
- 數(shù)據(jù):使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)。
- 文檔:軟件在開(kāi)發(fā)、使用和維護(hù)過(guò)程中產(chǎn)生的圖文集合。
軟件測(cè)試的概念
- 在規(guī)定條件下對(duì)程序進(jìn)行操作,發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件質(zhì)量,并對(duì)其是否能滿(mǎn)足設(shè)計(jì)要求進(jìn)行評(píng)估的過(guò)程。
軟件測(cè)試目標(biāo)
盡早、盡快、盡多的發(fā)現(xiàn)軟件缺陷,促進(jìn)軟件質(zhì)量和客戶(hù)滿(mǎn)意度的提升。
軟件測(cè)試步驟
需求評(píng)審——測(cè)試計(jì)劃——測(cè)試用例設(shè)計(jì)——環(huán)境搭建——測(cè)試執(zhí)行(缺陷提交、回歸驗(yàn)證)——測(cè)試報(bào)告。
測(cè)試計(jì)劃的編寫(xiě)原則
- 5W1H原則
1.what(做什么):測(cè)試范圍
2.why(為什么做):測(cè)試目標(biāo)
3.when(何時(shí)做)
4.where(在哪里):測(cè)試環(huán)境
5.who(誰(shuí)來(lái)做)
6.how(如何做)
- 測(cè)試計(jì)劃的主要工作:
1.確定測(cè)試資源。
2.工作量估算,進(jìn)度安排。
3.風(fēng)險(xiǎn)分析,測(cè)試策略。
4.編寫(xiě)計(jì)劃書(shū)
測(cè)試用例
設(shè)計(jì)一種條件,軟件在該條件下能夠正常運(yùn)行,并達(dá)到期望效果。
- 包括內(nèi)容(八大要素)
1.測(cè)試用例編號(hào):產(chǎn)品名
2.測(cè)試階段測(cè)試項(xiàng)目:對(duì)應(yīng)一個(gè)功能模塊(細(xì)分功能)
3.測(cè)試標(biāo)題:直接對(duì)測(cè)試點(diǎn)進(jìn)行計(jì)劃,輸入內(nèi)容+結(jié)果,同一功能不能重復(fù),(來(lái)自測(cè)試點(diǎn))。
4.重要級(jí)別:高·中·低
5.預(yù)置條件:需要滿(mǎn)足一些前提條件,否則無(wú)法執(zhí)行測(cè)試用例。
6.測(cè)試輸入:需要加工的測(cè)試信息,根據(jù)具體情況來(lái)設(shè)計(jì),(跟步驟結(jié)合起來(lái),要有指導(dǎo)性意義)。
7.步驟描述:明確給出每個(gè)步驟的描述,執(zhí)行人員可以通過(guò)該步驟完成操作。
8.預(yù)期結(jié)果:根據(jù)預(yù)期輸出對(duì)比實(shí)際結(jié)果,來(lái)判斷實(shí)際結(jié)果是否符合要求。(預(yù)期結(jié)果唯一,不能出現(xiàn)是否、可能) 測(cè)試結(jié)果、測(cè)試者/時(shí)間、備注。
- 測(cè)試用例的設(shè)計(jì)方法:等價(jià)類(lèi)劃分法、邊界值法、錯(cuò)誤推測(cè)法、因果圖法。
簡(jiǎn)單的產(chǎn)品通用測(cè)試用例設(shè)計(jì)思路:
- 外觀(guān)界面: 測(cè)試產(chǎn)品的外觀(guān)界面是否完美,是否符合設(shè)計(jì)規(guī)范。
- 功能性: 測(cè)試產(chǎn)品的各項(xiàng)功能是否能正常使用。
- 性能: 測(cè)試產(chǎn)品在特定環(huán)境下是否能保持它的穩(wěn)定性。
- 安全性: 測(cè)試產(chǎn)品自身或在使用過(guò)程中是否會(huì)產(chǎn)生安全性的問(wèn)題。
- 易用性: 測(cè)試產(chǎn)品使用起來(lái)是否復(fù)雜,用戶(hù)體驗(yàn)是否良好。
- 兼容性: 測(cè)試產(chǎn)品使用過(guò)程中是否可以兼容其它產(chǎn)品。
測(cè)試環(huán)境
- B/S(Browser-Server)架構(gòu):瀏覽器-服務(wù)器架構(gòu),通過(guò)瀏覽器打開(kāi)的應(yīng)用軟件,B/S使用廣域網(wǎng),不用專(zhuān)用網(wǎng)絡(luò),安全性較低。
- C/S(Client-Server)架構(gòu):客戶(hù)機(jī)-服務(wù)器架構(gòu),通過(guò)客戶(hù)端打開(kāi)的應(yīng)用軟件,需要安裝客戶(hù)端,C/S使用局部專(zhuān)用網(wǎng)絡(luò),安全性較高。測(cè)試環(huán)境的搭建,VMware的安裝。
測(cè)試執(zhí)行
- 記錄BUG,BUG管理工具“禪道”的使用。了解BUG管理工具Test Director/TD,Quality Center/QC是TD的升級(jí)版/JIRA.Mantis等。
- 一個(gè)完整的BUG包括哪些內(nèi)容:BUG的摘要(BUG的主要信息,一兩句話(huà)即可)
- BUG的具體描述:BUG的嚴(yán)重程度,BUG的優(yōu)先級(jí),BUG的狀態(tài),指派給誰(shuí),必要的附件(圖片或日志),BUG的其他信息點(diǎn)。
- BUG的常用狀態(tài):激活、已解決、關(guān)閉。
- BUG的處理流程:記錄BUG,提交BUG,回歸測(cè)試。
軟件測(cè)試報(bào)告
- 定義:測(cè)試報(bào)告是一份描述軟件的測(cè)試過(guò)程、測(cè)試環(huán)境、測(cè)試范圍、測(cè)試結(jié)果的文檔,用來(lái)分析總結(jié)系統(tǒng)存在的風(fēng)險(xiǎn)以及測(cè)試結(jié)論。
- 包括內(nèi)容:
1.測(cè)試過(guò)程:測(cè)試過(guò)程需要對(duì)測(cè)試人員、測(cè)試時(shí)間、測(cè)試地點(diǎn)、測(cè)試版本等信息進(jìn)行描述。
2.測(cè)試環(huán)境:是指軟件環(huán)境和硬件環(huán)境。
3.測(cè)試范圍:是指所測(cè)模塊上的所有功能點(diǎn)。
4.測(cè)試結(jié)果:指測(cè)試用例執(zhí)行的情況匯總,執(zhí)行結(jié)果通過(guò)率,BUG的問(wèn)題匯總,BUG的分布情況等,其他有關(guān)聯(lián)的測(cè)試結(jié)果都可以在這里描述。
5.系統(tǒng)存在的風(fēng)險(xiǎn):系統(tǒng)中遺留的BUG會(huì)對(duì)軟件造成什么風(fēng)險(xiǎn)。
6.測(cè)試結(jié)論:能否上線(xiàn)(通過(guò))的結(jié)論。
7.附件清單:測(cè)試用例執(zhí)行的清單和BUG清單。
常見(jiàn)的軟件開(kāi)發(fā)模型:
- 大爆炸模型
最簡(jiǎn)單的開(kāi)發(fā)模式,計(jì)劃進(jìn)度安排和正規(guī)開(kāi)發(fā)過(guò)程幾乎沒(méi)有,幾乎沒(méi)有測(cè)試,所有精力都花費(fèi)在開(kāi)發(fā)軟件和編寫(xiě)代碼上。
- 邊寫(xiě)邊改模型
摸著石頭過(guò)河模型,典型的非正規(guī)說(shuō)明書(shū)—編碼、修改、反復(fù),直到—最終產(chǎn)品;(沒(méi)有計(jì)劃和文檔)
- 瀑布模型
從最初構(gòu)思到最終產(chǎn)品要經(jīng)過(guò)一系列步驟,每一個(gè)步驟結(jié)束時(shí),寫(xiě)好文檔,項(xiàng)目小組組織審查,并決定是否進(jìn)入下一步。如果項(xiàng)目沒(méi)有準(zhǔn)備好進(jìn)入下一步,就停滯下來(lái)直到準(zhǔn)備好。(有完整細(xì)致的說(shuō)明,所有細(xì)節(jié)都有文檔記錄)
- 螺旋模型
計(jì)劃趕得上變化的模型,適合于大型復(fù)雜系統(tǒng);測(cè)試人員最喜歡的模型,因?yàn)橥ㄟ^(guò)參與最早設(shè)計(jì)階段,可以盡早的影響到產(chǎn)品。
- 敏捷開(kāi)發(fā)模型
敏捷開(kāi)發(fā)提倡迭代式和增量式的開(kāi)發(fā)模式,并強(qiáng)調(diào)測(cè)試在其中的作用;以用戶(hù)為中心,以客戶(hù)需求為導(dǎo)向的開(kāi)發(fā)過(guò)程,客戶(hù)是敏捷的關(guān)鍵環(huán)節(jié),依賴(lài)客戶(hù)的參與、測(cè)試驅(qū)動(dòng)以及緊湊的迭代開(kāi)發(fā)周期。
常見(jiàn)的軟件測(cè)試模型
- V模型
用戶(hù)需求–>需求分析–>概要設(shè)計(jì)–>詳細(xì)設(shè)計(jì)–>編碼–>單元測(cè)試–>集成測(cè)試–>系統(tǒng)測(cè)試–>驗(yàn)收測(cè)試
V模型明確的將測(cè)試分為不同的階段,測(cè)試策略包括:底層測(cè)試和高層測(cè)試,底層測(cè)試是為了源代碼的正確,高層測(cè)試是為了整個(gè)系統(tǒng)滿(mǎn)足用戶(hù)的需求。
缺點(diǎn):測(cè)試的對(duì)象是程序本身,忽視了測(cè)試對(duì)需求分析、系統(tǒng)設(shè)計(jì)等活動(dòng)的驗(yàn)證和確認(rèn)功能,直到后期的驗(yàn)收測(cè)試才被發(fā)現(xiàn);過(guò)程是線(xiàn)性的、順序的,不能反復(fù)和迭代。
- W模型
左V: 需求分析–>概要設(shè)計(jì)–>詳細(xì)設(shè)計(jì)–>編碼實(shí)現(xiàn)(最底層)–>模塊集成–>系統(tǒng)構(gòu)建–>系統(tǒng)安裝;
右V: 需求測(cè)試–>概要設(shè)計(jì)測(cè)試–>詳細(xì)設(shè)計(jì)測(cè)試–>單元測(cè)試(最底層)–>集成測(cè)試–>系統(tǒng)測(cè)試–>驗(yàn)收測(cè)試;
優(yōu)點(diǎn):開(kāi)發(fā)和測(cè)試同步,有利于盡早的發(fā)現(xiàn)問(wèn)題;測(cè)試伴隨整個(gè)軟件開(kāi)發(fā)周期,程序、需求、設(shè)計(jì)全部測(cè)試。
缺點(diǎn):需求、設(shè)計(jì)、編碼等活動(dòng)保持線(xiàn)性前后關(guān)系,無(wú)法支持迭代開(kāi)發(fā)模型。
- H模型
測(cè)試級(jí)別之間不存在嚴(yán)格的次序關(guān)系,各階段可以反復(fù)觸發(fā)、迭代、增量。將測(cè)試完全獨(dú)立出來(lái),形成一個(gè)完全獨(dú)立的流程,測(cè)試貫穿產(chǎn)品整個(gè)生命周期。
- X模型
左邊描述的是針對(duì)單獨(dú)程序片段進(jìn)行相互分離的編碼和測(cè)試,通過(guò)頻繁交接,最終集成為可執(zhí)行的程序,再對(duì)這些可執(zhí)行的程序進(jìn)行測(cè)試。
理念:探索性測(cè)試,不進(jìn)行實(shí)現(xiàn)計(jì)劃的特殊類(lèi)型測(cè)試,發(fā)散性測(cè)試。
優(yōu)點(diǎn):能發(fā)現(xiàn)更多測(cè)試計(jì)劃之外的錯(cuò)誤。
缺點(diǎn):對(duì)測(cè)試人員要求極高,時(shí)間、人力、物力、等成本增加。
- 敏捷測(cè)試模型
敏捷測(cè)試宗旨:測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
核心價(jià)值觀(guān):溝通、反饋、尊重、學(xué)習(xí)、分享。
敏捷測(cè)試是協(xié)同測(cè)試的一種形式,程序員結(jié)對(duì)編程,程序員分飾測(cè)試員角色,敏捷測(cè)試是連續(xù)測(cè)試;側(cè)重單元測(cè)試和驗(yàn)收測(cè)試,單元測(cè)試的過(guò)程是先設(shè)計(jì)單元測(cè)試用例,然后進(jìn)行編碼,之后執(zhí)行測(cè)試。
強(qiáng)調(diào)客戶(hù)參與,重點(diǎn)關(guān)注持續(xù)迭代的測(cè)試新開(kāi)發(fā)的功能,建議盡早開(kāi)始測(cè)試。單元測(cè)試通過(guò)之后代碼集成到代碼庫(kù)中,再有客戶(hù)進(jìn)行驗(yàn)收測(cè)試。
- 測(cè)試模型的使用:盡可能應(yīng)用模型中對(duì)項(xiàng)目有實(shí)用價(jià)值的方面,不強(qiáng)行為了是用模型而使用模型,否則也沒(méi)有實(shí)際意義,各種模型可以適當(dāng)使用。
HTML基礎(chǔ)
HTML 是用來(lái)描述網(wǎng)頁(yè)的一種語(yǔ)言。HTML 是一種在 Web 上使用的通用標(biāo)記語(yǔ)言。HTML 允許你格式化文本,添加圖片,創(chuàng)建鏈接、輸入表單、框架和表格等等,并可將之存為文本文件,瀏覽器即可讀取和顯示。
- HTML 指的是超文本標(biāo)記語(yǔ)言: HyperText Markup Language
- HTML 不是一種編程語(yǔ)言,而是一種標(biāo)記語(yǔ)言
- 標(biāo)記語(yǔ)言是一套標(biāo)記標(biāo)簽 (markup tag)
- HTML 使用標(biāo)記標(biāo)簽來(lái)描述網(wǎng)頁(yè)
- HTML 文檔包含了HTML 標(biāo)簽及文本內(nèi)容
- HTML文檔也叫做 web 頁(yè)面
入門(mén)實(shí)例
新建一個(gè)test HTML文件,如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZONGXP</title> </head> <body><h1>我的第一個(gè)標(biāo)題</h1> <p>我的第一個(gè)段落。</p></body> </html>- 聲明為HTML5文檔
- 元素是 HTML 頁(yè)面的根元素
- 元素包含了文檔的元(meta)數(shù)據(jù),如 定義網(wǎng)頁(yè)編碼格式為 utf-8(由于在大部分瀏覽器中直接輸出中文會(huì)出現(xiàn)亂碼,所以要在頭部將字符聲明為UTF-8)
- 元素描述了文檔的標(biāo)題
- 元素包含了可見(jiàn)的頁(yè)面內(nèi)容
- < h1> 元素定義一個(gè)大標(biāo)題
- < p>元素定義一個(gè)段落
- 保存后運(yùn)行,即可在瀏覽器中打開(kāi)
CSS
- 層疊樣式(cascading style sheets)
- css可以用來(lái)為網(wǎng)頁(yè)創(chuàng)建樣式表,通過(guò)樣式表可以對(duì)網(wǎng)頁(yè)進(jìn)行裝飾。
- 所謂層疊,可以將整個(gè)網(wǎng)頁(yè)想象成是一層一層的結(jié)構(gòu),層次高的將會(huì)覆蓋層次低的。
- 而CSS就可以分別為網(wǎng)頁(yè)的各個(gè)層次設(shè)置樣式。
- 可以將CSS樣式編寫(xiě)到元素的style屬性中,這種樣式我們稱(chēng)為內(nèi)聯(lián)樣式,內(nèi)聯(lián)樣式只對(duì)當(dāng)前的元素中的內(nèi)容起作用如下:
- 也可以將css樣式編寫(xiě)到head中的style標(biāo)簽里,然后通過(guò)CSS選擇器選中指定元素,然后可以同時(shí)為這些元素一起設(shè)置樣式,這樣可以使樣式進(jìn)一步復(fù)用。將樣式表寫(xiě)到style標(biāo)簽中,也可以使表現(xiàn)和結(jié)構(gòu)進(jìn)一步分離?!就扑]使用(內(nèi)部樣式表)】
- CSS語(yǔ)法
- CSS常用選擇器
- –另HTML詳細(xì)資料見(jiàn):https://developer.mozilla.org/zh-CN/docs/Learn/HTML
Web測(cè)試的范圍
- 功能 主要從鏈接、表單、cookies、設(shè)計(jì)語(yǔ)言、數(shù)據(jù)庫(kù)、文件上傳等。
鏈接也稱(chēng)超鏈接,是指從一個(gè)網(wǎng)頁(yè)指向另一個(gè)目標(biāo)的連接關(guān)系,所指向的目標(biāo)可能是一個(gè)網(wǎng)頁(yè),相同網(wǎng)頁(yè)的不同位置,圖片、電子郵件地址、文件、應(yīng)用程序等;
鏈接最容易出現(xiàn)的幾個(gè)錯(cuò)誤:錯(cuò)誤鏈接,如URL地址錯(cuò)誤,空鏈接、死鏈接、孤立頁(yè)面。
表單是系統(tǒng)與用戶(hù)交換最主要的界面,測(cè)試過(guò)程主要關(guān)注程序能否正確處理客戶(hù)提交的信息,并將信息正確的反饋到客戶(hù)端,測(cè)試重點(diǎn): 文本輸入框?qū)﹂L(zhǎng)度是否有限制, 文本輸入框?qū)ψ址?lèi)型是否有限制,文本輸入框模式匹配是否正確,各按鈕實(shí)現(xiàn)的功能是否正確。
cookies是能夠讓網(wǎng)站服務(wù)器把少量數(shù)據(jù)存儲(chǔ)到客戶(hù)端的硬盤(pán)或內(nèi)存,或是從客戶(hù)端的硬盤(pán)讀取數(shù)據(jù)的技術(shù)。cookie的用途:
1>自動(dòng)登錄,登錄時(shí)選擇記住用戶(hù)名,下次登錄時(shí)會(huì)自動(dòng)帶出用戶(hù)名。
2>廣告精準(zhǔn)投放,主動(dòng)推送瀏覽過(guò)的商品。
cookies的測(cè)試方面:
1>cookies的安全性,不要存儲(chǔ)一些敏感信息,進(jìn)行字段加密。
2>cookies過(guò)期時(shí)間是否正確。
3>cookies的變量名與值是否正確。
4>cookies是否必要,是否缺少:一是生成的cookies文件是否與創(chuàng)建的一致,不能多也不能少,二是對(duì)于不必要的cookies可以刪除。
5>cookies的作用域是否正確合理,多個(gè)作用域之間關(guān)系的測(cè)試。
設(shè)計(jì)語(yǔ)言測(cè)試web設(shè)計(jì)語(yǔ)言版本的差異可以引起客戶(hù)端與服務(wù)端的嚴(yán)重問(wèn)題,如HTML的版本;不同腳本語(yǔ)言,如Java,JavaScript,ActiveX,VBScript或perl等,也要進(jìn)行驗(yàn)證。不同的設(shè)計(jì)語(yǔ)言與平臺(tái)有不同的兼容性。不同的腳本語(yǔ)言執(zhí)行的時(shí)間也不同;嵌入其他語(yǔ)言的能力,要考慮當(dāng)前腳本語(yǔ)言對(duì)其他語(yǔ)言的支持程度;數(shù)據(jù)庫(kù)可能升級(jí),測(cè)試時(shí)要注意腳本語(yǔ)言支持?jǐn)?shù)據(jù)庫(kù)的完善程度。
文件上傳只能上傳允許的附件類(lèi)型,不能上傳腳本或可執(zhí)行文件;不能單純以后綴名來(lái)判斷文件類(lèi)型,上傳的文件應(yīng)該提供接口查看;上傳的文件不應(yīng)該直接保存到數(shù)據(jù)庫(kù)中,而是將文件保存到服務(wù)器端的硬盤(pán),該文件的基本信息保存到數(shù)據(jù)庫(kù)。該文件上傳到服務(wù)器后應(yīng)該重命名,防止文件名沖突。
- 性能
鏈接速度速度測(cè)試,鏈接的響應(yīng)速度時(shí)間不能太長(zhǎng),一般不超過(guò)5秒。
負(fù)載測(cè)試(load testing),測(cè)試系統(tǒng)能夠承受的最大負(fù)載,如最大用戶(hù)量,最大業(yè)務(wù)量,最大數(shù)據(jù)量等以及性能表現(xiàn)。
壓力測(cè)試(stress testing)測(cè)試系統(tǒng)在一定壓力下的性能表現(xiàn),通常業(yè)務(wù)的錯(cuò)誤率不能超過(guò)5%。
- 界面(GUI Graphical User Interface):即圖形用戶(hù)界面
格式驗(yàn)證,驗(yàn)證web頁(yè)面中一些空間默認(rèn)的標(biāo)準(zhǔn)定義,如默認(rèn)值,項(xiàng)目按順序排列等。
導(dǎo)航條測(cè)試,各頁(yè)面的導(dǎo)航條是否能正確的顯示,各頁(yè)面下導(dǎo)航條顯示的內(nèi)容是否正確,不同狀態(tài)下(如登錄與未登錄),導(dǎo)航條顯示的內(nèi)容是否正確,導(dǎo)航條的每項(xiàng)內(nèi)容鏈接是否正確。
拼寫(xiě)和語(yǔ)法測(cè)試,驗(yàn)證頁(yè)面內(nèi)容,菜單和鏈接、圖片、表格內(nèi)容的拼寫(xiě)和語(yǔ)法。
頁(yè)面排版測(cè)試, 頁(yè)面標(biāo)題驗(yàn)證,頁(yè)面圖形驗(yàn)證,,頁(yè)面版本信息驗(yàn)證,頁(yè)面長(zhǎng)度驗(yàn)證。
tab鍵測(cè)試,tab順序正確跳轉(zhuǎn)。
- 兼容性
- 安全性
基本安全測(cè)試,各種登錄模式的安全驗(yàn)證,對(duì)口令各種要求的測(cè)試。
用戶(hù)權(quán)限測(cè)試
cookies和session的有效期驗(yàn)證,等特殊機(jī)制的驗(yàn)證。
敏感數(shù)據(jù)加密、數(shù)據(jù)存儲(chǔ)安全性的驗(yàn)證。
認(rèn)證測(cè)試,是否存在驗(yàn)證碼,服務(wù)器不能對(duì)認(rèn)證錯(cuò)誤提供準(zhǔn)確信息,如用戶(hù)名錯(cuò)誤,密碼錯(cuò)誤等;提供合理的鎖定策略;預(yù)防認(rèn)證被繞過(guò),如SQL注入等。
會(huì)話(huà)管理測(cè)試,用戶(hù)登錄后,身份信息不再由客戶(hù)端提交,而是以服務(wù)器端會(huì)話(huà)信息中所保存的信息為準(zhǔn)。
權(quán)限管理測(cè)試,橫向越權(quán):攻擊者嘗試訪(fǎng)問(wèn)與他擁有相同權(quán)限用戶(hù)的資源;縱向越權(quán):一個(gè)低級(jí)別攻擊者嘗試訪(fǎng)問(wèn)高級(jí)別用戶(hù)資源。
文件和目錄測(cè)試,不存在不需要對(duì)外開(kāi)放的敏感接口或者接口進(jìn)行了完善的權(quán)限控制,禁止獲取敏感的目錄或文件信息,所有對(duì)目錄的訪(fǎng)問(wèn)均不能打印出文件列表,禁止訪(fǎng)問(wèn)和下載文檔的備份,不能越權(quán)獲取到不該獲取的文件。如dirbuster掃描。
- DB數(shù)據(jù)庫(kù)測(cè)試
為了發(fā)現(xiàn)錯(cuò)誤和缺陷而運(yùn)行數(shù)據(jù)庫(kù)的過(guò)程,分為黑盒和白盒測(cè)試。
數(shù)據(jù)庫(kù)黑盒測(cè)試,數(shù)據(jù)庫(kù)表結(jié)構(gòu)是否合理,數(shù)據(jù)結(jié)構(gòu)(如數(shù)據(jù)類(lèi)型、長(zhǎng)度)是否正確定義,表與表之間的關(guān)系是否正確,主外鍵是否合理,索引的創(chuàng)建是否合理,存儲(chǔ)過(guò)程功能是否合理,能否正確接收輸入輸出,能否正確增加,刪除,更新數(shù)據(jù),數(shù)據(jù)庫(kù)操作權(quán)限定義是否合理,表級(jí)列級(jí)完整性約束條件是否滿(mǎn)足,數(shù)據(jù)庫(kù)的處理能力,可靠性,可維護(hù)性,性能是否滿(mǎn)足要求。
- 文檔
Web自動(dòng)化測(cè)試
- 為什么要進(jìn)行自動(dòng)化測(cè)試:解決回歸測(cè)試、壓力測(cè)試、兼容性測(cè)試、提高測(cè)試效率,提高測(cè)試質(zhì)量。
- 自動(dòng)化測(cè)試分類(lèi):
1.黑盒測(cè)試(功能測(cè)試)
2.灰盒測(cè)試(接口測(cè)試)
3.白盒測(cè)試(單元測(cè)試)
- 什么Web項(xiàng)目適合做自動(dòng)化測(cè)試:
1.需求變更不頻繁
2.項(xiàng)目周期長(zhǎng)
3.項(xiàng)目需要回歸測(cè)試
- 自動(dòng)化測(cè)試工具
QTP/Selenium/Jmeter(接口、性能)/Loadrunner(web/性能)/Robot farmework
selenium:用于web應(yīng)用程序的測(cè)試工具;核心功能:可以在多個(gè)瀏覽器上進(jìn)行自動(dòng)化測(cè)試。
-
web自動(dòng)化測(cè)試的優(yōu)點(diǎn):用例執(zhí)行效率快、 腳本可重復(fù)執(zhí)行、 減少人為的錯(cuò)誤、 客服手工測(cè)試的局限性
-
Python環(huán)境搭建
-
XPath–元素定位
- Xpath基本語(yǔ)法公式://標(biāo)簽(可以用*表示)[@屬性=“屬性值”]
- 根據(jù)元素自身特征定位:
1>class //*[@class=“topbar-cart”]
2>id 如://input[@id=“search”]
- 根據(jù)元素層級(jí)關(guān)系定位
1>上下級(jí)關(guān)系
2>同級(jí)關(guān)系
- 屬性值部分匹配—//*[contains[@屬性,“部分屬性值”]]
- 驗(yàn)證表達(dá)式—用控制臺(tái)的搜素框(Ctrl+F)
手機(jī)APP測(cè)試
- 手機(jī)APP測(cè)試的范圍
功能模塊測(cè)試
交叉事件測(cè)試
性能測(cè)試
安全測(cè)試
兼容性測(cè)試
安裝/卸載測(cè)試
接口測(cè)試
網(wǎng)絡(luò)測(cè)試
手機(jī)APP測(cè)試方法
- 功能模塊測(cè)試
運(yùn)行測(cè)試,APP安裝完成后的試運(yùn)行,可正常打開(kāi)軟件,APP打開(kāi)測(cè)試,是否有加載狀態(tài)進(jìn)度提示,APP打開(kāi)速度測(cè)試,速度是否可觀(guān),APP頁(yè)面切換是否流暢,邏輯是否正確。
注冊(cè):用戶(hù)名密碼長(zhǎng)度,注冊(cè)后的提示頁(yè)面,前臺(tái)注冊(cè)頁(yè)面和后臺(tái)的管理頁(yè)面數(shù)據(jù)是否一致,注冊(cè)后在后臺(tái)管理頁(yè)面提示。
登錄:使用合法的用戶(hù)登錄系統(tǒng),系統(tǒng)是否允許多次非法登錄,是否有次數(shù)限制。使用已經(jīng)登錄賬號(hào)登錄系統(tǒng)是否正確處理,使用禁用賬號(hào)登錄系統(tǒng)是否能正確處理,用戶(hù)名、密碼漏填是否能登錄,刪除、修改后的用戶(hù)、原用戶(hù)登錄、登錄超時(shí)處理。
注銷(xiāo):注銷(xiāo)原模塊,新的模塊系統(tǒng)是否能正確處理,終止注銷(xiāo)是否能返回原模塊,原用戶(hù)。注銷(xiāo)原用戶(hù),新用戶(hù)系統(tǒng)能否正確處理;使用錯(cuò)誤的賬號(hào)、口令、無(wú)權(quán)限的被禁用的賬號(hào)進(jìn)行注銷(xiāo)。
應(yīng)用的前后臺(tái)切換,APP切換到后臺(tái),再回到APP,檢查是否停留在上一次操作界面。APP切換到后臺(tái),再回到APP,檢查功能及應(yīng)用狀態(tài)是否正常,前后臺(tái)切換、鎖屏的測(cè)試······
免登錄
數(shù)據(jù)更新
離線(xiàn)瀏覽
PUSH(推送消息)測(cè)試
- 交叉事件測(cè)試
交叉事件測(cè)試:又稱(chēng)事件沖突測(cè)試,是指一個(gè)功能正在執(zhí)行過(guò)程中,同時(shí)另外一個(gè)事件或操作對(duì)該過(guò)程進(jìn)行干擾測(cè)試,如:APP在前后臺(tái)運(yùn)行狀態(tài)時(shí)與來(lái)電、文件下載,等關(guān)鍵運(yùn)用的交互測(cè)試。
- 性能測(cè)試
性能測(cè)試,權(quán)限測(cè)試:在各種邊界壓力情況下,如內(nèi)存滿(mǎn)時(shí)安裝APP、運(yùn)行APP時(shí)手機(jī)斷電,運(yùn)行APP時(shí)斷掉網(wǎng)絡(luò),驗(yàn)真APP是否能正確響應(yīng)。
響應(yīng)能力測(cè)試:APP各類(lèi)操作是否滿(mǎn)足用戶(hù)響應(yīng)時(shí)間要求;APP安裝、啟動(dòng)、卸載的響應(yīng)時(shí)間,APP中各種功能性操作的影響時(shí)間。
壓力測(cè)試:反復(fù)/長(zhǎng)期操作下,系統(tǒng)資源是否占用異常,APP反復(fù)進(jìn)行安裝卸載,系統(tǒng)資源是否占用異常;大數(shù)量的測(cè)試:在特定環(huán)境下,客戶(hù)端一次性更新大量的數(shù)據(jù)時(shí),客戶(hù)端是否能正常處理,分為3種情況:
1>客戶(hù)端第一次使用,第一次就更新大量數(shù)據(jù)。
2>客戶(hù)端在平時(shí)更新中,更新大量的數(shù)據(jù)。
3>客戶(hù)端已經(jīng)在手機(jī)本地下載大多數(shù)據(jù)后,再次大量更新。
- 設(shè)計(jì)語(yǔ)言測(cè)試
web設(shè)計(jì)語(yǔ)言版本的差異可以引起客戶(hù)端或服務(wù)器端嚴(yán)重的問(wèn)題,如使用哪種版本的HTML等;不同的瀏覽器內(nèi)核引擎不同,會(huì)導(dǎo)致與不同的開(kāi)發(fā)語(yǔ)言的兼容性情況不同。不同的腳本執(zhí)行的時(shí)間也不同;數(shù)據(jù)庫(kù)可能升級(jí),要考慮腳本語(yǔ)言支持?jǐn)?shù)據(jù)庫(kù)的完善程度。
文件上傳:只能上傳允許的附件類(lèi)型,不能上傳腳本或可執(zhí)行文件,不能單純以后綴名來(lái)判斷文件類(lèi)型,上傳的文件應(yīng)該提供接口查看,文件上傳到服務(wù)器端后應(yīng)該重命名,防止文件名沖突、、、、、、
APP測(cè)試
- adb環(huán)境部署、使用方法以及常用命令
adb(Android Debug Bridge) 是Android sdk的一個(gè)管理工具
adb是用來(lái)連接安卓手機(jī)和PC端的橋梁,要有adb作為二者之間的維系,用戶(hù)在電腦上對(duì)手機(jī)進(jìn)行操作。
Android的初衷是用adb這樣的工具來(lái)協(xié)助開(kāi)發(fā)人員在開(kāi)發(fā)Android的過(guò)程中更好的調(diào)試apk,因此adb具有安裝卸載apk、拷貝推送文件、查看硬件信息、查看應(yīng)用程序所占資源,在設(shè)備執(zhí)行shell命令等功能。
- adb的組成
客戶(hù)端client:運(yùn)行在你的電腦上,你可以用adb命令來(lái)調(diào)用起一個(gè)客戶(hù)端,其他Android工具,如:ADT插件、DDMS等都可以創(chuàng)建出一個(gè)客戶(hù)端。
服務(wù)器server:運(yùn)行在電腦后臺(tái),負(fù)責(zé)管理client和daemon進(jìn)行通訊。
守護(hù)進(jìn)程daemon:運(yùn)行在模擬器或安卓設(shè)備后臺(tái);驗(yàn)證,打開(kāi)Windows命令行,輸入adb命令。
- adb常用命令
adb --help 查看幫助手冊(cè)
adb devices 檢測(cè)連接到電腦的安卓設(shè)備
adb pull <手機(jī)路徑> <本機(jī)路徑>從手機(jī)中拉取信息放到本地電腦上
adb push <本機(jī)路徑> <手機(jī)路徑>從本地推送信息到手機(jī)
adb shell----登錄設(shè)備 shell(命令行的人機(jī)界面) ll ls 命令都可以用,進(jìn)入到Linux命令環(huán)境了,相當(dāng)于執(zhí)行遠(yuǎn)程命令。
adb logcat --打印日志
adb install xxx.apk -----為了獲取apk的安裝包所在地址,可以直接把a(bǔ)pk拖到cmd 的窗口獲取,返回success就說(shuō)明安裝成功了
adb install -r xxx.apk -----保留數(shù)據(jù)和緩存文件,重新安裝apk
adb uninstall com.tencent.mobileqq–卸載應(yīng)用
adb uninstall -k com.tencent.mobileqq–卸載應(yīng)用,但保存文件和數(shù)據(jù)
adb shell dumpsys activity | find"mFocusedActivity"–查看前臺(tái)應(yīng)用activity名
adb connect/disconnect --通過(guò)WiFi遠(yuǎn)程連接手機(jī)進(jìn)行調(diào)試
網(wǎng)絡(luò)基本知識(shí)(HTTP協(xié)議基礎(chǔ)知識(shí))
- IP地址:是指互聯(lián)網(wǎng)協(xié)議地址,是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺(tái)主機(jī)分配一個(gè)邏輯地址,以此來(lái)屏蔽物理地址的差異。
HTTP協(xié)議:Hyper Text Transfer Protocol 超文本傳輸協(xié)議
- 傳輸協(xié)議:定義了,客戶(hù)端和服務(wù)器端通信時(shí),發(fā)送數(shù)據(jù)的格式
- 特點(diǎn):
- 基于TCP/IP的高級(jí)協(xié)議
- 默認(rèn)端口號(hào):80,HTTPS的端口號(hào)為443。
- 基于請(qǐng)求/響應(yīng)模型的:一次請(qǐng)求對(duì)應(yīng)一次響應(yīng)
- 無(wú)狀態(tài)的:每次請(qǐng)求之間相互獨(dú)立,不能交互數(shù)據(jù)
- 請(qǐng)求消息數(shù)據(jù)格式
- 1.請(qǐng)求行
- 請(qǐng)求方式 請(qǐng)求url 請(qǐng)求協(xié)議/版本
- GET /login.html HTTP/1.1
- 請(qǐng)求方式:
- HTTP協(xié)議有7中請(qǐng)求方式,常用的有2種
- GET:
- 請(qǐng)求參數(shù)在請(qǐng)求行中,在url后。
請(qǐng)求的url長(zhǎng)度有限制的
不太安全
- 請(qǐng)求參數(shù)在請(qǐng)求行中,在url后。
- POST:
- 請(qǐng)求參數(shù)在請(qǐng)求體中
請(qǐng)求的url長(zhǎng)度沒(méi)有限制的
相對(duì)安全
- 請(qǐng)求參數(shù)在請(qǐng)求體中
- 2.請(qǐng)求頭:
-
客戶(hù)端瀏覽器告訴服務(wù)器一些信息
-
請(qǐng)求頭名稱(chēng): 請(qǐng)求頭值
常見(jiàn)的請(qǐng)求頭: -
User-Agent:瀏覽器告訴服務(wù)器,我訪(fǎng)問(wèn)你使用的瀏覽器版本信息
-
可以在服務(wù)器端獲取該頭的信息,解決瀏覽器的兼容性問(wèn)題
-
- 3.請(qǐng)求空行:
- 空行,就是用于分割POST請(qǐng)求的請(qǐng)求頭,和請(qǐng)求體的。
- 4.請(qǐng)求體(正文):
- 封裝POST請(qǐng)求消息的請(qǐng)求參數(shù)的
get請(qǐng)求和post請(qǐng)求的區(qū)別:
- 1) get和post請(qǐng)求都是客戶(hù)端與服務(wù)器之間得交互,請(qǐng)求——應(yīng)答模式的協(xié)議
- 2) get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù),一般用于更新資源信息
- 3) get請(qǐng)求時(shí)通過(guò)URL直接請(qǐng)求數(shù)據(jù),數(shù)據(jù)信息可以在URL中直接看到,比如瀏覽器訪(fǎng)問(wèn);而post請(qǐng)求是放在請(qǐng)求頭中的,我們是無(wú)法直接看到的
- 4) get提交有數(shù)據(jù)大小的限制,一般是不超過(guò)2KB,而POST理論上默認(rèn)是沒(méi)有限制
- 5) get請(qǐng)求因?yàn)閿?shù)據(jù)參數(shù)是暴露在URL中的,所以安全性比較低,如密碼不能暴露的就不能用get請(qǐng)求;post請(qǐng)求中,請(qǐng)求信息是放在請(qǐng)求頭的,安全性較高,可以使用。
OSI七層七層網(wǎng)絡(luò)模型
- 七層網(wǎng)絡(luò)模型記憶方法:底—>上 “物數(shù)網(wǎng)傳會(huì)表應(yīng)” 諧音轉(zhuǎn)換為:“無(wú)數(shù)網(wǎng)絡(luò)傳銷(xiāo)會(huì)議不要回應(yīng)”
應(yīng)用層:定義了各種應(yīng)用協(xié)議,規(guī)范數(shù)據(jù)格式:HTTP協(xié)議、HTTPS協(xié)議、FTP協(xié)議、DNS協(xié)議、TFTP、SMTP等等。
表示層:翻譯工作,提供一種公共語(yǔ)言,通信。
會(huì)話(huà)層:自動(dòng)收發(fā),自動(dòng)尋址。
傳輸層:對(duì)發(fā)送數(shù)據(jù)進(jìn)行封裝,TCP協(xié)議、UDP協(xié)議、一個(gè)一個(gè)按順序依次發(fā)送;兩個(gè)應(yīng)用程序,如QQ-QQ,定義端口的概念,尋找到對(duì)應(yīng)程序,進(jìn)行數(shù)據(jù)的處理。
網(wǎng)絡(luò)層:判斷是否在一個(gè)子網(wǎng):IP協(xié)議,怎么選擇最優(yōu)路徑,一組協(xié)議,路由協(xié)議:靜態(tài)路由、動(dòng)態(tài)路由協(xié)議。
數(shù)據(jù)鏈層:比特流進(jìn)行處理,分組:八位為一組,一個(gè)字節(jié),依次按照順序進(jìn)行發(fā)送,一幀。MAC地址,網(wǎng)卡、身份證、唯一的。
物理層:互聯(lián)網(wǎng)物理鏈路,物理介質(zhì),網(wǎng)線(xiàn)、光纖、無(wú)線(xiàn)電波,基本連接。電信號(hào)(0101二進(jìn)制)、比特流形式存在。
- 網(wǎng)絡(luò)層協(xié)議:
IP地址的組成:由32bit組成,分成四段并用“.”分隔,如:192.168.0.1
結(jié)構(gòu):IP地址=網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)
網(wǎng)絡(luò)號(hào):標(biāo)識(shí)的是一個(gè)子網(wǎng)
主機(jī)號(hào):標(biāo)識(shí)的是子網(wǎng)中的某臺(tái)主機(jī)
子網(wǎng)掩碼:用來(lái)標(biāo)識(shí)子網(wǎng),必須跟IP地址一起存在。
- 判斷兩臺(tái)機(jī)器能不能通信:看是否在同一個(gè)子網(wǎng)。
192.168.1.87 255.255.255.0
192.168.2.77 255.255.255.0
如上,網(wǎng)絡(luò)地址不一樣,不在同一個(gè)子網(wǎng),不能直接通信。
路由協(xié)議(Routing Protocol):
- 指定數(shù)據(jù)包轉(zhuǎn)送方式的網(wǎng)上協(xié)議
TCP協(xié)議(Transmission Control Protocol):
- 面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。
- 傳輸控制協(xié)議,就是對(duì)數(shù)據(jù)的傳輸進(jìn)行一定的控制;TCP協(xié)議頭部組成結(jié)構(gòu):TCP頭部 TCP數(shù)據(jù)部分。
- 特點(diǎn):
- 基于連接的:數(shù)據(jù)傳輸之間與需要建立連接
- 全雙工的: 雙向傳輸
- 字節(jié)流:不限制數(shù)據(jù)大小,打包成報(bào)文段,保證有序接受,重復(fù)報(bào)文自動(dòng)丟棄。
- 流量緩沖:解決雙方處理能力的不匹配
- 可靠的傳輸服務(wù):保證可達(dá),丟包時(shí)通過(guò)重發(fā)機(jī)制實(shí)現(xiàn)可靠性。
- 擁塞控制:防止網(wǎng)絡(luò)出現(xiàn)惡性擁塞
TCP和UDP的區(qū)別:
- TCP是可靠的協(xié)議
- UDP(數(shù)據(jù)報(bào)文協(xié)議)直接發(fā)送信息,是不可靠的,但效率更高。
- TCP端口號(hào)
TCP的連接是需要四個(gè)要素確定唯一一個(gè)連接:
(源IP,源端口號(hào))+ (目地IP,目的端口號(hào))
所以TCP首部預(yù)留了兩個(gè)16位作為端口號(hào)的存儲(chǔ),而IP地址由上一層IP協(xié)議負(fù)責(zé)傳遞
源端口號(hào)和目地端口各占16位兩個(gè)字節(jié),也就是端口的范圍是2^16=65535
另外1024以下是系統(tǒng)保留的,從1024-65535是用戶(hù)使用的端口范圍 - TCP的序號(hào)和確認(rèn)號(hào):
32位序號(hào) seq:Sequence number 縮寫(xiě)seq ,TCP通信過(guò)程中某一個(gè)傳輸方向上的字節(jié)流的每個(gè)字節(jié)的序號(hào),通過(guò)這個(gè)來(lái)確認(rèn)發(fā)送的數(shù)據(jù)有序,比如現(xiàn)在序列號(hào)為1000,發(fā)送了1000,下一個(gè)序列號(hào)就是2000。
32位確認(rèn)號(hào) ack:Acknowledge number 縮寫(xiě)ack,TCP對(duì)上一次seq序號(hào)做出的確認(rèn)號(hào),用來(lái)響應(yīng)TCP報(bào)文段,給收到的TCP報(bào)文段的序號(hào)seq加1 - TCP的標(biāo)志位
每個(gè)TCP段都有一個(gè)目的,這是借助于TCP標(biāo)志位選項(xiàng)來(lái)確定的,允許發(fā)送方或接收方指定哪些標(biāo)志應(yīng)該被使用,以便段被另一端正確處理。
用的最廣泛的標(biāo)志是 SYN,ACK 和 FIN,用于建立連接,確認(rèn)成功的段傳輸,最后終止連接。
SYN:簡(jiǎn)寫(xiě)為S,同步標(biāo)志位,用于建立會(huì)話(huà)連接,同步序列號(hào);
ACK: 簡(jiǎn)寫(xiě)為.,確認(rèn)標(biāo)志位,對(duì)已接收的數(shù)據(jù)包進(jìn)行確認(rèn);
FIN: 簡(jiǎn)寫(xiě)為F,完成標(biāo)志位,表示我已經(jīng)沒(méi)有數(shù)據(jù)要發(fā)送了,即將關(guān)閉連接;
PSH:簡(jiǎn)寫(xiě)為P,推送標(biāo)志位,表示該數(shù)據(jù)包被對(duì)方接收后應(yīng)立即交給上層應(yīng)用,而不在緩沖區(qū)排隊(duì);
RST:簡(jiǎn)寫(xiě)為R,重置標(biāo)志位,用于連接復(fù)位、拒絕錯(cuò)誤和非法的數(shù)據(jù)包;
URG:簡(jiǎn)寫(xiě)為U,緊急標(biāo)志位,表示數(shù)據(jù)包的緊急指針域有效,用來(lái)保證連接不被阻斷,并督促中間設(shè)備盡快處理;
TCP建立連接 , 三(報(bào)文)次握手:
- 所謂三次握手(Three-way Handshake),是指建立一個(gè) TCP 連接時(shí),需要客戶(hù)端和服務(wù)器總共發(fā)送3個(gè)報(bào)文。三次握手的目的是連接服務(wù)器指定端口,建立 TCP 連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào),交換 TCP 窗口大小信息。在 socket 編程中,客戶(hù)端執(zhí)行 connect() 時(shí)。將觸發(fā)三次握手。
- TCP的三次握手過(guò)程:
- 第一次握手,客戶(hù)端51323端口號(hào)向服務(wù)器端80號(hào)端口發(fā)起連接,此時(shí)標(biāo)志位flags=S,即SYN=1標(biāo)志,表示向服務(wù)端發(fā)起連接的請(qǐng)求,同時(shí)生成序列號(hào)seq=84689409
- 第二次握手,服務(wù)端標(biāo)志位flags=[S.],即SYN+ACK標(biāo)志位設(shè)置為1,表示對(duì)上一個(gè)請(qǐng)求連接的報(bào)文進(jìn)行確認(rèn),同時(shí)設(shè)置ack=seq+1=184689410,生成序列號(hào)seq=1893430205
- 第三次握手,客戶(hù)端對(duì)服務(wù)端的響應(yīng)進(jìn)行確認(rèn),所以此時(shí)標(biāo)志位是[.]即ACK=1,同時(shí)返回對(duì)上一個(gè)報(bào)文的seq的確認(rèn)號(hào),ack=1893430206
至此,三次握手完成,一個(gè)TCP連接建立完成,接下來(lái)就是雙端傳輸數(shù)據(jù)了。
斷開(kāi)連接(四次揮手):
- 四次揮手即終止TCP連接,就是指斷開(kāi)一個(gè)TCP連接時(shí),需要客戶(hù)端和服務(wù)端總共發(fā)送4個(gè)包以確認(rèn)連接的斷開(kāi)。在socket編程中,這一過(guò)程由客戶(hù)端或服務(wù)端任一方執(zhí)行close來(lái)觸發(fā)。由于TCP連接是全雙工的,因此,每個(gè)方向都必須要單獨(dú)進(jìn)行關(guān)閉,這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后,發(fā)送一個(gè)FIN來(lái)終止這一方向的連接,收到一個(gè)FIN只是意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng)了,即不會(huì)再收到數(shù)據(jù)了,但是在這個(gè)TCP連接上仍然能夠發(fā)送數(shù)據(jù),直到這一方向也發(fā)送了FIN。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方則執(zhí)行被動(dòng)關(guān)閉。
- 第一次揮手: Client端發(fā)起揮手請(qǐng)求,向Server端發(fā)送標(biāo)志位是FIN報(bào)文段,設(shè)置序列號(hào)seq,此時(shí),Client端進(jìn)入FIN_WAIT_1狀態(tài),這表示Client端沒(méi)有數(shù)據(jù)要發(fā)送給Server端了。
- 第二次揮手:Server端收到了Client端發(fā)送的FIN報(bào)文段,向Client端返回一個(gè)標(biāo)志位是ACK的報(bào)文段,ack設(shè)為seq加1,Client端進(jìn)入FIN_WAIT_2狀態(tài),Server端告訴Client端,我確認(rèn)并同意你的關(guān)閉請(qǐng)求。
- 第三次揮手: Server端向Client端發(fā)送標(biāo)志位是FIN的報(bào)文段,請(qǐng)求關(guān)閉連接,同時(shí)Client端進(jìn)入LAST_ACK狀態(tài)。
- 第四次揮手: Client端收到Server端發(fā)送的FIN報(bào)文段,向Server端發(fā)送標(biāo)志位是ACK的報(bào)文段,然后Client端進(jìn)入TIME_WAIT狀態(tài)。Server端收到Client端的ACK報(bào)文段以后,就關(guān)閉連接。此時(shí),Client端等待2MSL的時(shí)間后依然沒(méi)有收到回復(fù),則證明Server端已正常關(guān)閉,那好,Client端也可以關(guān)閉連接了。
HTTPS的優(yōu)點(diǎn)
- 1.使用HTTPS協(xié)議可認(rèn)證用戶(hù)和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶(hù)機(jī)和服務(wù)器。
- 2.HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議安全,可防止數(shù)據(jù)在傳輸過(guò)程中被竊取、改變,確保數(shù)據(jù)的完整性。
- 3.HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對(duì)安全,但大幅增加了其安全性。
- 4.HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名更高。
HTTPS的缺點(diǎn)
雖然說(shuō)HTTPS有很大的優(yōu)勢(shì),但其相對(duì)來(lái)說(shuō),還是存在不足之處的:
-
(1)HTTPS協(xié)議握手階段比較費(fèi)時(shí),會(huì)使頁(yè)面的加載時(shí)間延長(zhǎng)近50%,增加10%到20%的耗電。
-
(2)HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗,甚至已有的安全措施也會(huì)因此而受到影響。
-
(3)SSL證書(shū)需要錢(qián),功能越強(qiáng)大的證書(shū)費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒(méi)有必要一般不會(huì)用。
-
(4)SSL證書(shū)通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗。
-
(5)HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的,SSL證書(shū)的信用鏈體系并不安全,特別是在某些國(guó)家可以控制CA根證書(shū)的情況下,中間人攻擊一樣可行。
HTTPS和HTTP的主要區(qū)別
- 1、https協(xié)議需要到CA申請(qǐng)證書(shū),一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用。
- 2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協(xié)議。
- 3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,HTTPS協(xié)議的端口是443。
- 4、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL/TLS+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-0kz7w2Kt-1609816175052)(2FC4864383394DEAB368E9B3EE50841C)]
HTTP狀態(tài)碼
- 類(lèi)別 / 原因短語(yǔ)
1xx Information(信息狀態(tài)碼) 接受的請(qǐng)求正在處理
2xx Success(成功狀態(tài)碼) 請(qǐng)求正常處理完畢
3xx Redirection(重定向狀態(tài)碼) 需要進(jìn)行附加操作以完成請(qǐng)求
4xx Client Error(客戶(hù)端錯(cuò)誤狀態(tài)碼) 服務(wù)器無(wú)法處理請(qǐng)求
5xx Server Error(服務(wù)端錯(cuò)誤狀態(tài)碼) 服務(wù)器處理請(qǐng)求出錯(cuò)
2XX 請(qǐng)求成功
2XX 的響應(yīng)結(jié)果表明請(qǐng)求被正常處理了。
- 200 OK
200表示請(qǐng)求在服務(wù)器端被正常處理了。在響應(yīng)報(bào)文內(nèi),隨狀態(tài)碼一起返回的信息會(huì)因方法的不同而發(fā)生改變。
- 204 No Content
204表示服務(wù)器接收的請(qǐng)求已經(jīng)成功處理,但是在返回的響應(yīng)報(bào)文中不含實(shí)體的主體部分。另外,也不允許返回任何實(shí)體的主體。當(dāng)瀏覽器在發(fā)送請(qǐng)求后接收到204響應(yīng),它的顯示頁(yè)面不會(huì)發(fā)生更新。
通常應(yīng)用在只需要客戶(hù)端往服務(wù)端發(fā)送信息,而服務(wù)端不需要發(fā)送新信息的情況下使用。
- 206 Partial Content
206表示客戶(hù)端進(jìn)行了范圍請(qǐng)求,而服務(wù)器成功執(zhí)行了這部分的GET請(qǐng)求。響應(yīng)報(bào)文內(nèi)包含由Content-Range指定范圍的實(shí)體內(nèi)容。
3XX 重定向
3XX 響應(yīng)結(jié)果表明瀏覽器需要執(zhí)行某些特殊的處理以正確處理請(qǐng)求。
- 301 Moved Permanently
永久重定向,301狀態(tài)碼表示請(qǐng)求的資源已經(jīng)分配了新的URI,以后請(qǐng)求該資源應(yīng)該訪(fǎng)問(wèn)新的URI。也就是說(shuō),如果已經(jīng)把資源對(duì)應(yīng)的 URI保存為書(shū)簽了,這時(shí)應(yīng)該按 Location 首部字段提示的 URI 重新保存。
- 302 Found
臨時(shí)重定向,302表示請(qǐng)求的資源已經(jīng)被分配了新的URI,希望客戶(hù)端本次能使用新的URI訪(fǎng)問(wèn)。和301不同的是,這種資源的URI變更是臨時(shí)的額,而不是永久的,因此不用去更新書(shū)簽。
- 303 See Other
該狀態(tài)碼和 302 有著異曲同工之妙,表示由于請(qǐng)求對(duì)應(yīng)的資源存在著另一個(gè) URI,應(yīng)使用 GET方法定向獲取請(qǐng)求的資源。
如果瀏覽器原本是用POST方法去請(qǐng)求服務(wù)器,收到303狀態(tài)碼之后,會(huì)改用GET并訪(fǎng)問(wèn)資源新的URI。
- 304 Not Modified
304 狀態(tài)碼表示客戶(hù)端發(fā)送附帶條件的請(qǐng)求時(shí),服務(wù)器端允許請(qǐng)求訪(fǎng)問(wèn)資源,但未滿(mǎn)足條件的情況。304 狀態(tài)碼返回時(shí),不包含任何響應(yīng)的主體部分。304 雖然被劃分在 3XX 類(lèi)別中,但是和重定向沒(méi)有關(guān)系。
PS:附帶條件的請(qǐng)求是指采用GET方法的請(qǐng)求報(bào)文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。
- 307 Temporary Redirect
臨時(shí)重定向,和 302 Found 狀態(tài)碼有相同的含義。區(qū)別在于 307 不會(huì)強(qiáng)制瀏覽器將 POST 方法改為 GET 方法,而是遵循瀏覽器自身的標(biāo)準(zhǔn)。
4XX 客戶(hù)端錯(cuò)誤
4XX 的響應(yīng)結(jié)果表明客戶(hù)端是發(fā)生錯(cuò)誤的原因所在。
- 400 Bad Request
400 狀態(tài)碼表示請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤。當(dāng)錯(cuò)誤發(fā)生時(shí),需修改請(qǐng)求的內(nèi)容后再次發(fā)送請(qǐng)求。另外,瀏覽器會(huì)像 200 OK 一樣對(duì)待該狀態(tài)碼。
- 401 Unauthorized
401 狀態(tài)碼表示發(fā)送的請(qǐng)求需要有通過(guò) HTTP 認(rèn)證(BASIC 認(rèn)證、DIGEST 認(rèn)證)的認(rèn)證信息。第一次收到 401 狀態(tài)碼表示需要進(jìn)行用戶(hù)認(rèn)證,第二次再收到 401 狀態(tài)碼說(shuō)明用戶(hù)認(rèn)證失敗。
- 403 Forbidden
403 狀態(tài)碼表明對(duì)請(qǐng)求資源的訪(fǎng)問(wèn)被服務(wù)器拒絕了,當(dāng)未獲得文件系統(tǒng)的訪(fǎng)問(wèn)授權(quán),訪(fǎng)問(wèn)權(quán)限出現(xiàn)某些問(wèn)題(從未授權(quán)的發(fā)送源 IP 地址試圖訪(fǎng)問(wèn))等列舉的情況都可能發(fā)生 403 。
- 404 Not Found
404 是我們最常見(jiàn)的狀態(tài)碼之一,它表示服務(wù)器上無(wú)法找到請(qǐng)求資源。此外,也可能是服務(wù)器端在拒絕請(qǐng)求且不想說(shuō)明原因的時(shí)候使用。
5XX 服務(wù)器錯(cuò)誤
5XX 的響應(yīng)結(jié)果表明服務(wù)器本身發(fā)生錯(cuò)誤。
- 500 Internal Server Error
500 狀態(tài)碼表明服務(wù)器端在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤。也有可能是 Web應(yīng)用存在的 bug 或某些臨時(shí)的故障。
- 503 Service Unavailable
503 狀態(tài)碼表明服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù),現(xiàn)在無(wú)法處理請(qǐng)求。
版本控制
- 什么是版本控制:版本控制(revision control)是一種軟體工程技巧,在開(kāi)發(fā)的過(guò)程中,確保不同的人編輯的同一檔案都得到更新。
- 版本控制工具系統(tǒng)有哪些:Git(是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效、高速的處理很小到非常大的項(xiàng)目版本管理;為了幫助管理Linux內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件)/SVN(subversion 的簡(jiǎn)稱(chēng),是一個(gè)開(kāi)放源代碼的版本控制軟件,相較于RCS,CVS它采用了分支管理系統(tǒng),他的設(shè)計(jì)目標(biāo)就是取代CVS)
- Git和Svn最核心的區(qū)別就是Git為分布式管理系統(tǒng),Svn為集中式管理系統(tǒng)。
- 集中式版本控制系統(tǒng),代碼資源庫(kù)都集中放在一個(gè)服務(wù)器中。
當(dāng)工作的時(shí)候就需要先從服務(wù)器拉取最新版本,寫(xiě)完代碼或者修改完文件,再推送到中央服務(wù)器中。 - 而分布式管理系統(tǒng)不需要一個(gè)中央服務(wù)器,每個(gè)電腦都是一個(gè)完整的版本庫(kù)。
- 集中式版本控制系統(tǒng),代碼資源庫(kù)都集中放在一個(gè)服務(wù)器中。
測(cè)試管理工具
- bug管理工具禪道:
HTTP抓包fiddler
-
fiddler典型應(yīng)用
- web 、手機(jī)APP抓包
- 修改服務(wù)器請(qǐng)求與響應(yīng)
- 模擬弱網(wǎng)測(cè)試
- 前端性能分析及優(yōu)化
fiddler會(huì)話(huà)區(qū):
- #:順序號(hào),按照抓包的順序從1遞增
- Result:HTTP狀態(tài)碼
- Protocol:請(qǐng)求使用的協(xié)議,如HTTP/HTTPS/FTP等
- HOST:請(qǐng)求地址的主機(jī)名或域名
- URL:請(qǐng)求資源的位置(路徑)
- Body:請(qǐng)求大小
- Caching:請(qǐng)求的緩存過(guò)期時(shí)間或者緩存控制值
- Content-Type:請(qǐng)求響應(yīng)的類(lèi)型
- Process:發(fā)送此請(qǐng)求的進(jìn)程
- Comments:備注
- Custom:自定義值
Fiddler的監(jiān)控面板(Inspector)
- Headers:信息頭,若用手機(jī)和電腦打開(kāi)的頁(yè)面不一樣,與此設(shè)置有關(guān)。
-
TextView:以文本形式顯示請(qǐng)求或響應(yīng)的數(shù)據(jù)。
-
SyntaxView:同TextView,但有語(yǔ)法著色。
-
WebForms:請(qǐng)求部分以表單形式顯示所有的請(qǐng)求參數(shù)和參數(shù)值;響應(yīng)部分與TextView內(nèi)容是一樣的。
-
HEX:十六進(jìn)制形式的數(shù)據(jù)。
-
Auth:顯示認(rèn)證信息,如Authorization。
-
Cookies:顯示所有cookies。
-
Raw:顯示Headers和Body數(shù)據(jù)。
-
JSON:請(qǐng)求或響應(yīng)數(shù)據(jù)是json格式時(shí),json形式顯示請(qǐng)求或響應(yīng)內(nèi)容。
-
XML:請(qǐng)求或響應(yīng)數(shù)據(jù)是xml格式,xml形式顯示請(qǐng)求或響應(yīng)內(nèi)容。
Fiddler的Request消息結(jié)構(gòu)
- POST:請(qǐng)求方式,HTTP/1.1表示協(xié)議與版本
- Accept:瀏覽器端可接受的媒體類(lèi)型
- Referer:告訴服務(wù)器是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的
- Accept-Language:語(yǔ)言類(lèi)型
- Accept-Encoding:壓縮方法
- User-Agent:客戶(hù)端使用的操作系統(tǒng)和瀏覽器的名稱(chēng)和版本
- Connection:網(wǎng)頁(yè)打開(kāi)后,客戶(hù)端和服務(wù)器之間用于傳輸數(shù)據(jù)的TCP連接是否關(guān)閉,keep-alive表示不會(huì)關(guān)閉,客戶(hù)端再次訪(fǎng)問(wèn)這個(gè)服務(wù)器上的網(wǎng)頁(yè),會(huì)繼續(xù)使用這一條已經(jīng)建立的連接
- COOKIE:將cookie值發(fā)送給服務(wù)器
Fiddler的Response的消息結(jié)構(gòu)
- HTTP/1.1:協(xié)議,200:狀態(tài)碼,OK響應(yīng)消息文本
- Cache-Control:private的消息不能被共享緩存處理,對(duì)于其他用戶(hù)的請(qǐng)求無(wú)效
- Content-Type:charset:告知客戶(hù)端服務(wù)器本身響應(yīng)的對(duì)象的類(lèi)型和字符集
- Expires:瀏覽器會(huì)在指定過(guò)期時(shí)間內(nèi)使用本地緩存
- Last-Modified:客戶(hù)端請(qǐng)求的資源文件在服務(wù)器端最后被修改的時(shí)間
- Date:生成消息的具體時(shí)間和日期
- Content-Length:正文長(zhǎng)度
- Set-Cookie:把cookie發(fā)送到客戶(hù)端
Fiddler捕獲請(qǐng)求
- 使用真實(shí)的IP或域名
- Fiddler的Response亂碼
- 這是因?yàn)镠TML被壓縮了, 通過(guò)兩種方法去解壓縮。
方法一:點(diǎn)擊紅框內(nèi)容“Response body is encouded.Click to decode.”
方法二:選中工具欄中的"Decode",這樣會(huì)自動(dòng)解壓縮。
- 這是因?yàn)镠TML被壓縮了, 通過(guò)兩種方法去解壓縮。
- Fiddler不僅能監(jiān)聽(tīng)HTTP請(qǐng)求而且默認(rèn)情況下也能捕獲到HTTPS請(qǐng)求
- Tool -> Fiddler Option -> HTTPS下面進(jìn)行設(shè)置,勾選上“Decrypt HTTPS traffic”
- 如果不必監(jiān)聽(tīng)服務(wù)器端得證書(shū)錯(cuò)誤可以勾上“Ignore server certification errors”
fiddler手機(jī)端抓取
- 手機(jī)端和電腦端在同一局域網(wǎng)
- 1.先設(shè)置電腦端
- 關(guān)閉防火墻、卸載殺毒軟件
- 2.fiddler
- tools–>options–>connections–>allow remote computers to connect勾選允許電腦遠(yuǎn)程連接
- 3.手機(jī)端設(shè)置
- 設(shè)置–>WiFi-高級(jí)設(shè)置–>代理,配置電腦和手機(jī)端IP(電腦端查看IP:ipconfig)
使用Fiddler實(shí)現(xiàn)接口測(cè)試
- 1測(cè)試登錄接口
- 抓包,完成后退出
- 選中需要測(cè)試的url,找到并復(fù)制請(qǐng)求部分raw中的cookie整行
- 重新啟動(dòng)Fiddler
- Composer→Parsed
*Composer - 創(chuàng)作
- 輸入越權(quán)訪(fǎng)問(wèn)的url
- 粘貼Cookie
- 執(zhí)行越權(quán)url
- Execute
- 2傳遞非法參數(shù)
- 修改參數(shù)為非法數(shù)據(jù),使用此方式偽造或篡改數(shù)據(jù)。
- 【例】測(cè)試Webtours處理信用卡號(hào)的接口。
- 方法1
- 在Fiddler中設(shè)置抓包
- 選擇url,F2,修改參數(shù)
- 回放url
- 查看響應(yīng)數(shù)據(jù)或后臺(tái)數(shù)據(jù)
- 方法2
- Composer
- 選擇get或post方法
- ?輸入url,url后應(yīng)攜帶/
- post方法應(yīng)添加
- Content-Type: application/x-www-form-urlencoded
- 參數(shù)
- get方法直接在url/后寫(xiě)
- ?參數(shù)名1=值1&參數(shù)名2=值2
- post方法在RequestBody中寫(xiě)
- 參數(shù)名1=值1&參數(shù)名2=值2
- Execute
- 查看響應(yīng)數(shù)據(jù)或后臺(tái)數(shù)據(jù)
- 響應(yīng)中文亂碼問(wèn)題
- 進(jìn)入注冊(cè)表
- HKEY_CURRENT_USER\Software\Microsoft\Fiddler2
- 新建字符串值:HeaderEncoding,值設(shè)置為GBK
- 重啟Fiddler
fiddler斷點(diǎn)操作
- 請(qǐng)求前斷點(diǎn)
- 場(chǎng)景:可以通過(guò)fiddler驗(yàn)證服務(wù)端是否對(duì)前端字段數(shù)據(jù)類(lèi)型或長(zhǎng)度進(jìn)行校驗(yàn)。
- 步驟
- 1.先停止抓包
- 2.打開(kāi)頁(yè)面,進(jìn)入需要抓包的操作界面
- 3.打開(kāi)rules–>automatic breakpoints–>before request 點(diǎn)擊勾選,出現(xiàn)紅色標(biāo)記
- 4.回到頁(yè)面上操作數(shù)據(jù),如提交 提交保存關(guān)鍵步驟
- 5.對(duì)應(yīng)的請(qǐng)求,在webforms標(biāo)簽中找到要修改的參數(shù)信息
- 6.進(jìn)行修改
- 7.點(diǎn)擊break on response 再點(diǎn)擊run to completion
- 8.確認(rèn)系統(tǒng)界面上的響應(yīng)信息,是否符合要求。
- 響應(yīng)斷點(diǎn)(after response):修改響應(yīng)頁(yè)面的信息圖片等
- 步驟
- 1.開(kāi)始響應(yīng)斷言的設(shè)置:打開(kāi)rules–>automatic breakpoints–>after response 點(diǎn)擊勾選
- 2.操作數(shù)據(jù),抓取請(qǐng)求內(nèi)容。
- 3.修改response中TextView修改響應(yīng)數(shù)據(jù)信息,根據(jù)測(cè)試點(diǎn)進(jìn)行修改。
- 4.run to completion
- 5.在客戶(hù)端中相關(guān)字段驗(yàn)證
- 6.確認(rèn)顯示或者數(shù)據(jù)是否符合要求
fiddler常用快捷鍵:
- 快捷鍵
- ctrl+X :清空所有記錄
- Ctrl+F:查找
- F12:啟動(dòng)或者停止抓包
- Ctrl+a 選擇所有的Session
- ESC 不選擇任何的Session
- Ctrl+I 反選Session
- Delete 刪除選擇的Session
- shift+Delete 刪除未選擇的Session
- R 重放選擇的Session(可以重放多個(gè)Session)
- P 選擇“當(dāng)前Session”的“父Session”
- C 選擇“當(dāng)前Session”的“子Session”
- D 選擇“重復(fù)的Session”(有相同的URL和相同的method)
jmeter:
一、JMeter概述
- 1、JMeter是什么?
- 1)Apache JMeter是Apache開(kāi)源組織開(kāi)發(fā)的純Java桌面應(yīng)用,用于進(jìn)行壓力測(cè)試和性能測(cè)量。
- 2)JMeter最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,后來(lái)擴(kuò)展到其他測(cè)試領(lǐng)域。
- 3)JMeter可用于對(duì)靜態(tài)和動(dòng)態(tài)資源的性能進(jìn)行測(cè)試,資源包括:
文件、Servlet、Web動(dòng)態(tài)語(yǔ)言、Java對(duì)象、數(shù)據(jù)庫(kù)和查詢(xún)、FTP服務(wù)器等; - 4)JMeter可用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M大并發(fā)下繁重的負(fù)載,來(lái)測(cè)試不同壓力情況下的整體性能;
- 5)JMeter提供了圖形化的結(jié)果,供用戶(hù)進(jìn)行性能分析。
二、JMeter的優(yōu)點(diǎn):
- 1)能夠?qū)TTP和FTP服務(wù)器進(jìn)行壓力和性能測(cè)試,也可以對(duì)任何數(shù)據(jù)庫(kù)進(jìn)行同樣的測(cè)試(通過(guò)JDBC)。
- 2)純Java開(kāi)發(fā),具備完全的可移植性。
- 3)完全Swing和輕量組件支持包。
- 4)完全多線(xiàn)程:通過(guò)多個(gè)線(xiàn)程并發(fā)取樣、通過(guò)單獨(dú)的線(xiàn)程組對(duì)不同的功能同時(shí)取樣。
- 5)精心的GUI設(shè)計(jì)允許快速操作和更精確地計(jì)時(shí)。
- 6)緩存和離線(xiàn)分析/回放測(cè)試結(jié)果。
- 7)完全開(kāi)源,可以對(duì)JMeter進(jìn)行定制化的二次開(kāi)發(fā),擴(kuò)展自己所需的插件。
三、JMeter的缺點(diǎn):
- 1)無(wú)類(lèi)似LoadRunner的IP欺騙功能。(讓負(fù)載均衡模塊生效)
云計(jì)算平臺(tái),服務(wù)器端一般采用負(fù)載均衡模塊,不同的請(qǐng)求到來(lái),能夠分發(fā)給不同服務(wù)器處理(大集群) - 2)錄制功能需要借助于第三方工具Badboy或者使用瀏覽器進(jìn)行代理錄制,相對(duì)繁瑣。
- 3)報(bào)表類(lèi)型較少,不如LoadRunner報(bào)表齊全。
- 4)工具入門(mén)比LoadRunner困難些。
- 5)場(chǎng)景設(shè)計(jì)比LoadRunner復(fù)雜。
- 6)純多線(xiàn)程模式,不支持進(jìn)程模式。
- 7)參考資料較少,普及程度較LoadRunner低。
- 8)場(chǎng)景控制及干預(yù)不如LoadRunner方便,如無(wú)法在壓力測(cè)試過(guò)程中,人工增加并發(fā)用戶(hù)數(shù)。
- 9)大并發(fā)時(shí),結(jié)果數(shù)據(jù)不是很準(zhǔn)確。
四、Jmeter支持的協(xié)議:
- Web: HTTP、HTTPS
SOAP 簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議
FTP
JDBC
LDAP 輕量目錄訪(fǎng)問(wèn)協(xié)議
面向消息的中間件(通過(guò)JMS)
郵件:SMTP(S)、POP3(S)、IMAP(S)
MongoDB(NoSQL)
TCP
原生命令或Shell腳本
jmeter 目錄文件
bin目錄
- jmeter.bat windows下啟動(dòng)文件
- jmeter.sh linux下啟動(dòng)文件
- jmeter.properties jmeter系統(tǒng)配置文件
- 如果配置文件有修改,必須重啟jmeter才能生效
其他目錄
- lib存放jar包,是jmeter核心文件
- printable_docs目錄存放jmeter用戶(hù)手冊(cè)——幫助文檔
五、jmeter 入門(mén)腳本
- 添加測(cè)試計(jì)劃—當(dāng)打開(kāi)jmeter默認(rèn)有一個(gè)測(cè)試計(jì)劃
- 添加線(xiàn)程組
- 鼠標(biāo)在測(cè)試計(jì)劃上—右鍵—添加—線(xiàn)程(用戶(hù))—線(xiàn)程組
- 添加HTTP請(qǐng)求
- 鼠標(biāo)在線(xiàn)程組上右鍵—添加—取樣器—HTTP請(qǐng)求
- 配置HTTP請(qǐng)求
- 修改名稱(chēng)—發(fā)送百度請(qǐng)求
- 基本
- 填寫(xiě)協(xié)議HTTP
- 填寫(xiě)服務(wù)器或IP www.baidu.com
- 添加查看結(jié)果樹(shù)
- 鼠標(biāo)在線(xiàn)程組上右鍵—添加—監(jiān)聽(tīng)器—查看結(jié)果樹(shù)
六、線(xiàn)程用戶(hù)
- 線(xiàn)程數(shù):表示請(qǐng)求的虛擬用戶(hù)數(shù)量
- ramp-up:啟動(dòng)所有線(xiàn)程數(shù)所需要的時(shí)間
- 循環(huán)次數(shù):線(xiàn)程數(shù)循環(huán)
七、取樣器
- 作用:向服務(wù)器發(fā)送請(qǐng)求,并且記錄響應(yīng)時(shí)間和相應(yīng)內(nèi)容
八、jmeter運(yùn)行原理
- jmeter是按照線(xiàn)程的方式來(lái)運(yùn)行的
- jmeterGUI模式運(yùn)行測(cè)試腳本對(duì)電腦本身資源消耗較大,無(wú)法實(shí)現(xiàn)大的并發(fā)和壓力測(cè)試。
- 使用GUI模式主要目的是編寫(xiě)和調(diào)試jmeter測(cè)試腳本
- 使用命令行模式實(shí)現(xiàn)高并發(fā)和壓力測(cè)試
九、jmeter測(cè)試計(jì)劃要素
使用jmeter編寫(xiě)測(cè)試腳本—要素
- 測(cè)試計(jì)劃
- 在測(cè)試計(jì)劃中至少有一個(gè)線(xiàn)程組
- 在線(xiàn)程組中至少有一個(gè)取樣器
- 在測(cè)試計(jì)劃中必須有監(jiān)聽(tīng)器
十、jmeter錄制腳本
- 使用badboy錄制
- 安裝badboy
- 打開(kāi)badboy在地址欄中輸入被測(cè)網(wǎng)址、回車(chē)
- 打開(kāi)badboy時(shí)默認(rèn)記錄狀態(tài)、輸入網(wǎng)址,直接操作即可。
- 操作完成—點(diǎn)擊停止記錄
- 導(dǎo)出腳本
- file—export to jmeter保存
- 在jmeter中打開(kāi)已有文件
- jmeter腳本文件的后綴名.jmx
- 在jmeter點(diǎn)擊打開(kāi)文件,選擇文件路徑,找到需要的文件打開(kāi)。
十一、使用jmeter自身代理錄制移動(dòng)端
- 配置jmeter
- 1.打開(kāi)jmeter創(chuàng)建新的測(cè)試計(jì)劃
- 2.在測(cè)試計(jì)劃下添加一個(gè)線(xiàn)程組
- 3.添加HTTP代理服務(wù)器
- 在測(cè)試計(jì)劃下–右鍵–非測(cè)試原件–HTTP代理服務(wù)器
- 4.配置HTTP代理服務(wù)器
- 端口號(hào)默認(rèn)
- https domains中填寫(xiě)電腦本地IP地址或localhost
- 目標(biāo)控制器選擇 測(cè)試計(jì)劃>線(xiàn)程組
- 點(diǎn)擊啟動(dòng)按鈕—ok
- 配置手機(jī) 和fiddler配置相同
接口測(cè)試知識(shí)
- 接口三要素
- 請(qǐng)求地址/方式
- 請(qǐng)求參數(shù)
- 返回值
- http協(xié)議
- 請(qǐng)求方式
- get
- 帶參數(shù)params
- 不帶參數(shù)
- post
- x-www-form-urlencoded 參數(shù)類(lèi)型—鍵值對(duì)
- content-type:application/x-www-form-urlencoded
- josn格式數(shù)據(jù)
- Content-type:application-josn
- x-www-form-urlencoded 參數(shù)類(lèi)型—鍵值對(duì)
- put
- delete
- get
- 請(qǐng)求方式
十二:jmeter取樣器—HTTP請(qǐng)求(以http請(qǐng)求為例學(xué)習(xí)jmeter 取樣器)
- http管理器
- http信息頭管理器
- 位置
- 配置原件
- http信息頭管理器—http請(qǐng)求頭
- 主要使用content-type參數(shù)(指請(qǐng)求參數(shù)的數(shù)據(jù)類(lèi)型)
- 配置原件
- 在jmeter中,發(fā)送http的post請(qǐng)求時(shí),需要添加http信息頭管理器
十三、HTTP請(qǐng)求配置
- http協(xié)議: 默認(rèn)端口號(hào) 80
- https協(xié)議 : 默認(rèn)端口號(hào) 443
- 協(xié)議: http/https
- 服務(wù)器名稱(chēng)或IP 接口的域名 127.0.0.1
- 端口號(hào): 如果有填寫(xiě)具體的端口號(hào) 沒(méi)有端口號(hào)就不填
- 方法:http協(xié)議請(qǐng)求方式
- 路徑: 接口地址
- 內(nèi)容編碼: (有漢字加) utf-8
- 參數(shù):針對(duì)post請(qǐng)求參數(shù)是x-www-form-urlencoded格式和form-data格式
- 消息體數(shù)據(jù):針對(duì)post請(qǐng)求中的josn格式/xml格式請(qǐng)求數(shù)據(jù),相當(dāng)于postman中raw格式
- 文件上傳:上傳文件接口
postman:
Linux操作系統(tǒng)
- Linux簡(jiǎn)介: 一種開(kāi)源的免費(fèi)的操作系統(tǒng),安裝在計(jì)算機(jī)硬件上、用來(lái)管理計(jì)算機(jī)硬件和軟件資源的系統(tǒng)軟件。
Linux的目錄結(jié)構(gòu)
- /lib目錄
- 系統(tǒng)開(kāi)機(jī)所需要的最基本的動(dòng)態(tài)連接共享庫(kù),其作用類(lèi)似于Windows里面的DLL文件。幾乎所有的應(yīng)用程序都要用到這些共享庫(kù)。
- /lost+found
- 這個(gè)目錄一般情況下是空的,當(dāng)系統(tǒng)非法關(guān)機(jī)后,這里就存放了一些文件。
- /etc目錄[重點(diǎn)]
- 所有的系統(tǒng)管理所需要的配置文件和子目錄 my.conf
- /usr(重點(diǎn))
- 這是一個(gè)非常重要的目錄,用戶(hù)的很多應(yīng)用程序和文件都放在這個(gè)目錄下,類(lèi)似于Windows下的program files目錄。
- /boot[重點(diǎn)]
- 存放的是啟動(dòng)Linux時(shí)使用的一些核心文件,包括一些連接文件和鏡像文件。
- /proc
- 這個(gè)目錄是一個(gè)虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,訪(fǎng)問(wèn)這個(gè)目錄來(lái)獲取系統(tǒng)信息。
- /srv
- service的縮寫(xiě),該目錄存放一些服務(wù)啟動(dòng)之后需要提供的數(shù)據(jù)。
- /sys
- 這是Linux2.6內(nèi)核一個(gè)很大的變化,該目錄下安裝了2.6內(nèi)核中新出現(xiàn)的一個(gè)文件系統(tǒng)。
- /tmp
- 這個(gè)目錄是存放一些臨時(shí)文件的。
- /dev
- 類(lèi)似于Windows的設(shè)備管理器,把所有的硬件用文件的形式來(lái)儲(chǔ)存。
- /media[重點(diǎn)]
- Linux系統(tǒng)會(huì)自動(dòng)識(shí)別一些設(shè)備,例如U盤(pán),光驅(qū)等等,識(shí)別后Linux會(huì)把識(shí)別的設(shè)備掛載到這個(gè)目錄下。
- /mnt[重點(diǎn)]
- 系統(tǒng)提供該目錄是為了讓用戶(hù)臨時(shí)掛在別的文件系統(tǒng),我們可以將外部的存儲(chǔ)掛載在/mnt/上,然后進(jìn)入該目錄就可以查看里面的內(nèi)容了。
- /opt
- 這是給主機(jī)額外安裝軟件所擺放的目錄,如安裝Oracle數(shù)據(jù)庫(kù)就可以放到該目錄下,默認(rèn)為空。
- /usr/local[重點(diǎn)]
- 這是另外一個(gè)給主機(jī)額外安裝軟件所安裝的目錄,一般是指通過(guò)編譯源碼方式安裝的程序。
- /var[重點(diǎn)]
- 這個(gè)目錄中存放著不斷擴(kuò)充的東西,習(xí)慣將經(jīng)常被修改的目錄放在這個(gè)目錄下,包括各種日志文件。
- /selinux
- selinux是一種安全子系統(tǒng),它能控制程序只能訪(fǎng)問(wèn)特定文件。
總結(jié):1>linux的目錄中只有且只有一個(gè)根目錄/
2>linux的各個(gè)目錄存放的內(nèi)容是規(guī)劃好的,不能亂放文件。
3>linux是以文件的形式管理設(shè)備,因此Linux系統(tǒng),一切皆為文件。
4>Linux的各個(gè)文件目錄下存放的內(nèi)容,至少有一個(gè)要認(rèn)識(shí)。
Linux常用命令
-
1.切換目錄命令:cd
- 使用cd app切換到app目錄
- 使用cd …切換到上一層目錄
- 使用cd /切換到根目錄
- 使用cd ~切換到用戶(hù)主目錄
- 使用cd -切換到上一個(gè)所在目錄
使用tab鍵來(lái)補(bǔ)全文件路徑
-
2.列出文件列表:ls ll
- ls(list)是一個(gè)非常有用的命令,用來(lái)顯示當(dāng)前目錄下的內(nèi)容。配合參數(shù)的使用,能以不同方式顯示目錄內(nèi)容;格式:ls(參數(shù))[路徑或文件名]
-
常用:(在Linux中 .開(kāi)頭的文件都是隱藏的文件)
- ls
- ls -a[ 顯示所有文件或目錄(包含隱藏的文件)]
- ls -l(縮寫(xiě)成ll)
-
3.創(chuàng)建目錄和移除目錄:mkdir rmdir
- mkdir(make directory)命令創(chuàng)建子目錄
- mkdir app 在當(dāng)前目錄下創(chuàng)建app目錄
- mkdir -p app2/test 創(chuàng)建app2以及test目錄
- rmdir (remove directory)命令用來(lái)刪除“空”的子目錄
- rmdir app 刪除app目錄
添加用戶(hù)
- 基本語(yǔ)法
- useradd [選項(xiàng)] 用戶(hù)名
- 實(shí)際案例
- 添加一個(gè)用戶(hù)xiaoming.
- useradd xiaoming
- (特別說(shuō)明,cd表示change directory,切換目錄)
- 細(xì)節(jié)說(shuō)明:
- 1>當(dāng)創(chuàng)建用戶(hù)成功后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建和用戶(hù)同名的家目錄
- 2>也可以通過(guò) useradd -d 指定目錄,新的用戶(hù)名,給新創(chuàng)建的用戶(hù)指定家目錄。(# useradd -d /home/dog/ xiaoming )
- useradd xiaoming
- 添加一個(gè)用戶(hù)xiaoming.
指定/修改密碼
- 基本語(yǔ)法:
- passwd 用戶(hù)名
- 應(yīng)用案例:
- 給xiaoming指定密碼(# passwd xiaoming)
刪除用戶(hù)
- 基本語(yǔ)法
- userdel 用戶(hù)名
- 應(yīng)用案例
- 1>刪除用戶(hù)小明,但是保留家目錄。(# userdel xiaoming)
- 2>刪除用戶(hù)以及用戶(hù)主目錄(# userdel -r xiaoming )
- 3>實(shí)際工作中刪除用戶(hù)時(shí)一般不會(huì)刪除家目錄
查詢(xún)用戶(hù)信息
- 基本語(yǔ)法
- id 用戶(hù)名
- 應(yīng)用案例
- 查詢(xún)r(jià)oot用戶(hù)信息(# id root)
切換用戶(hù)
- 介紹:在Linux中如果當(dāng)前用戶(hù)的權(quán)限不夠,可以通過(guò) su-指令,切換到高權(quán)限用戶(hù)
- 基本語(yǔ)法
- su -切換用戶(hù)名
- 細(xì)節(jié)說(shuō)明
- 1>從權(quán)限高的用戶(hù)切換到權(quán)限低的用戶(hù)不需要輸入密碼,反之則需要。
- 2>當(dāng)需要返回到原來(lái)的用戶(hù)時(shí),使用exit指令。
查看當(dāng)前用戶(hù)/登錄用戶(hù)
- 基本語(yǔ)法
- whoami/who am l
- 用戶(hù)組
- 類(lèi)似于角色,系統(tǒng)可以對(duì)有共性的多個(gè)用戶(hù)進(jìn)行統(tǒng)一的管理。
- 新增組
- 指令
- groupadd 組名
- 刪除組
- 指令(基本語(yǔ)法)
- groupdel 組名
- 增加用戶(hù)時(shí)直接加上組
- 基本語(yǔ)法
- useradd -g 用戶(hù)組 用戶(hù)名
- 案例演示
- 增加一個(gè)用戶(hù)zwj,直接將他指派到wudang
- #groupadd wudang
- #useradd -g wudangzwj(創(chuàng)建zwj用戶(hù),并且指定到wudang這個(gè)組)
- #id zwj(查看用戶(hù)信息)
- 基本語(yǔ)法
- 用戶(hù)組,修改用戶(hù)的組
- 基本語(yǔ)法
- usermod -g用戶(hù)組 用戶(hù)名
- 案例演示
- 創(chuàng)建一個(gè)shaolin組,將zwj用戶(hù)修改到shaolin組
- #groupadd shaolin
- #usermod -g shaolin zwj
- id zwj(查看用戶(hù)信息)
- 增加用戶(hù)時(shí)直接加上組
- 基本語(yǔ)法
- useradd -g
1.系統(tǒng)信息
- arch 顯示機(jī)器的處理器架構(gòu)
- uname -m 顯示機(jī)器的處理器架構(gòu)
- uname -r 顯示正在使用的內(nèi)核版本
- dmidecode -q 顯示硬件系統(tǒng)部件 - (SMBIOS / DMI)
- hdparm -i /dev/hda 羅列一個(gè)磁盤(pán)的架構(gòu)特性
- hdparm -tT /dev/sda 在磁盤(pán)上執(zhí)行測(cè)試性讀取操作
- cat /proc/cpuinfo 顯示CPU info的信息
- cat /proc/interrupts 顯示中斷
- cat /proc/meminfo 校驗(yàn)內(nèi)存使用
- cat /proc/swaps 顯示哪些swap被使用
- cat /proc/version 顯示內(nèi)核的版本
- cat /proc/net/dev 顯示網(wǎng)絡(luò)適配器及統(tǒng)計(jì)
- cat /proc/mounts 顯示已加載的文件系統(tǒng)
- lspci -tv 羅列 PCI 設(shè)備
- lsusb -tv 顯示 USB 設(shè)備
- date 顯示系統(tǒng)日期
- cal 2007 顯示2007年的日歷表
- date 041217002007.00 設(shè)置日期和時(shí)間 - 月日時(shí)分年.秒
- clock -w 將時(shí)間修改保存到 BIOS
2.關(guān)機(jī) (系統(tǒng)的關(guān)機(jī)、重啟以及登出 )
- shutdown -h now 關(guān)閉系統(tǒng)
- init 0 關(guān)閉系統(tǒng)
- telinit 0 關(guān)閉系統(tǒng)
- shutdown -h hours:minutes & 按預(yù)定時(shí)間關(guān)閉系統(tǒng)
- shutdown -c 取消按預(yù)定時(shí)間關(guān)閉系統(tǒng)
- shutdown -r now 重啟
- reboot 重啟
- logout 注銷(xiāo)
- sync 把內(nèi)部數(shù)據(jù)同步到磁盤(pán)上
3.文件和目錄
- cd /home 進(jìn)入 ‘/ home’ 目錄’
- cd … 返回上一級(jí)目錄
- cd …/… 返回上兩級(jí)目錄
- cd 進(jìn)入個(gè)人的主目錄
- cd ~user1 進(jìn)入個(gè)人的主目錄
- cd - 返回上次所在的目錄
- pwd 顯示工作路徑
- ls 查看目錄中的文件
- ls -F 查看目錄中的文件
- ls -l 顯示文件和目錄的詳細(xì)資料
- ls -a 顯示隱藏文件
- ls [0-9] 顯示包含數(shù)字的文件名和目錄名
- tree 顯示文件和目錄由根目錄開(kāi)始的樹(shù)形結(jié)構(gòu)
- lstree 顯示文件和目錄由根目錄開(kāi)始的樹(shù)形結(jié)構(gòu)
- mkdir dir1 創(chuàng)建一個(gè)叫做 ‘dir1’ 的目錄’
- mkdir dir1 dir2 同時(shí)創(chuàng)建兩個(gè)目錄
- mkdir -p /tmp/dir1/dir2 創(chuàng)建一個(gè)目錄樹(shù) (創(chuàng)建多級(jí)目錄)
- rm -f file1 刪除一個(gè)叫做 ‘file1’ 的文件’
- rmdir dir1 刪除一個(gè)叫做 ‘dir1’ 的目錄’
- rm -rf dir1 刪除一個(gè)叫做 ‘dir1’ 的目錄并同時(shí)刪除其內(nèi)容
- rm -rf dir1 dir2 同時(shí)刪除兩個(gè)目錄及它們的內(nèi)容
- mv dir1 new_dir 重命名/移動(dòng) 一個(gè)目錄
- cp指令
- cp指令拷貝文件到指定目錄
- 基本語(yǔ)法
- cp [選項(xiàng)] source dest
- 常用選項(xiàng)
- -r : 遞歸復(fù)制整個(gè)文件夾
- 應(yīng)用實(shí)例
*
- cp file1 file2 復(fù)制一個(gè)文件
- cp dir/* . 復(fù)制一個(gè)目錄下的所有文件到當(dāng)前工作目錄
- cp -a /tmp/dir1 . 復(fù)制一個(gè)目錄到當(dāng)前工作目錄
- cp -a dir1 dir2 復(fù)制一個(gè)目錄
- cp -r dir1 dir2 復(fù)制一個(gè)目錄及子目錄
- ln -s file1 lnk1 創(chuàng)建一個(gè)指向文件或目錄的軟鏈接
- ln file1 lnk1 創(chuàng)建一個(gè)指向文件或目錄的物理鏈接
- touch 指令
- touch指令創(chuàng)建空文件
- 基本語(yǔ)法
- touch 文件名稱(chēng)
- 應(yīng)用案例
- 創(chuàng)建一個(gè)空文件 Holle.txt
- #touch Holle.txt
- 創(chuàng)建一個(gè)空文件 Holle.txt
4.Linux實(shí)操篇 實(shí)用指令
- 指定運(yùn)行級(jí)別
- 運(yùn)行級(jí)別說(shuō)明
- 0:關(guān)機(jī)
- 1:單用戶(hù)【找回丟失密碼】
- 2:多用戶(hù)狀態(tài)無(wú)網(wǎng)絡(luò)服務(wù)
- 3:多用戶(hù)狀態(tài)有網(wǎng)絡(luò)服務(wù)
- 4:系統(tǒng)未使用保留給客戶(hù)
- 5:圖形界面
- 6:系統(tǒng)重啟
- 常用的運(yùn)行級(jí)別是3和5,要修改默認(rèn)的運(yùn)行級(jí)別可改文件。
- /etc/inittab的id:5:initdefault:這一行中的數(shù)字。
- 命令(基本語(yǔ)法):init[012356]
- 應(yīng)用實(shí)例
- 案例: 通過(guò)init 來(lái)切換不同的運(yùn)行級(jí)別,比如5->3,然后關(guān)機(jī)
- init3
- init5
- init0
- 面試題
- 如何找回root密碼,如果我們不小心忘記了root密碼,怎么找回。
- 思路:進(jìn)入到單用戶(hù)模式,然后修改root密碼。(因?yàn)檫M(jìn)入單用戶(hù)模式,root不需要密碼就可以登錄)
- 實(shí)操總結(jié):
- 開(kāi)機(jī)->在引導(dǎo)時(shí)按回車(chē)鍵–>看到一個(gè)界面輸入e–>看到一個(gè)新的界面,選中第二行(編輯內(nèi)核)再輸入e–>在這行最后輸入1,再按回車(chē)–>再輸入b;這時(shí)就會(huì)進(jìn)入單用戶(hù)模式。
- 進(jìn)入單用戶(hù)模式后用passwd root 指令來(lái)修改root用戶(hù)密碼。
- 如何找回root密碼,如果我們不小心忘記了root密碼,怎么找回。
5.幫助指令
- man獲得幫助指令
- 基本語(yǔ)法
- man[命令或配置文件](功能描述:獲得內(nèi)核幫助信息)
- 應(yīng)用案例
- 查看ls命令的幫助信息
- 基本語(yǔ)法
- help命令(功能描述:獲得shell內(nèi)置命令的幫助信息)
- 應(yīng)用案例
- 查看cd命令的幫助信息
- 應(yīng)用案例
MySQL數(shù)據(jù)庫(kù)
總結(jié)
- 上一篇: bsp的分析(其中使用buildroot
- 下一篇: LeetCode43——Multiply