- 博客(152)
- 收藏
- 关注
原创 自动化测试常用函数
本文介绍了Web自动化测试中的核心内容:元素定位和页面操作。主要内容包括:1)元素定位方法,重点解析CSS选择器和XPath语法;2)常见页面操作如点击、输入、获取文本等;3)窗口管理技巧,包括切换、大小设置和截图;4)弹窗处理和三种等待机制;5)浏览器导航、文件上传等特殊场景处理。文章强调自动化测试需要掌握定位语法而非仅依赖复制工具,并提供了多种实用代码示例,帮助测试人员构建稳定的自动化脚本。
2025-07-28 23:15:09
346
原创 自动化测试概念篇
本文介绍了自动化测试的概念及其在实际应用中的分类与实现。文章首先阐述了自动化在日常生活中的体现(如自动洒水机、自动洗手液等),并延伸到软件测试领域,指出自动化测试可减少人力消耗、提高测试效率,主要用于回归测试。随后详细讲解了自动化测试的分类(接口自动化、UI自动化等)和自动化金字塔模型,分析了理想与现实的差距。 在Web自动化测试部分,重点介绍了Selenium工具的实现原理:通过浏览器驱动(WebDriver)连接自动化脚本与浏览器,实现自动化操作。文章提供了具体的安装指南(驱动管理工具webdrive
2025-07-27 19:58:44
884
原创 安装Selenium⾃动化
本文详细介绍了搭建Python自动化测试环境的完整流程:1. 安装Python运行环境(推荐3.x版本),注意勾选添加PATH;2. 安装PyCharm IDE并配置基础开发环境;3. 使用pip管理工具安装第三方库;4. 搭建自动化测试环境(安装selenium和webdriver-manager)。重点演示了如何通过selenium编写自动化测试脚本,包括浏览器驱动配置、页面元素定位和基本操作。文中特别强调要使用正版浏览器,并提供了详细的报错排查方法。
2025-07-27 18:09:33
614
原创 测试分类
软件测试分类方法及应用场景摘要 软件测试可按照不同维度进行分类,主要包括:1)测试目标分类(界面、功能、性能、可靠性、安全性、易用性测试);2)执行方式分类(静态测试和动态测试);3)测试方法分类(白盒、黑盒、灰盒测试);4)测试阶段分类(单元、集成、系统、验收测试);5)实施方式分类(手工和自动化测试)。其中,单元测试主要采用白盒测试方法验证最小代码单元;系统测试关注整体功能和非功能需求;自动化测试可提高回归测试效率。不同的测试分类方法适用于软件开发的不同阶段,有助于全面保障软件质量。
2025-07-26 22:21:04
806
原创 用例篇 .
摘要:本文系统介绍了软件测试中的测试用例设计方法。首先阐述了测试用例的概念、要素(测试环境、操作步骤、测试数据、预期结果等)及其重要性,包括提高测试覆盖率、便于回归测试等。然后详细讲解了设计测试用例的"万能公式":功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试。接着重点介绍了六种具体的设计方法:等价类划分、边界值分析、正交试验法、判定表法、场景法和错误推测法,并结合邮箱注册等实例进行说明。最后还介绍了Postman工具在接口测试中的应用场景和功能特点。全文内容详实,方法实
2025-07-26 00:36:58
750
原创 BUG篇
本文系统阐述了软件测试生命周期与BUG管理两大核心内容。软件测试贯穿整个开发周期,包含需求分析、测试计划、设计开发、执行评估等阶段,每个阶段都有特定目标和交付物。在BUG管理方面,详细介绍了BUG的定义、描述要素、严重级别分类(崩溃/严重/一般/次要)、完整生命周期流程(新建→打开→修复→验证→关闭),并提供了测试与开发人员产生分歧时的5种应对策略:确保描述清晰、用户视角思考、有理有据定级、提升技术业务能力、必要时组织BUG评审。文章通过具体案例说明规范的BUG描述方式,强调了测试人员在项目上线后仍需参与运
2025-07-24 18:11:33
877
原创 概念篇 .
本文首先阐述了软件需求的基本概念,区分了用户需求和软件需求:用户需求是甲方或终端用户提出的简要需求(如"实现登录功能"),而软件需求是经过详细分析后形成的技术实现方案(如具体注册流程)。接着介绍了软件生命周期(需求分析、计划、设计、编码、测试、运行维护)和主要开发模型:瀑布模型(线性流程但风险高)、螺旋模型(适合高风险复杂项目)、增量/迭代模型(分块或循环开发)以及敏捷模型(强调快速响应变化)。最后重点分析了V模型和W模型两种测试模型,指出W模型通过测试前置改进了V模型的缺陷。
2025-07-24 01:24:06
728
原创 认识测试
《软件测试岗位解析》摘要 互联网技术圈存在岗位鄙视链,但测试岗位不可或缺。测试广泛存在于生活中,如购物、软件使用等场景。企业重视测试源于其对产品质量和用户体验的关键影响。测试岗位分为测试开发工程师和测试工程师两类,前者侧重测试框架开发,后者关注用户视角测试实践。相比开发岗,测试岗要求知识面更广但专业深度略低,需掌握编程、测试工具及沟通等综合能力。优秀测试人员应具备自动化测试技术、探索性思维、责任感等素质,并能快速学习新技术。职业选择需结合个人兴趣、能力特点及职业规划。
2025-07-22 01:06:06
914
原创 网络层 .
本文探讨了网络通信中路径选择的基本原理和实现机制。首先分析了主机间数据转发的过程,说明IP协议如何通过逐跳转发实现跨网络通信。文章详细介绍了IP协议头格式及其关键字段功能,包括版本号、服务类型、生存时间等。在网段划分方面,比较了传统分类编址与CIDR方案的优劣,并解释了子网掩码的作用。此外,文章还介绍了特殊的IP地址类型、IP地址不足问题的解决方案(如NAT技术),以及公网IP与私有IP的区别。最后,通过路由表生成算法的具体实现(距离向量算法和链路状态算法),阐述了路由选择的基本原理和过程。
2025-07-21 01:52:00
1412
原创 传输层协议TCP
TCP协议核心机制解析 摘要:TCP(传输控制协议)是一种可靠的、面向连接的传输层协议。其核心机制包括:1)确认应答(ACK)机制确保数据可靠传输;2)超时重传解决丢包问题;3)连接管理通过三次握手建立连接、四次挥手断开连接;4)滑动窗口实现流量控制;5)拥塞控制预防网络拥堵。TCP还采用延迟应答、捎带应答等优化策略提高性能。相比UDP,TCP通过复杂的可靠性机制保障数据传输,但也存在粘包问题需应用层处理。文章详细解析了TCP协议段格式、状态转换及异常处理等核心内容,并对比了TCP/UDP的应用场景差异。
2025-07-18 15:40:52
640
原创 HTTPS 协议原理
加密就是把明文(要传输的信息)进行一系列变换,生成密文。解密就是把密文再进行一系列变换,还原成明文。在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为密钥(正确发音yue四声,不过大家平时都读作yao四声)。明文到密文是要通过密钥的,反过来也是一样的。加密解密到如今已经发展成一个独立的学科:密码学。而密码学的莫基人,也正是计算机科学的祖师爷之一,艾伦·麦席森·图灵。
2025-07-14 23:35:25
4478
原创 传输层协议UDP
摘要:传输层负责数据传输,UDP协议是一种无连接、不可靠但高效的传输协议。UDP通过16位端口号标识应用进程,报头包含源/目的端口、长度和校验和字段。UDP面向数据报传输,不拆分合并数据,最大支持64K数据。其特点包括无连接、不可靠、轻量级和全双工。UDP适用于DNS、DHCP等应用层协议,但需注意处理分包和粘包问题。内核中UDP协议实现为结构体,通过二进制方式进行高效封装和解包。
2025-07-14 00:15:05
977
原创 HTTP cookie 与 session
摘要:本文深入解析了HTTP无状态协议下实现用户状态保持的Cookie和Session技术。Cookie通过Set-Cookie字段由服务器发送给浏览器存储,在后续请求中自动回传,分为会话Cookie(浏览器关闭失效)和持久Cookie(可设置过期时间)。Session则在服务器端存储用户状态数据,通过唯一的SessionID与客户端Cookie关联。两者协同工作解决了HTTP无状态问题,其中Session方案安全性更高,因为敏感数据存储在服务器端,且支持主动注销、超时失效等安全机制。
2025-07-14 00:11:35
672
原创 应用层协议HTTP
HTTP协议是互联网中最重要的应用层协议之一,定义了客户端与服务器之间的通信规则。文章详细介绍了HTTP协议的基本概念、URL结构、URL编码/解码、请求与响应格式、常用方法(如GET和POST)、状态码分类以及常见Header字段。文章还包含一个简单的HTTP服务器实现示例,展示了如何按照协议要求构造响应数据。此外,文章对比了HTTP各版本的核心技术演进,从HTTP/0.9到HTTP/3.0,分析了不同时期的协议改进。最后,文章探讨了Cookie机制、长连接等关键技术原理,以及HTTPS与HTTP的安全性
2025-07-13 01:03:29
463
原创 进程间关系与守护进程
本文系统讲解了Linux进程管理中的进程组、会话、作业控制和守护进程等核心概念。首先介绍了进程组的定义及其生命周期,指出进程组组长的重要作用。接着阐述了会话的概念及其创建方式,包括setsid函数的使用方法。然后详细说明了控制终端与进程组的关系,以及前台/后台进程组的区别。在作业控制部分,重点讲解了作业状态管理、挂起/恢复操作及相关信号处理机制。最后简要提及守护进程的实现原理。文章通过具体命令示例和代码片段,为读者提供了全面的Linux进程管理知识框架。
2025-06-07 14:00:16
674
原创 应用层自定义协议与序列化
toStyledString、StreamWriter和FastWriter提供了不同的序列化选项,你可以根据具体需求选择使用。Json::Reader和parseFromStream函数是Jsoncpp中主要的反序列化工具,它们提供了强大的错误处理机制。在进行序列化和反序列化时,请确保处理所有可能的错误情况,并验证输入和输出的有效性。
2025-06-07 11:53:06
1067
原创 MySQL数据库基础
存储数据用文件就可以了,为什么还要弄个数据库?文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据,数据库的水平是衡量一个程序员水平的重要指标。
2025-06-04 22:45:10
975
原创 Git企业级项目管理实战
本文介绍了基于Gitee企业版DevOps平台的GitFlow开发实践流程。主要内容包括:1) 项目初始设置,含企业成员、项目成员和仓库开发人员的添加;2) 详细开发场景实践,涵盖新需求开发、测试环境Bug修复、正式环境Bug处理等环节,重点说明feature、release、hotfix等分支的使用规范;3) 代码评审和合并流程,强调测试验证的重要性;4) 推荐了腾讯云CODING和阿里云云效等其他DevOps平台,以及阿里飞流Flow分支模型的拓展实践。文章为团队协作开发提供了标准化操作指南。
2025-06-01 21:33:31
889
原创 Git企业级开发模型
本文探讨了DevOps理念在软件开发中的重要性以及Git分支管理规范。首先分析了传统开发与运维之间的矛盾,指出DevOps通过文化变革和自动化工具能够有效提升软件交付效率。接着介绍了开发、测试、预发布和生产四种基础环境,强调测试环节对软件质量的关键作用。然后重点阐述了基于GitFlow模型的五种分支规范:master(主分支)、release(预发布分支)、develop(开发分支)、feature(功能分支)和hotfix(热修复分支),详细说明了各分支的用途、创建规则和管理要求。最后强调分支模型应根据团
2025-06-01 21:14:05
731
原创 Git多人协作
文章摘要: 本文详细介绍了Git多人协作开发的完整流程。首先讲解了如何在同一个分支(如dev分支)上进行多人协作开发,包括分支创建、代码提交、冲突解决等关键步骤。接着介绍了更常见的多分支协作模式,即每个功能点创建独立分支(feature分支)进行开发,并演示了如何在不同开发者之间切换和继续开发同一分支。最后提供了删除远程分支后本地仍显示已删除分支的解决方法(使用git remoteprune origin命令)。文中强调了实际操作中的最佳实践,如合并前确保分支最新、在非master分支上解决冲突等,并比较了
2025-06-01 20:49:41
1098
原创 Git标签管理
Git标签(tag)是一种用于标记特定commit的别名,比commit ID更易记忆。创建标签只需在目标分支执行"git tag [name]",默认给最新commit打标签;也可通过commit ID为历史提交打标签。标签支持添加说明信息(-a -m参数),并能查看标签详情(git show)。标签操作包括:删除本地标签(git tag -d)、推送单个标签到远程(git push origin <tagname>)、推送所有标签(--tags)。删除远程标签需先删除本地
2025-06-01 20:33:02
409
原创 Git远程操作
Git分布式版本控制与远程仓库操作摘要 Git作为分布式版本控制系统,每个开发者本地都有完整版本库,支持离线工作。多人协作通过相互推送修改实现,通常借助GitHub/Gitee等中央服务器交换代码。 核心操作流程: 远程仓库创建:在码云新建仓库,配置SSH公钥认证 克隆仓库:git clone通过HTTPS/SSH协议获取远程仓库 本地修改推送:修改文件后通过git push origin master同步到远程 远程更新拉取:使用git pull origin master获取他人提交的修改 实用技巧:
2025-06-01 20:22:08
830
原创 Git分支管理
Git分支机制解析:创建/切换/合并/冲突解决全流程指南 Git分支机制类似平行宇宙,允许开发者在独立时间线上工作。核心流程包括: 创建分支:git branch dev 基于当前提交建立新分支 切换分支:git checkout dev 变更HEAD指针指向 合并分支:在目标分支执行git merge,可能出现Fast-forward模式或需手动解决的冲突 冲突处理:用<<<标记冲突内容,修改后必须重新提交 删除分支:git branch -d dev 完成合并后清理 实际开发建议采用分
2025-06-01 20:04:06
820
原创 Git基本操作
Git本地仓库管理与基本操作指南 摘要: 本文详细介绍了Git本地仓库的创建、配置与基本操作流程。首先阐述了Git仓库的概念及其必要性,通过git init命令创建本地仓库,并解释了.git目录的重要性。其次讲解了用户信息配置的三种方式(全局/本地/删除配置),强调了配置的必要性。然后深入分析了Git的三个关键区域:工作区、暂存区和版本库的关系。文章逐步演示了文件添加(git add)、提交(git commit)、修改、版本回退(git reset)、撤销修改(git checkout/reset)和删除
2025-06-01 19:58:11
937
原创 Git初识&&Git安装
本文介绍了版本控制工具Git的基本概念与安装方法。首先阐述了文档管理中的版本混乱问题,指出Git作为主流版本控制系统能有效跟踪文本文件改动历史,便于版本迭代和团队协作。接着详细说明了Git在Linux(Centos/Ubuntu)和Windows系统上的安装步骤,包括查看版本、安装卸载命令等。文章强调Git虽能管理各类文件,但只能精确追踪文本文件的修改内容,对二进制文件仅能记录大小变化。最后提供了Windows平台Git安装的参考链接。
2025-06-01 19:53:30
900
原创 Socket 编程 TCP
本文详细介绍了TCP Socket编程的核心API,包括socket()、bind()、listen()、accept()等关键函数的功能和使用方法,并对比了TCP与UDP的特性差异。文章展示了Echo服务器和多线程远程命令执行服务器的实现方案,讨论了Windows客户端与Linux服务器的通信验证。同时提供了线程池设计和TCP客户端断线重连的实现思路,通过状态机机制确保客户端在服务器崩溃时能够自动重连。文中还解释了WinSock2.h头文件的重要性和WSAStartup函数的初始化作用,为开发跨平台网络应
2025-05-29 00:20:48
1302
原创 阿里云配置安全组策略开放端口
本文介绍了测试端口开放性的完整流程:1. 通过Linux测试程序(TcpServer)和Windows telnet命令测试端口状态;2. 针对阿里云服务器详细说明了安全组配置方法,包括添加新端口(8001)的操作步骤;3. 验证端口开放后的访问情况。文章提供了从程序编译、工具配置到云平台设置的具体操作指南,适用于需要检查服务器端口开放性的用户,并以阿里云为例展示了云服务商的安全组配置方法。
2025-05-27 14:55:24
1183
原创 Socket 编程 UDP
现在有一台服务器,将来别人是给这个服务器发消息的,那么未来这个服务器肯定也是要给别人回消息的,作为服务器端或者客户端,我们的发的消息里面,一定会包含报头,而我们为了让别人能给我们把消息转回来,所以我的报头中一定要有我的源IP和源端口号,所以服务器一定是要把自己的IP地址和端口号也要推送给对方,因为要让对方知道我是谁,,它才可能把消息给我反回来。port占两个字节,uint16_t,是本地的,所以这个port是大端的还是小端的不知道,所以要把port做主机序列转网络序列。然后才能设置进sin_port。
2025-05-26 21:43:05
940
原创 C++的类型转换
/ b、内置类型和自定义类型之间// 1、自定义类型 = 内置类型 -> 构造函数支持// 2、内置类型 = 自定义类型class Apublic:// 如果不想让隐式类转转换发生,可以考虑前面加explicit// 但是强转是可以的,只是不支持隐式类转转换,而不是不// 支持转换A(int a):_a1(a),_a2(a){}:_a1(a1), _a2(a2){}// ()被仿函数占用,不能用// operator 类型实现,无返回值,而不是真的没返回值。
2025-05-25 00:28:18
935
原创 特殊类设计
本文介绍了C++中几种特殊类设计方法:1)禁止拷贝的类(通过私有化拷贝构造函数或使用=delete);2)只能在堆上创建对象的类(私有化构造函数并提供静态创建方法,或私有化析构函数);3)只能在栈上创建对象的类(禁用operator new);4)不可继承的类(C++98通过私有构造函数,C++11使用final关键字);5)单例模式(饿汉式在程序启动时创建,懒汉式延迟加载,C++11后推荐使用局部静态变量实现线程安全的懒汉模式)。文章还讨论了各种实现方式的优缺点及适用场景,为特殊需求类设计提供了实用参考。
2025-05-24 15:36:12
1040
原创 智能指针
文章摘要智能指针是C++中管理动态内存的重要工具,通过RAII(资源获取即初始化)机制自动释放资源,避免内存泄漏。传统手动管理内存的方式在异常发生时容易导致资源未释放,而智能指针如unique_ptr、shared_ptr和weak_ptr通过引用计数或独占所有权的方式解决这一问题。shared_ptr支持多对象共享资源,但需注意循环引用问题,可通过weak_ptr打破循环。此外,智能指针的线程安全性仅针对引用计数操作,资源访问仍需额外同步。C++11的智能指针基于Boost库改进,提供了更安全、便捷的内
2025-05-23 22:37:05
713
原创 网络基础概念
TCP/IP协议的本质是一种解决方案TCP/IP协议能分层,前提是因为问题们本身能分层截至到目前,我们还没解除过任何协议,但是如果朴素的理解协议,我们已经可以试试了。OS源代码一般都是用C/C++语言写的下面,我们可以看看这个图问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?回答:答案是肯定的!因为双方都有同样的结构体类型struct protocol。也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有"共识",能够识别对方发来的数据,这不就是约定吗。
2025-05-17 21:45:08
976
原创 线程同步与互斥
某些类,只应该具有一个对象(实例),就称之为单例。例如一个男人只能有一个媳妇。在很多服务器开发场景中,经常需要让服务器加载很多的数据(上百G)到内存中,此时往往要用一个单例的类来管理这些数据。
2025-05-14 21:49:41
125
原创 C++高性能内存池
这个项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread--Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc,free)。我们这个项目是把tcmalloc最核心的框架简化后拿出来,模拟实现出了一个自己的高并发内存池,目的就是学习tcmalloc的精华。
2025-05-06 21:47:49
1491
1
原创 线程概念与控制
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个内部的控制序列”一个进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。
2025-05-04 23:03:04
201
原创 简单谈谈AI
码字不易,大家就当可怜可怜我,看看吧。当ChatGPT第一次用流畅的人类语言与我对话时,我忽然意识到:这个看似“聊天”的程序背后,正酝酿着一场足以改变人类文明进程的技术革命。今天的AI不再是科幻电影里面的概念,而是正在渗入我们生活每个毛孔的真实存在。让我们剥开技术术语的外壳,用最朴实的方式聊聊这场变革如何重塑我们的世界。
2025-04-20 02:29:17
573
原创 Linux进程信号
上⾯所说的所有信号产⽣,最终都要有OS来进⾏执⾏,为什么?OS是进程的管理者• 信号的处理是否是⽴即处理的?在合适的时候• 信号如果不是被⽴即处理,那么信号是否需要暂时被进程记录下来?记录在哪⾥最合适呢?• ⼀个进程在没有收到信号的时候,能否能知道,⾃⼰应该对合法信号作何处理呢?已经知道怎么处理了,要么忽略,要么默认,大部分信号是默认。• 如何理解OS向进程发送信号?能否描述⼀下完整的发送处理过程?发信号的本质就是修改位图,不再叫发信号,更喜欢叫写信号。信号忽略&&信号默认exit(1);
2025-03-29 21:10:17
152
原创 C++11
左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋值,左值可以出现赋值符号的左边,右值不能出现在赋值符号左边。定义时const修饰符号的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左值取别名。
2025-03-20 18:38:14
124
原创 VMWare的下载安装以及Linux镜像的安装配置
本博客涉及VMWare的下载安装,Ubuntu、Centos、OpenEuler的镜像的下载以及安装配置和xshell的下载安装配置并且连接Linux虚拟机、以及在Linux环境下怎么下载安装开发工具,怎么写代码,怎么配置调试工具,希望可以帮助到大家。由于Centos停更了,所有这里我们就使用Ubuntu,其实两者差距不是很大,命令都是差不多一样的,只是有的配置文件存放的地方不一样,所以这里不必纠结,Ubuntu的群体大多数都是学生,而且Ubuntu的图形化界面做的也很好,最适合新手学习。
2025-03-13 15:06:48
171
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人