FsCheck中被测对象与模型的差异及OrderModel构建咨询
关于基于模型测试(MBT)中FsCheck模型构建的疑问
最近我在研究基于模型的测试(Model Based Testing),寻找相关工具时接触到了FsCheck。不过看完FsCheck实验页面里的状态测试内容后,还是没搞明白实际被测对象和对应的对象模型到底有什么差异。
下面是我手头的测试素材:
需求规格
- 一个订单(Order)初始状态为
Created- 只有当订单处于
Created状态时,才能添加商品- 只有当订单处于
Created状态时,才能提交订单,提交后状态变为Submitted- 订单处于
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
相关产品推荐
相关产品推荐

