導航:首頁 > 編程語言 > python性能測試腳本

python性能測試腳本

發布時間:2022-11-30 09:50:48

① 【python】【壓力測試】Locust壓力測試工具

性能測試參數

熟悉 Apache ab 工具的同學都知道,它是沒有界面的,通過命令行執行。 Locust 同樣也提供的命令行運行,好處就是更節省客戶端資源。

啟動參數:
--no-web 表示不使用Web界面運行測試。
-c 設置虛擬用戶數。
-r 設置每秒啟動虛擬用戶數。
-t 設置設置運行時間。

出現的報錯及解決辦法:
使用Locust進行性能測試,Locust no-web模式執行命令locust -f zkxl_verify_ locust.py --host= https://www..com --no-web -c 10 -r 2 -t 1m
提示locust: error: unrecognized arguments: --no-web -c

參考locust官方文檔 https://docs.locust.io/en/latest/running-locust-without-web-ui.html?highlight=no-web
將命令參數--no-web 更改為 --headless,將命令中指定用戶並發數的參數 -c 改為 -u,即更改命令為:locust -f zkxl_verify_ locust.py --host= https://www..com --headless -u 10 -r 2 -t 1m 即可.

locust的測試數據可以保存到CSV文件中,有兩種方法可以進行此操作:
首先,通過Web UI運行Locust時,可以在「Download Data」選項卡下得到CSV文件。
其次,可以使用標簽運行Locust,該標簽將定期保存兩個CSV文件。如果計劃使用--no-web標簽以自動化方式運行Locust

文件將被命名為example_response_times.csv 和 example_stats.csv (使用--csv=example)並記錄Locust構建的信息。
如果你想要更快(慢)的寫入速度,也可以自動以寫入頻率:

此數據將寫入兩個文件,並將_response_times.csv和_stats.csv添加到你提供的名稱中:

打開命令提示符(或linux終端),輸入 locust --help 。

參考: 官方文檔

一旦單台機器不夠模擬足夠多的用戶時,Locust支持運行在多台機器中進行壓力測試。

為了實現這個,你應該在 master 模式中使用 --master 標記來啟用一個 Locust 實例。這個實例將會運行你啟動測試的 Locust 交互網站並查看實時統計數據。master 節點的機器自身不會模擬任何用戶。相反,你必須使用 --slave 標記啟動一台到多台 Locustslave 機器節點,與標記 --master-host 一起使用(指出master機器的IP/hostname)。

常用的做法是在一台獨立的機器中運行master,在slave機器中每個處理器內核運行一個slave實例。

在 master 模式下啟動 Locust:

在每個 slave 中執行(192.168.0.14 替換為你 msater 的IP):

參數

--master

設置 Locust 為 master 模式。網頁交互會在這台節點機器中運行。

--slave

設置 Locust 為 slave 模式。

--master-host=X.X.X.X

可選項,與 --slave 一起結合使用,用於設置 master 模式下的 master 機器的IP/hostname(默認設置為127.0.0.1)

--master-port=5557

可選項,與 --slave 一起結合使用,用於設置 master 模式下的 master 機器中 Locust 的埠(默認為5557)。注意,locust 將會使用這個指定的埠號,同時指定埠+1的號也會被佔用。因此,5557 會被使用,Locust將會使用 5557 和 5558。

