我想对Rails应用程序进行性能测试.
现实世界数据大小为100 MB.
但Rails总是重建测试数据库,它会覆盖现实世界的数据.
那么如何进行性能测试呢?
我们正在评估如何在单页面应用程序(SPA)上测试性能,该应用程序在很大程度上依赖于JavaScript和动态内容(通过Ajax更新).
流行的负载测试工具(如Apache JMeter或Gatling)可以通过发送HTTP请求来生成大量负载,而且硬件很少.但他们不处理任何Javascript代码.
我们希望衡量客户所感知的性能,即最终用户坐在浏览器前面所感知的(包括所有呈现和JavaScript开销).
我们有以下备选方案:
使用Selenium Grid在多台计算机上同时运行测试脚本.每个实例都将在运行时收集的延迟数据提交到中央存储库.
与上面类似,只是启动了一个Selenium脚本实例.然后我们将JMeter/Gatling在后台产生重负荷.
根本不要使用Selenium.在使用JMeter/Gatling运行负载测试时,使用Firebug,YSlow等工具手动检查页面的行为.
每种方法都有其优点和缺点.在(1)我能够创建最"逼真"的负载,但它不能扩展,(2)通过JMeter/Gatling进行扩展,但我必须确保它们创建的负载不会偏离实际应用程序和(3)是最容易设置的,但它显然是耗时的,因为它不是自动化的.
到目前为止,我找不到任何关于这个主题的工具,框架甚至是一套指导方针,所以我想从SO的专家那里了解到:他们使用什么样的方法进行这种测试?
Selenium Grid常见问题解答中的这一条目指出*"使用真实浏览器进行性能/负载测试是一个非常糟糕的主意,因为扩展负载很困难/昂贵且实际负载非常不一致......".我只能认为它们指的是" 后端性能/负载测试 ".否则,如果我对最终用户的表现感兴趣,那么替代方案是什么?
javascript testing performance performance-testing single-page-application
我们使用Jmeter进行性能测试.我给了10个线程(10个用户),加速时间为60秒,有4个用户未能注销org.apache.http.NoHttpResponseException: The target server failed to respond
我们的脚本就是这样的.用户登录,访问列表页面并执行一次提交操作并访问提交的详细信息页面.每个用户都会执行三次并注销.当我只有一次而不是三次它运行良好,但当我配置脚本做三次然后我面对上面提到的错误.
我真的不确定是否与Jmeter设置或服务器设置有关?
有没有人知道模拟慢速DVD驱动器的任何可行方法,例如通过安装的DMG/ISO映像?
目标是针对慢速驱动进行编程,从而满足模拟要求.任何想法将不胜感激!
更新:再次,目标是模拟缓慢的I/O流程.不幸的是,Network Conditioner或Charles等工具无法提供解决方案.涓涓细流已经过时,没有更积极的开发:(
我们正在构建一个Angular应用程序,我们正试图弄清楚如何获得渲染各种页面需要多长时间的基准.我在performance.timing 这里读过,但这似乎只适用于非单页面应用程序,因为当我在应用程序中导航到新视图时,时序数字不会改变.
理想情况下,我们可以插入一些代码来获取各种视图的渲染时间,并将它们发布到我们的Big Query服务中.
关于如何在Angular应用程序中获取视图的时序信息的任何想法?
编辑:
更具体地说,您将转到加载大型重复列表的路径(这对于性能而言不是最佳的),并且窗口在实际呈现列表中的项之前有很长的延迟.我们想看看从大空白视图到渲染列表中的项目需要多长时间.
这是我的意思的一个例子:
s = """
if x > 10:
x -= 10
else:
x = 0
"""
import timeit
print(timeit.timeit(s, setup="x=5", number=99999999))
Run Code Online (Sandbox Code Playgroud)
在我的电脑上输出大约3秒钟,无论设置如何(x=5vs x=15,没有区别)
如果我要使用更短的代码,首先减少代码,x -= 10然后再检查是否x < 0,我会得到更糟糕的结果:
s = """
x -= 10
if x < 0:
x = 0
"""
import timeit
print(timeit.timeit(s, setup="x=5", number=99999999))
Run Code Online (Sandbox Code Playgroud)
它6秒输出各处,再次不管初始值是否x是5或15.
我知道,x < 10自从我们第一次打电话x -= 10然后设置x = 0而不是简单地设置x一次就会慢一点.
问题是,99%的时间x我的程序中的初始值被设置为远高于10的数字,所以我认为我会使用较短的版本,因为大多数时候我应该看不出性能上的差异.
然而,即使是 …
我想测量JSF应用程序的渲染时间.由于我的权力原因,应用程序无法填充日志.
因此,我的问题是,在使用任何浏览器执行包含后端(服务器)调用的特定操作之后,有什么方法可以衡量应用程序的呈现时间?
到目前为止,在使用Chrome开发者工具后,我发现了以下内容.在"网络"选项卡上,每个请求都显示"时间".此外,在选择某个条目后,在"定时"选项卡上,将显示更详细的可视化.现在,我可以从中了解到,"Waiting"表示它在这里捕获到服务器的往返,但是实际的渲染时间呢.
假设整个请求耗时1秒,等待部分耗时500毫秒,我能否推断渲染时间是1秒-500毫秒?我不这么认为,这就是我问这个问题的原因.
简而言之,我需要从浏览器中了解服务器处理需要多长时间以及实际UI渲染时间.
任何提示将非常感谢.谢谢.
我用Selenium Webdriver在C#上编写了测试.现在我需要测试应用程序的性能.我使用FiddlerCore,但它没有页面渲染时间或动态内容的时间(ajax,js等).
有人知道像FiddlerCore这样的库,但是有更多的功能,比如dynatrace Ajax版或者是C#的browsermob-proxy吗?
编辑1:我不需要任何解决方案.我想仅使用WebDriver进行测试.
注意:这与性能问题无关.我只观察到无法解释/理解的性能差异.
在对一些针对Java 9的新开发的代码进行基准测试时,我发现了一些奇怪的东西.HashMap带有5个密钥的(非常)简单基准测试表明,Java 9比Java 8慢得多.这可以解释一下,还是我的(基准)代码完全错误?
码:
@Fork(
jvmArgsAppend = {"-Xmx512M", "-disablesystemassertions"}
)
public class JsonBenchmark {
@State(Scope.Thread)
public static class Data {
final static Locale RUSSIAN = new Locale("ru");
final static Locale DUTCH = new Locale("nl");
final Map<Locale, String> hashmap = new HashMap<>();
public Data() {
hashmap.put(Locale.ENGLISH, "Flat flashing adjustable for flat angled roof with swivel");
hashmap.put(Locale.FRENCH, "Solin pour toit plat inclinée");
hashmap.put(Locale.GERMAN, "Flachdachkragen Flach Schrägdach");
hashmap.put(DUTCH, "Plakplaat vlak/hellend dak inclusief glijschaal");
hashmap.put(RUSSIAN, "?????? ????? ??????? …Run Code Online (Sandbox Code Playgroud) 我想加载/性能测试使用angular 6+作为前端框架的Web应用程序。该应用程序很大,并使用了许多向导/模态等。我想做一些“真正的” e2e前端测试(不仅测试API调用,还测试js渲染等)。
目前有什么最新的方法和工具来测试这样的应用程序?
为了明确起见,我想进行一些真正的端到端性能测试,例如以无头模式打开浏览器,打开向导并获取向导出现之前所花费的时间。就像使用硒进行前端测试一样。我也可以用硒来做,但我不知道它是否合适。
testing performance load-testing performance-testing angular
performance ×4
testing ×3
javascript ×2
load-testing ×2
.net ×1
angular ×1
angularjs ×1
c# ×1
dmg ×1
dvd ×1
fiddler ×1
iso ×1
java-9 ×1
jmeter ×1
jmh ×1
jsf-2 ×1
macos ×1
python ×1
python-3.x ×1
rendering ×1