自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ai测试的项目部署

本文介绍了如何在本地部署博客系统项目。首先使用Docker拉取镜像并启动容器(端口映射9090:8080),然后进入容器启动MySQL服务并验证数据库。接着进入项目目录,通过nohup命令后台运行Java服务。最后通过宿主机IP:9090/blog_login.html访问系统,需确保防火墙放行9090端口。系统提供两个测试账号:zhangsan/123456和lisi/123456。

2026-08-19 13:44:52 172

原创 电商平台-测试报告

本文对电商平台进行了全面的功能测试,覆盖登录、注册、首页、分类页、商品页等核心模块。测试采用手动和自动化结合的方式,使用Selenium进行自动化测试,验证了154个测试用例。 测试亮点: 全面的登录验证:测试了账号密码、手机号、邮箱三种登录方式的21种场景 严格的注册校验:验证了用户名格式、密码强度、验证码等19种注册情况 完整的业务流程测试:从商品浏览到加入购物车、收藏等全流程验证 发现的主要问题: 安全性方面:密码明文传输、支持弱密码、未实现错误密码锁定机制 性能瓶颈:服务器带宽不足,10并发时响应时

2026-07-09 11:59:54 269

原创 软件的性能测试

性能测试摘要 性能测试旨在发现系统性能问题及获取关键指标,主要关注并发用户数、吞吐量(TPS/QPS)和响应时间。测试类型包括基准测试、并发测试、负载测试、压力测试和稳定性测试。常用工具如JMeter,需配置线程组、HTTP取样器、JSON提取器等组件,并通过同步定时器实现真正并发。测试过程中需逐步增加并发量,使用事务控制器合并事务,通过CSV文件管理测试数据。最后可通过命令行生成HTML格式的测试报告,帮助分析系统性能拐点和资源利用率。核心目标是评估系统在不同负载下的表现,确保其稳定性和可靠性。

2026-06-29 16:58:54 182

原创 自动化测试项目:博客系统

本文介绍了博客系统的自动化测试框架设计与测试报告撰写。测试框架包含四个核心页面模块(登录、首页、详情、编辑页),采用Python实现,通过单例模式管理浏览器驱动,并设计了截图功能。测试流程包括:1)脑图设计测试用例;2)创建测试项目结构;3)实现页面测试类;4)通过RunTest执行测试。测试报告应包含:bug统计(分级数量)、遗留问题说明、测试结论(开发/测试周期),并可扩展项目背景、测试计划、工具说明等内容。特别指出测试提测方式需根据页面耦合程度决定整体或分模块提测,报告需体现功能/自动化测试的覆盖范围

2026-06-24 22:33:59 164

原创 自动化测试的常见函数

本文总结了Selenium自动化测试中常用的元素定位和操作方法。主要内容包括:1)通过CSS选择器和XPath定位单个或多个元素;2)元素操作方法如点击、输入、清除文本等;3)窗口和标签页管理,包括句柄切换和窗口设置;4)处理不同类型的弹窗;5)三种等待方式(强制、隐式和显式)的应用场景;6)文件上传的特殊处理;7)浏览器参数设置,如无头模式和页面加载策略。文章重点介绍了如何有效定位元素并进行操作,以及处理自动化测试中的常见场景和挑战。

2026-06-23 21:04:08 238

原创 自动化测试的概念

摘要:自动化测试虽能提升效率,但无法完全替代人工测试,需持续维护脚本且主要用于回归测试。实际应用中常出现与理想金字塔模型相反的"冰淇淋蛋筒"模式,初始投入较高但长期效益显著。Web自动化测试需通过WebDriver驱动浏览器,版本匹配是关键,可使用Webdriver-manager工具解决驱动更新问题。Selenium是常用工具,安装时需指定版本(如4.0.0),并配合对应浏览器驱动使用。自动化测试主要用于保障多版本软件的兼容性,新版本上线时需同步验证旧版本功能。

2026-06-22 21:43:43 262

原创 软件测试的测试分类

本文系统梳理了软件测试的分类体系。从测试目标角度,详细介绍了界面测试、功能测试、性能测试、可靠性测试、安全性测试和易用性测试六大类及其具体测试要点;从执行方式角度,区分了静态测试和动态测试;从测试方法角度,阐述了白盒测试、黑盒测试和灰盒测试的差异;从测试阶段角度,说明了单元测试到验收测试的完整流程;最后还介绍了手工与自动化测试的区别,以及α/β测试和第三方测试等实施组织形式。全文构建了完整的软件测试知识框架,对测试工作具有指导意义。

