边界值分析法:用最小用例成本精准捕获软件缺陷
1. 为什么边界区域总是藏着最多的bug1.1 从一次线上事故说起我印象最深的一次线上事故不是复杂的高并发架构问题而是一个看似简单的评分功能。系统规定用户评分范围是1到5分前端做了滑动条只能拖1到5结果后端接口校验时写的是score 0 score 5。按理说这也没问题但后来某个第三方渠道对接时直接调API传了个0进去。0在Java里能通过score 0的判断吗不能。那如果是传0.5呢也能被拦。真正出事的是传了-1因为-1 0为false也不会放行。用排除法推到最后你会发现真正能漏进来的恰恰是最容易被忽视的“0”附近的浮点数精度问题——0.0000001这种值确实大于0但业务上它根本不应该存在。那次事故之后我开始认真复盘一个问题为什么我们写了那么多用例覆盖了正常路径、异常路径、权限路径却总是漏掉边界上的问题后来想明白了因为人的思维天然倾向于“正常值”——我们测试一个输入框会下意识先填一个“看起来合理”的中间数字而不是去填它的下限、上限、下限隔壁、上限隔壁。而开发写代码的时候判断条件里的和和差之毫厘谬以千里。边界值分析法Boundary Value Analysis简称BVA就是专门用来解决这类问题的。它是黑盒测试里和等价类划分法齐名的基础用例设计方法核心思想很简单大量的缺陷往往集中在输入边界或输出边界附近而不是在输入范围的内部。与其把时间花在测一堆“正常值”上不如集中火力测边界的上下两侧。1.2 开发习惯决定了边界的脆弱性为什么bug喜欢聚集在边界稍微懂点代码的人都知道开发在写判断条件时边界是最容易手滑的地方。拿最简单的年龄段判断来说需求写“18岁以上含18岁可以注册”。开发A写成age 18开发B写成age 18开发C写实现逻辑的时候用了if (age 17)。这三种写法在大部分测试数据下表现一致唯独在17、18这两个值上会产生差异。如果你只用20岁、30岁这种“标准用户”去测三个版本全都能通过测试只有你专门拿17岁和18岁去测的时候才能发现实现和需求是否真的有偏差。再比如分页功能的边界。某列表每页显示20条数据翻页时如果开发写了page * pageSize totalCount这种判断那么恰好处在第20条和第21条位置的数据就是最容易出问题的点。当查出来的结果是21条时第二页到底显示1条还是11条当查询结果恰好20条时是不是还会多出一个空白的“下一页”这些全是边界问题。从统计学角度看程序的输入域可以被划分为三个区域有效等价类内部、无效等价类内部、有效与无效的临界地带。前两个区域的bug密度相对分散而临界地带的bug密度呈现出明显的聚集效应。原因也不难理解程序员在写判断逻辑时通常只在脑子里模拟一两个“典型值”很少把每一个边界值都过一遍分支同时需求文档里的“含不含端点”描述也经常含糊其辞开发只能靠猜。这就是边界值分析法存在的意义——它逼着测试人员把注意力放在那些容易被忽略的“临界数字”上用最少量的用例覆盖最高密度的缺陷区。1.3 边界值分析法解决什么问题边界值分析法能解决的核心问题有三个。第一个是等号归属问题。判断条件是还是边界值到底是属于有效区还是无效区直接决定了程序行为是否符合预期。这类问题靠“多找几个正常值测”是无法发现的必须用恰好落在边界上的值去试探。第二个是边界邻近区域的隐含缺陷。比如一个数组的长度是10循环遍历时用了i arr.length当数组长度恰好是10时就会越界。这种问题只在“长度恰好等于某值”时触发数据量稍微大一点或者小一点反而没事。第三个是规格说明中的模糊地带。需求写“金额不能超过1000元”那恰好1000元允许吗99.999元呢1000.001元呢如果需求本身没说清楚测试人员通过边界值分析能倒逼产品和开发把规则讲明白。一句话总结边界值分析法就是用最少的用例成本去打捞最密集的缺陷区域。它不追求“测得多”追求的是“测得准”。2. 边界值取点规则与设计方法论2.1 三个关键点的定义与区分边界值分析法有一套自己的取点术语刚入行的人经常搞混我先用最直白的方式讲清楚。假设一个输入条件要求“成绩在0到100分之间含0和100”那么它的边界是0和100。这时候我们取三个关键点上点正好等于边界的值。这里就是0和100。离点距离上点最近的那个点。它可能是边界内部的那个邻居也可能是边界外部的那个邻居取决于边界是“开”还是“闭”。内点有效范围内的任意一个点用来兜底。这里可以取50。很多人刚开始不理解“离点”为什么重要。原因很简单程序在边界上的分支行为往往取决于边界值本身和它紧邻的那个点。如果取0、50、100这三个值只能验证“等于下边界”“中间某个值”“等于上边界”这三条路径但如果边界判断本身写反了比如把0写成了0你用0去测发现通过了不对0不通过这时候你就需要0的邻居比如1或者-1来揭示真正的逻辑错误。这里要特别说明一下离点的取法。国内教材经常把它描述成“上点基础上加1或减1”这个说法没错但实际工程里步长取决于数据本身的精度。整数场景取±1小数场景取±0.1或±0.01日期场景取±1天金额场景取±0.01。判断“邻居”是什么先看这个字段的业务精度是什么。2.2 区间类型与取点策略不同区间类型对应不同的取点组合这是实操中最容易混乱的地方。我整理了一张表按闭区间、开区间、半开半闭区间来区分。区间类型示例上点离点内点闭区间 [1, 10]1到10含1、100、115开区间 (1, 10)大于1小于101、102、95左闭右开 [1, 10)大于等于1小于101、100、95左开右闭 (1, 10]大于1小于等于101、102、115注意看开区间那一行的离点因为上点1和10本身是无效的它们的“邻居”反而是有效的2和9。所以离点不一定在边界外侧而是“紧贴边界的那个合法或非法的点”。实际使用中还有一个简化技巧不管区间是开是闭统一取“边界两侧各一个步长”的值。闭区间[1,10]就取0、1、10、11开区间(1,10)就取1、2、9、10。这样设计出来的用例既覆盖了有效边界也覆盖了无效边界不会因为开闭搞混而漏点。2.3 7点法取点思路除了标准的三点法上点离点内点工程里更常用的是7点法。特别是面对一个明确的范围条件时7点法几乎是行业默认的标准动作。还是以“成绩0到100”为例7个取点分别是最小值0验证下边界本身是否被正确处理。略小于最小值-1或-0.01验证下边界外部的无效数据是否被拦截。略大于最小值1或0.01验证紧贴下边界内部的有效数据是否放行。正常中间值50验证常规场景是否正常。略小于最大值99或99.99验证紧贴上边界内部的有效数据是否放行。最大值100验证上边界本身是否被正确处理。略大于最大值101或100.01验证上边界外部的无效数据是否被拦截。7个点正好覆盖了一个连续有效域的全部关键位置。有人会问为什么中间值要取50而不是60或70其实随便取一个中间值就行它存在的意义不是测“某个特定业务数字”而是代表“普通正常数据”在这个区间里能不能通过。如果有效域进一步细分比如0到59是不及格60到100是及格那么这是两个等价类的拼接除了测0和100这两个总边界59和60之间的那条分界也属于隐藏边界同样要按7点法来取。我会在后面第4章详细展开。2.4 什么时候用边界值法边界值分析法不是万能药它有自己最舒服的适用范围。判断标准很简单输入条件或输出结果是否存在明确的取值范围。以下几类场景特别适合数值型输入年龄、金额、数量、分数、温度等有明显上下限的字段。字符串长度用户名长度、密码长度、备注信息长度通常都有限制。日期时间出生日期、下单时间、有效期前后边界和闰年2月29号都是经典考点。集合容量批量上传文件数量、列表条数、购物车商品种类上限。内存或资源限制并发数上限、超时时间、缓冲区大小。反过来如果输入条件没有明确的取值范围或者根本没有数值上的边界边界值法就用不上。比如说一个“城市名称”字段只有固定几个枚举值这时用等价类和判定表更合适。再比如一个搜索框关联大量非结构化文本边界值法只能覆盖到“长度上限”语义层面的测试还是得靠用例设计者本身对业务的理解。这一点特别想提醒新手方法是为场景服务的为了套边界值法而硬造边界只会把用例设计得又笨又长。3. 典型场景的用例设计全流程演示3.1 评分系统0到100分拿一个真实的表单校验需求走一遍完整流程。某问卷调查系统有一个“综合评分”输入框需求文档写的是“分数需为0到100的整数”。第一步明确数据规格。类型是整数范围是[0, 100]步长是1。这里要特别确认一个事“0到100”在需求里通常指的是“包含0和100”但如果文档没写“含”需要主动找产品确认。在不确定的情况下测试用例里要把“含”和“不含”两种可能的用例都列出来标注清楚拿给产品确认后再删。第二步按7点法取点。整数场景步长为1取值为-1、0、1、50、99、100、101。第三步设计用例。每条用例要包含三个要素输入数据、前置条件、预期结果。我这里直接列关键几条用例编号输入值预期结果设计意图BVA-001-1提示“分数不能小于0”下边界外侧无效值BVA-0020提交成功下边界本身BVA-0031提交成功紧贴下边界的有效值BVA-00450提交成功普通正常值BVA-00599提交成功紧贴上边界的有效值BVA-006100提交成功上边界本身BVA-007101提示“分数不能大于100”上边界外侧无效值这7条用例就是把边界值法用到位的最小集合。但注意这只是“输入范围校验”的用例。如果这个分数还会参与后续的评级逻辑比如90分以上是优秀、60分以下是待改进那59、60、89、90这些业务分界点也要延伸到后续逻辑里去覆盖。用边界值法设计用例时最忌讳的就是只盯着表单校验层不看业务处理层。3.2 输入长度边界的经典套路字符串长度校验是边界值最好用也最容易踩坑的场景。拿“用户昵称长度为2到20个字符”这个需求来说看起来很简单取1、2、3、10、19、20、21这7个点就够了。实际项目里一旦涉及到“字符”和“字节”的区别情况就复杂了。先看字符类型全英文“ab”是2个字符中文“测试”也是2个字符但有些系统的长度校验是按字节算的一个中文占3个UTF-8字节。你在用例里如果只准备了英文字符串压根测不出中文字符在边界处的异常。很多产品的线上bug都是这么来的英文状态下一切正常用户填了个五个字的中文名后端报“长度超限”。所以设计长度边界的用例时一定要叠加“数据编码”这个维度纯英文刚好20个字符纯中文刚好20个字符实际占60字节中英混排恰好20个字符20个字符加一个空格有些系统会trim后再校验20个字符加换行符有些系统把\n也算一个字符Emoji表情一个emoji可能占2到4个字节视觉长度和存储长度不一样每一项都要把“恰好等于边界”“差一个字符到边界”“超过一个字符”三种情况跑一遍测试量直接翻三倍但这就是边界值的正确打开方式。别嫌烦字符串边界的bug一般不是“差一点就崩”而是“完全不崩但入库数据被截断或报错”这类问题最难排查。3.3 日期与时间类边界日期类边界比数值类复杂得多因为日期本身有“日月年”的层级关系还牵扯到大小月、闰年、时区、夏令时。这些细分场景前人已经踩了无数坑我整理出一个高频清单2月28日、2月29日、3月1日——闰年平年各来一遍4月30日、5月1日——小月末和后月初12月31日、1月1日——跨年边界1970-01-01——很多系统Unix时间戳的起点恰好为0时的处理2038-01-19——32位时间戳溢出点老系统的经典bug23:59:59和00:00:00——时间段的开闭区间判断拿“订单有效期不能超过当前时间90天”这个例子演示。假设今天是2025年3月15日那么90天后的日期是2025年6月13日。如果你只测3月15日下单、有效期6月13日看起来没问题但如果用户刚好在6月13日23:59:59发起操作呢如果开发写的是deadline now而不是deadline now最后一秒的操作就会被拒绝。更隐蔽的问题是“自然日”和“工作日”的区别需求里的“90天”到底是自然日还是工作日不做边界用例压根发现不了。日期测试还有一条铁律永远不要用“当前日期”写死用例。你今天测出来的“90天后”是6月13日下次回归的时候可能就变成6月14日了。正确做法是在自动化用例里用System.currentTimeMillis()或LocalDate.now().plusDays(90)动态生成预期值或者把用例的输入基准点设为一个固定日期。3.4 金额与精度边界金额是另一个边界bug高发区而且一出就是财务级别的事故。数字的边界问题不只是“最大最小值”更致命的是浮点数精度。需求场景转账金额不能超过单笔2万元不能小于0.01元。按7点法取点0、0.01、0.02、10000、19999.99、20000、20000.01。看起来没问题但如果开发用double存金额运算的时候就有精度隐患。0.01 0.02 在二进制浮点数里等于多少不等于0.03而是0.030000000000000002。如果程序里有“余额转出金额手续费”之类的计算比较运算时会把恰好等于临界值的数据给漏过去。金额边界测试必须叠加以下几个维度精度边界0.01、0.001、0.009能不能通过校验四舍五入边界19999.995 这类值根据保留位数不同入账结果会差0.01大数边界20000.00和20000.0在JSON序列化后的精度一致性正负零-0.00和0.00在比较运算中的表现差异真实存在部分语言里-0.0f 0f为false但显示不同说句实话金额测试我建议有条件就上自动化数据库断言完全不依赖界面提示。界面可能会帮你把20000.01格式化掉但库里如果写入了20000.01那问题已经发生了。一定要在接口层和存储层做双重断言。4. 边界值分析法的组合打法4.1 先等价类后边界值单独使用边界值法不是不行但通常效率不是最高的。工程里最标准的组合拳是“等价类划分法先分块边界值分析师再补点”。以“手机号注册”为例输入条件是“11位数字以1开头”。用等价类划分法先分出有效等价类11位、1开头和无效等价类非11位、非1开头、包含非数字字符然后再用边界值分析去聚焦10位、11位、12位以1开头、以0开头、以2开头第一位是1且第二位是111开头的合法号段、第一位是1且第二位是0最后一位是0或9号码的最值边界等价类负责“广撒网”边界值负责“重点捕捞”。先粗分后细取用例数量不会爆炸但覆盖面会完整很多。这个方法也适用于输出边界。某些场景下输入看起来人畜无害输出却可能正好卡在边界上。比如一个报表功能数据量刚好生成到4999条和5000条时导出的Excel文件格式会切换吗页面上会分页吗这些输出边界同样应该纳入用例设计。4.2 边界配判定表的化学反应当输入条件不止一个而且每个条件都有边界时边界值法和判定表法配合能发挥奇效。举一个常见的优惠券场景满100减20使用门槛是“订单金额超过100元且用户等级不低于银卡会员”。订单金额的边界是100元整、99.99元、100.01元用户等级的边界是银卡会员的最低门槛。把这两个条件组合成判定表订单金额用户等级是否可用券99.99银卡否100.00银卡需要和产品确认100.01银卡是100.00普通卡否100.00金卡视规则而定这种组合一旦做起来用例数量呈指数级增长所以在实操中不需要把每个边界值都做全排列。技巧是固定一个边界为临界值另一个遍历边界然后再调换。也就是说第一条用例组固定金额在100附近遍历等级边界第二条用例组固定等级为银卡遍历金额边界。这样能把维度间的耦合bug测出来又不会让用例量疯涨。4.3 场景法中的边界户口有些项目适合从头到尾走场景法这时候边界值不一定作为独立的用例设计方法出现而是作为场景里的“关键检查点”。以用户登录流程为例场景法会把“登录”拆成输入账号密码 - 点击登录 - 系统校验 - 跳转首页。边界点藏在很多环节里账号输入框长度边界、字符集边界密码输入框长度边界、是否允许空格开头或结尾登录失败次数3次失败锁定那第2次、第3次、第4次就是边界锁定时间15分钟解禁那第14分59秒、15分整、15分01秒都是边界Token有效期7天过期那第7天、7天1秒的请求状态截然不同场景法帮助测试人员把整个用户旅程走通而边界值法帮你在每个环节埋好地雷。你不需要为每个边界单独写一条用例但必须在场景步骤里显式设置“恰好走到边界”的测试数据。5. 实战踩坑与经验教训5.1 离点取值的三个常见误区第一个误区是把离点固定为±1。整数场景没问题但金额、百分比、小数精度的场景离点应该是±0.01或±0.001。曾经遇到一个需求利率允许到小数点后四位测试用±0.01去取离点结果边界判断写成rate 0.0001时取0.01完全测不出问题真正出bug的是0.0001和0.0000这个档位。测试不是不能测而是根本没想到离点精度要跟着数据精度走。第二个误区是只取下边界不取上边界。新手最容易犯下边界测了 -1、0、1上边界只测了一个99就草草了事。99确实在边界内侧但它对“上边界本身处理是否正确”没有任何证明力。必须把100和101都放进去上看下看一视同仁。第三个误区是忽略“略大于”和“大于等于”的区别。用闭区间[0,100]举例离点取-1和101同时还要取0和100本身。如果开发把score 0 score 100写成了score 0 score 100你的0和1这两个点就能立刻抓出问题如果只取了 -1、0、50、101 却没取100那上边界上的同类问题就漏了。5.2 隐含边界和业务规则的边界需求文档上写得明明白白的边界人人都能测到。真正拉大测试人员差距的是那些“没人告诉你那是边界”的隐含边界。举几个真实遇到过的例子。第一个是数组循环的下标边界。需求只是说“返回最近5条订单记录”代码里用for (int i 0; i orders.size(); i)遍历当订单恰好5条时就越界。测试时如果没有“恰好5条”这个数据这个bug永远重现不了。第二个是缓存淘汰的容量边界。某个模块缓存上限100条LRU淘汰策略当缓存满100条时淘汰最旧数据。测试时如果只塞了50条数据压根触发不了淘汰逻辑塞到100条和101条时两条数据的淘汰顺序是否正确才是需要断言的关键点。第三个是状态机流转的边界。订单状态从“待支付”只能流转到“已取消”和“已支付”那“已支付”再点“取消”就是边界外的非法操作。状态机每个合法的状态转折点都是隐式边界测试时要把每个状态的所有出边都试探一遍。隐含边界的发现靠的是对代码实现的理解和业务经验的积累。一个刚入行的测试和一个干了五年的测试用同一份需求文档设计用例后者的用例质量高就高在能提前嗅到这些隐性边界在哪里。5.3 自动化测试中的边界用例维护边界值法最黄金的用法其实是沉淀成自动化用例。因为边界值是稳定的只要需求不改变边界点就不会变非常适合做回归。但自动化边界用例有个隐患——硬编码的边界值会随着需求调整而失效。真实场景中需求方把“评分上限100分”改成“评分上限150分”测试人员记得改等价类用例却经常漏掉边界值用例里的100和101。这时候如果自动化用例里写了assertFalse(score101)用例就会直接失败报错信息会明确指出边界已经移动相当于自动化帮人工做了一次需求变更提醒。所以我会建议边界值用例的断言尽量把预期结果也参数化而不是写死。定义一个配置项maxScore 150用例从配置里读边界值而不是直接用常量。这样需求一变更只需要改配置项所有边界用例自动跟着更新不会出现“改需求后测试用例文件改到一半忘了收尾”的情况。另外要强调一点边界值用例在自动化里不要只做接口校验。如果条件允许数据层的断言也做一遍。很多系统前端做了校验后端也做了校验但数据库字段本身可能只存TINYINT范围是-128到127你接口测出了150没问题落到数据库层直接被截断或报错。这时候边界值用例的断言点就必须延伸到数据库。5.4 我的一些个人习惯与操作建议最后分享几个我个人在项目中养成的习惯说不上是标准答案但实测下来对用例质量提升很有帮助。第一个习惯是设计用例时先列边界清单再写用例正文。我习惯在测试计划阶段先把所有输入项和输出项的边界值全部列一张表字段名、类型、下边界、上边界、离点步长、隐含边界备注。这张表是后面写用例的地图也是和产品、开发对齐需求细节的沟通工具。有时候梳理完这张表产品自己都会发现需求文档里的歧义。第二个习惯是把边界值用例的编号单独标记出来。我用BVA-前缀标识边界值用例方便后续统计“边界值用例占全量用例的比例”和“边界值用例发现的缺陷密度”。数据积累到一定程度就能评估出项目里哪块逻辑的边界质量最差下个迭代优先增加该模块的用例覆盖。第三个习惯是用边界值反推开发自测清单。我会在提测之前把边界清单发给开发请他在自测时特别关注这些点。很多开发并不是能力不行而是自测时想不到用边界数据去跑代码。你把边界清单直接丢给他既减少了来回打回的沟通成本也降低了低级bug流入测试环节的概率。第四个习惯是重视“恰好等于边界”的那条用例的预期结果确认。前面说过和的差异只有边界本身能区分但需求文档里到底“含不含边界值”经常要跟产品现场确认。我建议在用例里把“恰好等于边界”的预期结果用最显眼的方式标注出来这类用例在评审会上最值得花时间讨论因为这往往是需求本身没写清楚的地方。回顾我自己踩过的那一堆坑最核心的教训其实就一句话用例设计的方法论不是背出来的是用出来的。边界值法听起来简单取点规则、离点逻辑、7点法背一遍五分钟就记住了但真正能把这个方法用得如鱼得水靠的是在真实项目中一遍遍用数据去验证自己的判断。每一条边界用例都是和开发逻辑的一次对赌你赌的正是那个最容易被人忽略的临界点。

