自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 收藏
  • 关注

原创 flask 批量插入数据到数据库

首先定义一个User模型,然后在insert_data路由中,创建了一个用户列表,每个用户都是一个字典,然后调用bulk_insert_mappings()方法将这些用户插入到数据库中。注意,bulk_insert_mappings()方法的第一个参数是模型类,第二个参数是一个包含映射的列表。每个映射都是一个字典,其中的键是模型的属性名,值是要插入的值。最后,调用commit()方法提交事务,将数据保存到数据库中。

2024-05-18 17:53:33 221

原创 Element UI的el-table-column组件不支持v-show指令

在vue中想通过v-show控制element-ui中的el-table显示隐藏某一列,但是不起作用。

2024-04-23 18:16:20 389

原创 python连接redis报错redis exceptions Connection Error: Connection closed by server #1445

在终端使用连接服务正常,但是用Python执行报错,循着报错信息查看redis源码,发现在不指定lib-name,lib-version时,redis会设置默认值。

2024-04-22 23:39:46 192

原创 Python中cls和self的区别

在上述代码中,print_name是一个实例方法,它使用self访问实例的属性name。print_count是一个类方法,它使用cls访问类的属性count。self是实例方法的第一个参数,它代表类的实例。self只能在实例方法中使用,用于访问实例的属性和方法。每个实例都有自己的self,它们互不影响。cls是类方法的第一个参数,它代表类本身。cls只能在类方法中使用,用于访问类的属性和方法。所有实例共享同一个cls。self和cls都是对类或实例的引用,但它们在Python中的用法和含义是不同的。

2024-03-22 17:01:15 531

原创 Python中yield和next的区别

当你调用next并传入一个迭代器或生成器时,它会返回迭代器或生成器的下一个值。如果迭代器或生成器没有更多的值,next会抛出StopIteration异常。当函数执行到yield语句时,函数会暂停并保存当前的状态,然后返回yield后面的值。下次再调用这个生成器时,函数会从上次暂停的地方继续执行。在这个例子中,my_generator是一个生成器函数,它使用yield来生成值。然后我们使用next来获取生成器的下一个值。都是Python中用于控制迭代的关键字,但它们的作用和使用方式是不同的。

2024-01-12 16:41:14 572

原创 生成器和迭代器的区别

总的来说,生成器是一种特殊的迭代器,它更加简洁,易于理解,同时也更加强大和灵活。

2024-01-12 16:38:51 491

原创 mac 安装pyaudio

首先,使用brew install portaudio命令安装portaudio。brew是Mac OS的包管理器,可以用来安装各种软件和库。然后,使用pip3 install pyaudio命令安装pyaudio。pip3是Python 3的包管理器,用于安装Python库。如果在安装过程中遇到问题,可能需要使用sudo命令以管理员权限运行。例如,sudo pip3 install pyaudio。portaudio是一个跨平台音频I/O库,而pyaudio则是Python的音频I/O库。

2023-12-28 16:38:26 1151

原创 使用Python的subprocess模块来执行一个adb logcat命令并获取其输出。

用户需要注意的是,运行这段代码需要在能够访问Android设备并且已经安装了adb的环境中。这里的输出是adb logcat命令的结果,即Android设备的系统日志。:抛出一个新的异常,包含原始异常的信息。这样做的目的是提供更详细的错误信息,帮助调试问题。:将子程序的标准输出重定向到一个管道,Python程序可以通过这个管道读取子程序的输出。:使用with语句管理子程序的生命周期,确保子程序在结束后正确地关闭。:要执行的命令,这里是’adb logcat’。:读取子程序的输出,每次读取一行。

2023-12-18 14:04:47 838

原创 Python 在控制台打印带颜色的信息

【代码】Python 在控制台打印带颜色的信息。

2023-12-07 14:04:27 130

原创 Mac 安装psycopg2,报错Error: pg_config executable not found.

如果执行pip3 install psycopg2,无法安装psycopg2。

2023-10-30 18:54:00 858

原创 42 | 实战:大型全球化电商的测试基础架构设计