2026-06-22 17:06:43 238

原创 如何设计测试用例

测试中可能存在很多问题:测试用例是为了实施测试而向被测试的系统提供的一组集合测试用例的原则:1.测试用例中的一个必须部分是对与其输出或结果进行定义测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况检查程序是否“未做其应该做的”仅是成功的一半,测试的另一半是检查程序是否做了其不该做的早期使用excel来编写测试用例eg.现在使用脑图/思维导图来编写测试用例eg.

2026-06-21 19:37:34 189

原创 软件测试中的BUG

当需求规格说明书没有提及的功能,判断标准以最终用户为准:程序没有实现最终用户何以预期的功能要求是,就是bug。描述bug的基本要素:问题出现的版本,问题出现的环境,问题出现的步骤,预期结果,实际结果。bug级别一半分为:崩溃,严重,一般,次要(分别为P0,P1,P2,P3)当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是bug。bug评审需要三个代表:测试代表,开发代表,产品代表。在描述bug时,要先检查自身是否将bug描述清楚。通过定义bug的级别可以确定问题的严重性。

2026-06-20 19:34:03 275

原创 什么是测试

本文摘要:文章系统介绍了软件测试的核心概念和工作内容,包括测试开发(业务测试与效率工具开发)、调试与测试的区别,以及测试人员为何需要掌握开发知识(编写测试代码、提升测试质量)。重点解析了软件需求分类(用户需求与软件需求)和主流开发模型(瀑布、螺旋、增量、敏捷/Scrum模型),强调敏捷模型适应需求变更的优势。最后阐述了V模型和W模型两种测试模型的特点,指出W模型支持早期测试但存在敏捷适应性不足的局限。全文为测试工作提供了方法论指导,涵盖从需求分析到测试实施的全流程关键要素。(149字)

2026-06-20 17:59:08 172

原创 MySQL的访问和数据流动

查找MySQL常用接口,可以在MySQL的官网上找到documentation使用库,必须先进行初始化初始化完毕后,还需要链接数据库MySQL将所有的数据,读取出来的时候,全都当做字符串。

2026-06-12 22:15:18 651

原创 MySQL视图和用户管理

视图是一个虚拟表,内容由查询定义和真实的表一样,视图包含一系列带有名称的列和行数据属兔的数据变化会影响基表,基表的数据变化也会影响视图。

2026-06-12 18:59:12 231

原创 MySQL的事务

事务时一组DML语句,这些语句在逻辑上存在相关性这一组DML语句,要么全部成功,要么全部失败,时一个整体MySQL提供一种机制,保证我们可以达到这种效果事务就是由一组或多组sql语句组成的,用于处理操作量大,复杂度高的数据一个完整的事务有以下四种属性:原子性一致性隔离性持久性上面四种属性可以称为ACID事务可以简化我们的编程模型,不需要我们考虑各种潜在错误喝并发问题事务本质是为应用层服务的事务常见的提交方式有两种自动提交和手动提交。

2026-06-12 15:05:08 275

原创 MYSQL索引

索引可以提高数据库的性能搜索海量数据,如果没有索引,效率会很低索引主要分为:主键索引,唯一索引,普通索引,全文索引mysql的服务器,本质是在内存中的,所有的数据库的CURD操作,全都是在内存中进行的,索引也是如此mysql给用户提供存储服务,而存储的都是数据,数据就存储在磁盘中磁盘本身的效率较低,因此mysql需要提高效率系统读磁盘以块为单位,一个块4kb。

2026-06-10 22:47:06 253

原创 MYSQL复合查询和内外连接

多表查询是将数据进行穷举组合(笛卡尔积)

2026-06-09 20:12:21 49

原创 MYSQL内置函数

mysql本身内置了许多函数。

2026-06-09 15:24:41 59

原创 MYSQL中表的基本查询

使用insert into可以对表中任意一行进行插入如果要省略某一列值,则需要写明每一列值对应的name。

2026-06-08 22:18:05 234

原创 MYSQL表的约束

