- 博客(53)
- 收藏
- 关注
转载 自动化测试
最近团队落地实践了前端单元测试和E2E(端到端) 测试方案,在此之前我基本没有在实际项目里用过自动化测试方案,总觉得这类方案耗时太大,没什么收益,但自从写自动化测试代码两个月以来,我发现还是有一定收益的,下面是我的一些思考和总结,希望对大家有一点点帮助。在正常的软件开发流程中,我们一定会有一个很重要的环节那就是测试,而对于一个大型项目来说,测试的环节尤为重要,它是软件发布前最后一个 “关卡”,也是我们软件质量的重要保障,所以我们通常会留一些时间用于软件测试。人工测试和自动化测试。
2023-11-01 21:08:12
181
转载 基于Jenkins从0到1实现前端的CI/CD
在软件工程中,CI/CD 通常指的是持续集成和持续交付或持续部署的组合实践。CI/CD 通过在应用程序的构建、测试和部署中实施自动化,在开发和运营团队之间架起了桥梁。当我们有了 CI/CD 的系统之后,我们就来处理,这极大地解放了我们的双手,提升了开发效率。Jenkins是一款以插件化的方式实现 CI/CD 的软件,提供超过 1000 个插件来支持构建、部署、自动化的需求。
2023-10-28 23:22:27
245
转载 Jenkins: 执行 PowerShell 命令
到目前为止,Jenkins 已经实现了对 PowerShell 的主流支持。期待 Jenkins 逐步的完善还存在的一些小问题,毕竟 MS 已经开始用 PowerShell 取代 bat 了。sparkdevsparkdev - 博客园。
2023-10-26 22:00:26
988
原创 Cypress 安装使用(E2E 测试框架)
Cypress 是为现代网络打造的下一代前端测试工具,解决了开发人员和 QA 工程师在测试现代应用程序时面临的关键难点问题。Cypress 包含免费的、开源的、可本地安装的 Test Runner 和 能够记录你测试的控制面板服务。
2023-10-26 21:54:28
242
原创 Cypress 笔记
2) 在 cypress/support/index.js 中添加: require('cypress-xpath')- 按 CSS 或元素特定属性进行定位,累 JQuery selection。2. 支持 Chrome 和 Firefox 浏览器,自动等待。Cypress Test Runner 上单跑或跳过某个用例。安装 node.js 之后,运行命令安装 cypress。把账号和密码放 login.json 文件,7. 支持 CI 和并发运行,收集测试结果。运行指定用例,使用 Chrome 浏览器。
2023-10-26 21:50:09
342
转载 容器Docker详解
宿主机器的 IP 地址是固定的,我们可以将容器的端口的映射到宿主机器上的一个端口,免去每次访问容器中的某个服务时都要查看容器的 IP 的地址。信息下方的 Layers,就是 centos 的文件,这些东西都是只读的不能去修改,我们基于这个镜像去创建的镜像和容器也会共享这些文件层,而 docker 会在这些层上面去添加一个可读写的文件层。如果需要修改一些文件层里面的东西的话,docker 会复制一份到这个可读写的文件层里面,如果删除容器的话,那么也会删除它对应的可读写的文件层的文件。
2023-10-26 21:38:54
99
转载 MySQL 在并发场景下的问题及解决思路
对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL 数据库也不例外。尽管如此我们仍然会在业务开发过程中遇到各种各样的疑难问题,本文将以案例的方式演示常见的并发问题并分析解决思路。
2023-10-06 17:23:08
648
转载 浅析 MySQL 8 忘记密码处理方式
对 MySQL 有研究的读者,可能会发现 MySQL 更新很快,在安装方式上,MySQL 提供了两种经典安装方式:解压式和一键式,虽然是两种安装方式,但我更提倡选择解压式安装,不仅快,还干净。在操作系统上,MySQL 也支持多类型操作系统,如 linux,windows 等,如下为 MySQL 几个重大变化的操作系统。mysqld --init-file=c:\mysql\ResetPWD.txt --console,执行完毕后,关闭 dos 窗口。内容三:忘记密码重置密码解决方案二。
2023-10-06 16:53:48
1736
1
转载 Docker 搭建 MySQL 服务
要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker 提供了一个类似 Github 的开源平台,提供开源镜像,放心可靠。前面我们已经安装好了 Docker,也简单了解了 Docker。这里我使用 navicat 远程连接,连接 MySQL 前需要防火墙开放端口或者关闭防火墙。上图可以看到容器的简写 ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等。注意,若提示拉取失败就重复几次,总有一次会成功的。连接成功,也可以进行相关数据库操作,因此 MySQL 服务搭建成功!
2023-10-06 16:48:26
63
转载 (MariaDB)MySQL 数据类型详解和存储机制
因为整数值存储时是直接通过 bit 计算数值的,0-255 之间的任意整数都只占一个字节,256-65535 之间的任意整数都占 2 个字节,而占用 4 个字节时便可以代表几十亿个整数之间的任意一个,这显然比字符型存储时每个字符占用一个字节节省空间的多。时,由于第一个和最后一个都会截断为空数据,所以它们的 index 为 0,插入的 NULL 的 index 为 NULL,插入的'b','a','c'的 index 值分别为 2,1,3。当然,这是一个很粗犷的概念,更具体的存储方式见下面的描述。
2023-10-06 16:44:13
401
转载 查询性能优化 深入理解 MySql 如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解 MySql 如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解 MySql 如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避短。声明:本人使用的数据库版本为 MySql 5.1。
2023-10-05 20:37:57
111
转载 mysql 共享锁与排他锁
排他锁又称为写锁,简称 X 锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。然后我们提交数据,释放排他锁看下修改后的数据,此时可用排他查,共享查和普通查询, 因为事务提交后该行数据释放排他锁,下面就只显示普通查询,其他的同学们自己去验证。此时共享查询处于阻塞,等待排它锁的释放,但是用普通查询能查到数据,因为没用上锁机制不与排他锁互斥,但查到的数据是修改数据之前的老数据。
2023-10-05 20:24:43
304
转载 mysql的查询、子查询及连接查询
左连接时,mingoods表(左表)不动,category表(右表)根据条件去一条条匹配,虽说category表也是读取一行行记录,然后判断cat_id是否跟mingoods表的相同,但是,左连接使用了索引,cat_id建立了索引的话,查询速度非常快,所以整体效率相比于全相乘要快得多,全相乘没有使用索引。5、连接查询时,虽说也是读取一行行记录,然后判断是否满足条件,但是,连接查询使用了索引,条件列建立了索引的话,查询速度非常快,所以整体效率相比于全相乘要快得多,全相乘是没有使用索引的。
2023-10-05 20:18:25
1035
原创 MySQL · 引擎特性 · InnoDB Buffer Pool
用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然也因为引入了这一中间层,数据库对内存的管理变得相对比较复杂。本文主要分析 MySQL Buffer Pool 的相关技术以及实现原理,源码基于阿里云 RDS MySQL 5.6 分支,其中部分特性已经开源到 AliSQL。
2023-10-05 18:59:36
106
原创 Mysql 索引查询失效的情况
索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于 0,字符串类型设置一个默认值,判断是否等于默认值即可。可以使用 explain 命令加在要分析的 sql 语句前面,在执行结果中查看 key 这一列的值,如果为 NULL,说明没有使用索引。当 or 左右查询字段只有一个是索引,该索引失效,只有当 or 左右查询字段均为索引时,才会生效。8、当全表扫描速度比索引速度快时,mysql 会使用全表扫描,此时索引失效。3、组合索引,不是使用第一列索引,索引失效。
2023-10-05 14:49:47
307
转载 MySQL 索引
为何要有索引? 一般的应用系统,读写比例在 10:1 左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。什么是索引? 索引在 MySQL 中也叫做 “键” 或者 "key"(primary key,unique key,还有一个 index key),是存储引擎用于快速找到记录的一种数据结构。
2023-10-05 14:10:49
59
转载 学习 MySQL 优化原理,这一篇就够了
理解查询是如何执行以及时间都消耗在哪些地方,再加上一些优化过程的知识,可以帮助大家更好的理解 MySQL,理解常见优化技巧背后的原理。希望本文中的原理、示例能够帮助大家更好的将理论和实践联系起来,更多的将理论知识运用到实践中。其他也没啥说的了,给大家留两个思考题吧,可以在脑袋里想想答案,这也是大家经常挂在嘴边的,但很少有人会思考为什么?有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护,也会增加使用成本,应该把业务逻辑放到客户端。
2023-10-05 13:46:23
65
原创 mysql 中 utf8 和 utf8mb4 区别
当使用 utf8 字符集时,需要保留的长度就是 utf8 最长字符长度乘以字符串长度,所以这里理所当然的限制了 utf8 最大长度为 3,比如 CHAR(100) Mysql 会保留 300 字节长度。至于后续的版本为什么不对 4 字节长度的 UTF-8 字符提供支持,我想一个是为了向后兼容性的考虑,还有就是基本多文种平面之外的字符确实很少用到。utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8 字符,也就是 Unicode 中的基本多文本平面。
2023-10-05 13:29:01
342
原创 MySQL 函数
返回一个字符串,在这里对于在 “bits” 中设定每一位,你得到一个 “on” 字符串,并且对于每个复位 (reset) 的位,你得到一个 “off”字符串。CASE 表示函数开始,END 表示函数结束。如果 e1 成立,则返回 v1, 如果 e2 成立,则返回 v2,当全部不成立则返回 vn,而当有一个成立之后,后面的就不执行了。如果 count 是负数,返回第 (count 的绝对值(从右边数)) 个字符右边的字符串。字符串函数是 MySQL 中最常用的一类函数,字符串函数主要用于处理表中的字符串。
2023-10-05 13:26:09
44
原创 Cypress web 自动化 - alert 弹窗
当页面上出现 alert 弹窗时候,Cypress 自动接受 alert, 运行代码的时候虽然看不到弹窗页面,但是依然可以对文本内容断言。
2023-10-05 13:10:54
248
原创 cypress 启动时报错 file already exists,文件已经存在解决办法
我的 node 安装在 D:\Program Files\nodejs 这个目录下面,通过 npm config set prefix "D:\Program Files\nodejs\npm" 来配置 npm 的全局模块的存放路径。2、在 %appdata%/../.. 目录下有一个名为. npmrc 的文件,存放 npm 的 userconfig 配置,其内容如下:prefix=D:\Program Files\nodejs\npm,我们可以通过修改 prefix 的路径解决这个问题。
2023-10-02 18:02:37
892
原创 Spring/Spring MVC
实际上大部分时候 spring bean 无状态的(比如 dao 类),所有某种程度上来说 bean 也是安全的,但如果 bean 有状态的话(比如 view model 对象),那就要开发者自己去保证线程安全了,最简单的就是改变 bean 的作用域,把“singleton”变更为“prototype”,这样请求 bean 相当于 new Bean()了,所以就可以保证线程安全了。比如,某个事务尝试插入记录 A,此时该事务还未提交,然后另一个事务尝试读取到了记录 A。
2023-10-02 17:58:46
33
原创 如何保证单机保证3w tps 访问量?
如果一个业务流程无法处理完的话,那么请求就会出现堆积现象,堆积过多就会出现OOM,内存溢出了...所以我个人感觉这个单机3W同步处理的优化是不符合现实的,只能从业务上去处理,尽量把同步的业务逻辑改成异步的业务逻辑,即使改成异步的业务逻辑,虽然能够支撑住3w的tps,但是因为服务的处理速刷无法达到3wtps的处理速度,那么最终会造成内存的不断消耗,最终导致OOM的出现。听到这个问题,第一反应有点蒙,想成了3w的并发量了,想了一下,目前的容器比如tomcat的最大并发量也就几千就扛不住了...
2023-10-02 17:41:40
85
原创 Spring面试题(一)
答:Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。答:相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。
2023-10-02 17:36:01
42
原创 Java面试题(三)
意思就是说,在你写一个 volatile 域时,能保证任何线程都能看到你写的值,同时,在写之前,也能保证任何数值的更新对所有线程是可见的,因为内存屏障会将其他所有写的值更新到缓存。double 和 long 都是64位宽,因此对这两种类型的读是分为两部分的,第一次读取第一个 32 位,然后再读剩下的 32 位,这个过程不是原子的,但 Java 中 volatile 型的 long 或 double 变量的读写是原子的。睡眠时,释放互斥锁。当睡眠时间到了,会解除阻塞,进行可运行状态,等待 CPU 的到来。
2023-10-02 17:29:38
42
原创 Java面试题(二)
即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。Java 虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。而这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一 “中间层” ,就能在不同平台上运行,真正实现了 “一次编译,到处运行” 的目的。
2023-10-02 17:21:38
43
原创 Java面试题
④从利用效率来看,ArrayList自由性较低,因为它需要手动的设置固定大小的容量,但是它的使用比较方便,只需要创建,然后添加数据,通过调用下标进行使用;而LinkedList自由性较高,能够动态的随数据量的变化而变化,但是它不便于使用。③当对数据进行增加和删除的操作时(add和remove操作),LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。数组,查找快,插入删除慢。
2023-10-02 17:16:19
51
原创 Cypress 中使用 iframe
我们可能会访问 iframe 的元素在多个测试,因此,让上面的效用函数为赛普拉斯自定义命令里面的文件。自定义命令将自动在所有规范文件中可用,因为支持文件与每个规范文件连接在一起。return cy})})我们可以通过禁用内部命令的日志记录来隐藏代码中每一步的细节。return cy})左栏中的命令日志现在看起来好多了。带有单个日志和断言的自定义命令。
2023-10-02 15:47:23
425
原创 USB - Cypress 固件架构解析
即使加载了 “8051” 的程序,也可以设置 Renum=0,这样让 “EZUSB 核心” 处理端点 0 的设备请求,而让 “8051” 完成具体的 USB 数据传输,这样做会大大简化 8051 固件代码。5、if(GotSUD) 等待 SETUP 令牌数据的到来,令牌数据到来时,在中断中将 GotSUD 置位,中断函数为 ISR_Sudav(void),GotSUD 为令牌包标志。9、if(TD_Suspend()),在进入休眠之前加一个返回值为 BOOL 的函数,用户可以在此函数中进行相关操作。
2023-10-02 15:34:49
190
原创 Cypress - 自动化测试 - 目录结构
cypress 共有四个目录,还有一个 cypress.json 文件,integration 中的文件有 cypress 自带的例子。并且 cypress 的快照记录了每一行的运行记录,只要将鼠标放在已经运行的某一行脚本时,就会看到当前行的运行情况。打开 cypress 后,可以看到 example 的文件夹,就是上图介绍过的 cypress 自带的测试代码。当然,cypress 除了使用浏览器运行外,在测试用例较多的情况下,还是推荐服务器运行的方式。1】运行 cypress 的方法。
2023-10-02 15:26:08
212
原创 cypress - 文件上传
cypress-file-upload 插件使得文件上传测试变得简单。这个包添加了一个定制的 Cypress 命令,允许您对如何通过 HTML 控件上传文件进行抽象,并将重点放在测试用户工作流上。
2023-10-02 15:17:49
317
原创 如何使用RESTful API构建 web 应用程序
例如,获取文章列表使用 GET,创建新文章使用 POST,更新文章使用 PUT,删除文章使用 DELETE。通过定义清晰的资源和相应的 URL,使用 RESTful API 可以更好地组织和管理 web 应用程序的逻辑结构,并提供一致和可预测的接口供其他应用程序进行交互。使用这个示例代码作为起点,你可以按照实际需求添加更多的路由和处理逻辑,构建更完整的 RESTful API。定义资源:确定你的应用程序中的资源。返回数据:根据请求的内容和结果,使用适当的状态码和数据格式(如 JSON)返回响应结果。
2023-10-02 10:38:53
77
1
原创 Cypress 录制自动化脚本
Cypress Studio 提供了一种在测试运行程序中生成测试的可视化方法,通过记录与被测应用程序的交互。支持. click()、.type()、.check()、.uncheck()和. select()Cypress 命令,这些命令将在与 Cypress Studio 内部的 DOM 交互时生成测试代码。
2023-10-02 10:30:57
765
1
原创 Cypress - 元素查找及其操作(与 Selenium 对比)
2. contains 相当于 selenium 中的 driver.find_element_by_xpath("//*[contains(text(),'value')]"),但更强大。当元素是不可见 (disvisible) 或不可用 (disable) 时,在 selenium 中为了对其操作需要使用 JS 修改元素属性,在 Cypress 中可通过添加参数修改。1. get 相当于 selenium 中的 find_element_by_css & find_elements_by_css。
2023-10-02 10:22:10
319
1
原创 Cypress - 断言
断言是测试用例的必要组成部分没有断言,咱们就不知道测试用例的有效性,到底通过没通过Cypress 的断言基于 Chai 断言库,并且增加了对 Sinon-Chai、Chai-jQuery 断言库的支持,其中就包括 BDD 和 TDD 格式的断言。
2023-10-02 10:18:20
217
1
原创 Cypress - 环境变量详解
环境变量,其实就是根据环境的变化,变量会有不同的值比如最常见的:开发环境、测试环境、生产环境的 URL 肯定不一样,我们可以根据不同的环境选择不同的环境变量这就是为什么我们要学习环境变量的原因可以使用 plugins 通过 Node 代码动态设置它们,而不必在文件中设置环境变量plugins 具体如何使用可以看这篇文章:待更新可以给测试用例或测试用例集单独设置环境变量会覆盖其他方式设置的环境变量。
2023-10-01 21:42:43
390
原创 e2e 测试框架之 Cypress
这几天我在搭建 UI 自动化测试框架,顺便封装了一些元素定位,随着对前端技术的了解,我几乎将所有元素定位都换成了 CSS,配合 JS 处理一些 Selenium 很难操作的元素,确实效率提高了很多,页面元素也没那么难操作了,包括学了点 Jenkins 的配置,当然,这个话题会放到下一次来分享。也许,这是未来前端测试的方向,至少对于前端人员来说,快速验证界面功能,我想不到有什么理由不选择它,而是 Selenium。当然,对于测试人员,脚本的可维护性,报告的生成,以及与持续集成的结合都有一整套成熟的方案。
2023-10-01 21:30:28
91
Java后端知识+Java并发系统设计
2023-11-01
Java大数据开发+Java大厂面试题
2023-10-28
Java后端+Java后端中级面试题
2023-10-27
Java面试题+Java后端中级面试题
2023-10-27
Java后端开发+Java中级面试题
2023-10-27
Java后端资料,面试专题
2023-10-12
Java后端资料,知识点,面试点
2023-10-12
Java后端资料,面试题,后端知识点
2023-10-12
Java知识资料,后端资料,面试资料
2023-10-12
Java后端资料,MyBatis面试专题
2023-10-12
MySQL面试题,面试资料
2023-10-05
Java知识,JVM面试资料
2023-10-05
Kafka面试题,面试知识
2023-10-05
Java垃圾回收知识,垃圾回收资料
2023-10-05
Java面试题及答案,Dubbo框架
2023-10-05
Java热门面试题、Java面试指南
2023-10-05
java大厂面试题,面试题集
2023-10-03
Java面试题,面试简历,面试经验
2023-10-03
java面试资料面试题学习资料
2023-10-02
互联网行业软件测试模板
2023-10-02
互联网行业求职简历模板
2023-10-02
软件测试常见面试题面试宝典
2023-10-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人