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