测试执行环境准备服务会根据传过来的参数,动态计算所需的 Node 类型和数量,然后根据计算结果动态加载更多的基于 Docker 的 Selenium Node 到测试执行集群中。该测试基础架构,包括了 6 种不同的测试服务,分别是:统一测试执行服务、统一测试数据服务、全局测试配置服务、测试报告服务、测试执行环境准备服务,以及被测系统部署服务。以 Restful API 的形式对外提供测试执行服务的方式,兼具了测试版本管理、Jenkins 测试 Job 管理,以及测试执行结果管理的能力。

2023-09-25 11:39:09 101

原创 39 | selenium基础架构,UI测试架构

测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。执行测试的机器;测试用例代码仓库;发起测试执行的 Jenkins Job;统一的测试执行平台;测试用例执行过程中依赖的测试服务,比如提供测试数据的统一测试数据平台、提供测试全局配置的配置服务、生成测试报告的服务等;

2023-09-22 10:03:41 365

原创 Selenium Grid 的搭建方法

搭建一个具有 1 个 Node 的 Selenium Grid。那么通常来讲我们需要 2 台机器,其中一台作为 Hub,另外一台作为 Node,并要求这两台机器已经具备了 Java 执行环境。1.通过官网下载 selenium-server-standalone-.jar 文件。这里需要注意的是,不管是 Hub 还是Node,都使用同一个 JAR 包启动,只是启动参数不同而已。2.将下载的 selenium-server-standalone-.jar文件分别复制到两台机器上.

2023-09-21 09:53:42 285

原创 38 | 统一测试数据平台

在Java中可以利用Builder Pattern,创建数据时如对其中的某个或某几个参数有特定要求的话,可以通过“.withParameter()”的方式指定,而没有指定的参数将自动采用默认值。统一测试数据平台其实是将所有的数据准备函数在 Spring Boot 的支持下转变为了 Restful API,为跨平台和跨语言的各类测试框架提供了统一的数据准备方案。数据的 ID 保存到内部数据库(存储的是id和其他用于筛选数据的相关字段,实际的数据还是在真正的被测系统的数据库中的)

2023-09-20 10:02:17 182

原创 36 | 浅谈测试数据的痛点

从测试数据创建的时机来看,主要分为 On-the-fly(实时创建)和 Out-of-box(事先创建测试数据)两类方法。

2023-09-19 09:42:07 88

原创 35 | 如何准备测试数据?

目前,在实际的工程实践中,很少使用单一的方法生成测试数据,基本都是。最典型的应用场景是,

2023-09-18 09:34:29 78

原创 34 | 性能测试方法

的测试负载,比如先逐渐加大测试负载,在高负载情况下持续 10 多个小时,然后再逐渐降低负载,这样就构成了一个“波浪”,整个稳定性测试将由很多个这样的波浪连续组成。在高并发情况下验证单一业务功能的正确性以及性能的测试手段。高并发测试一般使用思考时间为零的虚拟用户脚本来发起具有“集合点”的测试。主要用于确定给定负载下的系统集群规模,其测试结果可以被用作系统容量设计的依据。往往被当作功能测试的补充去发现多线程、资源竞争、资源死锁之类的问题。

2023-09-15 09:27:11 76

原创 32 | 基于LoadRunner实现企业级服务器端性能测试的实践(上)

后端性能测试工具首先通过虚拟用户脚本生成器生成基于协议的虚拟用户脚本,然后根据性能测试场景设计的要求,通过压力控制器控制协调各个压力产生器以并发的方式执行虚拟用户脚本,并且在测试执行过程中,通过系统监控器收集各种性能指标以及系统资源占用率,最后通过测试结果分析器展示测试结果数据。负责控制 Load Generator 产生测试负载,以执行预先设定好的性能测试场景;同时,它还负责收集各类监控数据。图形化展示测试过程中收集的数据,对多个指标做关联分析,找出它们之间的因果关系。用于生成模拟用户行为的测试脚本。

2023-09-14 10:06:44 82

