您的位置:首页 > 其它

Gatling官网教程翻译之Concepts

2016-01-20 21:10 603 查看
名词解释,原始文章地址:http://gatling.io/docs/2.1.7/general/concepts.html

Virtual User – 虚拟用户

一些负载测试工具,像ab、wrk,在url压测的时候是很有效率的。但是它们不能很好地处理请求之间的逻辑关系。

像Gatling这样的高级负载测试工具就可以很好地处理虚拟用户。让每一个虚拟用户都使用不同的参数,甚至是请求到不同的地址去。

其他一些测试工具使用线程的方式来实现虚拟用户。但是Gatling的实现方式是通过消息,这样做更好,处理起几千个虚拟用户来说毫不费力。

Scenario – 场景

我们可以通过Gatling自带的脚本来创建场景,从而实现模拟用户的操作。

创建场景既可以根据线上运行的数据分析工具提供的数据,也可以是一个新应用里我们预期的用户操作。无论如何,创建场景都是做负载测试的关键所在,必须重视。

场景代表着用户的典型操作,也是各虚拟用户必须遵守的操作流程。

举例来说,一个典型的电商应用的场景大致如下:

1.进入主页;

2.选择浏览的商品类型;

3.在这个类型中搜索商品;

4.打开商品的详细描述;

5.返回;

6.打开另一个商品的详细描述页面;

7.点击购买这个商品;

8.登录;

9.权限校验;

10.支付;

11.退出登录;

在gatling里面,我们可以使用DSL来实现场景。DSL语言实现和维护起来都非常简单。

下面是一个简单的DSL实现例子:

scenario("Standard User")
.exec(http("Access Github").get("https://github.com"))
.pause(2, 3)
.exec(http("Search for 'gatling'").get("https://github.com/search?q=gatling"))
.pause(2)


上面这段代码,我们可以大致猜到它的意思:

1.实现了一个叫“Standard User”的场景;

2.发了2个请求;

3.暂停了2次;

这里的pause,用于设置用户的思考时间。当一个真实的用户点击链接的时候,加载网页就有一段时间,用户必须等待这个时间。大多数时候,用户需要阅读下页面内容再进行下一步操作。

HTTP请求实际上是由用户点击一个按钮或者链接触发的。每个HTTP请求(包括页面的资源请求)都是很容易抓取的。

进入Github是一个GET请求(点击 http://github.com

搜索“ gatling”也是一个GET请求(点击 gatling)

想知道更多关于场景的知识,点击:http://gatling.io/docs/2.1.7/general/scenario.html#scenario

Simulation – Simulation

译者觉得这里的simulation暂时找不到合适的翻译,也许直接使用simulation就是最好的表达方式。

Simulation其实就是负载测试的描述。它解释了用户执行了哪些操作(可能是好几个操作)、执行哪些场景,新的用户怎么被注入等等。

下面是一个simulation的应用例子:

val stdUser = scenario("Standard User") // etc..
val admUser = scenario("Admin User") // etc..
val advUser = scenario("Advanced User") // etc..
setUp(
stdUser.inject(atOnceUsers(2000)),
admUser.inject(nothingFor(60 seconds), rampUsers(5) over (400 seconds)),
advUser.inject(rampUsers(500) over (200 seconds))
)


译者试着简单解释下三种用户的操作方式:

atOnceUsers – 立即并发的用户;

nothingFor再rampUsers – 先停止一段时间再操作的线性启动用户;

rampUsers – 线性启动的用户(每隔一段时间再启动,推荐这种初始化用户的方式);

想知道更多关于simulation的知识,点击:http://gatling.io/docs/2.1.7/general/simulation_setup.html#simulation-setup

Session – 会话

每一个虚拟用户都有一个Session支持着。这些session都是实际的工作流中的数据信息。Session是一个测试者可以用来注入、捕获、存储数据的的占位符。

译者:session其实是数据管理用的

想知道更多关于session的知识,点击:http://gatling.io/docs/2.1.7/session/session_api.html#session

Feeders – 测试数据管理器

译者注:译者对自己的语言知识表示羞愧,又是一个不知道咋翻译的词。

有些测试应用需要校验数据,比如一些登录、登出等等需要特定用户/数据才能操作的场景。测试者需要考虑下数据。

Gatling本身并不提供生成测试数据的工具。

Feeder就是一个方便用户将外部资源存储的数据注入到虚拟用户的session中的一些API。

想知道更多关于feeder的知识,点击:http://gatling.io/docs/2.1.7/session/feeder.html#feeder

Checks – 检验返回结果

我们使用gatling发送请求的时候,一般情况下是有返回的,比如xml、json或者html等返回到gatling。

Gatling中,就是用checks来检查、分析、校验返回(response)的结果。也可以预设一些检查的条件。举例来说,当发送一个HTTP请求的时候,你希望检查下这个请求的重定向地址。使用了Check,你就可以检查到返回的状态码是30几开头的。

Checks也可以用来捕获一些页面元素并存到session里面,这样我们就可以在下一个请求中重复使用这些数据了。

想知道更多关于Checks的知识,点击:http://gatling.io/docs/2.1.7/http/http_check.html#http-check

Assertion – 断言

断言用来定义测试成功的标准。如果Assertion失败了,会返回一个全局定义的错误码。

想知道更多关于Assertions 的知识,点击:http://gatling.io/docs/2.1.7/general/assertions.html#assertions

Reports – 测试报告

在一个simulation结束后,gatling会自动生成一个html版本的测试报告。因为是html格式的,任何有浏览器的设备都能方便地浏览。

想知道更多关于reports 的知识,点击:http://gatling.io/docs/2.1.7/general/reports.html#reports
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: