开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:测试RestFulDemo】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15956
测试RestFulDemo
内容简介:
一、性能测试的类型
二、演示测试
一、性能测试的类型
第二个例子是关于 RestFulDemo的压力测试的例子,在这个测试中会使用 Jmeter一些元件来定义一个比较复杂的测试计划。
1. 基准测试:在性能测试的过程中当制定好测试计划以后会给系统去施加一个较低的压力。主要是看所定义的是正确的而且是有效的。
2. 负载测试:进行完基准测试后会进行负载测试,也就是从从低往高逐步的增加压力。通过这样的一个过程来找到这个系统的瓶颈是什么,然后去调整系统的参数或者修改系统的代码来提升这个系统的负载能力。
3.压力测试:代码调试完毕后会对系统进行压力测试,来测试系统的容量及负载到底有多大
4.并发测试:针对某些特定的功能会利用性能测试来对其进行并发测试
二、演示测试
主要演示基准测试即用定义好的测试计划去判断这个测试计划在目标的服务器上测试是否符合要求。所以要测试 RestFulDemo中的API
是挑选出的一个创建商品的 API来进行测试,是一个 post的请求测试。真正的增加商品的时候,是不能向系统中间去增加重复商品的。因为通常来说会对它的一些关键字来进行约束。所以计划在这个设施中间去展现如何去给系统中间增加不同的数据。
这个测试是目前做的,是一个基准测试,也就是想测试一下这个定义的测试计划是否是正确的,能够用代码跑起来。
1.首先定义 Thread Group:定义线程为10,1秒钟循环5次
2.其次依次点击 Add,Config Element定义 HTTP Header MAnager,发出去的请求需要带一个头 Content-type。Content所描述的是所要带过去的信息是什么,因为是一个 post请求,需要告诉服务器的格式形式。
改格式为 json的格式,字符集为 UTF-8,若不进行此操作,加一个头,服务器会返回错误,或返回一个400多的错误。
Name:Content-type
Value:application/json;charset=UTF-8
3.定义 http,对定义 IP、端口等进行定义
Server Name or IP:172.16.0.230
PortNumber:8080
选择 POST请求
Path:/goods
4.定义在 Body Data 中传入的数据
模板文件格式分别为。Json、.csv
将模板内容复制到 Body Data
内容如下:
"name":$"{name}"
"brief":"${brief}",
"unit":"${unit}",
"categoryld":11,
"brandld":12
$开头的值在模板中定义的是变量,即每一个请求 name、brief、nuit 这三者单位不一样,需请求并进行判断,每一条请求都是不一样的。
5. 在 Body Data中定义了 Json的对象但有三个属性是用变量去描述的,这个变量需要去.csv文件中读取值所以需要定义一个配置原件 CSV Data Set Config读进.csv文件的内容,并将文件中的变量读取进来。
.csv文件的内容如下
name,brlef,unit
红米4X,红米4X是个好用便宜的手机,台
红米5X,红米5X是个好用便宜的手机,台
红米6X,红米6X是个好用更宜的手机,台
红米7X,红米7X是个好用便宜的手机,台
红米8X,红米8X是个好用便宜的手机,台
红米9X,红米9X是个好用便宜的手机,台
红米10X,红米10X是个好用更宜的手机,台
红米11X,红米11X是个好用便宜的手机,台
红米12X,红米12X是个好用便宜的手机,台
根据内容可以看到定义的内容,即定义了3个变量
第一行为名称,后面为若干个定义的值
所以定义 CSV Data SetConfig此时只需指定文件名及格式其余默认即可。文件第一行为不忽略的因为变量名在第一行。.csv文件中不带引号,所有线程都是共享的
总结:通过配置文件将 .csv文件读取进来然后将 .csv文件中定义的变量附上后面的值,从而在 HTTPRequest中的定义的 Body Data中的 .Json文件模板变量替换为在.csv文件中所定义的值
6. 定义 Response Assertion
反馈码为201
7. 定义了一个 JSON去看返回码和返回给Body中的值。
8. 用 JSON Path的定义去判断定义的格式是否正确定义9.ViewResults Tree去观察其结果。
10.定义 Aggregate Report 去观察汇总结果
11.保存到盘,因为做的是基准测试所以不需要用命令行去运行,
12.使用 Run Java.sh运行代码测试服务器、目标服务器
在 View Result Tree可以看到每一个线程的结果,可以知道 Request里面已经把在Body Data中所定义的模板里的变量替换为.csv 文件,每一个 Request发过去的请求都是不一样的,都有做了替换
在 AggregateReport中可以知道线程已经跑了50次。
在此测试基础上逐渐加大 ThreadGroup的线程数可进行负载测试和压力测试。