原创 visual studio code导入自定义模块报错的解决方法(pycharm中能够运行的文件,vs code报错:未找到指定模块)

但是如果直接运行custom_event_parse.py进行调试的时候,就会报错。以上这种导入方式,如果run文件是main.py,是可以run的。修改vscode中的文件,记得保存一下再运行。

2023-09-14 09:31:32 935

原创 31 | 前端性能测试工具原理与行业常用工具简介

CDN 是内容分发网络的缩写,其基本原理是采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区的网络供应商机房内,当用户访问网站时,利用全局负载技术将用户的访问指向距离最近的、工作正常的缓存服务器上,由缓存服务器直接响应用户请求。打开文件的过程,会先显示整个图片的模糊轮廓,随着扫描次数的增加,图片会变得越来越清晰。将页面上的各种文本类的资源,比如 Html、JavaScript、CSS 等,进行压缩传输,将会减少网络传输的数据量。减少需要网络传输的数据量,图像文件也需要进行压缩处理。

2023-09-12 09:49:33 129

原创 30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介

LoadRunner 是通过录制后再修改的方式生成虚拟用户脚本;而 JMeter 主要是通过添加各种组件,然后对组件进行配置的方式生成虚拟用户脚本。完整的后端性能测试应该包括性能需求获取、性能场景设计、性能测试脚本开发、性能场景实现、性能测试执行、性能结果报告分析、性能优化和再验证。传统软件企业偏向于使用 LoadRunner,而互联网企业普遍采用 JMeter。

2023-09-11 10:03:48 321

原创 29 | 聊聊性能测试的基本方法与应用领域

前端性能关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容,希望借此找到页面加载过程中比较耗时的操作和资源,然后进行有针对性的优化,最终达到优化终端用户在浏览器端使用体验的目的。:代码级性能测试,是指在单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评估,以防止底层代码的效率问题在项目后期才被发现的尴尬。:通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指标,并且验证各项指标是否符合预期的性能需求的测试手段。通常会涉及多个层面的调整,包括。

2023-09-07 10:16:58 92

原创 python集合、列表、字典、字符串删除元素的方法

2023-09-06 15:54:37 51

原创 28 | 带你一起解读不同视角的软件性能与性能指标

其中,前端时间,又称呈现时间,取决于客户端收到服务器返回的数据后渲染页面所消耗的时间;而系统响应时间,又可以进一步划分为 Web 服务器时间、应用服务器时间、数据库时间,以及各服务器间通信的网络时间。:反映了完成某个操作所需要的时间,其标准定义是“应用系统从请求发出开始,到客户端接收到最后一个字节数据所消耗的时间”,是用户视角软件性能的主要体现。终端用户:用户进行业务操作时的主观响应时间,包括了系统响应时间和前端展现时间;性能测试人员:算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性。

2023-09-06 10:17:02 59

原创 27 | 深入浅出之动态测试方法

代码级测试的动态测试方法,可以分为人工动态测试方法和自动动态测试方法。其中人工动态测试方式,是最常用的代码级测试方法,也是我们在进行单元测试时采用的方法

2023-09-05 10:01:50 118

原创 python .gitignore文件配置

注意:.gitignore最好放在根目录中。如果gitignore放在被忽略的父目录中,那忽略文件就无法生效。

2023-09-04 10:04:46 926

原创 26 | 深入浅出之静态测试方法

这一功能是通过 Jenkins 以及 Jenkins 上的 SonarQube 插件来完成的,当你在 Jenkins 中安装了 SonarQube Plugin,并且将 SonarQube 服务器相关的配置信息加入 Plugin 之后,你就可以在 Jenkins Job 的配置中增加 Sonar 静态扫描步骤了。目前,自动静态扫描通常都会和持续集成的流水线做绑定,最常见的应用场景是。当你递交代码后,持续集成流水线就会自动触发自动静态扫描。

2023-09-04 09:25:14 132

原创 25 | 不破不立:掌握代码级测试的基本理念与方法

