虫师 接口测试(虫师自动化测试)

网友投稿 510 2023-02-19


本篇文章给大家谈谈虫师 接口测试,以及虫师自动化测试对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享虫师 接口测试的知识,其中也会对虫师自动化测试进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

做一个软件测试工程师我们该如何选择学习什么?

所谓:师父领进门,修行靠个人。再好的资源,自身不努力那也是白费。软件测试行业更迭如此迅速,更是如此。分享一篇软件测试的心得,怎么快速入门到精通的思路,非长篇大论,比较精简,各位看官自行汲取。
软件测试基础知识
软件测试顾名思义,是为了发现错误而执行程序的过程,从而对软件质量进行评估。了解软件测试对象,包括系统架构、明确需求、系统设计流程、用例设计步骤、以及提测时测试流程单里写清楚所改动的内容。熟悉掌握几种常见的软件测试方法,并知道灵活的使用测试方法进行进行测试:如β测试_Beta测试、α测试_Alpha测试、用户界面测试-UI测试、冒烟测试、本地化测试、白盒测试、黑盒测试、回归测试、单元测试、自动化测试、集成测试、兼容性测试、接口测试等。
软件测试书籍推荐
书中自有黄金屋,关于软件测试如何进行系统学习,多看书总结前人的经验。根据测试方向,给大家推荐几本好书:
国外经典
1、《软件测试》 [美]Ron Patton ,入门书里殿堂级的书,用浅显的语言讲述软件测试的理论知识。
2、《Google软件测试之道》,世界上知名的互联网公司独特的软件测试之道,看完受益匪浅。
国内新秀
1、 推荐虫师的书吧,周围的朋友也是力荐这本关于自动化测试的书
2、《Selenium 2自动化测试实战·基于Python语言》,好书无非就是让大众从书中受到启发。
自动化测试走起
自动化测试现在属于软件测试的趋势,虽然并没有完全代替手工测试,但是很多大公司目前都在实施自动化测试,比如利用TestWriter、selenium、QTP等一众自动化测试工具进行项目用例测试,有效的反应高投资回报率的特点。比如产品型项目适合自动化测试,反复测试未改动的功能,就可以用自动化测试解决;还有很多增量式开发、持续集成项目、多次重复、机械性动作,都适合这种情况。
身怀多种技术
多学习一门编程语言,比如C++、JAVA,身在职场就知道,这对自己的工作以及和开发沟通上,是加分项啊!分分钟底气十足!
以上就是今天的内容,希望看到这篇文章的你们能受到启发。

Flag还是要立的

前一阶段,如果问有人我:自动化测试及APP专项测试虫师 接口测试你会选择学习哪个?我会毫不犹豫虫师 接口测试的回答:自动化测试(因为感觉很NB啊)。当然我也是这么做的,刚开始最先接触的是虫师的selenium自动化,后面把测试的思想用在了接口自动化测试,用的过程中觉得没那么难,一方面,可能是因为Python有各种强大的库吧,想实现什么拿来用就可以了,我用的是unittest+request库,另一方面,用Python来做测试只需要会用就好了,所以我只是简单会用,要问我Python相关知识,我可能回答不出来。

后来我在思考,我所想做的测试是这样的吗?原来自动化只是一种工具,用来解放双手,让测试人员有更多的时间去做有意义的事情,那何为有意义的事情?我们都知道测试工程师在有些公司又被成为QA(质量保障人员),这就与测试的思想不谋而合。刚入测试这一行,新人初来乍到,会为发现多少bug而开心。随着不断深入测试领域,发现一个很好的测试工程师是要提前规避掉一些问题比如需求评审阶段(是为了使所做的功能有严谨的逻辑,不存在漏洞),开发设计评审阶段(开发阶段依据需求避免返工,设计上不存在安全漏洞),还有会加入测试用例评审会(一方面检查用例是否合理,另外一方面,用例是需求的拆分,加深大家对功能的了解),有的时候也会给开发提供自测case,所有的所有,是为了尽量规避掉各种潜在的问题。

一个很好的测试人员,不是说个人业务能力很强,功能测试用例设计的很完善就ok,或是我会自动化脚本就可以了,亦或是会使用一些性能测试工具,比如jmeter,lr,和一些专项测试工具就好了。而应该是在不同的阶段关注点不同,侧重点不同,各种测试方法需要灵活使用。

近期规划如下:

【Python】【压力测试】Locust压力测试工具

性能测试参数

熟悉 Apache ab 工具的同学都知道,它是没有界面的,通过命令行执行。 Locust 同样也提供的命令行运行,好处就是更节省客户端资源。

启动参数:
--no-web 表示不使用Web界面运行测试。
-c 设置虚拟用户数。
-r 设置每秒启动虚拟用户数。
-t 设置设置运行时间。

出现的报错及解决办法:
使用Locust进行性能测试,Locust no-web模式执行命令locust -f zkxl_verify_ locust.py --host= https://www.baidu.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.baidu.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类:实现了虚拟用户所执行任务的调度算法,包括规划任务执行顺序(schedule_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 【官方文档的中文翻译】

关于虫师 接口测试和虫师自动化测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 虫师 接口测试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于虫师自动化测试、虫师 接口测试的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ehcache模糊批量移除缓存的方法
下一篇:共享文件夹局域网设置密码(局域网文件共享 密码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~