新一代服务器性能测试工具Gatling

发表于:2013-10-23 11:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:passionboyxie    来源:51Testing软件测试网采编

分享:
  录制代码段2
  录制出来的脚本拥有很多局限性:
  只支持1个用户
  没有检测点
  没有逻辑分层
  因此,它并不能用于真正的性能测试。对于这样的原始代码,我们需要进行大量的重构,使代码拥有很好的可读性和可维护性。
  首先我们要进行分层处理:
  对于录制代码段1,需要建立一个Header类来管理所有HTTP Header,这里使用“Headers.scala”,在录制代码段1中只给出了“headers_1”,实际的脚本包含了大量的Header。
  对于录制代码段2,需要将测试场景和测试控制分开,每一个测试场景使用一个文件来保存,代码段2所示的场景使用“UploadImageScenario.scala”来保存。主控脚本也需要分离出来存入“MainSimulation.scala”,通过调用不同的测试场景的脚本,从而可以复用HTTP的配置选项,比如:
  val httpProtocol = http
  .baseURL("http:// :10.17.7.3")
  其次,我们还需要增加多用户的支持:
  多用户数据的读入,其中“user_credentials.csv”存储的就是用户名和密码
.feed(csv("user_credentials.csv"))
.exec(http("request_login")
.post("""/customer/login""")
.param("""username""", """${username}""")
.param("""password", "${password}""")
  设置多用户的值。由于我们使用的是虚拟机,所以经过测试,确定为400用户并发。
  setUp(LoginScenario.loginScn.inject(ramp(400 users) over(60 seconds))).
  protocols(httpProtocol)
  最后,我们还要增加检测点,使用check,find,status等函数进行检测,下面的代码检测了用户登出的时候HTTP Response Status是否为302:
exec(http("request_logout")
.get(("""/customer/logout""")
.headers(headers_logout)
.check(status.is(302)))
  当然,如果测试人员熟悉Gatling DSL API,我们也可以不用录制代码再进行重构,而是直接设计测试系统并进行测试案例的开发。
  项目采取了敏捷方法进行开发,所以系统的一些功能在开发过程中会出现频繁改动,导致测试场景和测试脚本也会随之发生改变,因此,测试脚本的可读性和可维护性对于我们来说就非常重要。当某个功能改变之后,使用Gatling脚本就能十分方便的进行阅读和重构。比如对于添加user的功能,第一版只需要能添加user即可(见添加user代码1),而在下一版中,则要求在添加user时可以选择该user具有那些权限(见添加user代码2),代码如下:
.exec(http("request_add_user")
.post("""/customer/users""")
.headers(headers_user)
.param("""utf8""", """?""")
.param("""user[username]""", """user2""")
.param("""user[email]""", """user@gmail.com""")
.param("""user[password]""", """user2""")
.param("""user[password_confirmation]""", """user2""")
  添加user代码1
.exec(http("request_add_user")
.post("""/customer/users""")
.headers(headers_user)
.param("""utf8""", """?""")
.param("""user[username]""", """user2""")
.param("""user[email]""", """user@gmail.com""")
.param("""user[password]""", """user2""")
.param("""user[password_confirmation]""", """user2""")
.param("""user[plugins][]""", """customer_dashboard""")
.param("""user[plugins][]""", """customer_files""")
.param("""user[plugins][]""", """customer_images""")
.param("""user[plugins][]""", """customer_pages"""))
43/4<1234>
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号