针对这五种代码错误,代码级测试的方法可以分成静态方法和动态方法两大类。静态方法不需要执行实际代码,而动态方法需要通过执行具体的代码去发现代码错误。也因此,每种测试方法,所能覆盖的错误类型也不同,所以进行代码级测试时,需要综合运用这些方法,并结合所在公司或者项目的编码规范一起使用。代码错误,可以划分为“有特征”的错误和“无特征”的错误两大类。其中,“有特征”的错误,又可以进一步细分为语法特征错误、边界行为特征错误和经验特征错误;而“无特征”的错误,主要包括算法错误和部分算法错误两类。

2023-08-29 09:25:21 87

原创 24 | 紧跟时代步伐:微服务模式下API测试要怎么做?

契约的本质就是 Request 和 Response 的组合,具体的表现形式往往是 JSON 文件,此时我们就可以用该契约的 JSON 文件作为 Mock Service 的依据,也就是在收到什么 Request 的时候应该回复什么 Response。如下图,当用 Service X 的契约启动 Mock Service X 后,原本真实的 Service X 将被 Mock Service X 替代,也就解耦了服务之间的依赖。实现 Mock Service 来代替被依赖的真实 Service。

2023-08-25 09:45:02 1304

原创 23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生

根据httprunner的yml的脚本规则,加上一些开源的组件,做了一个web页面可以进行代理抓包,测试人员无论从web页面还是app操作只要设置代理过来,就可以看到自己的所有请求,然后选择想自动化的请求,后台自动转成测试脚本,再在管理界面上通过拖拽等性质组装成自动化测试集,并可以执行调试、定时任务等。目的:既可以不对所有的 response 字段都去写 assert,又可以监测到 response 的结构以及没有写 assert 的字段值的变化。,对于有变化的字段给出告警。解决,把动态字段排除在外。

2023-08-24 10:53:08 81

原创 22 从0到1:API测试怎么做?常用API测试工具简介

此场景会涉及到一系列 API 的调用,并且经常存在后一个 API 需要使用前一个 API 返回结果的情况,以及需要根据前一个 API 的返回结果决定后面应该调用哪个 API 的情况。2. 测试异步调用的业务逻辑处理是否正确(异步 API 通常发生在一些比较慢的操作上,比如数据库 I/O、消息队列 I/O 等,此时测试。异步API指的是调用后立即返回,但是任务没有完成,需要后续去查询或者回调的API.通过抓包的方式可以获取单个操作触发的API调用序列。场景3:异步API的测试。循环执行查询状态操作。

2023-08-23 14:08:14 1123

原创 21 移动测试神器:带你玩转Appium

Appium 属于 C/S 架构,Appium Client 通过多语言支持的第三方库向 Appium Server 发起请求,基于 Node.js 的 Appium Server 会接受 Appium Client 发来的请求,接着和 iOS 或者 Android 平台上的代理工具打交道,代理工具在运行过程中不断接收请求,并根据 WebDriver 协议解析出要执行的操作,最后调用 iOS 或者 Android 平台上的原生测试框架完成测试。

2023-08-22 10:39:04 98

原创 20 与时俱进:浅谈移动应用测试方法与思路

移动端应用可以细分为三大类:Web App、Native App 和 Hybrid AppHybrid App 通过一个原生实现的 Native Container 展示 HTML5 的页面。更通俗的讲法可以归结为,在原生移动应用中嵌入了 Webview,然后通过该 Webview 来访问网页。

2023-08-21 17:10:48 121

原创 19 真实的战场:如何在大型项目中涉及GUI自动化测试策略

具体在测试项目中,模块版本的依赖往往是用 POM 来配置的,如图 2 展示了一个典型测试项目的 POM 文件中的版本依赖关系,其中引用了两个模块,appcommon 模块对应的就是上文提到的“公共组件库”,而 app.buy 对应的就是具体依赖的前端模块。将各个模块的页面对象和业务流程脚本放在各自的代码库中,并引入页面对象和业务流程脚本的版本管理机制,通常。这些业务流程的脚本,可以组装成每个前端模块的测试用例。3)最后,把各个前端模块组合在一起之后,站在终端用户的视角以黑盒的方式使用网站的。