相关新闻

GitHub热榜的正确打开方式:从围观到技术选型的实战指南

GitHub热榜的正确打开方式:从围观到技术选型的实战指南

每天早上我习惯先刷一眼 GitHub 热榜,尤其是日榜。2026-10-09 的这份日榜,既有刚冒头的新仓库,也有更新了大版本之后重新冲上来的老项目。单看列表会觉得“今天又是 AI 和效率工具刷屏”,但如果你只停留在收藏夹里,那基…

2026/10/11 4:55:26 阅读更多 →
采访录音噪音大怎么修复人声:降噪之后还要检查可听性

采访录音噪音大怎么修复人声:降噪之后还要检查可听性

采访录音噪音大怎么修复人声,关键不是只看能不能一键降噪,而是先判断噪声类型、人声清晰度和成片用途,再分步骤处理。剪映专业版可以用于资料确认端侧场景下的视频剪辑、基础降噪处理和成片预览等环节;但如果录音存在严重失真、爆…

2026/10/11 4:55:26 阅读更多 →
GitHub九月热门榜:AI应用与开发者工具十大项目解析

GitHub九月热门榜:AI应用与开发者工具十大项目解析

每年9月,GitHub 的热门项目榜单都会迎来一波明显的换血。今年(2026年)尤其明显:AI 应用层的项目不再只是套壳,而是开始啃硬骨头——推理成本优化、多智能体协作、私有化部署都出现了值得关注的新面孔;开发者…

