有没有Django应用程序的模拟框架?编写模拟框架的好方法是什么?

3
所以,我有一个想法。
假设你有一个经典应用程序,由几个用户类和一些数据组成。假设这是乘客、司机和调度员(如出租车)。乘客创建订单,调度员将订单分配给司机,司机执行订单,乘客撰写有关司机的评论,调度员在其调度方案中使用这些评论等。
假设您有这样的系统,其中包含几十个调度员、几百名司机和数千名乘客。
随着时间的推移,新的调度员被雇用,其中一些被解雇,司机来来去去,而且像往常一样,既有忠实的客户,也有新客户。
所以,我的问题是——如何模拟这样的系统?我想要一个工具,允许我使用我的当前 Django 应用程序、其模型和方法,并填充它与不同模式创建的用户、数据和操作。
我认为它像是一个独立的框架(类似于单元测试框架和数据生成框架),可以附加到任何应用程序上,描述用户模式,然后以连续的方式运行它。
它可能对以下方面有用:
更好的产品逻辑测试
模拟现实实验(“如果有一个司机,他会搞砸很多订单”)
更智能的负载测试系统(真正测试现实情况,包括“假设”情况)
创建类似于真实数据以测试统计软件
有没有现成的解决方案?如果我决定创建一个,你有什么建议?

为什么不在单元测试框架内完成这个任务呢? - David Robinson
1
因为单元测试是一些不持久的东西。“模拟”意味着连续运行它,保存正在创建的数据并监视系统的演变。例如,在一段时间的模拟之后(当然是加速的),您可能会发现您的数据库大小(或SQL查询计数)呈指数增长,并考虑优化。 - Сергей Петров
这是一个非常适合处理现实世界实体的Django应用程序的好问题。我也想做类似的事情。我看到你在这里没有选择答案 - 你有没有进展?我对你学到的东西很感兴趣。 - andy
不,我没有。不过我仍然认为这是一个很好的想法。回顾我在那个项目中的经验(那是一个相当大的实际系统),有这样一个游乐场将非常有用。 - Сергей Петров
1个回答

3
您有一个针对通用解决方案的具体任务。我认为,您需要使用任何数据生成器(例如django-dilladjango-mockupsdjango-milkman),任务队列(celery,rabbitmq)并编写自定义后端。

这个问题没有通用的答案。


问题可能没有通用解决方案,但它具有一些通用的方面。例如,每个特定的模拟案例都有重复率。在每个模拟系统中,所有者希望看到系统如何随着这个特定常数集合的时间增长(或缩小),以及随着常数变化而增长模式如何改变。在每个模拟中,您都想要测量负载(以及当您更改系统时它如何变化)。基本上,我的想法是关于黑盒式测试系统,您编写描述接近实际情况的测试,并查看它对您的系统的影响。 - Сергей Петров
基本上数据并不重要,过程才是重要的。因此,数据生成器几乎无关紧要。需要的是一些抽象层,允许您描述应用程序模型的工作流程,如何注册它们,如何更改它们以及它们如何在时间上运作。此外,我梦想中的框架还可以帮助描述不同角色,例如LazyDriver、VeryGoodDriver、AverageDriver(或BadBehavingPassenger)并让我改变它们的比例。它甚至可以通过现有的django视图模拟它们的动作。 - Сергей Петров

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接