标签: load-testing

您可以在测试之前估算应用程序的性能吗?

这是我前几天被问到的一个棘手的问题......我们正在开发一个非常复杂的电话(SIP)应用程序,其中包含混合的C++和PHP代码以及MySQL数据库和几个开源组件.

一位电信工程师要求我们估算应用程序的性能(尚未准备好).他说得很好,你知道每秒可以通过Linux内核传递多少数据包,而且你可能知道你的应用程序有多快,所以告诉我每秒会有多少通过你的东西的电话'.

对我来说似乎是无稽之谈,因为可能会发生一百万个场景(好吧,字面意思......)

但是......有没有办法在实际测试之前估算应用程序性能(知道它将运行的硬件,能够在其上运行标准基准测试等)?

performance benchmarking load-testing performance-estimation

5
推荐指数
1
解决办法
892
查看次数

吞吐量控制器的用途?

我需要一些帮助才能使用JMeter.我想记录两个不同的场景,比如点击2个不同的按钮.如果我尝试为2个用户运行,则一个用户应该点击第一个按钮,另一个用户应该同时点击另一个按钮.

我知道这是基本问题.但我是这个新手.这就是为什么要问这里.我尝试过如下:


Thread Group
 -Throughput Controller
       --Login
       --Clicking 1st button
 -Throughput controller
       --Login
       --Clicking 2nd button
Run Code Online (Sandbox Code Playgroud)

当我使用CSV数据集配置与2个用户一起运行时,两个登录都使用相同的用户.

而且我还需要测试并发性.我不确定如何正确执行这个.任何人都可以帮助我吗?

jmeter load-testing

5
推荐指数
1
解决办法
1万
查看次数

如何将数据从UnitTest传递到LoadTest?

在我的UnitTest中,我正在创建需要在将来的UnitTests中引用的数据.例如:

[TestMethod]
public void CreateOrder()
{
    Order order = new Order();
    int orderNumber = order.Create();
    // return orderNumber;
}

[TestMethod]
public void ProcessOrder()
{
    int orderNumber = (int)TestContext.Properties["OrderNumber"];
    ProcessOrder(orderNumber);
}
Run Code Online (Sandbox Code Playgroud)

我需要保存'orderNumber',以便另一个UnitTest(可能在另一个代理上)可以使用这个生成的顺序.我已经决定我可以使用数据库了,但是我必须像删除项目中的队列那样操作它,并且不想去那条路.

是否有任何方法可以将orderNumber"返回"到LoadTest并将其作为Context参数传递给另一个UnitTest?

c# unit-testing load-testing test-framework

5
推荐指数
1
解决办法
2183
查看次数

Jmeter正则表达式提取器没有获得价值

我有个问题.我在Jmeter中使用正则表达式提取器.我有两个正则表达式.

我可以从中获得价值.

Reference Name: as_fid_addtobasket

Regular Expression: <input type="hidden" name="as_fid" value="(.+?)" />

Template: $1$
Run Code Online (Sandbox Code Playgroud)

但我无法从这一点获得价值.

> Reference Name: DynamicTempOrderProductGuid 
> 
> Regular Expression: <input data-val="true" data-val-required="The
> TempOrderProductGuid field is required."
> id="OrderProducts_1__TempOrderProductGuid"
> name="OrderProducts[1].TempOrderProductGuid" type="hidden"
> value="(.+?)" />
> 
> Template: $1$
> >
Run Code Online (Sandbox Code Playgroud)

这是我的结果.第二个没有得到价值.我错过了哪里?

