學習筆記-Jmeter壓測、Charles的使用、python入門
上一節內容:
- 接口
- postman測試接口
- jmeter測試接口
本節學習內容:
- jmeter壓測、分布式、noGUI運行
- 抓包工具的使用
- python入門
JMETER
首先把上一節jmeter沒有說到的常用功能記錄一下,上一節我們講到了jmeter的接口測試,接下來我們先學習一下jmeter如何連接數據庫。
1)連接數據庫
第一步需要先導入JDBC的jar包,因為jmeter本身不能直接連接mysql,所以需要導入第三方的jar包,來連接mysql
這裏導入的是mysql的jar包,當然如果導入sql server的jar也可以連接sql server。
然後,在線程組添加一個數據庫連接原件
再下一步,配置數據庫連接
像上面這樣,variable name:配置mysql連接池的名稱,後面發sql請求的時候指定連接這裏;database url:數據庫連接的url,這個大家根據自己需要連接的數據庫配置即可
JDBC driver class :數據庫驅動:這裏就是指定連接什麽類型的數據庫,mysql、oracle、SqlServer等等,我這裏連接的是mysql。最下面就是賬號密碼。
接下來再創建一個sql執行元件,用於執行sql語句
同樣可以用查看結果樹來查看sql執行結果
2)jmeter壓測
jmeter壓測,線程組配置
根據自己的測試需要設置線程數、循環數、並發時間限制、持續時間等等。
我們一這個連接數據庫的執行為例子,學習一下在jmeter中怎麽查看壓測結果。
在線程組創建一個聚合報告
然後按照線程組中的設置執行請求,得到以下結果
聚合報告的結果主要以tps、響應時間、並發用戶數這三項為主要判斷依據。
tps(Throughput)是每秒鐘處理的請求數,也就是指服務器的處理能力,tps越高說明服務器處理能力越好;
響應時間(Average)也就是每個請求的處理時間;
並發用戶數(Samples) 也就是多少並發。
3)jmeter分布式
我們在壓測的時候,可能並發比較大, 一臺機子已經啟動不了那麽多並發了,這個時候我們就要使用多臺機子一起來發壓力,就要添加壓力機,添加壓力機怎麽添加呢?
首先要在做壓力機的機子上啟動jmeter的代理,然後做為控制機的機子上添加上壓力機的ip即可。
Jmeter的bin目錄下有一個jmeter-server,啟動它即可,windows機子作為壓力機的話,運行jmeter-sever.bat,linux作為壓力機的話,運行jmeter-server。
然後在作為控制機的jmeter配置文件裏添加壓力機ip即可,jmeter的配置文件在bin目錄下jmeter.properties,添加壓力機的時候,在配置文件裏面找到remote_hosts添加ip,然後
重啟jmeter就可以看到遠程壓力機了
由於我這裏沒有可以使用的機器,這裏就不再做演示。
4)jmeter no GUI運行
我們做測試一般都是使用界面化得工具,但是假設現在需要在一臺沒有界面服務器上做壓力測試,該怎麽做呢?
首先,在你的電腦上做好腳本,保存起來。然後放到需要測試的設備上某個路徑,比如D:/
打開jmeter可運行的目錄,執行命令行命令:jmeter -n -t D:/*.jmx -l c:/Desktop/result.jtl,result.jtl就是測試的結果,在使用jmeter中的聚合報告打開它查看就可以了。
Charles
Charles是一款很實用,界面很友好(至少跟fiddler比起來),功能強大的抓包神器,因為它是基於 java 開發的,所以跨平臺,Mac、Linux、Windows下都是可以使用的,
並且在Android和iOS設備上通用。它的原理是通過成為電腦或者移動設備的代理截取請求和請求結果達到分析抓包的目的。測試中使用charles主要是為了模擬各種異常情況,
排查問題。
如何抓取HTTPS請求,請參考:https://www.jianshu.com/p/ec0a38d9a8cf
想要使用charles裝包,首先要把charles設置成代理
接下來你就可以從charles中看到所有mac上的請求了,當然如果你不想看到所有的請求,只想看到自己想抓取的,那麽可以設置過濾請求
include 可以設置想要抓包的地址;exclude可以設置想要過濾的地址。
下一步我們就用charles來抓包看看,這裏我用公司內部的加固系統作演示
這樣就是抓包成功了,可以獲取到請求參數、請求方式和返回值等信息。
charles修改請求
能抓包了,下面我們來做一些改動試試,我們先來打開一個應用加固界面,然後在charles中設置斷點,並且查看瀏覽器中的頁面
設置完成以後在下一次做同樣的請求時,就方便著做一些操作了,然後在瀏覽器中刷新頁面,使再次請求
把這裏的apks修改為sdks,查看結果
可以看到瀏覽器上地址還是現實apks,但是頁面已經跳轉到sdk的界面了,這樣就算是請求修改成功了。
charles修改返回值
再一次的在apks頁面發送請求,在charles中修改返回值
將這裏的返回值的文字修改掉,然後繼續發送
好的,平臺的名字改成我專用的了,修改返回值成功。
以上就是Charles測一些簡單的使用。
Python
python是一門計算機語言,什麽是計算機語言呢?就是使用者和計算機之間交互的一種媒介,我們想計算機發送哪些指令,計算機執行哪些操作,就靠語言來實現。
計算機語言又分為編譯性語言和解釋性語言,編譯性語言是指寫完代碼不能執行,得先編譯比方說 c、c++、c#等,解釋性語言就不需要編譯 直接執行比方說python、java、
php、js、go、ruby等,python就屬於是解釋性語言。下面我們來學習python
學習一門語言呢,肯定是要學習最新得啦,那麽我們就是學習python3的特性。
python是可以不使用任何工具寫代碼,比如你新建一個txt就可以寫,當然前提是你代碼能力足夠強。否則呢還是乖乖使用編輯器來寫代碼吧。推薦使用PyCharm,根據自己的電
腦下載相對應的版本就好了,我使用的是MAC免費版。
下面來學習一下python
1)python中的變量
變量簡單說就是存東西的容器
name = ‘哈哈哈‘ #string 字符串 age = 18 #int 數字 money = 10000000.888 #floot 小數
像上面的用‘=’表示把後面的值存儲到前邊的變量名中。
2)輸入、輸出
python中用input方法輸入,用print方法輸出
name = input(‘請輸入你的名字:‘) print(name)
3)條件判斷
python中條件判斷使用if else來判斷,多個分支的判斷使用if elif else
if score >= 90: print(‘優秀‘) elif score < 90 and score >= 80: print(‘良好‘) elif score < 80 and score >= 60: print(‘及格‘) else: print(‘不及格‘)
4)循環
循環可以重復執行循環體裏面的代碼,python中有兩種循環,while和for,兩種循環的區別是,while循環之前,先判斷一次,如果滿足條件的話,再循環,for循環的時候必須有
一個可叠代的對象,才能循環,比如說得有一個數組,循環裏面會經常用到continue和break
continue:跳出本次循環繼續進行下一次循環
break:停止循環。
continue和break下面的代碼都不執行
while循環代碼示例
import random number = random.randint(1,100) #產生隨機數 count = 0 while count < 7: count += 1 guess = int(input(‘請輸入你猜的數字:‘)) if guess > number: print(‘猜大了‘) elif guess < number: print(‘猜小了‘) else: print(‘猜對了!‘) break else: print(‘你輸了!‘) ‘‘‘ #正常結束循環,會執行else裏面的代碼。break結束,不會執行else的代碼
for循環代碼示例
import random number = random.randint(1,100) #產生隨機數 # count = 0 for count in range(7): guess = int(input(‘請輸入你猜的數字:‘)) if guess > number: print(‘猜大了‘) elif guess < number: print(‘猜小了‘) else: print(‘猜對了!‘) break else: print(‘你輸了!‘)
5)格式化輸出
格式化輸出就是把輸出的內容都格式化成一個標準的模式,比如用戶登陸的時候每個人的名字都不一樣,這裏就需要格式化輸出
第一種是用“+”拼接,把輸出的字符串和變量連接起來就可以了
第二種是用占位符,占位符有常用的有三種,%s、%d和%f,%s是後面的值是一個字符串,%d是後面的值必須是一個整數,%f後面是小數
import datetime usename = input(‘請登錄:‘) today = datetime.datetime.today() print(‘歡迎‘+usename) print(‘歡迎%s登錄,今天是%s‘%(usename,today))
學習筆記-Jmeter壓測、Charles的使用、python入門