让DeepSeek Harness自己写测试、跑测试、找Bug,它能做到哪一步?

简介: 本文通过三关实验评测DeepSeek Harness(DSH)的测试能力:第一关自动生成覆盖全面的pytest用例;第二关执行并分析测试结果;第三关审查埋雷代码,验证其Bug发现能力。实验揭示DSH擅长识别语法、逻辑错误(如索引越界、除零),但需显式提供业务规则才能发现语义缺陷。结论:DSH是强辅助工具,但测试有效性高度依赖需求输入的完整性。

光说不练假把式。我们给 DeepSeek Harness 设计了一场三关闯关实验:第一关写测试用例,第二关自己执行测试,第三关最狠——丢给它一段埋了雷的代码,让它找 Bug。一关比一关难,也正好能摸出这个 Agent 的能力边界在哪里。实验环境和此前实测一致:Node.js 环境,npx @deepseek-ai/dsh web 启动,标准模式,当前 developer preview 版本。三关围绕同一个背景展开:一个订单计价函数。

第一关:写用例
靶子函数如下:

def calc_order_price(items):
"""items: [{"name": str, "price": float, "count": int}, ...]
返回 (总价, 均价);总额超过 100 打 8 折"""
total = 0
for item in items:
total += item["price"] item["count"]
if total > 100:
total
= 0.8
return round(total, 2), round(total / len(items), 2)
我们只给了这个函数和一句话:"为它编写 pytest 用例,覆盖正常流、边界和异常。"几分钟后 dsh 交卷,挑三条:

def test_normal_order_no_discount():
items = [{"name": "a", "price": 30.0, "count": 2}]
total, avg = calc_order_price(items)
assert total == 60.0 # 60 未超过 100,不打折

def test_over_100_gets_discount():
items = [{"name": "a", "price": 60.0, "count": 2}]
total, avg = calc_order_price(items)
assert total == 96.0 # 120 超过 100,打 8 折

def test_empty_items_raises():

# 边界:空列表,当前实现会除零
with pytest.raises(ZeroDivisionError):
    calc_order_price([])

值得说的是后两条:折扣用例的期望值 96.0 算得对,说明它真的按规则推演过,不是抄模板;空列表那条,它不光想到了空输入,还在备注里写明"当前实现对空列表会除零"。边界意识在线。第一关,通过——生成快、方向对。

第二关:跑用例
第二关让 dsh 执行自己写的用例。它确实能执行命令、读回输出:

python -m pytest test_price.py -v
结果:跑起来了,失败摘要也给得像样,哪个用例挂在哪条断言上都能说清。但两个老毛病都犯了:一是响应速度偏慢,一轮分析要等一会儿;二是我追加"修正后重跑"的组合动作时,它打了一次转,重复读同一份日志,需要我人工提醒才继续推进。另外这种多轮任务越长,API 成本放大得越明显,短循环跑、跑完即结,更划算。第二关,勉强通过——会跑会看结果,但节奏得人来带。

第三关:找埋雷代码的 Bug
重头戏来了。我们把函数升级了一下,埋进三个雷(注释是标给读者看的,喂给 dsh 的是去掉注释的原码):

def calc_order_price(items, discount=0.8):
"""订单总额满 100 打 8 折,返回 (总价, 均价)"""
total = 0
for i in range(1, len(items)): # 雷 1:跳过了第一件商品
total += items[i]["price"] items[i]["count"]
if total > 100:
total = total
discount # 雷 2:需求其实规定只对超出 100 的部分打折
avg = total / len(items) # 雷 3:空列表时除零
return round(total, 2), round(avg, 2)
提示词只有一句:"审查这个函数,指出所有缺陷。"dsh 的体检报告:

雷 1,抓到了。它指出 range(1, len(items)) 会漏掉第一件商品,还给了修正建议。差一错误是它的强项,静态读码的功夫在线;
雷 3,抓到一半。它提到空列表的除零风险,但归在"建议加防御性判断"里,没当成正经缺陷处理;
雷 2,没抓到。它认为打折逻辑"写得没毛病"——单看代码,total * discount 确实语法正确、逻辑自洽。问题出在业务规则上:我们手里的需求写的是"只对超出 100 的部分打折"。这条规则不在代码里,dsh 看到的只有代码,自然判它无错。
为了验证,我们把需求原文补进提示词又跑了一次。这回雷 2 被抓到了:它明确指出"全额打折与'仅超出部分打折'的规则不符",并给出了分段计价的修正思路。同一个函数,差别只在输入里有没有验收标准——这大概是本次实验最有价值的一个观察。

第三关,部分通过:语法和明显逻辑错误抓得住,业务语义错误只有在规则被明确给出时才抓得到。

边界到底在哪
三关跑完,dsh 找 Bug 的边界很清楚:能抓的是"大家都认的错"——语法问题、差一、除零、明显不合理的控制流;抓不到的是"业务规则分歧"——折扣范围算错、状态码语义不对、字段映射错位,这些的正确答案不在代码里,在需求里。

所以实践建议也很实际:想让它找 Bug,就把验收标准跟代码一起给它,规则写得越具体,命中率越高;只给代码,它只能对"代码写得对不对"负责,没法对"代码做得对不对"负责。

本文整理自霍格沃兹测试开发学社的原创分享,更多测试开发与 AI 测试实战内容,我们下一篇见。

本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。

相关文章
人工智能 缓存 前端开发
6348 20
人工智能 JavaScript 开发工具
3346 5
缓存 JavaScript Shell
1581 2
开发工具 Swift git
1183 1
Shell API 调度
895 2
|
13天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
2139 121
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
|
14天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
1808 13
安全 机器人 API
650 2
缓存 人工智能 算法
735 1

热门文章

最新文章