2026/10/11 4:55:26 阅读更多 →

最新新闻

Linux pinctrl 和 GPIO 子系统

Linux pinctrl 和 GPIO 子系统

一、先建立整体认识 一个芯片引脚通常不是固定用途。同一个物理引脚可能支持 GPIO、UART_TX、SPI_MOSI、I2C_SDA 或 PWM 等功能。 使用一个引脚时,通常要解决两个问题: 这个引脚应该连接到哪个硬件功能?如果它作为 GPIO 使用,应该…

2026/10/11 5:43:51 阅读更多 →
多邻国-写作模板总结

多邻国-写作模板总结

观点 Despite the fact that it is exacting to depict and generalize, I would say by instinct that 尽管描述和概括这件事是有挑战的,但是我还是本能地认为 It was indisputably last year(时间替换) that (发生了什么事),which made me extraordinarily (情绪C级词…

2026/10/11 5:43:51 阅读更多 →
开源掌机入门指南:从硬件选型到系统配置的完整避坑手册

开源掌机入门指南:从硬件选型到系统配置的完整避坑手册

1. 开源掌机到底是个什么东西第一次听到“开源掌机”这四个字,很多人的第一反应是:这不就是小时候玩的那种山寨游戏机吗?其实差得远。开源掌机是一类运行开源操作系统、允许用户自由刷写固件、安装第三方模拟器与自制软件的便携式游戏设备。它…

2026/10/11 5:43:51 阅读更多 →
Metric Layer 建设指南:如何先从核心指标层启动企业语义工程

Metric Layer 建设指南:如何先从核心指标层启动企业语义工程

为什么企业会需要 Metric Layer? 很多企业已经建设了指标体系、指标平台或指标管理台账,但真正进入使用环节后,仍然会遇到同样的问题:指标定义写在文档里,计算逻辑落在 SQL 里,维度关系藏在宽表里&#xf…

2026/10/11 5:43:51 阅读更多 →
手写HTTP服务器:MFC与Winsock实现局域网文件共享

手写HTTP服务器:MFC与Winsock实现局域网文件共享

简介:一套基于VC/MFC的简单HTTP服务器源码工程,面向希望掌握Windows平台网络编程的C开发者,目标是帮助读者理解HTTP协议解析、套接字通信以及图片与内页访问的实现方式。压缩包共26个文件,以h头文件、cpp源文件为主,辅…

2026/10/11 5:43:51 阅读更多 →
Apifox CLI接入GitLab CI:接口自动化测试从手动到自动的落地实践

Apifox CLI接入GitLab CI:接口自动化测试从手动到自动的落地实践

接口自动化测试这件事,圈子里聊了很多年,但大多数团队的现状是:Postman 里攒了一堆接口用例,平时手动点点,回归靠人肉,CI 里跑自动化永远停留在"计划中"。这次我负责的项目也差不多,不…

2026/10/11 5:42:50 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →