前端iOS安卓后台java, python, php, .net接口把client端和server端联系起来,两端之者使用的数据类型是json。json是一种通用的数据类型,返回的格式为key-value,键值对,{“name”:“张三”,“age”:23"}也有使用xml的,格式为:<name>zhangsan</name><sex>male</sex>测试接口之前,得有一个接口文档,文档中有请求方式,请求参数,响应信息等。功能测试测的是业务逻辑。接口测试属于业务测试中一种。关注业务逻辑正常的,异常的如果是get请求,不需要借助任何工具,只需要用流星器就可以发送请求http://api.xxxx.cn/api/user/stu_info?stu_name=小黑返回结果如下:{ “error_code”: 0, “stu_info”: [ { “id”: 5671, “name”: “小黑”, “sex”: “男”, “age”: 28, “addr”: “河南省济源市北海大道32号”, “grade”: “天蝎座”, “phone”: “18799932946”, “gold”: 120054446 } ]}请求中格式为http://ip:port/路径/接口名?key1=value1&key2=values2。如果有多个参数中间用&连接多个参数使用postman发送请求POST请求入参为json类型,body中选择raw,JSON类型,如未标明,使用key-vaule格式cookie,放在本地的一个键值对,请求时发送cookie中的sessionId与服务端sessionId进行匹配,匹配成功则通过验证。session,放在服务端的一个键值对,有一个过期时间。查看Cookie信息,通过浏览器F12可以看到存储的cookie信息添加Cookie信息,在Headers中添加Cookie信息添加header信息文件上传POSTMAN全局变量使用方式DNS, HTTP协议,三次握手,4次挥手HTTP请求分为两个部分,请求头和请求体,请求头中是一个额外的信息,比如浏览器类型,cookie等。请求体中传的是具体的数据。GET请求只有请求头,没有请求体。它的数据直接放在url中。POST请求放在body中。GET请求有长度限制,POST请求没有长度限制。GET请求没有POST安全,但通过抓包都可以看到信息。请求头(header):额外的信息浏览器cookie需要什么样的数据请求体(body):key=value接口用例项目模块用例id用例描述请求URL请求方式请求数据预期结果请求报文返回报文测试结果测试人员HTTP状态码200 请求成功302 重定向404 客户端请求不合法,页面未找到500 服务端有问题使用JMeterJmeter乱码处理JMeter查看结果树中返回信息乱码在Jemter的bin目录下,jmeter.properties文件中添加sampleresult.default.encoding=utf-8,后重启jmeter。JMeter中body data中乱码Jmeter的bin目录下,jmeter.properties文件中添加jsyntaxtextarea.font.family=Hack,后重启jmeter。GET请求POST请求POST入参为JSON类型,如果避免插入到数据库中的中文为乱码,需要在Content encoding中填写utf-8。添加cookie信息,cookie信息写在HTTP信息头管理器中,HTTP信息头如果放在线程组下与HTTP请求同级,则线程组中的所有请求都可以使用该HTTP信息头中的信息,如果放在某个HTTP请求下,则只对该请求单独生效。添加Referer信息文件上传,Jmeter 3.0以上版本需要填写MIME TYPE信息,随便填写就行,比如填写为text。JMeter参数化用户自定义的变量函数助手中__Random__counter__time从文件中读取线程组->配置单元->用户自定义的变量,填写变量名和变量值使用方式为${变量名}使用函数助手中__Random函数成生随机数,在此例中由于压测用户注册功能,用户名是不可重重的,此处的随机数用于生成用户名后的数字选项->函数助手对话框->__Random,输入最小值和最大值后,生成。使用方式如下:在线程组中循环5次,在查看结果树中可以看到5次请求中的用户名都不一样使用计数器__counter函数进行自增使用__time函数取时间,需要传入一个格式,yyyyMMddhhmmss,HH为24小时制,hh为12小时制时间表示格式化好的时间 201904161004时间戳,在__time函数中不对其进行格式化出来的就是时间戳,JMeter为Java开发,Java中时间戳默认是精确到毫秒,所以需要除以1000才是真真的时间戳。从文件中读取数据有场景需要大批量数据,数据是从数据库中导入到文件中。线程组->配置元件->CSV Data Set Config如果Filename中只写了文件名,则需要把文件放到Jmeter的bin目录下。如果文件中有多列,用符号分隔,需要在Delimiter中添写相关的符号。在Variable Names中也需要填写多个变量名,中间用",“分隔,会每次取一行数据Ignore First Line,是否忽略第一行Allow quoted data,是否允许带引号Recycle on EOF,遇到文件结束后是否循环Stop thread on EOF,遇到文件结束符停止线程Sharing Mode,是否所有线程组生效,还是只在当前线程组生效All Threads,所有线程组Current Thread Group,当前线程组关联关联:调用第一个接口,从第一个接口中返回的数据中取到某个值,放到第二个接口中使用HTTP请求->后置处理器->JSON PATH EXTRACTOR登录接口返回为如下:{ “error_code”: 0, “login_info”: { “login_time”: “20190416115043”, “sign”: “96b4de24614f0796402c54f889e50147”, “userId”: 9786 }}我们需要取到login_info中的sign,将sign的值放到充值接口中用作cookie值。写法为$.login_info.sign,其中$代表最外层的{},一层一层往内取。将取到的sign放到充值接口的cookie中如果需要查看各类变量中取到的值,可以使用线程组->Sampler->Debug Sampler查看各变量所对应的值。JMeter压测Jmeter压测分布式压测linux下运行10-15分钟稳定性测试,2天或一周左右在线程组中设置线程数及压测的持续时长,如果要进行长时间压测,需要勾选"永远”,以及勾选调度器,并填写持续时间填写了持续时间后,结束时间会失效填写了启动延持后,启动时间会失效Ramp-Up Period,线程在多少秒内会启动完,0为所有线程全部同时启动。一般为1即可。TPS,服务器每秒钟能处理的请求数响应时间,请求从发出后与接收到服务器返回给数据所花时间聚合报告Samples,发出的请求数Average,平均响应时间,单位为毫秒Throughput,TPSError%,错误率,不同业务要求不一样,像银行业务要求100%的正确率。断言,用于校验结果JMeter操作数据库测试计划->Add directory or jar to classpath线程组->配置单元->JDBC Connection Configuration填写Variable Name填写Databse URL,jdbc:mysql://192.168.1.116:3307/bugfree?characterEncoding=UTF-8&allowMultiQueries=true添加JDBC Request,在Variable Name中需要填写JDBC连接配置中填写的变量名JDBC请求中,Query Type为Callable Statement时,可以同时执行查询和更新语句。JMeter分布式压测有多台电脑,每台电脑上都有jmeter,且这几台电脑能相互PING通控制机修改本地Jmeter中jmeter.properties中remote_hosts项,添加负载机ip和端口,remote_hosts=192.168.177.128:1099如果需要控制机也发送压力的话,可以在remote_hosts中加班localhost:1099在负载机上修改jmeter.properties文件,(如果负载机为Windows,不需要修改rmi的两项)server_port=1099client.rmi.localport=0server.rmi.port=1099负载机上运行jmeter-server.bat如果负载机为Linux,需要关闭防火墙./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(负载机本机IP)如果控制机也发送压力,同样需要运行jmeter-sever.jbat如果有参数化文件,需要在其它负载机的同样位置放置一份。控制机,运行->远程全部启动负载机压测时,控制机的查看结果树中响应结果内容会为空,需要添加断言,用以判断返回结果是否正确。Linux下NO GUI非图形化方式运行Jmeter把Jmeter的bin目录加入到环境变量(不加环境变量则需要到Jmter目录下运行jmeter命令)把在windows上制作好的jmeter脚本放到Linux上如果有参数化文件,需要把参数化文件放到jmeter的bin目录中运行jmeter -n -t /路径/脚本名.jmx -l 结果.jtl-n 非图形化界面运行-t 指定测试脚本-l 指定结果文件,以.jtl结尾生成.jtl文件后,下载到windows上打开jmeter,添加查看结果树,在结果树中打开.jtl文件
...