2008-11-19 32 views
1

当针对Web应用程序编写JMeters测试时使用的最佳策略是什么,其中每个运行某些查询字符串和后置变量的值将发生更改。JMeter测试和非静态GET/POST参数

快速,通用,例如

  1. 你去一个网页
  2. 输入一些信息到表单
  3. 单击保存
  4. 在幕后,一个新的记录在数据库中输入
  5. 你想编辑你刚刚输入的记录,所以你去另一个网页。在幕后,它将页面上的参数与刚刚创建的行的数据库ID相关联

当您运行上述测试的第5步时,页面参数/数据库ID将每次都会更改。我目前使用

工作流/策略是

  1. 记录使用上述行动
  2. 记每个地方的查询字符串变量可以从运行改变运行
  3. 的测试使用XPath或正则表达式提取器将值从响应中提取出来并存入JMeter变量
  4. 用上述变量替换硬编码参数的所有适当实例。

这可以工作,并且可以在一定程度上自动化。但是,它会变得单调乏味,容易出错,而且很脆弱。处理这种情况是否有更好的/普遍接受的方式? (或者这就是为什么大多数人只是使用JMeter来播放日志?( - ;)

回答

2

听起来像你在正确的轨道上.JMeter可以实现的最好的功能是提取页面变量表达式或xpath后处理器,但是你绝对正确的是,这不是一个可扩展的解决方案,并且变得越来越难以维护或增长。如果你想要考虑一个更专门针对这类问题的工具。看看Watir等网页测试工具,它会自动处理改变后的参数;但如果您需要更新数据库,您仍然需要提取参数,但使用Watir可以更好地重复使用代码,从而减少问题的痛苦。

+0

我还没试过Watir,但是他所描述的几乎就是我发现的适用于jmeter的技术。没有长期的可维护性数据,但我主要担心Rails应用程序中的authenticity_token,这些变化不会太大。 – edebill 2009-07-28 20:19:04

1

我们通过将参数存储在JMeter Variables中的JDBC断言中,在使用JMeter测试类似场景方面取得了巨大成功。 get/post并使用BSF Assertion和javascript对响应进行复杂的验证。希望它有帮助

+0

有用的信息,谢谢!然而,困扰我的部分是“复杂的验证”。我的直觉说你会获得大量的测试覆盖率,但是保持这些复杂的验证会消除覆盖带来的任何好处。你发现这是/不是这样吗? – 2009-04-09 23:32:44