2023-08-21 14:05:23 146

原创 18 眼前一亮:带你玩转GUI自动化的测试报告

利用 Selenium WebDriver 的 screenshot 函数在一些特定的时机(比如,页面发生跳转时,在页面上操作某个控件时,或者是测试失败时,等等)完成界面截图功能。理想的 GUI 测试报告应该是由一系列按时间顺序的屏幕截图组成,并且可以在这些截图上高亮你所操作的元素,同时按照执行时序配有相关操作步骤的详细描述。那么,以后凡是需要调用 click 函数时,都直接调用这个自己封装的 click 函数,直接得到高亮了被操作对象的界面截图。需要自己去实现截图以及高亮显示操作元素的功能。

2023-08-21 10:22:35 76

原创 极客时间-《左耳听风》

这样,你会得到更多的实际经验,能够非常明白一个技术方案的优缺点,实现复杂度,知道什么是 Best Practice,你的方案才会更具执行力和实践性。当有了执行力,你就会获得更多的成就,而这些成就反过来会让更多的人来跟随你。我一直认为,最宝贵的财富并不是钱,而是你的时间,时间比钱更宝贵,因为钱你不用还在那里,而时间你不用就浪费掉了。所谓正确的方式,一方面是,让正确的人做正确的事,并发挥每个人的潜力;真正的热情和冲劲是,正视问题,正视不足,正视错误,从中进行反思和总结得到更好的解决方案,不怕困难,迎难而上。

2023-08-17 21:55:21 152

原创 17 精益求精:聊聊提高GUI测试稳定性的关键技术

在“异常场景恢复模式”下,GUI 自动化框架依次检查各种可能出现的对话框,一旦确认了对话框的类型,立即执行预定义的操作(比如,单击“确定”按钮,关闭这个对话框),接着重试刚才失败的步骤。如果某个对象的定位是通过模糊匹配完成的,那么,测试报告中将会显示该信息,明确告知此次对象识别是基于模糊匹配完成的,因为 GUI 自动化工具并不能保证每次模糊匹配都一定正确。4、对于随机的页面延迟造成的不稳定,可以引入重试机制,重试可以是步骤级别的,也可以是页面级别的,甚至是业务流程级别的。5、测试数据引起的不稳定。

2023-08-17 21:46:31 113

原创 16 脑洞大开:GUI测试还能这么玩

与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是你依然可以用 GUI 测试框架的截图功能截取它执行中的页面。需要注意的是,那些依赖于数据的动态页面对象也会被包含在自动生成的 Page Class 里,而这种动态页面对象通常不应该包含在 Page Class 里,所以,往往需要以手工的方式删除。2)对于需要组合多个测试输入数据的场景,测试数据自动生成可以自动完成多个测试数据的笛卡尔积组合,然后再以人工的方式剔除掉非法的数据组合。它的基本思路是,你不用再手工维护 Page Class 了,

2023-08-17 10:58:52 75

原创 极客时间-茹炳晟《软件测试52讲》-学习笔记-

极客时间-软件测试52讲-茹炳晟

2023-08-15 18:55:06 634

原创 ATDD和UTDD的区别是什么?

ATDD的重点是在开发过程中,从用户的角度出发,编写可接受的测试用例,以确保软件的功能和需求得到满足。ATDD的目标是确保软件的功能和需求得到满足,从而提高软件的质量和用户满意度。的重点是在开发过程中,从代码的角度出发,编写单元测试用例,以确保代码的正确性和可维护性。UTDD的目标是确保代码的正确性和可维护性,从而提高软件的可靠性和可维护性。因此,ATDD和UTDD的区别在于它们的重点和目标不同,ATDD注重功能和需求的满足,UTDD注重代码的正确性和可维护性。

2023-08-15 15:17:13 262

RollABall滚动小球demo项目代码

个人学习使用

2022-10-26

u3d-demo 项目代码机器人行走+奔跑+转向

个人学习使用

2022-10-26

vue2学习项目源码(后台项目+前台项目)

个人学习使用

2022-10-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除