负载测试中,如何保证业务连贯性?

发表于:2019-11-13 11:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:飞天小子    来源:测试驿栈

  什么是业务连贯性呢?比如下面这个业务流程:
  登录-业务A-业务B-业务C
  首先登录是必须的,没有登录则后续流程都不可能执行。
  其次,必须业务A执行之后才能执行业务B,业务B执行之后才能执行业务C。
  如果跨流程去执行后续业务,那么系统可能会针对业务状态做相应的拦截和校验
  很多测试同学在用jmeter做负载测试的时候,往往会发现原本希望正确的流程在负载中很快就乱套了。
  比如登录-业务A-业务B-业务C  变成 登录-业务C-业务B-业务A
  或者登录-业务A-业务B-业务C  变成 业务A-业务B-登录-业务C
  或者噼里啪啦执行一堆登录,然后再执行后续的业务,如下图
  很多人为此伤透了脑筋。因为这样的业务顺序不能使流程贯通,也就不能得出正确的性能测试数据,所以测试的也就没有意义。
  为什么会出现这种情况呢?那是因为多线程竞争的原因。多线程执行并发操作,肯定是谁跑得快谁就先执行,线程才不会傻乎乎的的排队。
  那么我们应该怎么办?其实方法很简单。jmeter自带了一个事物锁控制器。
  官方把它定义为线程锁控制器(Critical Section Controller)
  意思就是这个锁下面的请求,在相同的时间点只会有一个线程去执行它
  也就意味着这个锁下面的事物在相同的时间点会给每个线程分配一个,不会产生竞争。
  此时我再用200线程去做并发,观察结果发现所有的事物都在按照既定顺序并发执行

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号