Skip to content

基于属性的测试的正确性

“规范正确性”有助于回答一个基本问题:您的实现实际上是否按照您指定的方式进行?当人工智能生成代码时,你如何知道它符合你的意图?

概念

基于属性的测试是我们思考人工智能正确性的根本转变的一步,从检查单个示例转向验证整个输入空间的通用属性。传统的单元测试仅检查特定的示例,无论由人类还是人工智能编写它们,都会受到自身偏见的限制。通过自动将自然语言规范转换为可执行属性并生成全面的测试用例,Kiro 创建了一个强大的反馈循环,帮助人工智能代理和人类开发人员构建更可靠的软件。这种方法不仅可以发现传统测试遗漏的错误,还可以在您的需求和验证它们的测试之间保持清晰、可追踪的链接。

虽然 PBT 不能保证不存在所有错误,但它比单独基于示例的测试提供了更强有力的正确性证据,使其成为规范驱动开发的重要工具。

什么是财产?

属性是关于系统应如何运行的通用声明。属性表达了系统中应始终正确的不变量和契约,无论涉及的具体数据如何。

对于满足某些先决条件的任何输入集,某些预期行为是正确的。

在 Kiro 规范世界中,这非常符合我们的 EARS 要求:

“对于任何经过身份验证的用户和任何活动列表,用户都可以查看该列表。”这捕获了有关系统行为的一般规则,该规则必须适用于所有有效场景。

基于属性的测试如何工作

考虑一个汽车销售应用程序:

  • 传统测试:用户将汽车 #5 添加到收藏夹,汽车 #5 出现在他们的列表中
  • 基于属性的测试:对于任何用户和任何汽车,当用户将汽车添加到收藏夹时,系统应将其显示在他们的列表中

PBT 自动测试这一点,用户 A 添加汽车 #1,用户 B 添加汽车 #500,名称中包含特殊字符的用户,具有各种状态的汽车,以及数百种其他组合 - 捕获边缘情况并验证实施是否符合意图。

在整个过程中,PBT 通过“缩小”来探索寻找反例——几乎就像一支红队试图破解你的代码。当发现违规时,Kiro 可以自动更新您的实现或表面选项以修复规范、实现或测试本身。

虽然不是正式验证,但 PBT 提供了您从未手动编写的场景中的正确性证据,显示您的实现是否实际上按照您定义的方式运行。

$L2d $L2e $L2f $L30 $L31 $L32 $L33 $L34 $L35 $L36 $L37 $L38 $L39 $L3a $L3b $L3c $L3d$L3e$L3f

aicodex 文档网站