日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件测试笔记

發(fā)布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件测试笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@[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屬性中,這種樣式我們稱為內聯樣式,內聯樣式只對當前的元素中的內容起作用如下:
<p style="color:red;font-size:40px;">maxiaohei</p>
  • 也可以將css樣式編寫到head中的style標簽里,然后通過CSS選擇器選中指定元素,然后可以同時為這些元素一起設置樣式,這樣可以使樣式進一步復用。將樣式表寫到style標簽中,也可以使表現和結構進一步分離。【推薦使用(內部樣式表)】
<head><title>css</title><style type="text/css">p{ color:red;font-size:40px;}</style><!--也可以將樣式表編寫到外部的CSS文件中,然后通過link標簽來將外部的CSS文件引入到當前頁面中,這樣外部文件中的CSS樣式將會應用到當前頁面中將CSS樣式表統(tǒng)一寫到外部的樣式表中,完全使結構和表現分離,可以使樣式表在不同的頁面中使用,最大限度使樣式重復利用,將樣式統(tǒng)一寫在樣式表中,然后通過link標簽引入,可以利用瀏覽器緩存加快用戶訪問的速度,提高了用戶體驗。--><link rel="stylesheet" type="test/css" href="style.css"/> </head>
  • CSS語法
<!doctype html> <html><head><meta charset="utf-8"/><title>csss</tltle><style type="text/css">/*css的注釋:作用和HTML注釋類似,只不過它必須寫在style標簽中,或者是CSS文件中CSS語法:選擇器聲明塊選擇器-通過選擇器(p)可以選擇頁面中的指定元素并且將聲明塊中的樣式應用到選擇器對應的元素上聲明塊-聲明塊緊跟在選擇器的后邊,使用一對{}括起來聲明塊中實際上是一組一組的名值對結構,這一組一組的名值對我們稱為聲明在一個聲明塊中可以寫多個聲明多個聲明之間用;隔開聲明的樣式名樣式值之間用:來連接*/p{color:red;font size:500px;}</style></head><body><p style="color:red">今天天氣真不錯,PM2.5也就500</p></body> </html>
  • CSS常用選擇器
<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>常用選擇器</title><style type="text/css">/*為頁面中所有的p元素,設置一個字體顏色為紅色-元素選擇器 作用:通過元素選擇器可以選中頁面中所有的指定元素語法:標簽名{}*//* p{color:red;}--id選擇器:-通過元素的id屬性值選中唯一的元素-語法:#id屬性值{}*/如:#p1{font-size:20px }---類選擇器--class選擇器-class屬性和id屬性類似,只不過class屬性可以重復-擁有相同class屬性值的元素,可以認為是一組元素.p2{color:red;}</style></head><body><p>鋤禾日當午,汗滴禾下土。</p><p>鋤禾日當午,汗滴禾下土。</p><p id="p1">鋤禾日當午,汗滴禾下土。</p><p>鋤禾日當午,汗滴禾下土。</p><p class="p2">鋤禾日當午,汗滴禾下土。</p><p class="p2">鋤禾日當午,汗滴禾下土。</p></body> </html>
  • –另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長度有限制的
      不太安全
  • 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)不需要一個中央服務器,每個電腦都是一個完整的版本庫。

測試管理工具

  • 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",這樣會自動解壓縮。
  • 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
      • put
      • delete

十二: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 )
指定/修改密碼
  • 基本語法:
    • 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
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用戶密碼。
5.幫助指令
  • man獲得幫助指令
    • 基本語法
      • man[命令或配置文件](功能描述:獲得內核幫助信息)
    • 應用案例
      • 查看ls命令的幫助信息
  • help命令(功能描述:獲得shell內置命令的幫助信息)
    • 應用案例
      • 查看cd命令的幫助信息

MySQL數據庫


總結

以上是生活随笔為你收集整理的软件测试笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。