--master-bind-host=X.X.X.X`

可選項,與 --master 一起結合使用。決定在 master 模式下將會綁定什麼網路介面。默認設置為*(所有可用的介面)。

--master-bind-port=5557

可選項,與 --master 一起結合使用。決定哪個網路埠 master 模式將會監聽。默認設置為 5557。注意 Locust 會使用指定的埠號,同時指定埠+1的號也會被佔用。因此,5557 會被使用,Locust 將會使用 5557 和 5558。

--expect-slaves=X

no-web 模式下啟動 master 時使用。master 將等待X連接節點在測試開始之前連接。

如下圖,我啟動了一個 master 和兩個 slave,由兩個 slave 來向被測試系統發送請求。

client屬性:

TaskSet類:實現了虛擬用戶所執行任務的調度演算法,包括規劃任務執行順序(schele_task)、挑選下一個任務(execute_next_task)、執行任務(execute_task)、休眠等待(wait)、中斷控制(interrupt)等等。
在此基礎上,我們就可以在TaskSet子類中採用非常簡潔的方式來描述虛擬用戶的業務測試場景,對虛擬用戶的所有行為(任務)進行組織和描述,並可以對不同任務的權重進行配置。

在TaskSet子類中定義任務信息時,可以採取兩種方式, @task 裝飾器和 tasks 屬性。

@task(1)中的數字表示任務的執行頻率,數值越大表示執行的頻率越高

採用tasks屬性定義任務:

tasks = {test_job1:1, test_job2:2}中,test_job1:1,test_job2:2表示事件執行的頻率,即test_job2的執行頻率是test_job1的兩倍

on_start函數是在Taskset子類中使用比較頻繁的函數。在正式執行測試前執行一次,主要用於完成一些初始化的工作。
例如,當測試某個搜索功能,而該搜索功能又要求必須為登錄態的時候,就可以先在on_start中進行登錄操作,HttpLocust使用到了requests.Session,因此後續所有任務執行過程中就都具有登錄態了

在TaskSequence類中,[email protected]_task()可以用來控制任務的執行順序;裡面的數值越小執行越靠前;

在Taskset類中,內置WAIT_TIME功能,它用於確定模擬用戶在執行任務之間將等待多長時間。Locust提供了一些內置的函數,返回一些常用的wait_time方法。
1、 between(min,max)函數 :用得比較多的函數
wait_time = between(3.0, 10.5):任務之間等待的時間是3到10.5秒之間的任意時間
還可以用任意函數來定義等待時間, 比如平均1秒的等待時間
wait_time = lambda self: random.expovariate(1) 1000
2、 constant(number) 函數:
wait_time=constant(3):任務之間等待的時候是3秒鍾,且等待的時候不能超過任務運行的總時間,也就是在執行py文件時設置的時間
3、 constant_pacing(number) *函數:
wait_time=constant_pacing(3):所以任務每隔3秒執行,但是當到達運行的總時間時,任務運行結束;

現實中有很多任務其實也是有嵌套結構的,比如用戶打開一個網頁首頁後,用戶可能會不喜歡這個網頁直接離開,或者喜歡就留下來,留下來的話,可以選擇看書、聽音樂、或者離開;

在有Taskset嵌套的情況下,執行子任務時, 通過 self.interrupt() 來終止子任務的執行, 來回到父任務類中執行, 否則子任務會一直執行;

在上一頁的案例中,在stay這個類中,對interrupt()方法的調用是非常重要的,這可以讓一個用戶跳出stay這個類有機會執行leave這個任務,否則他一旦進入stay任務就會一直在看書或者聽音樂而難以自拔。

在進行介面多用戶並發測試時,數據的重復使用可能會造成腳本的失敗,那麼需要對用戶數據進行參數化來使腳本運行成功。
已登錄功能為例:

創建 login_user() 方法,定義登錄字典 users , 通過randint 隨機獲取字典中的用戶數據。
在 login() 登錄任務中,調用 login_user() 方法實現 隨機用戶的登錄。

在此我們舉出網路搜索的例子,假設每個人搜索的內容是不相同的;那麼我們可以假設把數據放到隊列中,然後從隊列中依次把數據取出來;
可以利用python中Queue隊列來進行處理;

Queue的種類
Queue.Queue(maxsize=0):先進先出隊列
Queue.LifoQueue(maxsize=0):後進先出隊列
Queue.PriorityQueue(maxsize=0):構造一個優先隊列

參數maxsize是個整數,指明了隊列中能存放的數據個數的上限。一旦達到上限,插入會導致阻塞,直到隊列中的數據被消費掉。如果maxsize小於或者等於0,隊列大小沒有限制

Queue的基本方法

個別情況下測試數據可重復使用,因此我們可以把參數化數據定義為一個列表,在列表中取出數據;

在某些請求中,需要攜帶之前response中提取的參數,常見場景就是session_id。Python中可用通過re正則匹配,對於返回的html頁面,可用採用lxml庫來定位獲取需要的參數;
我們以phpwind登陸的來進行舉例,在登陸的介面中需要把token參數傳給伺服器,token的值由頁的介面返回;

方法一:使用正則表達式
方法二:採用lxml庫來定位獲取需要的參數

技術點:
1、導模塊:lxml模塊
2、etree.HTML() 從返回html頁面獲取html文件的dom結構
3、xpath() 獲取token的xpath路徑

catch_response = True :布爾類型,如果設置為 True, 允許該請求被標記為失敗。
通過 client.get() 方法發送請求,將整個請求的給 response, 通過 response.status_code 得請求響應的 HTTP 狀態碼。如果不為 200 則通過 response.failure('Failed!') 列印失敗!

參考文章:
https://www.jianshu.com/p/a48f4af81e67
https://www.cnblogs.com/fnng/p/6081798.html
http://class.itest.info/locust 【蟲師】
https://cloud.tencent.com/developer/article/1594240 【官方文檔的中文翻譯】

② python和java哪個比較適合做自動化測試,和測試開發一般用哪種語言。

語言歷史:

Python:簡單易懂。Python誕生於1991年,這門語言的初衷就是為了讓程序員可以用更少的代碼,寫出一樣的程序,達到事半功倍的效果。Python化繁為簡,給程序員減輕了不少壓力,以至於業界衍生出:人生苦短,我學Python。

Java:地位穩定。Java誕生於1995年,是一門有class為單位,高度面向對象的高級編程語言,因為Java語言穩定,很多公司在做商業級別項目時,都會選擇Java語言。

語言優點:

Python:易於學習、語法簡潔。Python對比其他語言來說,更容易一些,因為Python語言簡潔明了,很多外行人也能讀懂它的代碼,Python語言不需要很豐富的詞彙,簡單明了直奔主題,只需要少量的代碼就能創建出功能。

Java:架構獨特、速度快。Java是一門面向對象的編程語言,吸收了C++語言的各種優點同時擯棄了缺點,Java是可以跨平台的,應用十分廣泛,速度快的同時又十分穩定。

語言發展:

Python:快速崛起。Python發展快速,這是一個不爭的事實,Python主要優勢就是在任何方面都很強大,尤其是數據分析、機器學習、人工智慧領域,Python是人工智慧時代的第一語言。

Java:無法取代。Java是非常高級的編程語言,全球百分之八十以上的伺服器後台用的編程語言都是Java,至今還沒有語言可以替代它。

語言應用:

Python:人工智慧的首選。Python主要應用於數據分析、人工智慧、游戲開發、機器學習、腳本開發、網路爬蟲等領域,是大數據、人工智慧時代的主力軍。

Java:壟斷企業級應用的開發。Java主要應用就是伺服器開發、web開發以及安卓開發,壟斷了企業級應用的開發。

總體情況來講,Python和Java各有各的優勢,至於哪個更適合自動化測試,在這里小編推薦首選Python。

③ selenuim,qtp,loadrunner,jmeter有何區別,想學個腳本語言python和測試工具應該從哪裡入門呢。

  1. selenium和qtp是 功能的自動化測試,loadrunner和jmeter是性能的自動化測試

  2. selenium要求代碼能力比較高,適合用python,QTP一般用VBS,loadrunner一般用C,但是現在也可以用java等語言.

  3. 現在功能自動化用的工具最多的是QTP,但是selenium的趨勢在增長,建議用這個工具

④ Python自動化測試工具大概有哪些

一、對於你的問題,首先明確測試類型,然後才能明確自動化測試類型,最後定位哪個類型用哪個方面的自動化測試工具。
1、測試類型可以包括:白盒測試、黑盒測試(功能測試、性能測試)等。
2、不同的測試類型使用的自動化測試方法不同,白盒測試主要針對代碼級的單元測試、黑盒測試主要面對功能級和系統級的驗證測試。
3、自動化測試,針對白盒測試,一般需要有一定的編程基礎,即能夠基於功能代碼寫測試代碼,常用的單元測試方面的自動化測試工具很多,上網一搜全是。
4、自動化測試,針對功能測試,有幾種情況,基於CLI、API和GUI的測試;基於CLI、API的測試,即應用腳本技術向設備模擬發送CLI命令或者API請求,以達到控制設備的效果。基於GUI功能測試,即應用傳統的界面自動化測試工具(例如:RFT、QTP等)控制界面控制項操作的方法,以達到模擬用戶操作,這幾種方式都需要你有一定的編碼基礎;基於CLI、API的需要你懂腳本技術(例如:tcl、python、ruby等),RFT需要你懂java或者.net、QTP需要VB等。

5、你說的loadrunner就是性能測試方面的工具,即是測試軟體性能、例如多用戶操作等性能、也需要寫代碼,LR腳本支持的語言有:java、
c、Visual Basic、vbscrīpt。默認的腳本生成語言為
C;其實我想說的是,性能測試工具不重要,你需要掌握其性能測試的方法才是更重要的。
二、我感覺你想入門自動化測試,但是從你問的問題來看,有一定盲目性,我簡單說一下自動化測試吧。
1、自動化測試,其理念就是應用各種手段模擬人工操作,節省人力測試成本,保證產品測試質量。
2、你想學好自動化軟體測試,不是單單靠學習幾個自動化工具就能掌握的,但是你可以從工具入手,首先,告訴你自動化測試的基礎是:
1)編程技巧,包括高級語言和腳本語言,腳本語言是初期的掌握,可以有,tcl、phython、ruby等而高級語言,要好好學好一門,例如,我是對java為重點。還有,如果你是對web自動化測試的話,那麼jsp、php、HTML、CSS等web語言是必須掌握的。
2)操作系統技巧;因為軟體自動化測試是構建在操作系統上的,其技巧需要能善於利用到操作系統的各種技巧,例如:注冊表、環境變數、句柄等。
3)資料庫知識,要善於利用資料庫知識去存儲管理。
4)業務知識,這也是重點。你所在軟體行業的軟體業務,要知道你的軟體的工作方式。
5)質量與流程管理理念。
然後,你的學習步驟:

1)可以從工具入手,根據具體的項目去學習;例如:java軟體界面測試(RFT、QTP的java插件等)、web界面測試(QTP、
selenium等)、性能測試(RPT、loadrunner等)。但記住,學習其工具,重點不是簡單的使用,而是如何利用工具去擴展。
2)然後,重點學習以上的基礎,以編程為重點,其餘的結合學習,順便說一句,其實自動化測試的理念與軟體設計模式理念很像,你可以從中有所領悟。
3)之後,再學習去拓建自己的自動化測試框架,何謂框架,一下說不清楚,我給你推薦一下。
注意:如果沒有自動化測試方面的實踐項目的話,最好先從基礎學起,因為基礎學好了,自動化測試入門會很快的。
4(至於性能測試,也是一樣,可以先從工具入手,但不要局限於工具,性能測試最重要的是環境的構建方法以及對測試結果的分析方法,所以性能測試重點在於分析和實現過程,而不是工具使用過程。

⑤ python自動化教程Jmeter性能測試

python自動化教程Jmeter性能測試25套高級軟體測試,性能測試,功能測試,自動化測試,介面測試,移動端測試,手機測試,WEB測試,滲透測試,測試用例設計,黑盒測試,白盒測試,UFT高級測試,Android測試,Selenium3自動化測試,Python3 測試,Java介面測試項目實戰視頻教程

軟體測試技術包含:性能測試,功能測試,自動化測試,介面測試,移動端測試,手機測試,WEB測試,滲透測試,測試用例設計,黑盒測試,白盒測試,UFT高級測試,項目實戰,Android測試,Selenium3自動化測試,Python3 測試,Java介面測試,LoadRunner性能測試,Appiumapp自動化測試,UIAutomator,Appium,Unittest測試框架,Kali Linux Web滲透測試,Git+Jenkins持續集成,LR+Jmeter性能測試,分布式性能測試高級視頻教程。。。

Dodwnload:https://www.soft1188.com/rjcs/283.html

總目錄:25套高級軟體測試,性能測試,功能測試,自動化測試,介面測試,移動端測試,手機測試,WEB測試,滲透測試,測試用例設計,黑盒測試,白盒測試,目實戰視頻教程

第一套:【基礎精通】軟體測試特訓營基礎到就業班,系統測試,WEB測試,UFT與Selenium自動化測試,LR性能測試視頻教程

第二套:【項目實戰】軟體測試系列之Java Selenium3自動化測試項目實戰視頻教程

第三套:【微服務課】Spring Cloud微服務最新技術入門到精通視頻教程

第四套:【系統學習】Android移動端自動化測試從入門到實戰(Java篇)UIAutomator,Robotium,Appium實戰進階視頻教程

第五套:【系統學習】Android移動端專項測試與自動化測試(Python篇)UIAutomator,Appium,Unittest框架視頻教程

第六套:【性能測試】JMeter深入進階性能測試體系,介面性能測試,各領域企業實戰視頻教程

第七套:【項目實戰】JMeter全程實戰、性能測試實戰、分布式性能測試、真實案例分析、基礎到精通視頻教程

第八套:【性能測試】LoadRunner性能測試基礎到精通全程實戰視頻教程

第九套:【滲透測試】Kali Linux Web滲透測試視頻教程

第十套:【系統學習】Appiumapp自動化測試基礎到精通視頻教程

第十一套:【項目實戰】python selenium自動化測試項目實戰視頻教程(3套)

第十二套:【系統學習】快速上手JMeter性能測試工具視頻教程

第十三套:【系統學習】LoadRunner軟體性能測試,介面性能測試視頻教程

第十四套:【項目實戰】Selenium3.0深度解析自動化測試框架設計與實戰與平台設計高級測試開發實戰視頻教程

第十五套:【系統學習】Web自動化測試,Selenium基礎到企業應用,用例設計,持續集成視頻教程

第十六套:【項目實戰】最全面的Java介面自動化測試實戰視頻教程

第十七套:【項目實戰】Python介面自動化從設計到開發,測試框架實戰與自動化進階視頻教程

第十八套:【系統學習】達內軟體測試零基礎到就業視頻教程

第十九套:【測試就業】軟體測試就業指導視頻教程

第二十套:【安卓測試】Android安卓自動化新手進階測試培訓手機app軟體開發課

第二十一套:【系統學習】軟體測試特訓營,自動化測試與UFT應用視頻教程

第二十二套:【高新面試】Python高新面試教程移動自動化測試面試面試分析+知識理論+面試技巧視頻教程

第二十三套:【高級測試】最新Web自動化測試框架Selenium3.0+Python3,搭建通用的Web自動化測試框架實戰視頻教程

第二十四套:【高級測試】高級軟體測試工程師精英培訓班,軟體測試工程師(Web自動化+APP自動化+介面自動化+面試)視頻教程

第二十五套:【系統學習】軟體測試web自動化測試selenium+移動端項目測試appium+介面測試Jmeter+性能測試LoadRunner視頻教程

python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試python自動化教程Jmeter性能測試

⑥ python能夠做軟體的自動化測試嗎

可以,Python是可以做自動化測試的。
目前,Python自動化測試開始逐漸替代傳統的軟體測試,吸取了功能、性能、介面、自動化等專項測試領域的優勢,以後將在多個領域漸漸成為國內大部分質量控制、質量管理的首選,而且已經有很多公司使用Python自動化測試框架。

⑦ python是什麼

有一定的事實證明,Python語言更適合初學者,Python語言並不會讓初學者感到晦澀,它突破了傳統程序語言入門困難的語法屏障,初學者在學習Python的同時,還能夠鍛煉自己的邏輯思維,同時Python也是入門人工智慧的首選語言。
學習編程並非那麼容易,有的人可能看完了Python語法覺得特別簡單,但再往後看就懵了,因為到後期發現並不能學以致用,理論結合項目才是學好一門編程語言的關鍵。可以選擇報班入門,一般在2W左右,根據自己的實際需要實地了解,可以先在試聽之後,再選擇適合自己的。

⑧ Python做軟體自動化測試的入門提問

同在軟體測試崗位。由於同樣初學python,所以沒有太多的實踐經驗。

使用python的單元測試框架,可以建立測試類,構造測試集。
測試類中包含了common的測試方法定義,包括測試開始前建立測試環境的setUp方法和測試完成後清理還原環境的tearDown方法,最好按照約定規則(以test開頭)來命名所有的測試方法。
測試集允許你根據測試策略組合不同的測試用例並實施。

下面兩篇文章推薦看看:
http://www.ibm.com/developerworks/cn/linux/l-pyunit/
http://www.cnblogs.com/coderzh/archive/2010/08/23/custom-python-unittestoutput-as-gtest.html

有一個問題我還沒找到答案,就是如何讓單元測試框架的log輸出到文件(默認輸出到控制台)。

⑨ 求高手,求大神----------python與軟體測試之間的關系

1.python就可以當個工具來使用,類似的還有tcl,都是一樣的,就是腳本相關的作用。
我做測試一年多了,用的tcl,主要有下面的用途:
比如測試過程中要生成大量數據或者構造很復雜的條件,手工輸入比較麻煩,就可以用它來寫個小腳本,幫助你實現。
自動化測試:用pathon或tcl寫一些腳本,經常運行,這樣代替手工測試,不用手工重復測試,節省人力。
2.一個月掙多少錢是跟個人能力還有工作年限等等有關的,不能給出一個具體的值。但是有付出就有回報,你有學習的想法,這是很好的,慢慢工資會多的。
作為測試人員,任務是保證軟體高質量交付,達到客戶的需求。你可以多研究下軟體結構等等,以便發現更多的軟體缺陷,保證軟體質量。

自己寫的,希望能幫到你。

閱讀全文

與python性能測試腳本相關的資料

熱點內容
角度感測器51單片機 瀏覽:421
解壓暑假游戲 瀏覽:617
連接wpa2加密網路 瀏覽:711
珠海采耳掏耳朵解壓視頻 瀏覽:693
照片怎麼加密封膠 瀏覽:886
linuxide驅動 瀏覽:162
編寫高質量代碼pdf 瀏覽:609
攝影聖經pdf 瀏覽:565
稅3個點怎麼演算法 瀏覽:781
程序包msi可以反編譯嗎 瀏覽:813
linux設備使用 瀏覽:75
word圖紙加密 瀏覽:845
類似大明青年的程序員公眾號 瀏覽:41
ug編程之巴雷特第一講 瀏覽:980
安卓手機如何保護人臉識別 瀏覽:713
男友程序員每天都加班 瀏覽:620
全文檢索java 瀏覽:299
大數據用什麼編程語言 瀏覽:287
數據上傳伺服器有什麼方式 瀏覽:330
我的世界多人伺服器叫什麼 瀏覽:753