- 博客(31)
- 资源 (4)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 DeadLinkHunter工具
现在互联网的前端页面,99%都使用了Ajax异步加载,使用Ajax异步加载的页面,直接请求url的返回是获取不到页面全部源码的,目前没有见过那个死链接检查工具是可以获取动态页面的源码的。所以,需要一个工具可以将整个文档中心的链接爬取下来、去重、请求、存储、分析,找出那部分访问后页面是空的或者提示页面内容不存在的链接和该链接对应的父链接和文案,通过父链接和父链接的页面找到失效链接的文案,就能定位到失效链接。
2024-01-22 11:07:32
1433
原创 Docs&OpenApi自动化校验
生产环境的文档中心的OpenApi和Kong服务配置的OpenApi可能存在不一致的情况,比如生产环境的文档中心有某个OpenApi,但是Kong服务没有配置到,那客户使用就会有问题。所以,前段时间(M09版本)花了4个人力(2个开发+2个测试)人工排查比对了2个0.5天,比较费时费力。相对于人工巡查比对的方法:文档中心界面的OpenApi → Kong Conf ,总结了一些规律,写了一个自动化巡检工具。
2024-01-24 11:16:26
1070
原创 部署Docs&OpenApi自动化工具持续构建环境
之前写了一个OpenApi自动化巡检工具,但是只是在本地实现了功能,没有部署到服务器做持续构建,也就没有落地用起来。
2024-01-24 11:15:29
457
原创 jenkins部署过程记录
因为机器本地只有一个文件夹,拉的多个git-repositories的git仓库代码都会存到这个文件夹,这样拉的仓库代码就会覆盖前面的仓库代码,最后只会剩下一个仓库的代码。jenkins在默认情况下,一个任务只能配置一个git仓库地址,就算配置了多个git-repositories的git仓库地址,最后一次拉的代码也会覆盖前面仓库的代码。所以,要拉多个git仓库代码,就需要机器本地可以自动生成存放各自仓库代码对应的独立文件夹。的方式,这个方式只需要注册个人的gitlad账号/密码,就可以成功拉取仓库代码。
2024-01-24 11:12:05
606
原创 DeadLinkHunter工具支持英文爬取
中文和英文的链接是一样的。只根据这个字段 rcconsole-language-key 控制,访问得到的是英文还是中文。1.通过 driver.get_cookies() 获取到的全部的cookie,默认就是中文的。2.根云的中英文,是通过修改cookie的这个字段来实现是中文还是英文。
2024-01-22 15:36:35
353
原创 cookie in selenium & 定时更新token
公司的cookie的token默认的有效期是1小时,如果爬虫的时间超过1小时后,1小时后的链接都会爬取失败,所以,需要判断执行时间超过一定阈值,则更新cookie的token。",此时selenium取到的cookie的domain是:.console.org.com。”,也是不匹配,访问失败,所以需要手动定义domain,可以取相同部分:.org.com。1.selenium添加cookie访问 需要登录才能访问的链接。而domain 是 .console.org.com 去访问 “
2024-01-22 15:27:37
580
原创 pytest&allure分析redis的数据并动态生成testCase报告
pytest.mark.parametrize 是一个pytest的装饰器,它可以用于将参数传递给测试函数。使用 pytest.mark.parametrize 装饰器时,需要在装饰器中指定参数名称和参数值。对于多个参数,可以使用多个装饰器。下面是一些使用 pytest.mark.parametrize 的示例:在第一个示例中,test_addition 测试函数将三个参数(x、y 和 expected)作为输入。参数值列表包含三个元组,每个元组都包含一组参数值。pytest将运行每个元组的所有参数值组合,
2024-01-22 14:49:31
909
原创 scrapy pipelines
如果您需要手动启动传输,或者需要在某个特定时间点执行代码,则可能需要使用 close_spider 方法。数据保存到redis后,在爬虫结束方法退出driver,否则下次再跑就会报502超时链接不到docker selenium的driver,因为docker的driver的进程没有释放。此方法可以由用户手动调用,也可以在 Scrapy 引擎检测到爬虫结束时自动调用。因此,close_spider方法和spider_closed方法在实现上可以相似,但它们基于两个不同的场景,需要根据具体情况使用。
2024-01-22 14:28:58
538
原创 重启ks容器自动化
试过在scrapy框架里面调用 重启ks容器自动化的脚本,可还是经常出现连接remote-selenium超时的情况,猜测还是因为重启ks容器自动化的顺序不能在scrapy创建driver对象之前。上面的场景都会导致容器里面的driver进程没有被释放,下次再跑selenium脚本,就会报错:502超时,链接不到remote driver。解决方法,每次跑脚本前,手动重启一下容器,但是,如果在集成工具去执行脚本,不可能每次跑脚本前都去手动重启容器。所以,需要通过代码自动化实现这一手动操作。
2024-01-22 14:20:09
432
原创 CrawlSpider【获取当前访问链接的父链接和锚文本】代码逻辑
在继承CrawlSpider父类的前提下,编写一个 fetch_referer 方法获取当前response.url的父链接和锚文本。tip: 超链接对应的文案通常被称为“锚文本”(anchor text)
2024-01-22 12:06:32
511
原创 搜索框自动化测试(demo版本)
一、背景:OpenApi运营统计功能,从接口到前端页面,一个接口涉及需要搜索的字段有好几个,每个页面都有搜索框,一个或者好几个。搜索框的测试,一般是需要测试多种不同的组合数据,看看搜索结果是否符合预期,测试数据是需要按照测试用例可以获取到的,才可以测试到。目前,OpenApi的数据源是从graylog获取数据做聚合的,所以,如果graylog没有测试用例设计的数据,也是覆盖不到。综上所述,靠手工测试效率会比较低,而且覆盖率不高。二、解决方案以及优点1.解决方案graylog收集大
2021-06-28 09:10:52
988
转载 性能测试中TPS上不去的几种原因浅析
昨晚在某个测试群看到有人问了一个问题:压力测试中TPS一直上不去,是什么原因?稍微整理了下思路,列举性的简略回答了他的问题。这篇博客,就具体说说在实际压力测试中,为什么有时候TPS上不去的原因。如有遗漏或不对的,请评论区指出,不胜感激。。。先来解释下什么叫TPS:TPS(Transaction Per Second):每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以request/second为单位。关于性能测试的其他一些常见术语,可参考之前的博客:性能测试:常见术语浅.
2021-04-19 17:16:19
624
原创 Docker+SonarQube+Mysql+Jenkins部署+阿里p3c标准
一、背景及目的:1、公司的后台项目基本上都是Java开发的,但是缺少代码code review流程,有些bug(比如:空指针)能在代码层面就能发现,就可以有效地缩短功能测试时间,提高交付效率。2、重构工厂后端项目(企业云saas平台),在代码层面扫描测试 ,可以尽可能减少或杜绝一些基本、低级的bug流转到功能测试阶段,而且有些可能是功能测试发现不了的bug。二、项目链接:待部署到阿里云服务器三、命令行创建mysql容器:1、创建mysql_sonar的目录,cd mysql_..
2021-03-26 18:21:31
838
原创 双十一抢券接口压测
一、用例编号:双十一抢券活动接口压测二、压测需求:压测抢券接口能支持最高并发数三、模块/功能:https://www-test.3weijia.com/activitys/api/seckill/sessionshttps://www-test.3weijia.com/activitys/api/seckill/catchit四、请求头:1)cookie2)x-requested-with:XMLHttpRequest五、请求参数:1)/api/s...
2021-03-17 15:54:13
2367
3
原创 清空redis缓存
一、背景:做双十一的接口压测,每次压测接口前需要清空redis 对应的 key 的 缓存,但是用的链接redis终端,每次清缓存,都要在终端的key的每个value手动点一次删除,很麻烦,而且,点得稍微频繁一点,终端就会卡死,很影响效率,压测联调有很多的时间都浪费在这个终端。二、方案只能写一个工具,批量获取redis的key:value值,并清空缓存value代码:# !/usr/bin/python# -*- coding:utf-8 -*-# Time : 20.
2021-03-16 16:54:44
1558
1
原创 python多进程/线程开发
一、概念进程的概念:运行着的程序线程的概念:1.每个进程里面至少包含一个线程2.线程是操作系统创建的,用来控制代码执行的数据结构3.线程就像代码的执行许可证4.单线程程序,主线程的入口就是代码的开头5.主线程顺序往下执行,直到所有的代码都执行完概念对应(银行办理业务):一个服务窗口 = cpu的一个核客户 = 进程(运行着的程序)调度员 = 操作系统(os)服务号 = 线程一个服务号,相当于银行要办的一件事情,对应线程,计算机程序要做的一件事情,也就是一段代码要执行调度员
2021-03-09 14:12:22
260
1
原创 数据库查询平台
一、前言工作中,会经常需要进行数据库增删改查等操作,但是,目前公司的很多数据库在本机使用Navicat软件链接是没有权限的,只能通过另一个终端登录公司堡垒机后,再使用堡垒机的Navicat软件链接数据库查询。二、当前环境/工具的不足1、堡垒机的widows机器有个明显的缺点,多人使用的时候,会比较卡,而且还会被挤下线,或者登录不了,因为window的多人操作使用是有数量限制的。2、数据库在堡垒机上面查询,属于共享资源,可能你离开一会,你之前写的sql语句,就已经被另外的同事改掉,或者查.
2020-12-31 08:59:51
1712
转载 QPS、TPS、并发用户数、吞吐量之间有什么联系,存在什么关系?(转)
前言:QPS、TPS、并发用户数、吞吐量之间的关系你真的懂么?1、QPSQPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。2、TPSTPS Transactions Per Second 也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成
2020-11-08 23:16:49
2344
原创 负载机批量压测shell
一、上传shell脚本sh文件用来批量运行Jmx文件及自动压缩结果,具体功能参考sh文件注释 [root@jmeter-158hwmjmx]# pwd /opt/apache-jmeter-5.1.1/hwmjmx [root@jmeter-158hwmjmx]# rz -y 脚本如下test_jmx.sh注:上传后记得授权才能使用(进入你上传sh文件的目录,再授权)[root@jmeter-158 zyjmx]# chmod a+x test_jm..
2020-10-20 19:32:05
397
原创 性能测试提测模版
1.测试指标说明 序号 指标 说明 1 TPS 是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发 送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事 务个数。 2 QPS QueriesPerSecond意思是"每秒查询率",是一台服务器每秒能够相应
2020-10-20 19:24:40
411
原创 申请3D测试环境账号之自动化
最近抽了点时间,修正了一下申请3D测试环境账号的文档,因为旧版的文档操作已经不可用了,新版工厂后台界面和操作都不同了。然后,各种场景冒出来:1.经常有同事问怎么申请3D测试环境账号呢?2.最近有版本变更,需求需要在测试环境批量创建500个以上账号做测试,真的一个个创建?3.其它未知场景。。。。所以,为了解决以上场景,就把这个东西做成了一个自动化项目。简单说明下文件内容和操作步骤:一、文件夹里面,包含6个python文件:(1)AuthoRegister.py:注册新账号的
2020-10-19 20:21:15
277
原创 centos系统搭建python运行环境
一、lsb_release -a,即可列出所有版本信息(公司测试机器IP:10.3.254.158)二、创建虚拟环境1.创建:mkvirtualenv [虚拟环境名称]若想指定python版本,可通过"--python"指定python解释器:mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv创建后,虚拟环境位于/home/.virtualenvs 或者/root/.virtualenvs目录下(不同版本的系统可...
2020-10-19 20:06:28
993
1
原创 搭建接口自动化测试持续集成环境
一、在Jenkins上 添加机器节点1.通常的情况下在我们的一个项目当中,项目会有多个分支系统,而我们不可能为每个分支系统都配置一个jenkins服务,这样既浪费资源,也增加构建部署的难度,为了解决这个问题jenkins给使用者提供了非常强大的分布式部署功能,也就是节点的管理,我们只需要在master节点配置好jenkins服务,通过指定slave节点来进行对应的系统进行部署就可以达到分布式部署系统管理,进入管理节点页面2.jenkins服务所在服务器为master节点,master负责分发任务
2020-10-19 19:58:13
768
原创 搭建web框架
代码目录:python的Django、flask都是非常优秀的web框架,Django适合大型项目的,flask小而巧,使用flask简单快捷。安装flask库,把测试报告的地址指向到flask目录下面的templates目录下面增加一个路由指向到测试报告文件,装饰器定义URL地址,render_template方法默认查找符合传参的templates目录下面的文件然后通过Jenkins把服务运行在后台:python3 /home/jenkins/workspace/git_
2020-10-19 19:42:47
261
原创 工厂模式在自动化测试中的应用
每一种工具、框架、模式的出现必定有存在的理由,但他们的存在是为了解决哪些问题的?找到了问题的答案,才能在工作中遇到类似的问题的时候学以致用。本文以问题为线索,顺藤摸瓜,谈谈工厂模式的瓜是怎么生长起来的。这个瓜就用一个设计家居销售门店的例子来开始发芽。。一、设计家居销售门店如果用代码来开一个家居销售门店,应该怎么实现呢?1.基本功能实现class HomeStore(object): def order(self,money): if money > 300
2020-10-19 19:24:07
985
原创 ApiAutoTest框架实现思路
框架的流程,个人是觉得有2个步骤比较有难度的,可以拿出来详细记录一下,毕竟就算自己做的东西,时间久了也是会忘记。一、请求体数据量太大,应该怎么存放,如何实现代码、数据分离:问题: 如果测试的接口是登录、注册类似的接口,请求体可能就是一行就够了,但是工厂后台的接口,大部分都是素材相关的接口,请求体内容很大,一般都有100-200行之间,下面是一个接口的请求体,展开看看130行左右。。{ "ImagePath": "/UpFile/C00003374/PMC/DesignMater..
2020-10-19 19:13:15
713
原创 docker部署mongo爬坑记录
首先,机器装好docker服务,win,mac,linux都支持,可以网上找一下教程就可以。然后,就是用docker装mongo数据库,这里有几个坑,记录一下:一、mongo都版本mongo的官网现在最新版本是4开头了,大概版本3开始,mongo就对权限控制比较严格了,如果装了版本3以上的,就要去了解各种权限的设置了,包括用可视化工具链接mongo的配置。但对于平时工作中用到的场景大部分是不需要设置权限的,所以希望越简单越好。所以,经过个人多次尝试,发现版本2.6是最合适的,不需要设置账号密
2020-09-23 11:46:36
688
原创 获取接口数据
接口测试,第一步就是需要获取接口数据。目前已实现2个方案,可以获取到线上环境用户操作的接口数据:方案一、通过和运维沟通,通过运维从后端取log日志发过来,我这边再写一个脚本,从log文件里面取需要的url和parameter保存下来。方案二、调用es的接口,通过脚本查询拉取kibana上面对应的index的数据。从方案暴露的问题作为切入点,记录一下问题和实现的过程。...
2020-09-20 19:25:31
3866
原创 Mysql数据对比自动化
一、背景:工作中测试发现,有些素材进入编辑页面,没有进行修改操作,直接点提交保存后,素材有些字段也会被修改掉。二、需求:在前端操作发现的字段问题,暴露出可能其他素材的其他字段都存在这样的问题,所以需要对所有模块的素材进行测试,不修改直接点击提交保存后,前后的数据是否保持一致。但是,一个素材在mysql数据库表里面多达86多个字段,加上成品类、全屋定制、硬装定制的各种模型、贴图、线条...
2020-03-23 15:41:33
645
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人