导航:首页 > 编程语言 > 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性能测试脚本相关的资料

热点内容
如何把pdf文件拆分 浏览:749
法国LOVE爱恋完整版观看 浏览:388
python自动安装程序 浏览:253
为什么有压缩分卷才能继续解压 浏览:316
AnalDelinquent 浏览:889
同人绿帽改编 浏览:624
生病的男人也要去找电影 浏览:565
邵氏全部电影 浏览:281
背着妈妈在楼道和男朋友韩剧 浏览:292
用php开发购物网站 浏览:966
欧美四级怀旧老片 浏览:979
比较黄的台湾电影 浏览:751
图片批量在线压缩 浏览:706
比较黄的穿越小说 浏览:250
电影人狗叫 浏览:507
取消压缩管理的公司 浏览:117
打真军的电影豆瓣 浏览:168
特斯拉app超级充电桩如何使用 浏览:423
男人怀孕电影袋鼠男人 浏览:507
如何删去应用加密 浏览:469