发布新日志

  • Jmeter 简单应用

    2010-12-17 11:29:36

    这几天在对一个网站进行性能测试,使用JMETER作为自动化工具。
    该网站通过HTTP协议进行POST/GET数据,而且每个页面都是需要进行登录的。
    根据这个网站的特点,先列出来需要测试的要点:
    1. Login(concurrent 20 users),response time <3
    2. 在录入数据页面,导入数据 (concurrent 20 users), each user has 60 items, response time <3
    3. 在录入数据页面,在线新增数据(concurrent 20 users), response time <3

    针对上述测试要点再结合JMETER的特性做以下工作:
    1. Test plan是默认创建的,以下的步骤中会分开来讲。
    2. 在Test plan下面创建Create Thread Groups - 可以把Thread Group想像成一个业务或是一组业务的组合。
    • 根据目前项目的特点,所有的导入数据和添加数据的页面必须在登录之后完成,而且导入和录入的数据可能由不同的用户在操作,所以我创建两个Thread Groups. 一个是LOGIN+IMPORT, 另一个是LOGIN+ADD。 每个Thread使用不同的用户登录。
    • Thread group 有以下参数:
      • The thread number is the amount of concurrent users.
        • 由于是2个thread group, 并发数总共是20,现在设定每个thread group的thread number是10
      • Ramp-up:为了避免一开始给服务器过大负载,可以设置每个请求发生的总时间间.
        • 比如,现在有10个并发,要求在100内完成,则Ramp-up = 100/10
        • 如果是全部并发在同一时间完成,则这个Ramp-up这个数值设定为0.
    3. 我希望2组业务流能同时进行,所以在TEST PLAN中将 “Run Threadgroups consecutively.” 选中。
    4. 接下来是在每个thread group中,单独进行业务的设置。
       Samplers tell JMeter to send requests to a server and wait for a response。
       由于网站采用HTTP协议进行数据POST/GET,以下的samplers均是HTTP REQUEST.
    (1) LOGIN + ADD
    • a. http request sampler for Login
      • login post数据时,需要添加参数(用户名/密码)
      • 如果用户名和密码是变化的,可以加一个Configure element - CSV Data Set Configure,从外部文件中按一定顺序提取用户名称密码。然后在参数中使用${variable_name/password} - http://jakarta.apache.org/jmeter/usermanual/component_reference.html#CSV_Data_Set_Config
      • 注意:Mothod是要POST数据还是要GET数据,一般登录肯定是POST数据了,但是如果是需要显示列表什么的,肯定就是GET数据,否则什么数据也取不回来。
    • b. HTTP Cookie Manager:由于后面的ADD业务需要用到LOGIN中的SESSIONID,所以需要在LOGIN Sampler后添加一个Configure element - HTTP Cookie Manager以保存SESSIONID。
    • c. Regular Expression Extractor(Select from Post Processors): 由于SESSIONID是会不断变化的,所以需要动态的将LOGIN sampler中SESSIONID取出来存成一个变量。HTTP Cookie Manager 中使用${variablename_gn}来调用- http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Regular_Expression_Extractor
    • e. Response Assertion: 无论是性能测试还是功能自动化测试,基本的语法就是ACTION(操作)/Assertion(断言),即在每个操作后面都需要一个Assertion去判断是否还到了预期目的。 - http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Response_Assertion
      • 需要注意的是,其中的Apply to/Response Field to Test/Pattern Matching Rules/Patterns to Test
      • Apply to: 对于有重定向的URL,Jmeter除了自动将主Sampler发出去,还会将子Sampler发出去,2个都会有返回值,所以要弄清楚,你要验证的结果是针对主的还是子的。
      • Response Field to Test:你要针对返回结果的哪一部分进行验证,是对reponse code还是text reponse还是reponse header等等。
      • Pattern Matching Rules:验证是需要进行全完匹配还是部分匹配等
      • Patterns to Test:你的预期结果是什么
    • f. Lister: 监听或记录结果
      • View Results Tree:可以查看sampler的返回值 - http://jakarta.apache.org/jmeter/usermanual/component_reference.html#View_Results_Tree
      • Summary Report: The aggregate report creates a table row for each differently named request in your test.
    • 上述就是一个完整的Jmeter性能测试脚本。
    (2)Login + Import (未完待续)




Open Toolbar