POST数据:OrderProducts.index = 1&OrderProducts%5B1%5D.TempOrderProductGuid =%24%7BDynamicTempOrderProductGuid%7D&OrderProducts%5B1%5D.Count = 1&OrderProducts%5B1%5D.ReceiverModel.OrderReceiver.NameRec = Test + ama%C3%A7l%C4% B1D%C4%B1R.+ L%C3%BCtfen + dikkate +爱尔美%C4%B1n的%C4%B1z&OrderProducts%5B1%5D.ReceiverModel.OrderReceiver.PhoneRec = 05352233285&OrderProducts%5B1%5D.ReceiverModel.OrderReceiver.OSSendingReason =&OrderProducts%5B1 %5D.ReceiverModel.OrderReceiver.OSReceiverAddressType =&OrderProducts%5B1%5D.ReceiverModel.OrderReceiver.CompanyNameRec =&OrderProducts%5B1%5D.ReceiverModel.OrderReceiver.AddressLineRec =测试+ AMA%C3%A7l%C4%B1D%C4%B1R.+ L&C3%BCtfen + dikkate +爱尔美%C4%B1n的%C4%B1z&OrderProducts%5B1%5D.ProductCode = se213&OrderProducts%5B1%5D.TempOrderProductGuid =%24%7Btokentoken%7D&totalProducts = 1&as_fid = efWZ0i4RGLmC2nBWk%2FA1

regex jmeter load-testing

5
推荐指数
1
解决办法
2952
查看次数

通过JMeter对AJAX调用进行性能测试

我正在为具有AJAX调用的应用程序进行性能测试.我能够记录相同的请求但无法执行它们.有人可以帮我执行AJAX请求吗?

我需要为此使用任何额外的插件吗?如果是的话,它们是什么以及如何使用它们.

ajax jmeter load-testing performance-testing jmeter-plugins

5
推荐指数
2
解决办法
8987
查看次数

如何为休息json模板编写自定义馈线

我写了一个简单的"教程"应用程序,它提供了一个名为"世界端点"的REST接口,您可以使用它来添加居民等.这样做的示例json请求可能如下所示:

{
   "name": "Sergio Gonzales",
   "age": "34",
   "languages": [
      { "id": "119" },
      { "id": "14" }
   ],
   "homeland": { "id": "121" },
   "hometown": { "id": "155" }
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个加载测试来测试新居民的"创造".为了获得数据,我有三个不同的来源:

  1. first_names.csv
  2. last_names.csv
  3. country_capital_language.csv

前两个将用于创建随机名称(当然,没有高度复杂的方法来创建有意义的数据).最后一个将用于选择国土,家乡和母语的ID.此外,我会随机选择额外的0 - 3种语言.

我认为我必须为此编写一个自己的进纸器但遗憾的是,自发布2.xx后,自定义进纸器的文档似乎已经消失

写入馈线的好方法是什么?我的第一个想法是直接加载csv数据,如下所示:

Source.fromInputStream(getClass.getResourceAsStream( "/名/ first_names.csv")).getLines.toSet

不确定使用csv("first_names.csv")是否会更好?

除了我也不知道,如何通过动态创建的数据替换json中的"语言"部分?是否有可能通过语言ID列表并自动转换为有效的json数组?

UDPATE

这是我的第一个工作版本.它有缺陷,但它基本上做我想要的.如果有人建议如何增强,请不要犹豫(我对scala很新).

package com.u6f6o.apps.hazelnate.load.scenario

import io.gatling.core.Predef._
import io.gatling.core.feeder.Record
import io.gatling.http.Predef._

import scala.concurrent.forkjoin.ThreadLocalRandom

class Insert100kInhabitants extends Simulation {
  val random = ThreadLocalRandom.current
  val footprints = csv("data/footprints.csv").records
  val forenames = csv("data/forenames.csv").records
  val surnames = csv("data/surnames.csv").records

  val httpConf = http …
Run Code Online (Sandbox Code Playgroud)

load-testing gatling

5
推荐指数
1
解决办法
4766
查看次数

JMeter:Linux环境中的分布式(远程)测试

我使用JMeter设置了分布式负载测试环境。我使用的三个Linux机器(红帽)(IPS: ,xxx.xxx.xxx.121xxx.xxx.xxx.122xxx.xxx.xxx.123使用从我的Windows 8.1壳牌担保。

我已经满足执行分布式测试的先决条件:

  1. 所有机器(客户端和从机)都在同一子网中。
  2. 所有机器都禁用了防火墙。
  3. JMeter(2.13)和JDk版本(1.6.0_25)都相同。

Client(Master) Machine :xxx.xxx.xxx.123 Server(Slave) Machines: xxx.xxx.xxx.122,xxx.xxx.xxx.121

我做了以下工作:

1)在客户端(主)jmeter.properties文件中添加了以下内容:

remote_hosts= xxx.xxx.xxx.122,xxx.xxx.xxx.121

2)将以下内容添加到服务器(在每个从属计算机中)jmeter-server

RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.123(客户端计算机IP)

3)然后使用此命令从这两个从属机器(xxx.xxx.xxx.122,xxx.xxx.xxx.121)启动jmeter-server

