You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FsCheck中被测对象与模型的差异及OrderModel构建咨询

关于基于模型测试(MBT)中FsCheck模型构建的疑问

最近我在研究基于模型的测试(Model Based Testing),寻找相关工具时接触到了FsCheck。不过看完FsCheck实验页面里的状态测试内容后,还是没搞明白实际被测对象和对应的对象模型到底有什么差异。

下面是我手头的测试素材:

需求规格

  1. 一个订单(Order)初始状态为Created
  2. 只有当订单处于Created状态时,才能添加商品
  3. 只有当订单处于Created状态时,才能提交订单,提交后状态变为Submitted
  4. 订单处于Submitted状态时,无法再添加商品或修改状态

存在逻辑Bug的Order类代码

public class Order
{
    public enum OrderStatus { Created, Submitted }
    public OrderStatus Status { get; private set; }
    public List<string> Items { get; private set; } = new List<string>();

    public Order()
    {
        Status = OrderStatus.Created;
    }

    public void AddItem(string item)
    {
        // Bug:没有检查状态,Submitted状态也能添加商品
        Items.Add(item);
    }

    public void Submit()
    {
        // Bug:没有检查状态,Submitted状态还能重复提交
        Status = OrderStatus.Submitted;
    }
}

我的疑问

  • 能不能帮我构建对应的OrderModel,并且解释为什么要这么构建?
  • 一直有点困惑:模型是不是就是和被测对象属性相同,但值都是硬编码的副本?

内容的提问来源于stack exchange,提问作者GrimSmiler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:47:11