我想使用 Cucumber JVM 之类的东西来驱动为 Gatling 编写的性能测试。
理想情况下,Cucumber 功能会以某种方式动态构建场景 - 可能重用类似于“高级教程”中描述的方法的预定义链对象,例如
val scn = scenario("Scenario Name").exec(Search.search("foo"), Browse.browse, Edit.edit("foo", "bar")
Run Code Online (Sandbox Code Playgroud)
我已经查看了 Maven 插件如何执行脚本,并且我也看到提到使用 App trait 但我找不到任何关于后者的文档,这让我觉得之前有人会想要这样做...
任何人都可以(Gatling noob)指出一些文档或如何实现这一目标的示例代码的方向吗?
编辑 20150515
所以要多解释一点:
我创建了一个 trait,旨在建立一系列,我认为,由 Cucumber 步骤触发的 ChainBuilders:
trait GatlingDsl extends ScalaDsl with EN {
private val gatlingActions = new ArrayBuffer[GatlingBehaviour]
def withGatling(action: GatlingBehaviour): Unit = {
gatlingActions += action
}
}
Run Code Online (Sandbox Code Playgroud)
GatlingBehaviour 看起来像这样:
object Google {
class Home extends GatlingBehaviour {
def execute: ChainBuilder =
exec(http("Google Home")
.get("/")
)
}
class Search extends …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用 XCTest 框架编写了一些性能测试用例。我想知道是否可以在第一次运行之前以编程方式为性能测试设置基线值,或者除了性能结果窗口之外,还有其他方法可以设置基线。
PycURL 或任何其他 python pakcage 是否提供以下信息:
我想获得与此 cURL 命令相同的信息(不使用子进程调用命令):
命令
curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null http://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)
输出:
Lookup time: 0.029
Connect time: 0.144
PreXfer time: 0.144
StartXfer time: 0.263
Total time: 0.803
Run Code Online (Sandbox Code Playgroud) 我目前正在使用 JMeter 对我公司的应用程序进行性能测试。该应用程序需要登录,我必须使用多个用户。这通常在 JMeter 中完成的方式似乎是通过 CSV 数据集,但是我可以访问数据库并且可以直接从那里读取所有凭据。
由于它是一个测试环境,所有用户都有相同的密码,所以我可以对其进行硬编码,但我需要用户名列表。JMeter 已经可以做 JDBC 请求了,但是我想知道是否有任何方法可以将此类请求的结果用作数据集。
理想的方法是我查询数据库中的用户名并将其用作登录测试的输入。
有谁知道这是否可能?
我正在使用 Xcode 7. iPhone 5s 模拟器 (iOS 9.0)。
我试图用它XCTestCase -measureBlock:来衡量在我的某些功能上花费的时间。这会运行块内的代码 10 次,并报告每次运行所需的时间、平均值、STDEV 等结果。
事实证明,第一次运行的时间总是非常高,比如高出 400-500%。一个非常简单的方法也会发生同样的情况,甚至在测量块中什么都没有。我的- (void)setUp或- (void)tearDown.
的结果NSString -stringWithFormat:。请参阅图表第一条的尖峰。
values: [0.000031, 0.000005, 0.000003, 0.000003, 0.000003, 0.000003, 0.000003, 0.000003, 0.000003, 0.000003]
空白块的结果。类似的结果。
values: [0.000007, 0.000001, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000001]
这是错误还是什么?到底是怎么回事?
在某些用户定义的活动期间,如何在 CPU、内存或线程使用方面衡量 OS X 中 kext 的性能影响?任何可以从用户空间使用的特定方法工具?或任何可以考虑的方法/方法?
这些基线似乎是本地保存的(如断点),因此我对它们的更改不会通过 git 传输。当我以外的任何人运行我的性能测试并且他们太慢时,测试不会失败。我该如何解决这个问题?
我使用以下开关编译了我的 C++ 代码:
g++ -O0 -g -rdynamic -DNDEBUG -DARMA_NO_DEBUG -std=c++11 -pthread
Run Code Online (Sandbox Code Playgroud)
链接器开关是:
-lboost_system -lboost_thread -lboost_chrono -larmadillo -pthread
Run Code Online (Sandbox Code Playgroud)
但是我在我的应用程序中没有使用线程。我也避免使用任何delay函数。
然后我运行代码并使用perf工具对其进行测试。
sudo perf record ./bin/my_application
sudo perf report -f
Run Code Online (Sandbox Code Playgroud)
结果对我来说很奇怪:
Overhead Command Shared Object Symbol
50.92% myApplication [kernel.kallsyms] [k] native_sched_clock
24.73% myApplication [kernel.kallsyms] [k] pick_next_entity
17.46% myApplication [kernel.kallsyms] [k] prepend_name
2.57% myApplication myApplication [.] arma::arrayops::copy_small<double>
1.11% myApplication myApplication [.] arma::Mat<double>::Mat
1.11% myApplication myApplication [.] myClass::myMethod
1.11% myApplication libblas.so.3 [.] dgemv_
0.97% myApplication myApplication [.] arma::Mat<double>::init_cold
Run Code Online (Sandbox Code Playgroud)
为什么 kernel.kallsyms函数主宰了执行时间? …
Google 提供了许多 polyfill 库,用于测量和跟踪分析平台上的首次输入延迟 (FID) 和交互时间 (TTI)。然而,这个指标不是 GA 的标准。
然而,domInteractive 是一个指标,您可以使用 GA 进行开箱即用的跟踪。
有什么不同?我找到的对竞争性交互指标的唯一解释是一个模糊的论坛帖子,解释说 TTI 可能会提供更复杂的交互延迟外观,但没有太多细节。
如果我担心影响转换的输入延迟,我是否最好跟踪我的用户的 TTI,或者我可以坚持使用 domInteractive?
Julia 是否有一种有效的方法从给定的条目列表 (u,v,w)构建一个巨大的稀疏矩阵,其中一些可以具有相同的位置(u,v),在这种情况下,它们的权重 w 必须是总和。因此u,v,w是输入向量,我希望创建一个w[i]在 position 处具有值的稀疏矩阵u[i],v[i]。例如,Mathematica 代码
n=10^6; m=500*n;
u=RandomInteger[{1,n},m];
v=RandomInteger[{1,n},m];
w=RandomInteger[{-9, 9}, m]; AbsoluteTiming[
SetSystemOptions["SparseArrayOptions"->{"TreatRepeatedEntries"->1}];
a= SparseArray[{u,v}\[Transpose] -> w, {n,n}]; ]
Run Code Online (Sandbox Code Playgroud)
需要 135 秒和 60GB 的 RAM。等效的 Python 代码
import scipy.sparse as sp
import numpy as np
import time
def ti(): return time.perf_counter()
n=10**6; m=500*n;
u=np.random.randint(0,n,size=m);
v=np.random.randint(0,n,size=m);
w=np.random.randint(-9,10,size=m); t0=ti();
a=sp.csr_matrix((w,(u,v)),shape=(n,n),dtype=int); t1=ti(); print(t1-t0)
Run Code Online (Sandbox Code Playgroud)
需要 36 秒和 20GB,但不支持 (2)。等效的 Julia 代码
using SparseArrays;
m=n=10^6; r=500*n; …Run Code Online (Sandbox Code Playgroud) parallel-processing performance performance-testing sparse-matrix julia
xcode ×3
xctest ×2
baseline ×1
c++ ×1
credentials ×1
cucumber-jvm ×1
curl ×1
database ×1
dataset ×1
dns ×1
gatling ×1
git ×1
ios ×1
jmeter ×1
julia ×1
lighthouse ×1
linux-kernel ×1
macos ×1
objective-c ×1
pagespeed ×1
perf ×1
performance ×1
pycurl ×1
python ×1
testcase ×1
testing ×1
unit-testing ×1
xcode8 ×1