我正在尝试将Gatling中的一系列性能测试模块化.
有几个测试通过页面执行相同的初始路径,所以我认为我可以将它们分解为一系列场景,每个场景都是在其自己的文件中定义的一系列共享操作,然后是最终的模拟定义一个接一个地执行指定的方案.
然后我需要的是我的模拟按顺序运行这些场景; 但我只能找到如何同时运行它们,或者每个运行它们之间的指定延迟.是否有任何模拟设置选项可以一个接一个地运行已定义的方案而不指定任意延迟?
编辑
目前,我有以下文件集:
homepageHeaders.scala
package advanced
object homepageHeaders {
val homepage_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""",
"If-Modified-Since" -> """Wed, 20 Mar 2013 15:36:31 +0000""",
"If-None-Match" -> """"1363793791""""
)
}
Run Code Online (Sandbox Code Playgroud)
homepageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import akka.util.duration._
import homepageHeaders._
object homepageChain {
val homepageChain =
//Homepage
exec(http("homepage")
.get("/")
.headers(homepageHeaders.homepage_headers_1)
)
}
Run Code Online (Sandbox Code Playgroud)
pageHeaders.scala
package advanced
object pageHeaders {
val page_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"""
)
}
Run Code Online (Sandbox Code Playgroud)
pageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import …Run Code Online (Sandbox Code Playgroud) 以下哪三个功能更有效;
public String getmConnectedDeviceName1() {
if(null != mServerDevice) {
return mServerDevice.getName();
}
else {
return null;
}
}
public String getmConnectedDeviceName2() {
return mServerDevice == null ? null : mServerDevice.getName();
}
public String getmConnectedDeviceName3() {
try{
return mServerDevice.getName();
}
catch(NullPointerException e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
请回复具体可接受的逻辑.
我遇到了测试某些代码变体(本机/插件)性能差异的需求.
是否有一个在线服务,如jsbin,jsfiddle执行,我可以把代码放在哪里,比如
// BEGIN
var bla;
jQuery.map(bla, function(){});
// END
Run Code Online (Sandbox Code Playgroud)
并获得执行时间?
问题
很长一段时间我的印象是,使用嵌套std::vector<std::vector...>来模拟N维数组通常很糟糕,因为内存不保证是连续的,并且可能有缓存未命中.我认为最好使用平面矢量并从多个维度映射到1D,反之亦然.所以,我决定测试它(最后列出的代码).这非常简单,我定时读取/写入嵌套的3D矢量与我自己的1D矢量3D包装器.我用两者编译了代码,g++并且打开clang++了-O3优化.对于每次运行,我都改变了尺寸,因此我可以很好地了解这种行为.令我惊讶的是,这些是我在我的机器MacBook Pro(Retina,13英寸,2012年末),2.5GHz i5,8GB RAM,OS X 10.10.5上获得的结果:
g ++ 5.2
dimensions nested flat
X Y Z (ms) (ms)
100 100 100 -> 16 24
150 150 150 -> 58 98
200 200 200 -> 136 308
250 250 250 -> 264 746
300 300 300 -> 440 1537
Run Code Online (Sandbox Code Playgroud)
clang ++(LLVM 7.0.0)
dimensions nested flat
X Y Z (ms) (ms)
100 100 100 -> 16 18
150 150 150 -> 53 61
200 …Run Code Online (Sandbox Code Playgroud) 我们有两个相同的Oracle Exadata四分之一机架,每个机架运行一对数据库实例.我的湿手指在风中的性能测试表明,一个人的速度是另一个人的四分之一.
是否有一组可以使用计时器运行的SQL查询,可以更加科学地比较两个服务器之间的查询性能?
我知道我可以编写一组查询.我想知道是否已存在半标准基准集.类似于一些表创建查询,然后是迭代插入语句(大量随机数据),索引,约束,触发器,函数,proc和视图创建脚本(最好包括物化视图),然后是一堆扩展引擎的复杂查询加入连接,触发器触发,函数和proc调用等...同时将性能统计信息写入某些临时表?
有人遇到过这样的库/工具/脚本集吗?
添加行后
#import <DTPerformanceSession/DTSignalFlag.h>
Run Code Online (Sandbox Code Playgroud)
我找不到'libproc.h文件'.这个文件不在我的Mac上.我试过谷歌搜索它似乎应该包含在Xcode中.我已经尝试将xcode从4.3升级到4.4并且仍然是同样的错误.
我试图在我的游戏循环中使用以下行.
DTSendSignalFlag("com.mycompany.mytracepoints.app.point", DT_POINT_SIGNAL, TRUE);
Run Code Online (Sandbox Code Playgroud)
我已经包含了DTPerformanceSession.framework我错过了什么?
我的组织现在正在进行一场有趣的内部辩论,提出了一个我想向社会开放的问题.
手头的问题是我们的环境,我们在其中进行压力测试,容量测试,性能回归测试等.
争论的一方面是一些软件工程师希望这种环境尽可能地反映生产环境,以使结果尽可能有意义.虽然我们目前确实有这样的测试环境,但它的能力远远低于生产系统,而且这些软件工程师认为他们正在达到他们可以从中学到的极限.
争论的另一方面是一些网络工程师,他们既管理环境又控制钱包.虽然他们承认在能够更好地复制生产环境的环境中容量测试会更好,但他们认为 - 为了压力测试的目的 - 更温和的环境会产生放大性能瓶颈的影响,使它们更容易发现并修复
这最终将我们带到引起我兴趣的部分:一位软件工程师建议,虽然一个更温和的压力环境会增加你遇到一些瓶颈的可能性,但它并不一定意味着它可以帮助你找到你可能遇到的下一个瓶颈在生产中遇到.他认为,缩放效应可能不是线性的.
那个观点是否有价值?如果是,那为什么呢?这种非线性的来源是什么?
这里涉及许多活动部分:一组Java应用程序服务器,一组数据库服务器,为每个HTTP命中生成大量动态内容.
编辑:到目前为止,我很欣赏每个人的想法,但我真的希望有人能做的不仅仅是重新确认一方或另一方并实际解决"为什么"的问题.如果存在这种非线性,会产生什么?更好的是,如果原因表现在CPU,内存,带宽,延迟,子系统之间的交互,你有什么...... TerryE,你来的最近.如果没有其他人加强,您应该重新发布您的评论作为赏金的答案
architecture optimization stress-testing performance-testing
我正在寻找一种定期测试我的Web应用程序的前端性能的方法.
具体而言,我很感兴趣,它需要解析主机名,从服务器获得响应,下载/渲染/执行资源,等等.我也想衡量这些东西到时候交互与应用,不只是当加载了页.
我可以在手动与我的Web应用程序交互时使用Firebug或Chrome开发人员工具,但我希望这种前端性能测试成为我持续集成过程的一部分.我希望每晚都有前端性能测试结果,以便更容易捕获性能回归.这就是为什么我的一个初步结论是我想利用我现有的功能性Selenium/WebDriver测试套件(或测试套件的一个子集).
因此,假设我使用Selenium与我的Web应用程序进行交互,我真正需要的是一种测量浏览器前端性能的工具.
到目前为止,我已经看了三个选项:
browsermob-proxy是一个开源代理,使用HAR格式捕获性能数据.除Java和NodeJS绑定外,它还提供HTTP REST API.因为它是分析HTTP流量的代理,它不会向我提供有关浏览器中发生的事情的任何信息(例如渲染等),这是我最感兴趣的.
WebPagetest也是开源软件,可在webpagetest.org上以免费云服务的形式获得.设置此服务的私有实例是可能的(而不是太难).我给它一个URL,我得到了该页面加载的性能报告.但是,当我与它交互时,它不允许我监视应用程序 - 这是至关重要的 - 特别是在单个页面Web应用程序中,客户端有很多东西 - 比如我的.
Compuware APM AJAX版是免费的(如免费提供的)专有软件,它使用浏览器插件在浏览时从浏览器中捕获信息,这意味着它可以在Selenium测试套件执行期间自动收集数据.
将其自动化并将其执行集成到持续集成过程中非常容易,但报告还有很多不足之处.测试结果分为"会话",这是从浏览器窗口打开到关闭之间的时间段.没有用于比较测试结果的功能,这使得很难跟踪进度并捕获回归.
Compuware APM AJAX版是迄今为止我见过的最好的选择 - 但是必须有更好的东西 - 对吧?
我一直在寻找可以帮助我进行负载测试和基准测试的工具.我发现夫妇喜欢:https://github.com/wg/wrk,http://www.joedog.org/siege-home/,https://github.com/rakyll/boom.我想知道是否有人对这些工具有任何经验,并且对这些工具有任何反馈优点和缺点.我的负载压力将包括使用DELETE,PUT,GET,POST ...标头的不同测试用例
谢谢
performance ×4
javascript ×2
architecture ×1
asp.net ×1
benchmarking ×1
c++ ×1
caching ×1
exadata ×1
gatling ×1
indexof ×1
instruments ×1
java ×1
objective-c ×1
optimization ×1
oracle ×1
qa ×1
regex ×1
scala ×1
selenium ×1
siege ×1
sql ×1
testing ×1
vector ×1
wrk ×1