本文介绍了数据库表中常见的约束类型及其作用。主要包括空属性约束(NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)、零填充(ZEROFILL)、主键(PRIMARY KEY)、自增长(AUTO_INCREMENT)、唯一键(UNIQUE)和外键(FOREIGN KEY)。这些约束通过限制数据的插入和修改,确保数据的完整性、唯一性和业务逻辑的正确性。主键用于唯一标识记录,唯一键保证业务数据不重复,外键维护表间关系,其他约束则控制数据的格式和默认行为。合理使用这些约束能有效提高数据库数据的质

2026-06-07 21:35:30 273

原创 MYSQL数据类型

可以分为整形,浮点数,bool值,bit类型,四种再根据取值范围的不同细分不同的类型在mysql中,默认整形是有符号的,也可以用 unsigned 指定无符号整形如果我们向mysql特定的类型中插入不合法的数据,mysql一般都是直接拦截的,不允许做对应的操作如果已经有数据被成功插入到mysql中了,插入一定是合法的mysql中,一般而言,数据类型本身也是一种约束。

2026-06-01 20:16:18 199

原创 MYSQL操作

MySQL数据库操作摘要:创建数据库使用CREATE DATABASE命令,可指定字符集(charset=xxx),本质是在/var/lib/mysql创建目录。删除数据库用DROP DATABASE,会级联删除所有数据表。数据库有存储编码集和校验编码集,需保持一致(通过show variables/charset/collation查看)。表的操作包括创建(CREATE TABLE)、查看(DESC/SHOW CREATE TABLE)、修改(ALTER TABLE)和删除(DROP TABLE)。数据库

2026-06-01 16:20:35 221

原创 MySQL数据库基础

mysql本质是一种基于C(mysql)S(mysqld)网络服务mysql是数据库服务的客户端mysqld是数据库服务的服务器端mysql是一套给我们提供数据存取服务的网络程序数据库:一般指的是,在磁盘或内存中存储的特定结构组织的数据(在磁盘上存储的一套数据库方案)数据库服务:mysqld为什么要有数据库?文件保存存在以下几个缺点:1.文件的安全性问题2.文件不利于数据的查询和管理3.文件不利于存储海量数据4.文件在程序中控制不方便。

2026-06-01 13:21:42 238

原创 网络层IP

公网IP全球具有唯一性ip用点分十进制标识(IPV6)eg.121.41.6.245,范围为[0,255].[0,255].[0,255].[0,255]主机:配有ip,但是不进行路由控制路由器:配有ip,且进行路由控制IP的核心作用:把数据包转发到目标主机但是转发到目标主机不一定成功(可能丢包),如果丢包了,就需要TCP协议处理(重传)上图所示,左边是传输层报头的结构,右边是网络层报头的结构网络层传输的路径就是由源IP地址和目的IP地址决定的IP报头的解包:IP报头报头包括。

2026-05-30 22:03:43 332

原创 传输层协议UDP和TCP

本文介绍了UDP和TCP两种传输层协议的核心特性。UDP是无连接、不可靠的协议,通过端口号实现数据分用,采用固定8字节报头,但不保证数据顺序和完整性。TCP是面向连接、可靠的协议,通过序号、确认应答、滑动窗口等机制确保数据传输的可靠性,支持流量控制和拥塞控制。文章详细解析了TCP报头结构、三次握手/四次挥手过程、超时重传机制,以及粘包问题等关键概念,阐述了TCP如何通过序列号、窗口大小、标志位等实现高效可靠的数据传输。

2026-05-29 16:45:40 272

原创 应用层协议http

HTTP协议是客户端与服务器通信的基础,通过请求-响应模式实现资源传输。URL定位资源位置,但不包含端口号,成熟协议与端口强关联。特殊字符需转义处理。HTTP请求必须应答,交换版本信息确保兼容性。网页由多种资源组成,代理服务器可转发请求至其他服务器。状态码如301/302实现重定向,GET用于获取数据,POST更私密但不绝对安全。会话保持通过cookie和session实现,session存储在服务端更安全。加密是保障通信安全的关键。

2026-05-25 13:49:31 242

原创 应用层自定义协议与序列化

