<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>星闌</title><description>记录、思考与日常。</description><link>https://xinglan233.github.io</link><language>zh-CN</language><item><title>构建产物去哪了：认识GitHub Actions的存储</title><link>https://xinglan233.github.io/blog/github-actions-artifact-storage</link><guid isPermaLink="true">https://xinglan233.github.io/blog/github-actions-artifact-storage</guid><description>一次自动构建结束后，程序包和测试报告不一定会留在运行构建的机器上。为了让人之后还能下载它们，工作流可以把文件上传为构建产物，也就是artifact。</description><pubDate>Thu, 12 Nov 2026 07:33:41 GMT</pubDate><category>软件工程</category><category>持续集成</category><category>github actions</category><category>构建产物</category><category>存储管理</category></item><item><title>测试替身是什么？从外部服务说起</title><link>https://xinglan233.github.io/blog/test-doubles-external-services</link><guid isPermaLink="true">https://xinglan233.github.io/blog/test-doubles-external-services</guid><description>测试一个功能时，代码有时需要调用数据库、邮件服务或第三方接口。如果每次测试都连接真实服务，网络波动、服务状态和外部数据变化都可能影响结果。测试替身是一种常见办法：在测试中用可控制的对象代替真实依赖，让测试集中检查当前关心的行为。</description><pubDate>Wed, 11 Nov 2026 09:22:00 GMT</pubDate><category>软件工程</category><category>软件测试</category><category>测试替身</category><category>mock</category><category>stub</category></item><item><title>让一次测试能够重跑：固定代码、依赖与环境</title><link>https://xinglan233.github.io/blog/repeatable-tests-code-dependencies-environment</link><guid isPermaLink="true">https://xinglan233.github.io/blog/repeatable-tests-code-dependencies-environment</guid><description>一条“测试通过”的记录，如果只写了结果，过几天可能就很难重现。代码更新了，依赖重新安装了，运行环境也换过了。即使测试命令没有变，实际参与这次测试的东西也可能已经不同。</description><pubDate>Tue, 10 Nov 2026 04:12:00 GMT</pubDate><category>软件工程</category><category>软件配置管理</category><category>git</category><category>依赖锁文件</category><category>可重复测试</category></item><item><title>从分页看边界值分析：为什么要测19、20、21</title><link>https://xinglan233.github.io/blog/pagination-boundary-value-analysis</link><guid isPermaLink="true">https://xinglan233.github.io/blog/pagination-boundary-value-analysis</guid><description>一个每页显示20条记录的列表，用5条数据测试时可能完全正常，换成20条或21条，却突然多出空白页，或者漏掉最后一条。</description><pubDate>Mon, 09 Nov 2026 03:24:00 GMT</pubDate><category>软件工程</category><category>软件测试</category><category>边界值分析</category><category>分页测试</category><category>回归测试</category></item><item><title>从open到close：文件描述符与读写位置</title><link>https://xinglan233.github.io/blog/file-descriptors-and-offsets</link><guid isPermaLink="true">https://xinglan233.github.io/blog/file-descriptors-and-offsets</guid><description>程序读取文件，通常先调用open，再进行read或write，最后调用close。这个过程看起来只是打开、读写、关闭，但系统还要记录这次打开允许什么操作、已经读到了哪里，以及哪些访问正在共用同一份状态。</description><pubDate>Sun, 08 Nov 2026 09:23:28 GMT</pubDate><category>计算机操作系统</category><category>文件管理</category><category>文件描述符</category><category>打开文件表</category><category>文件偏移量</category></item><item><title>文件名、inode与链接：系统如何找到一个文件</title><link>https://xinglan233.github.io/blog/inode-and-links</link><guid isPermaLink="true">https://xinglan233.github.io/blog/inode-and-links</guid><description>在Unix风格的文件系统中，文件名主要是供人识别和查找的。系统管理文件时，还会用到一个重要的数据结构：inode，也叫索引节点。</description><pubDate>Sat, 07 Nov 2026 10:14:14 GMT</pubDate><category>操作系统</category><category>文件管理</category><category>inode</category><category>硬链接</category><category>软链接</category></item><item><title>你好，博客</title><link>https://xinglan233.github.io/blog/hello-world</link><guid isPermaLink="true">https://xinglan233.github.io/blog/hello-world</guid><description>从这里开始，慢慢积累。</description><pubDate>Sat, 07 Nov 2026 00:00:00 GMT</pubDate><category>博客</category></item></channel></rss>