我有一个这样的应用程序:
ingestion --> queue --> validation --> persistance --> database
我想对摄取进行负载测试,最后验证每个提交的条目是否都存储在数据库中。
我有一个炮兵脚本,它发布到摄取并从数据库中恢复相同的项目,但它是作为同一场景的一部分这样做的,并且由于这两个组件是单独实现的,我实际上是在测量组合性能,而不是每个组件的性能零件。
我想对摄取组件进行负载测试,保留一些搜索键,使我能够从数据库中恢复所有已发送的项目。我已经尝试通过创建一个在摄取场景开始时调用的 Javascript 来生成随机搜索密钥,将其存储在 Artillery 中context
,然后在场景结束时调用另一个函数来从数据库中恢复所有条目。
我发现的问题是,Artillery 在每个虚拟客户端中运行一个场景副本,因此每次启动场景时都会调用该函数,最后只恢复一个条目。并且对数据库的调用发生在与摄取后相同的场景中,所以我再次混合性能。
我想,我想做的是在一个场景中生成搜索键,在另一个场景中运行帖子,然后在第三个场景中检索结果。我怎样才能做到这一点?
此外,当我从数据库中检索结果时,我想将数量与要摄取的帖子数量进行比较。我找不到是否适用于from 函数调用expect
中返回的变量。context
这可能吗?