本文探讨了网络通信中的数据序列化与反序列化机制,以及TCP协议的工作原理。重点分析了TCP全双工通信的实现方式,包括发送/接收缓冲区的管理、sk_buff结构体的作用。文章还阐述了应用层确保报文完整性的方法,如通过headlength字段控制报文边界。最后讨论了Linux系统中前后台进程的管理机制,以及守护进程作为孤儿进程脱离终端运行的特点。这些内容涵盖了网络编程中的核心概念和Linux系统进程管理的关键技术。

2026-05-19 19:47:05 43

原创 Socket

Socket编程核心概念摘要:IP地址标识主机唯一性,端口号标识进程唯一性,二者组合(IP+端口)构成全网唯一进程标识。TCP提供可靠传输,UDP适用于容错场景。网络字节序统一为大端模式,系统接口自动处理端序转换。Socket类型包括网络Socket(跨主机通信)、本地Socket(进程间通信)和原始Socket。端口号范围中0-1023为系统保留端口,1024-65535供用户使用。云服务器限制公网IP绑定,但虚拟机无此限制。

2026-05-16 21:08:17 67

原创 网络基础与协议

网络协议分层解析:从OSI到TCP/IP的实践演进 摘要:网络协议本质是结构化通信约定,通过分层实现模块化解耦。TCP/IP协议栈采用四层架构(链路层、网络层、传输层、应用层)解决跨网络通信问题,相比OSI七层模型更符合工程实践。关键机制包括:MAC地址实现局域网设备寻址(48位硬件标识)、IP协议处理跨网路由(IPv4采用32位点分十进制)、分层封装解包确保端到端通信。协议数据单元由报头(含分用标识)和有效载荷构成,同层协议通过虚拟通信实现互操作。碰撞检测/避免机制保障共享信道访问,路由器作为网络边界实现

2026-05-11 18:59:00 337

原创 磁盘文件系统

本文摘要:文件分为打开(内存)和未打开(磁盘)两种状态。文件通过路径定位,磁盘本质是三维数组,以扇区为基本IO单位。Linux文件系统将磁盘划分为block group,使用inode结构存储文件属性和数据块映射关系。文件操作(创建/删除)通过修改inode bitmap和block bitmap实现。目录是特殊文件,存储文件名与inode的映射。多分区系统中需挂载分区才能访问,路径解析采用缓存优化。文件删除后若未被覆盖可恢复,但实际操作困难。

2026-04-28 22:37:35 357

原创 文件和fd,文件的内核级缓冲区,重定向

文件 = 内容 + 属性访问文件之前,必须要打开它文件在未打开之前,是在磁盘中的当访问一个文件时,是进程在访问文件进程在内存里,cpu只可以读取内存但是文件存在磁盘中所以可以看出,文件也会加载到内存中否则cpu无法访问文件一个进程可以打开多个文件,多个进程则会打开更多的文件os也需要对文件进行管理在内核中,文件 = 文件的内核数据结构(属性) + 文件的内容研究打开的文件,就是在研究进程和文件的关系fputs(),fwrite(),fprintf()均可向显示器写入。

2026-04-24 20:27:45 420

原创 实现一个简易的shell

shell也是一个进程首先要打印命令行提示符所以需要一个接口PrintCommandLine其次,需要获取用户命令所以需要GetCommandLine然后,还需要分析命令所以需要ParseCommandLine再次,需要执行命令所以需要ExecuteCOmmand由于这个过程需要被不断执行,所以需要一个循环我们还需要获取用户名,主机名,当前路径等信息可以通过环境变量进行获取我们还需要构建一个命令行的输出格式这样就将命令行信息的打印拼接成了一个。

2026-04-19 21:53:11 330

原创 Linux中的进程控制

使用fork()创建fork存在两个返回值,分别父进程返回id,对子进程返回0父进程和子进程的代码共享数据在默认不修改的时候,也是共享的如果要进行修改,则会将要修改的部分进行重新开辟一段新的空间当子进程更新数据时,子进程会对只读数据进行写入这时会触发系统错误之后系统会发生此时会发生系统检测检测到要发生写时拷贝,系统才会进行申请内存,发生拷贝,修改页表,恢复执行。

2026-04-18 12:11:36 369

原创 进程地址空间