./jmeter-server

并获得以下输出。这意味着从属计算机已启动。

xxx.xxx.xxx.121的输出:

Created remote object: UnicastServerRef [liveRef: [endpoint:[xxx.xxx.xxx.123:41864](local),objID:[1707296d:154c281318b:-7fff, -8101068266055605468]]]
Run Code Online (Sandbox Code Playgroud)

xxx.xxx.xxx.122的输出:

Using local port: 4000
Created remote object: UnicastServerRef [liveRef: [endpoint:[xxx.xxx.xxx.123:4000](local),objID:[-2a2acf13:154c285ffa2:-7fff, 2939294752655639469]]]
Run Code Online (Sandbox Code Playgroud)

现在,我从客户端计算机(xxx.xxx.xxx.123)运行以下命令以启动远程测试

./jmeter -n -t RemoteTest.jmx -r

它为我提供了以下输出:

Creating summariser <summary>
Created the tree …
Run Code Online (Sandbox Code Playgroud)

jmeter load-testing performance-testing distributed-testing

5
推荐指数
0
解决办法
2492
查看次数

如何解释蝗虫的指标?

我没有在蝗虫文档中找到有关要模拟的用户数量孵化率的详细信息。

这两个参数之间有什么关系?

如果我有20个客户端,每个客户端将每秒向服务器发送1000个请求,我应该如何设置两个参数来测试服务器?

python load-testing locust

5
推荐指数
1
解决办法
1311
查看次数

负载测试记录在凤凰城的路线

我正在尝试对需要登录的路由进行负载测试.

我以前使用https://artillery.io/docs/index.html登出的路线工作正常.对于登录路由,我尝试beforeRequest使用函数调用来设置请求标头和正文.

config: target: "https://www.mywebsite.com/" phases: - duration: 60 arrivalRate: 50 processor: "test.js" scenarios: - flow: - post: url: "/login" beforeRequest: "setReqBody"

而我的beforeRequest看起来像这样:

function setReqBody(requestParams, context, ee, next) { requestParams.body = {'email': 'user@mail.com', 'password': 'password', '_csrf_token': window.csrfToken} return next(); }

我收到一个window未定义的错误.

我环顾四周,看看还有什么我可以用来负载测试凤凰,但没有太多运气.有没有其他方法可以登录并测试这些路线?或者我可以使用其他依赖项/库来执行此操作?

elixir load-testing phoenix-framework

5
推荐指数
1
解决办法
241
查看次数

SoapUI LoadTest执行失败

我尝试从中的测试用例生成负载测试SoapUI。它有很多测试步骤,前10个步骤涵盖了登录过程。LoadTestGroovy脚本中停止,该脚本应该从上一个测试步骤的输出中获取参数值。当直接执行时,它可以正常工作,但是当以a执行时,它会给出错误LoadTest

groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.lang.String# . Cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class [B] [class [C] [class java.lang.String] groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.lang.String# . Cannot resolve which method to invoke for [null] due to overlapping prototypes between: [class [B] [class [C] [class java.lang.String] error at line: 5
Run Code Online (Sandbox Code Playgroud)

Groovy 导致上述错误的脚本:

def tc1 = testRunner.testCase.getTestStepAt(context.currentStepIndex-1);
String rawData = new String(tc1.testRequest.response.rawResponseData);
Reger reger …
Run Code Online (Sandbox Code Playgroud)

groovy soapui load-testing

5
推荐指数
1
解决办法
127
查看次数