【问题标题】:Is there a simulation framework for django applications? What are the good practices to write one?是否有 django 应用程序的模拟框架?写一个的好习惯是什么?
【发布时间】:2012-07-22 01:06:01
【问题描述】:

所以,我有一个想法。

假设您有一个经典应用程序,它由几类用户和他们使用的一些数据组成。假设它是乘客、司机和调度员(如出租车)。乘客创建订单,调度员将订单分配给司机,司机正在执行订单,乘客写关于司机的评论,调度员在他们的调度方案中使用这些评论等等。

假设您有这样一个系统,其中包含几十名调度员、几百名司机和数千名乘客。

随着时间的推移,新的调度员被聘用,其中一些人被解雇,司机来来往往,而且一如既往地有忠实客户和新客户。

那么,我的问题是——如何模拟这样的系统?我想要一个工具,让我可以使用我当前的 django 应用程序、它的模型和方法,并用不同模式创建的用户、数据和操作填充它。

我认为它像一个独立的框架(有点像 unittest 框架和数据生成框架),可以将自己附加到任何应用程序,为用户描述模式,然后以连续的方式运行它。

它可能对以下有用:

  • 更好的产品逻辑测试
  • 模拟现实生活中的实验(“如果有司机,他搞砸了很多订单”)
  • 更智能的负载测试系统(真正测试现实生活场景,包括“whatif”情况)
  • 创建逼真的数据来测试统计软件

是否有任何预先存在的解决方案?如果我决定创建一个,您对我有什么建议吗?

【问题讨论】:

  • 为什么不在单元测试框架内这样做?
  • 因为单元测试是非持久性的。 “模拟”意味着持续运行它,保存正在创建的数据并监控系统如何演变。例如,经过一段时间的模拟(当然是加快了),您可能会看到您的数据库大小(或 sql 查询的数量)呈指数增长并考虑进行优化。
  • 对于处理现实世界实体的 django 应用程序来说,这是一个很好的问题。我想做一些非常相似的事情。我看到你在这里没有选择的答案 - 你有没有得到任何地方?我对你学到的东西很感兴趣。
  • 不,我没有。我仍然认为这是一个好主意。回顾我在那个项目(这是一个非常大的现实世界系统)中的经验,拥有这样的游乐场将非常有用。

标签: python django testing statistics simulation


【解决方案1】:

您有一个非常具体的任务来解决通用解决方案。在我看来,你必须使用任何数据生成器(例如django-dilladjango-mockupsdjango-milkman)、任务队列(celery、rabbitmq)并编写自定义后端。

这个问题没有普遍的答案。

【讨论】:

  • 问题可能没有通用的解决方案,但它有一些通用的方面。例如,每个特定的模拟案例都有重复率。在每个模拟系统中,所有者都希望看到系统如何随着时间的推移随着这组特定的常数而增长(或缩小)(以及增长模式如何随着常数的变化而变化)。在您想要测量负载的每个模拟中(以及更改系统时负载如何变化)。基本上,我的想法是关于系统的黑盒式测试,您可以在其中编写描述接近真实案例的测试,并查看它对您的系统的作用。
  • 基本上,数据并不重要。重要的是过程。所以数据生成器几乎无关紧要。所需要的是一些抽象层,它允许您描述您的应用程序模型工作流、它们如何注册、它们如何变化、它们如何(及时)行动。此外,我梦寐以求的这个框架有助于描述不同的角色,如 LazyDriver、VeryGoodDriver、AverageDriver(或 BadBehavePassenger),并让我改变它们的比例。它甚至可以通过现有的 django 视图来模拟他们的行为。
猜你喜欢
  • 2010-11-16
  • 2011-09-04
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多