由于可执行程序的代码和数据可以加载到物理内存的任意位置,只有少数情况,需要加载到特定位置。但是当子进程需要修改时,则会重新申请一个新的内存空间,然后将数据拷贝下来。所谓的进程虚拟地址空间,本质就是一个内核数据结构对象,类似PCB。其根本原因是:它们是存储在地址空间中的,是随着进程一直存在的。但是父子进程的gval数值虽然不同,但是对应的地址是一样的。空间范围内的地址,我们可以随便使用,暂时不需要记录它的地址。野指针指向的也是虚拟地址,野指针指向的地址可能不存在该映射。

2026-04-14 17:59:24 203

原创 命令行参数和环境变量

本文介绍了命令行参数和环境变量的相关知识。命令行参数通过main函数的argc和argv[]传递,使程序能根据不同参数执行不同功能。环境变量如PATH、HOME等具有全局属性,可被子进程继承。PATH指定命令搜索路径,系统会按顺序查找;HOME记录家目录;PWD保存当前路径。环境变量可通过export命令设置,本地变量则无法被子进程访问。进程通过环境变量表或getenv()函数获取环境变量,实现进程间只读数据的传递。环境变量配置在系统文件中,登录时由shell读取并传递给子进程。

2026-04-13 18:02:43 229

原创 理解Linux中的OS管理和进程属性

本文摘要: 文章系统介绍了冯诺依曼体系结构及操作系统进程管理核心概念。重点阐述了冯诺依曼架构五大组件(输入/输出设备、存储器、CPU)的交互原理,强调CPU仅与内存交互的特性。深入解析进程本质是"内核数据结构+程序代码/数据",详细说明进程标识符(PID/PPID)、进程创建(fork机制)、进程状态(运行/阻塞/僵尸等)及优先级调度算法。特别剖析了Linux的O(1)调度器实现,包括双队列轮转机制和位图优化,并解释了进程上下文切换时寄存器数据的保存/恢复原理。最后讨论了进程生命周期中的

2026-04-12 16:36:37 404

原创 linux中的git和gdb

本文摘要介绍了Git版本控制工具和GDB调试器的基本使用方法。Git部分包括仓库创建、文件添加提交、同步远程仓库等操作流程,以及冲突解决方法。GDB调试部分详细说明了调试模式设置、断点管理、单步执行、变量监视等调试技巧,包括条件断点设置和运行时变量修改等功能。两者都提供了Linux环境下的具体命令操作指南,帮助开发者进行代码版本管理和程序调试。

2026-04-01 21:27:13 411

原创 C++中的IO流

cout等输出的本质是将内容转换成字符串再输出cin的本质是转换成调用函数下面函数同时又重载了operator boolio流设置了四个标志eofbitfailbitbadbitgoodbitctrl z后这个流就不能用了,因为ctrl z将eof和fail设置为1了如果想要继续使用这个流,则需要clear一下将标志恢复一下当输入错误数据后,需要想办法将缓冲区清除,才能clear,才能让流恢复如果想要设计一个总能读整形成功的程序(即使读取了非整形,后续也能继续读取),则可以这样写。

2026-03-23 16:17:07 262

原创 类型转换和特殊类

自定义类型 = 内置类型,依赖构造函数支持内置类型 = 自定义类型,需要重载()单参数构造函数支持隐式类型转换内置类型和自定义类型之间的转换依赖构造函数进行转换多参数构造函数的隐式类型转换需要加{ }如果不想发生隐式类型转换可以加explicit但是加explicit还是可以进行显示类型转换自定义类型也可以转换成内置类型需要重载operator(),但是由于()被仿函数占用了,所以不能用因此换了一种写法:operato 类型,无返回类型自定义类型之间只要建立关联就可以进行转换。

2026-03-21 17:53:09 341

原创 C++智能指针

当new一个对象后,如果抛异常,可能需要专门处理new的对象智能指针可以方便地完成该任务当前函数结束后,会借助析构函数将对象自动释放。

2026-03-19 19:10:25 334

原创 C++的异常

c语言中传统的处理错误方式有两种:1.终止程序(assert):通常用于程序员手动终止2.返回错误码:对错误进行编号。

2026-03-17 21:19:25 57

原创 C++11

c++98仅允许{}对数组或结构体元素进行初始化但是c++11也允许 变量 和 存在构造函数的变量 使用{}进行初始化即一切皆可用{}初始化,且可以省略“ = ”它的本质还是单参数或多参数的隐式类型转换。

2026-03-16 20:16:40 381 1

空空如也

空空如也

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

TA关注的人

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