- 博客(29)
- 收藏
- 关注

原创 Python GRPC客户端实现ssl连接
实现过程中的坑:认证客户端也需要设置传输过程中send,receive的文件大小加密解密一:pfx文件不能直接使用,先要转成pem或crt文件二:客户端也需要设置传输过程中send,receive的文件大小,否则稍大的文件在传输过程中会报错class BaseClient(object):“”“client connection”“”def __init__(self, host='', port=''): pem_file = os.path.join(settings.PEM
2022-04-08 16:43:05
2666
原创 如何保证REDIS和数据库的数据一致性
①先删缓存,后修改数据库:延迟双删(先删缓存,在更新完数据库后延迟几百毫秒后再删一次缓存),只能保证最终一致性。(也需要增加删除重试机制)②(推荐)先修改数据库,后删缓存:只要缓存删除成功即可,因此增加删除重试机制(增加MQ,实现重试删除删除失败时重试)2.写数据流程:先删除缓存再重新写效率最高。1.值有读写共同发生时会出现数据的不一致。
2023-10-09 11:56:19
166
原创 缓存穿透,缓存击穿,缓存雪崩和相应的解决方案
1.缓存穿透:在缓存中没有找到缓存信息,在高并发场景下压力直接到DB。②当DB为空时设置互斥锁,当查询完DB又更新完缓存时再释放锁。3.缓存雪崩:缓存集中过期时,在高并发场景下压力直接到DB.2.缓存击穿:缓存失效时,在高并发场景下压力直接到DB.①热点接口和数据直接设置永不过期。①热点接口和数据直接设置永不过期。②设置数据批过期逻辑。
2023-10-09 11:16:52
118
原创 SQL性能优化总结
如有sql select user_id, user_name, from order group by user_id having user_id 1000000 limit 20。10.数字不要存为字符串型,用bit存布尔值,用tinyint存枚举值,长度固定的字符串存char,金额使用decimal避免精度丢失。
2023-10-07 16:26:40
148
原创 需要加密解密的性能测试
3.在每一次被测接口进行请求之前先调用加密接口生成需要发送密文作为请求,被测接口返回后的密文再调用解密接口得到明文,对明文进行断言。2.使用flask开一个web服务,将加密与解密过程实现为相关的加密接口与解密接口。1.调研加密与解密的方式,使用编程语音在本地模拟实现。
2023-09-15 13:42:41
181
原创 Python调用c#DLL
2.Python调用c#DLL使用的是pythonnet的clr包,注意python也有独立的clr包,如果使用错了会导致加载DLL出错。如果python也有独立的clr包已经安装,就先卸载。然后检查pythonnet包的安装情况。3.注意import clr代码需要set_runtime之后导入,否则加密后的信息虽然不会报错,但加密后的内容是错误的。1.注意区分:c++封装的使用ctypes,c#封装的使用pythonnet。
2023-09-01 11:35:30
2130
原创 Python使用
1.生成器的send()方法的应用场景:生成器就是加了yield的迭代器。yield的作用是返回一个值。并挂起,继续执行yield后代码。执行完毕后跳转到函数上一次挂起的位置继续执行。生成器的send()方法可以往生成器发送一个值作为入参,并返回生成器生成的下一个值。起到动态修改生成器入参参数的作用。
2023-05-15 17:21:50
77
原创 Selenium使用Edge DevTools 协议进行页面调试
1.使用远程调试端口启动 Microsoft Edge 并配置用户文件路径(edge路径C:\Program Files (x86)\Microsoft\Edge\Application)2.写入代码调试相关页面。
2023-05-12 15:11:32
1174
原创 项目干系人管理
2.隐私区:①讲风险,②理出实现目前的条件,③提出新方案,覆盖原有方案(缩小范围,降低质量要求,改变方案),④拿出领导需要请示,既往经验做不完做挡箭牌。④领导没说要确认:先与客户高层领导确认原则,思路,框架,板块,再与客户具体对接领导再继续确认细节需求。⑧认了也白任:走需求变更流程,知会对方高层成本付出,明确变更代价,增加变更正式性,强调既往的付出。2.承担不足,对项目状态进行说明(已取得的成绩-合同内的部分,目前的不足-合同模糊的部分)2.提高自己的专业度,制造疑问,麻烦,质疑,选择题。
2023-05-10 17:58:56
137
原创 Python Selenium基础知识(待补充)
1.目前流行的框架: Python + Selenium + Pytest + X(数据库,表格处理之类)
2023-05-08 17:39:53
92
原创 WebDriver.findElement()和WebElement.findElement()之间的区别
WebElement.findElement():是从某个元素的区域内根据条件筛选元素。WebDriver.findElement():是整个页面中根据条件筛选元素。
2023-04-24 17:11:16
179
原创 Selenium工作原理(转载)
3.打开浏览器后,所有的selenium的操作(访问地址,查找元素等)均通过RemoteConnection链接到remote server,然后使用execute方法调用_request方法通过urlib3向remote server发送请求。2.通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再次对浏览器操作需携带此id。5.浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。
2023-04-24 16:31:24
110
原创 Pandas应用总结
一.取值1.取i行j列的单元格:2.取i行j列的单元格的值:3.取某几行4.取某几列5.取某几行某几列6.取不连续的某几行某几列二.iloc与loc的异同:1.iloc与loc行操作相同2.iloc的列不能用列标签;loc的列只能用列标签,不能用索引或切片,除非用全切片3.iloc左闭右开;loc左闭右闭*................................................
2022-07-14 13:44:12
1986
原创 Python关于类声明和赋值的一些细节
声明类时:①显式声明②隐式声明③忽略括号类赋值时:①创建对象client = BaseClientProd()②赋值(指向的是同一内存地址)value = BaseClientProd
2022-06-07 12:08:19
274
原创 性能测试相关归纳总结(持续更新)
执行./jmeter -n -t test.jmx -l test.jtl Jmeter命令参数: -n 表示非界面模式 -t 表示要测试的脚本 -l 表示执行的结果文件 -R 表示启用远程服务,后面跟远程机器,即slave机器列表。通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试,以出错位目标。集合点是测试脚本中的一个标记,当每个虚拟用户执行到标记处时,会停留在标记处等待其他的虚拟用户,当达到预期设置的并发数时,标记处的所有用户同时启动执行后续的请求。
2022-05-20 16:04:14
840
原创 Python 使用多线程进行性能测试
当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程就分兵两路,分别运行,那么当主线程完成想退出时,会检验子线程是否完成。而RLock只有当前线程才能释放本线程上的锁,不可由其他线程进行释放,所以在使用RLock时,acquire与release必须成对出现,即解铃还须系铃人。joIn的作用:join所完成的工作就是线程同步,即主线程任务结束之后,进入阻塞状态,一直等待其他的子线程执行结束之后,主线程再终止,RLock被称为重入锁,可以被一个线程请求多次,即锁中可以嵌套锁。
2022-05-19 15:36:00
1337
原创 Python requests包对boundary的处理
需使用MultipartEncoder包import requestsfrom requests_toolbelt import MultipartEncoderheaders = {'Cookie': f'1QAZ2WSX3EDC={cookie}; __RequestVerificationToken={token}', 'Upgrade-Insecure-Requests': '1'}excel_file = open(file, 'rb')multipart_en
2022-05-11 13:48:31
1407
原创 可变参数的装饰器函数
def debug(func): def wr(*args, **kwargs): # *:代指元组,长度不限 # **:代表键值对,个数不限 # args[0]值为Shawn, args[1]值为111 instance, selector = args[0], args[1] print(instance) print(selector) print('[DEBUG]: enter {}()'.form
2022-04-22 15:05:09
132
原创 如何带领一个测试团队
一.事:要努力让团队的事情变少1.流程梳理1.1虽然很多公司都有自己的流程,但是普适性不高,可能会过重,可能会不足。leader需要相应减少或增加要求的事情,使流程更符合实际情况。(此条需要不断根据项目实际进行优化)1.2测试是位于整个研发团队的后端,上游的任何问题,最后都有可能会在测试处显现出来。遇到任何问题,测试leader需要分析这个问题的根因,确认这个问题的引入点在哪里,然后想办法在引入点解决问题,而不是增加流程让测试同学在测试时再来堵这个问题。因为这样做不仅不会解决问题,反而会让测试团队不堪
2022-04-12 23:13:08
2438
原创 自动化测试的总结与经验
一.自动化测试最大的意义1.快速回归2.持续和稳定的质量保证3.减轻手工测试人员的工作压力4.对测试人员的能力的固化。脚本可以代表测试人员的测试方法,通过脚本就把在原来在人身上的能力,固化为组织的资产。不同的团队及时没有懂这个功能的人,也可以通过脚本来分享这种能力二.如何衡量一个项目是否有必要自动化1.项目是否长期2.项目是否是增量开发3.项目变更是否巨大三.如何确定自动化的模式(三种模式:UI,API,混合UI与API)1.确定项目类型,项目的技术选型,以及自动化测试的技术选型2.确
2022-04-12 22:26:47
1603
原创 实现WEB UI自动化测试框架的步骤
1.自动化的脚本要开发哪些内容,不应该在自动化开发的时候才来决定,而应该是事先就确定好了的。选取内容的原则应该是基础的,需要手工反复执行的用例。确保自动化测试得到最大的回归测试收益。2.选取测试框架,确定使用技术,根据具体业务决定是采用数据驱动或非数据驱动3.编写基础方法①重新封装>>>webdriver的方法:find_element;webelement的方法:contest —click,clear,assert方法②封装浏览器,测试数据处理,文件操作,数据库操作,页面元素操
2022-04-12 22:13:59
569
原创 实现API自动化测试框架的步骤
1.设计测试用例,再根据业务需求筛选需要进行自动化的业务接口2.公共api封装①域名,公共参数写入配置文件②数据库相关方法③读写文件的方法④日志⑤加密解密的方法⑥consul方法⑦文件操作,邮箱操作3.深入了解业务,进行测试数据准备,验证内容准备4.编写业务代码,进行业务验证①http状态码②业务状态码③消息,一般比较规范的代码返回正常逻辑的数据会规定msg=ok或error(可能key是其他名称,由开发同学自己定义)④数据(业务逻辑返回客户端或前端需要的数据格式)5.Jenk
2022-04-12 21:57:21
1807
原创 Pytest使用经验
一.调用前置后置:@pytest.fixture(scope=‘session’, autouse=True)函数-function,类-class,模块-module, 整个项目-sessionyield后直接跟teardown内容二.参数化1、传一个参数 @pytest.mark.parametrize(‘参数名’,list) 进行参数化2、传两个参数@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_d
2022-04-08 18:30:02
871
原创 本地Jenkins搭建(Windows)
1.Tomcat-下载exe->选择JAVA版本->配置环境变量->2.war包放入tomcat webapps目录内->tomcat bin目录的startup.bat->输入IP:端口号访问3.常用插件①Mutil Job②Allure-下载安装包-解压-bin目录添加环境变量③Publish HTML reports④Git,SVN4.经常使用的配置项①Use custom workspace②Source Code Management③Build
2022-04-08 17:06:14
1575
原创 Python Requests库使用
Python Requests库使用s = requests.session()s.keep_alive = Trueresponse = session.get(url=url, headers=headers, data=data, verify=False, auth=Auth, , proxies=proxies, timeout=timeout)注:from requests_ntlm import HttpNtlmAuthAUTH = HttpNtlmAuth(f’{domain}\
2022-04-08 16:17:50
655
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人